-
用 sealed、permits 和模式匹配 switch 建立封闭的 Java 类型层次,逐项覆盖 record 分支,并说明 null、default、模式支配和类型层次变更后的重新编译边界。
-
MethodHandle 的 invokeExact 失败,通常不是目标方法找错,而是调用点签名没有与句柄的 MethodType 完全一致。本文用 Java 代码说明如何定位类型差异,并选择 invoke 或 asType 完成适配。
-
Java 虚拟线程的阻塞等待不等于长期占用载体。结合 JDK 版本区分卸载、固定限制与资源池竞争,并用同负载下的线程、连接等待、延迟和错误率判断改动,避免把承载优化当成容量扩张。
-
ForkJoinPool 中混入队列、锁或外部 I/O 等阻塞操作时,直接等待可能拖住其他任务。本文用 ManagedBlocker 封装阻塞点,说明 managedBlock 的正确调用、中断处理、池参数边界,以及何时应换用独立 I/O 线程池。
-
DatagramChannel 非阻塞接收需要正确处理 receive 的 null 返回。本文用有限时长示例说明 Selector 注册、读就绪提示与缓冲区状态,区分无包、空包和截断。
-
Java HttpClient WebSocket 的接收节奏由 request(n) 控制回调次数,而不是由 CompletionStage 自动限流。本文结合 WebSocket.Listener 说明 request、last、CompletionStage、关闭和异常处理的边界,并给出单次与有限批量申请的选择方法。
-
Java Flow 背压的关键不是让 Publisher 自己变慢,而是让 Subscriber 通过 Subscription.request(n) 明确可接收数量,Publisher 只在需求量大于零时调用 onNext。本文用一个单订阅示例说明请求、发送、取消、完成和错误边界。
-
Java 19 引入的 Future.resultNow 适合读取已经成功完成的 CompletableFuture,而且不会等待。本文从状态判断、批量汇总、异常与取消边界出发,比较 resultNow、getNow 与 join 的选择。
-
Java FFM API 的 MemorySegment 生命周期由关联作用域决定。本文比较四类 Arena,用独立示例说明切片与关闭后访问,并明确跨线程借用和释放责任。
-
Java 模式 switch 不会让 null 自动落入普通类型模式。本文用 case null 和 case null, default 说明空值分支、default 兜底及非法组合边界,并给出一组最小反向验证清单。
-
Java 25 的紧凑源文件可以省略显式 class 声明,配合实例 main 直接运行单文件程序。本文说明最小写法、java 启动命令、参数选择规则和何时恢复普通类结构。
-
Java String.lines() 适合读取真实文本行,但不会把结尾换行符自动变成额外空记录。本文说明行结束符、连续换行和末尾空元素的差异,并用 split(regex, -1) 保留协议需要的尾部空记录。
-
Java WatchService 的 OVERFLOW 表示事件可能已被丢弃,不能把它当成具体文件名处理。本文说明如何按监听目录重扫、用快照和业务索引对账,并正确 reset WatchKey 与关闭 WatchService。
-
Java 文本块可以写得整齐,但源码排版带来的公共缩进不一定适合最终字符串。本文用 HTML 和 SQL 片段说明 String.stripIndent 如何去掉偶然公共缩进、保留内部相对层级,并比较 strip 与 indent 的使用边界。
-
Java NIO 的 PathMatcher 可以由 FileSystem.getPathMatcher 创建,用 glob 规则匹配 Path 的字符串表示。本文从常见模式、目录遍历、路径层级和大小写边界出发,整理一套可直接放进文件筛选代码的写法。