-
transient只在Java默认序列化中生效,对JSON/XML/ORM等无效;它使字段不参与字节流读写,反序列化后为默认值,但无法防止日志、网络传输或自定义序列化中的泄露。
-
NPE堆栈中“because'xxx'isnull”直接指出未初始化的成员变量,需定位业务代码行、检查声明/构造器/注入初始化路径,并验证对象生命周期与调用时机。
-
目标存活率(-XX:TargetSurvivorRatio)默认为50%,决定MinorGC后Survivor区对象累计占比达该比例时触发动态年龄晋升;调高则延缓晋升、调低则加速晋升,需结合Survivor实际容量协同调优。
-
getActiveCount返回的是RUNNABLE且已执行run()的线程数,不包含BLOCKED/WAITING/TIMED_WAITING等阻塞态线程,故不能代表真实活跃任务数,仅反映CPU密集型忙线程的瞬时快照。
-
CGLIB与JDK动态代理在变量处理上本身无性能差异,因二者均不操作变量而专注方法拦截;参数传递开销几乎为零,成员变量访问不受影响,真正差异在于JDK依赖反射调用(Method.invoke)而CGLIB通过MethodProxy.invokeSuper直接调用,后者路径更短、性能更高。
-
MessageFormat.format()不替换占位符主因是花括号不配对或类型不匹配:{0}未替换因单个{被当字面量;{0,date}传入Instant会ClassCastException;中文locale需显式传入避免格式错乱;固定pattern应staticfinal复用以提升性能。
-
启用-Xlog:safepoint是定位非GC类全局停顿最直接有效的方式,它专门记录JVM为执行需线程同步至安全点的操作(如偏置锁撤销、JIT退优化、类重定义等)而引发的停顿,而非垃圾回收本身。
-
应逐项解析JSON数组中的每个对象而非整批解析,先用try-catch解析顶层数组,再对每个元素单独try-catch解析并跳过错误项,从而保留有效数据、避免全盘失败。
-
Java格式化输出依靠System.out.printf()和String.format(),基于Formatter类,使用%开头的格式说明符控制类型、宽度、精度等;常用如%d(整数)、%f(浮点数)、%.2f(2位小数)、%s(字符串)、%c(字符)、%b(布尔值)、%tY(年份)。
-
ThreadDeath是Thread.stop()主动抛出的Error,非系统崩溃,但会破坏线程状态、跳过finally、导致资源泄漏和锁不一致;stop()已废弃,应改用interrupt()+响应式退出机制。
-
保。LinkedHashSet保证迭代顺序与插入顺序一致,底层用双向链表维护序列、HashMap实现O(1)查找;add()决定顺序,contains()/remove()不改变链表结构;适用于去重且需保序场景,非线程安全。
-
自定义ExceptionReporter专用于DEBUG=True时渲染HTML错误页,需继承django.views.debug.ExceptionReporter并重写get_traceback_html()或get_template_data()等方法,再通过settings.py中DEFAULT_EXCEPTION_REPORTER指定路径。
-
应优先用Lambda替代匿名内部类,仅在需访问外部类私有字段、需自引用且只用一次时才用newSomeInterface(){...}。
-
Java中不能靠抛异常实现优雅退出,因为异常机制非流程控制工具,会掩盖错误、破坏调用栈、干扰监控;应使用System.exit(int)明确退出意图,或采用分层返回与外部信号协调。
-
StampedLock的乐观读通过stamp验证替代加锁,仅在冲突时退化为悲观读;适用于读多写少、读操作极轻量场景,吞吐量可达ReentrantReadWriteLock的3–4倍。