java教程技术文章
-
DocumentBuilder不是线程安全的,多线程共享会导致状态错乱、解析失败甚至JVM崩溃;应使用ThreadLocal隔离实例,或改用JAXB、StAX等线程安全替代方案。332 收藏 -
从一次 Spring Boot 结构化日志改造复盘讲起,拆解字段契约、MDC 生命周期、日志成本、告警迁移和上线检查。332 收藏 -
final变量必须在声明时或构造过程中初始化,且仅能赋值一次;它仅禁止引用或值的变更,不保证对象内部状态不可变,也不等同于编译期常量或线程安全。331 收藏 -
Supplier<T>+构造方法引用实现零开销对象工厂,本质是编译期绑定的函数指针转发,仅含new+invokespecial字节码,无抽象层、无反射、无泛型擦除开销。331 收藏 -
Instrumentation.retransformClasses支持在线热更新方法体逻辑,但不能增删或修改字段类型、继承关系及方法签名;可通过改写getter/setter、初始化逻辑、Unsafe/反射、可变引用等方式间接“热更变量”行为。331 收藏 -
用System.currentTimeMillis()配合原子计数器实现单机限流,核心是按时间戳划分固定窗口并用AtomicInteger安全累加;关键在窗口对齐、原子操作防丢失、阈值判断时机选getAndIncrement或incrementAndGet。330 收藏 -
该问题本质是多ClassLoader并发抢夺字节流引发的类加载竞争,导致响应变慢、GC压力大、请求挂起;需聚焦类加载行为、字节流争用与内存表现联动分析,并通过日志、堆栈、内存统计及IO追踪定位重复加载源头,最后通过字节流缓存、委托加载、并发控制等优化解决。330 收藏 -
关键变量必须声明为volatile以保障多线程读写可见性,避免“改了但没生效”;需配合同步块串行化配置更新与线程池调整,并通过日志和压测验证生效一致性。329 收藏 -
Lambda捕获局部变量本身不直接导致内存泄漏,但会延长变量生命周期;编译器将其转为隐藏类,值类型被复制、引用类型被强引用,若被事件、静态缓存或异步任务长期持有,则引发隐性泄漏。329 收藏 -
Files.createTempFile()用于创建唯一安全的临时文件,支持默认或自定义目录、指定前缀/后缀及POSIX权限;需手动清理,不可依赖随机性保障安全。329 收藏 -
Java中数字字面量不加修饰默认为int(整数)或double(浮点数);整数如123默认int,浮点数如3.14默认double,超出范围需加L或f后缀,进制前缀和科学计数法格式须严格符合规范。328 收藏 -
主线程通过PipedOutputStream与监控线程的PipedInputStream配对实现字节脉冲实时传输,需确保管道连接、及时读取、明确数据边界,并妥善处理异常与资源释放。328 收藏 -
Java中用if实现令牌桶限流需封装TokenBucket类维护availableTokens和lastRefillTime,每次请求先同步补令牌再if判断availableTokens>=1.0,通过则扣减并放行,否则返回429;须线程安全、浮点运算、按维度路由桶实例。328 收藏 -
状态压缩在面向对象中通过整数字段+位运算统一管理多个布尔状态,节省内存(如16个标志仅需2字节)、提升读写效率,并使组合逻辑更清晰,如(state&(VISIBLE|UNLOCKED))==(VISIBLE|UNLOCKED)。327 收藏 -
异或加密仅能临时遮掩且密钥泄露即失效;std::string加密须用unsignedchar避免符号扩展,否则UTF-8中文等高位字节会因char有符号性导致提升为负数,引发加密错乱、长度突变或空字符截断。327 收藏