-
JDK21的RecordPatterns支持多层嵌套record的直接解构,但要求每层均为record类型,不支持class或非record的sealed实现类;编译和运行需启用预览特性,且IDE和依赖需同步配置。423 收藏 -
抽象类构造方法是子类对象创建时强制执行父类初始化逻辑的唯一时机,通过super()调用完成final字段校验赋值、共享资源注入,并禁止调用抽象方法,且子类必须显式调用super()。488 收藏 -
本文详解hasNextInt()的工作原理与典型误用场景,重点演示如何用它替代try-catch实现健壮的双整数输入验证,并给出可复用的循环输入处理方案。411 收藏 -
默认Propagation.REQUIRED导致嵌套方法共享事务,内层异常会标记整个事务rollbackOnly,外层catch无法阻止回滚;REQUIRES_NEW可隔离事务,NESTED仅依赖数据库savepoint且不可靠。489 收藏 -
多重实现是通过接口定义独立能力(如Loggable、Serializable)让类“能做”多事而非“是”多物,规避多重继承复杂性;各语言以不同方式支持:Java用默认方法、Python用Protocol/ABC、TypeScript用交叉类型;强调能力解耦、显式委托与易替换性。205 收藏 -
<time>标签是HTML5中专为日期和时间设计的语义化元素,需通过符合ISO8601标准的datetime属性提供机器可解析的时间值,同时可自定义用户友好的显示内容;禁止省略datetime、使用模糊值或包裹非时间内容。101 收藏 -
穿透效应是危险特性,业务状态机不应依赖fall-through实现状态包含或流转;应通过校验函数链、状态继承枚举或迁移白名单表等结构化方式表达语义依赖。464 收藏 -
标记清除算法导致老年代内存碎片的核心原因是只回收垃圾对象而不移动存活对象,使空闲空间离散分布;老年代对象长期存活、数量多且体积大,无法采用复制算法,只能就地标记清除,最终因缺乏连续空间而频繁触发FullGC甚至OOM。430 收藏 -
可行但仅适用于学习、嵌入式或教学场景;生产环境应优先选用HashedWheelTimer、ScheduledThreadPoolExecutor或Quartz。295 收藏 -
使用基本类型集合(如fastutil的Long2ObjectOpenHashMap)替代包装类集合可大幅降低内存占用,案例中堆内存从3.13GB降至211MB,降幅94%;因Integer等包装类单个占16字节,而int仅4字节,百万级规模下内存开销剧增,易引发OOM。261 收藏 -
“commandnotfound”表示Shell在$PATH中未找到java可执行文件,常见于手动解压JDK后未配置环境变量或多个JDK未激活;需检查安装路径、正确设置JAVA_HOME和PATH,并重载配置。478 收藏 -
ThreadGroup已被弃用,因其无法保证线程归属、方法非线程安全、不参与权限控制且与现代并发工具不兼容;应使用ExecutorService进行显式生命周期管理、监控和隔离。286 收藏 -
能,但需满足三前提:接口编译版本≥JDK8、调用方运行时JDK≥接口编译版本、实现类未定义同签名方法;否则抛NoSuchMethodError或编译失败。407 收藏 -
Math.floorDiv()是Java8引入的向下取整除法方法,对正负数均向负无穷舍入,与/的向零截断本质不同;它保证r≤x/(double)y且满足floorDiv×y+floorMod==x,避免double精度问题,适用于负索引映射、分页、网格坐标等场景。193 收藏 -
MySQL的REPEATABLEREAD通过首次查询生成ReadView并全程复用,确保事务内多次读取同一字段结果一致;同时用Next-KeyLock锁定行及间隙,防止并发写冲突和幻读,但无法自动解决应用层“先读后写”导致的逻辑丢失更新。151 收藏