-
Java virtual threads 的优势是用较低的线程承载成本扩大阻塞 I/O 服务的并发规模,而不是让单个任务跑得更快。本文按等待占比、请求模型、资源限制和观测指标判断适用场景,并给出 Java 21+ 的落地写法。
-
Java ZonedDateTime 遇到夏令时回拨时,同一个本地时间可能对应两个有效偏移。本文用 ZoneRules.getValidOffsets() 先判断重复,再用 withEarlierOffsetAtOverlap() 或 withLaterOffsetAtOverlap() 明确选择,最后将结果转换为 Instant 保存,避免账单、预约和审计记录出现歧义。
-
MethodHandle 没有独立的类型配置项,类型由 MethodType 和查找方式决定。本文从句柄创建、接收者位置、invokeExact 严格匹配与 asType 适配四层排查常见 WrongMethodTypeException。
-
用 Java JFR RecordingStream 订阅有限事件,围绕延迟尖峰建立时间窗口、线程堆栈和 GC/锁/I/O 证据链,并控制流式记录的资源边界。
-
使用 Java HttpClient 与 CompletableFuture 封装可取消的异步 GET 重试:只重试暂时性异常和指定状态码,加入退避、最大次数与请求超时,并把外层取消传播到当前 HTTP 交换或等待任务。
-
用 jdeps 分析 JAR 的模块依赖:先用 --list-deps 阅读依赖关系,再用 --print-module-deps 输出可供 jlink 使用的逗号分隔模块名称,并说明递归、路径和缺失依赖的处理方式。
-
Java 25 允许在 super(...) 或 this(...) 前准备参数、校验输入并初始化必要字段,本文用边界示例说明哪些访问可行、哪些访问仍会被禁止。
-
用 Java 25 的 jdk.incubator.vector.FloatVector 改写批量 float 计算,讲清 preferred species、lane 宽度、尾部掩码、模块参数和标量回退的验收方法。
-
JDK 26 Foreign Function & Memory API 中,Arena 决定 native memory 的生命周期。本文用 confined、shared、auto 和 global 对比说明如何选择类型、绑定作用域,并避免关闭过早或长期不释放。
-
Java 项目同时使用 module-path 和 classpath 时,问题通常来自依赖形态、命名模块可见性或编译与启动参数不一致。本文按路径对象、命令复现、模块声明和部署清单四层定位冲突。
-
Java Files.walk 返回的 Stream
可能持有打开目录,filter 只负责筛选元素并不会关闭资源。本文用 try-with-resources 处理正常结束、提前终止和异常路径,并说明 maxDepth、符号链接、UncheckedIOException 与 Files.find 的选择边界。
-
Java Pattern 使用命名捕获组读取可选字段时,要区分分支未参与匹配产生的 null 与匹配空文本产生的空字符串,并在解析边界统一处理默认值和异常。
-
Java 25 StructuredTaskScope 子任务失败时,使用 FailedException 读取原始原因,让兄弟任务响应中断,并用 close 等待资源安全收尾。
-
讲清 JDBC 语句关闭与 ResultSet 的联动关系,以嵌套 try-with-resources 管理读取作用域,并说明借用连接、游标逃逸及主体异常与 suppressed 关闭异常的处理边界。
-
Java AudioSystem 判断音频转换能力时,应区分目标编码、完整 AudioFormat 和目标文件类型三层问题。本文说明 isConversionSupported、getTargetEncodings、getTargetFormats 的用法,并梳理输入解析、转换流和文件写出的异常边界。