-
Java ChoiceFormat 按递增 limits 组成半开区间。本文说明怎样用 nextDouble 把精确阈值推到下一个可表示 double,并梳理反向边界、浮点误差与线程使用的注意点。
-
Java MessageFormat 会把成对单引号之间的内容当作字面文本,因此 '{0}' 不会替换参数;要输出字面单引号则写成两个连续单引号。本文结合资源文件场景说明未配对引号、占位符和复查方法。
-
Java DateFormatSymbols.getInstance(Locale) 可以按指定 Locale 取得本地化日期符号,再用 getMonths() 或 getShortMonths() 读取月份名称。本文说明月份常量索引、完整与缩写月份的选择,以及避免默认 Locale 造成输出漂移的写法。
-
用 Java Collator 的 Locale、strength 和 decomposition 控制重音与大小写差异,并说明 CollationKey 在重复排序中的适用边界。
-
Java Collator 适合按 Locale 处理自然语言排序;当同一批字符串需要被反复比较时,可先用同一个 Collator 生成 CollationKey,再通过 compareTo 排序,避免每次比较都重新分析原字符串。
-
Java char 下标按 UTF-16 单元计数,字符边界可覆盖代理对与组合序列。通过昵称前缀示例说明 BreakIterator、码点计数和 substring 偏移的区别及版本边界。
-
Java BreakIterator 的单词模式返回的是一组边界,边界之间既可能是单词,也可能是空白或标点。本文用字符属性过滤真实词片段,并说明 Locale、字符索引与适用边界。
-
JVM Class Data Sharing(CDS)可以把批处理实际加载的类保存为归档,在后续启动时减少类加载和启动准备开销。本文给出静态与动态归档命令,说明 JDK、类路径和回退边界,并区分 CDS 与业务对象分配优化。
-
Java 21 的 sealed 类型可以把类型层次固定下来,配合模式匹配 switch 覆盖全部 permitted 子类型。本文用一个可复用的最小示例说明怎样让新增子类型在重新编译时暴露,并说明 default、non-sealed、null 与旧二进制的边界。
-
本文用 JDK 21 命令行演示 AppCDS 的最小闭环:先记录应用实际加载的类,再用 -Xshare:dump 生成 .jsa,最后通过 SharedArchiveFile 启动并处理 JDK、classpath 和参数变化造成的归档失效。
-
Java record 可通过 getRecordComponents 保持组件声明顺序。本文实现类型级名称与访问器读取计划,批量直接写入输出端,减少逐行容器和重复元数据构建,并说明访问权限、装箱及格式兼容边界。
-
Java record 反射排查:先用 isRecord 判断类型,再按 record 头部声明顺序读取 RecordComponent,最后通过 accessor 读取实例值,区分 null、空数组和字段顺序不保证。
-
用 Class.isRecord 和 getRecordComponents 读取 Java record 组件,并通过 RecordComponent 的名称、类型和访问器保留 record header 顺序。本文给出可复用的实例读取方法,并说明普通类、空 record、调用异常与缓存边界。
-
Java 虚拟线程的同步块 pinning 要按 JDK 版本判断,JDK 24 已改变监视器相关限制。本文通过短临界区与批次私有缓冲示例,说明锁竞争、额外分配及资源所有权的处理方法。
-
Java 虚拟线程在 synchronized 同步块中执行阻塞操作时可能发生 pinned,让载体线程无法及时复用。本文按现象、证据、修复和反向验证排查,说明何时保留 synchronized,何时考虑 ReentrantLock。