java教程技术文章
-
AssertionError表示程序逻辑错误,不应被常规捕获;它继承自Error,仅用于开发/测试阶段的内部契约检查,启用需JVM参数-ea,生产环境禁用,正确做法是修复逻辑或使用IllegalArgumentException等业务异常。401 收藏 -
分支结构中用==比较包装类特别危险,因其隐含自动拆箱,-128~127外或null时抛NPE,且null来源隐蔽导致延迟崩溃;应统一用Objects.equals、显式判空或getOrDefault避免拆箱。416 收藏 -
Gson默认跳过Map中null值,需调用serializeNulls()才能输出null;Jackson对LinkedHashMap顺序无稳定保证,须确保使用LinkedHashMap实例且避免破坏顺序的操作;FastJson2反序列化泛型需TypeReference匿名子类,否则类型擦除导致嵌套LinkedHashMap。148 收藏 -
强转不参与物流单切分,也不影响分支预测;物流单自适应切分依赖业务规则建模与约束求解,分支预测是CPU硬件机制,与物流逻辑无关。177 收藏 -
-XX:+AlwaysPreTouch作用是JVM启动时预分配并映射全部堆内存物理页,避免运行时缺页中断;需配合-Xms=-Xmx使用,适用于延迟敏感、大堆及容器环境,但会延长启动时间。304 收藏 -
Map的key必须重写equals()和hashCode(),因哈希表靠hashCode()定位桶、equals()判断键等价;若不重写,默认地址比较会导致相同逻辑对象被误判为不同key。248 收藏 -
SecureRandom为什么比Random更适合加密场景因为Random是伪随机、可预测的线性同余算法,种子一旦暴露或被猜中,整个序列都能还原;而SecureRandom默认从操作系统采集熵(如/dev/urandom或Windows的BCryptGenRandom),输出不可预测、抗回溯,满足密码学强度要求。常见错误现象:用Random生成JWT密钥、APItoken、盐值(salt),导致系统被批量破解。使用场景包括:generateKeyPair()前的随377 收藏 -
ThreadLocal通过为每个线程维护独立变量副本解决线程间数据污染,核心是“线程内单例”;需显式remove()避免内存泄漏,且子线程默认不继承其值。342 收藏 -
Java模块化是全链路依赖与封装机制,强制声明模块名、依赖和导出,module-info.java为必需身份证;未声明则视为传统classpath代码,需严格遵循语法与路径规则。100 收藏 -
双向循环链表通过闭环结构和统一指针操作,高效模拟内核调度机制管理变量生命周期:支持O(1)首尾定位、LRU淘汰、任意节点遍历及上下文快速切换,兼顾确定性延迟与资源可控性。147 收藏 -
异步日志不能直接降低GC,但能减少GC对业务线程的干扰:剥离日志对象分配、禁用堆栈采集、启用无垃圾模式、优化缓冲区大小、ERROR日志直写磁盘。152 收藏 -
指令饥饿本质是硬件扰动导致调度器失能,使yield后线程无法被再调度;需从替代等待原语、强化时间中断韧性、设置实时调度保护三方面构建韧性。280 收藏 -
hasNextDouble()可安全预判合法浮点数,但仅支持Java字面量格式(如3.14、-2.5e-3、.7),不接受空格、逗号、单位、中文符号等;它不消费输入,依赖默认空白分隔符切分,对"12.34abc"或"12,34"返回false,对"inf"/"NaN"返回true。308 收藏 -
Java类的访问控制仅支持public和包私有(默认)两种修饰符,顶级类不可用private或protected;包私有类用于模块内高内聚封装,内部类才支持private/protected修饰。290 收藏 -
直接缓存MethodHandle能显著减少重复查找和安全检查开销,因其调用路径更短、JIT更易优化,且同一ClassLoader下对固定方法签名的句柄线程安全、稳定复用。266 收藏