-
异步日志不能直接降低GC,但能减少GC对业务线程的干扰:剥离日志对象分配、禁用堆栈采集、启用无垃圾模式、优化缓冲区大小、ERROR日志直写磁盘。
-
Field.getType()返回字段声明时的原始类型(如List.class),不包含泛型信息,也不反映运行时实际对象类型;需用getGenericType()获取泛型参数,用value.getClass()获取运行时类型。
-
Java字符编码核心是“内部统一、外部可配”:String在JVM内恒用UTF-16,与外部交互时必须显式指定Charset,否则依赖系统默认值易致乱码;三层结构含字符集、编码方案和Charset类;字符串与字节数组转换须严格配对编码解码;IO流中需显式声明Charset;可通过Charset.defaultCharset()等方法查默认及可用字符集。
-
用好@Deprecated和@since的核心是明确演进路径:Java9起支持since(须语义化如"2.5.0")和forRemoval,配合Javadoc@deprecated块说明废弃原因、替代方案及下线计划,并通过CI/CD、CHANGELOG、静态扫描等配套机制闭环治理。
-
Java9的Optional.or()用于在当前Optional为空时惰性执行Supplier获取新Optional,返回值仍为Optional<T>;正确用法是opt.or(()->Optional.of("default")),而非传入实例或非Optional值。
-
MySQL的REPEATABLEREAD通过首次查询生成ReadView并全程复用,确保事务内多次读取同一字段结果一致;同时用Next-KeyLock锁定行及间隙,防止并发写冲突和幻读,但无法自动解决应用层“先读后写”导致的逻辑丢失更新。
-
Trie树用于敏感词过滤最核心优势是一次扫描、多词匹配,时间复杂度仅O(M),远优于正则或循环匹配的O(N×M);其共享前缀结构既节省空间又加速跳转,兼顾高效性与策略扩展性。
-
必须在启动JVM时添加-XX:NativeMemoryTracking=detail,否则无法获取原生内存数据;仅支持off/summary/detail三级,生产环境推荐detail;参数须置于java命令最前,不可写为on或放在-jar后。
-
桶排序在大促积分场景中用于构建可伸缩低延迟的分拣与排名体系,核心是分而治之、范围映射与局部处理,而非直接排序。
-
未正确配置JAVA_HOME环境变量是新手常见问题,导致Maven、Tomcat等工具无法运行,JAVA_HOME应指向JDK安装目录如C:\ProgramFiles\Java\jdk-17。
-
关键在于泛型与反应式编程协同:泛型提供编译期类型安全和复用能力,反应式框架负责背压控制、异步流水线编排和资源调度,二者共同解决高吞吐、低延迟、强类型保障三重约束。
-
EOFException不是正常结束信号,而是表示流被意外截断,如网络断开、文件被删或序列化中断;将其当作正常退出会掩盖真实故障,仅在可控且允许非对称结束的极少数场景下才可捕获处理。
-
JPMS不直接解决Jar冲突,而是通过模块边界、强封装和显式依赖从架构上切断classpath冲突根源:自动模块命名隔离、exports限制包可见性、编译期报错同名包导出冲突。
-
位运算不直接实现幂次转换,而是支撑快速幂算法:通过b&1判断指数二进制位、b>>=1推进位、a=aa维护幂次、res=resa条件累乘,将时间复杂度降至O(logb)。
-
Thread.setDefaultUncaughtExceptionHandler未生效的根本原因是设置时机过晚或仅对后续线程生效,且主线程异常不走该处理器;需在main开头设置,并单独为主线程、线程池、框架线程(如@Async)、UI线程分别配置handler。