Tag: tech
All the articles with the tag "tech".
-
Java序列化——反序列化为什么用Unsafe.allocateInstance绕过构造器?
反序列化通过 Unsafe.allocateInstance 绕过构造器恢复对象状态,同时也带来了 RCE 安全风险。
-
Java反射——Inflation机制让反射接近直接调用
反射调用前 15 次走 Native JNI,之后 Inflation 机制动态生成字节码实现接近直接调用的性能,深刻理解反射的慢与优化。
-
享元模式——IntegerCache与String常量池的共享之道
享元模式通过共享减少对象创建,IntegerCache 和 String 常量池是 JDK 源码中最经典的应用实例。
-
String、StringBuilder、StringBuffer 深入对比:从字节码到 JMH 性能
从 JDK 9 Compact Strings 的 byte[]+coder 机制到扩容策略与 javac+号编译优化,再到 JMH 性能数据对比,给出三者的完整选型决策树。
-
IntegerCache——为什么Integer 127 == Integer 127是true而128不是?
Integer 自动装箱走 valueOf 享元缓存 -128~127 内对象,== 比引用非值 equals 才是正确比较,三元运算类型推断可能触发 NPE 拆箱。
-
Compact Strings——JDK 9如何将String内存占用减半?
JDK 9 用 byte[] 替代 char[] 加 coder 标志位实现紧凑字符串,纯 ASCII 内存减半,coder 被 JIT 内联消除分支无运行时开销。
-
ByteBuffer——HeapByteBuffer与DirectByteBuffer的本质区别
HeapByteBuffer 在 IO 路径多一次堆内到堆外拷贝,DirectByteBuffer 直通内核但依赖 Cleaner 虚引用释放,有隐蔽的堆外内存泄漏风险。
-
BigDecimal——为什么0.1+0.2不等于0.3?
IEEE 754 二进制浮点无法精确表示 0.1,BigDecimal 用十进制定点数模型消除精度误差,金额计算严禁用 double 构造器。