-
Java PushbackReader 可用 unread 保留多读的非数字字符。本文通过数字前缀示例说明共享包装对象、EOF 判断、单字符容量、异常位置与调用方关闭责任。
-
用 StringJoiner.setEmptyValue 设置未添加元素时的默认输出,并区分真正空状态、空字符串元素和 null 元素的结果。
-
Java Files.probeContentType(Path) 用已安装的文件类型探测器和系统默认探测器尝试返回 MIME 类型;识别不到时返回 null,发生 I/O 问题时抛出 IOException。本文从最小写法、提供者边界和安全兜底三个方面说明如何正确使用。
-
Java Virtual Threads 适合承载大量阻塞 I/O 任务,但不应把连接、客户端和可变缓存都塞进 ThreadLocal。本文按请求元数据、只读上下文、任务资源和外部并发四条边界,说明显式参数、ScopedValue、连接池与 Semaphore 的选择方法。
-
Java switch 表达式要求覆盖所有可能输入;当枚举分支覆盖全部已知常量时,编译器会插入隐式 default。本文从多模块服务中的状态映射场景出发,说明箭头规则、块体 yield、显式 default、null 边界以及新增枚举常量后的维护取舍。
-
Java Pattern.splitAsStream 会按照正则匹配到的分隔符创建有序 Stream,末尾空字符串不会进入流;本文用配置文本和日志字段拆分场景说明调用方式、空值边界、可变输入约束,以及它和 split、splitWithDelimiters 的选择差异。
-
Java 正则替换时,美元符号和反斜杠可能被当成 replacement 语法。本文纠正 Pattern.quoteReplacement 的类名误解,说明 Matcher.quoteReplacement 的用法、边界与最小示例。
-
使用 Java Time Chronology 处理非 ISO 日历时,把 ISO 日期留在存储和计算层,在界面层通过 DateTimeFormatter.withChronology 格式化,并正确区分 Locale、Era、y 与 u 的边界。
-
Java CharsetDecoder 处理分段 UTF-8 输入时,UNDERFLOW 不是错误。本文说明如何用 compact 保留未完成多字节前缀,最后一次 decode 传 true,并通过 flush 完成解码状态收尾。
-
Java ZGC 的低暂停目标仍然依赖足够的堆余量。本文从 Xmx、SoftMaxHeapSize、Xms、AlwaysPreTouch 和 ZUncommit 的关系出发,说明如何在突发分配、内存预算和延迟稳定性之间做配置取舍,并用 MXBean 做最小复查。
-
Java G1 混合回收暂停不能只看一行总耗时。本文从 Unified Logging 的事件行入手,结合 gc+phases、gc+ergo+cset 和 gc+heap 日志,定位集合选择、根扫描、对象复制与收尾阶段的长暂停来源。
-
Java Matcher 切换 Pattern 后不会自动回到输入开头。本文用紧凑示例说明 usePattern 如何保留当前位置、为什么旧分组失效,以及它与 reset、region、find(int) 的区别。
-
Java FFM 映射 C 结构体参数时,先用 MemoryLayout 描述字段、填充和对齐,再用 FunctionDescriptor 组合函数签名;本文区分结构体值、结构体指针与 Arena 生命周期。
-
Java sealed class 的许可列表只描述直接子类型。通过原创类层级示例区分封闭和开放分支,说明反射查询、对象归属及业务准入的不同用途。
-
Java HttpClient 的 HTTP/2 连接复用重点在于长期复用同一个 HttpClient,而不是每次请求新建客户端。本文说明 HTTP_2 协议偏好、HttpResponse.version() 实际结果、HTTP/2 多路复用,以及 connectionPoolSize 与 keepalive.timeout.h2 的配置边界。