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