-
讲清 Java ExecutorService.shutdownNow 对排队任务和运行中任务的不同处理方式,并给出可响应中断、等待终止、记录重试任务的关闭方案。
-
Java Pattern 开启 UNICODE_CHARACTER_CLASS 后,\d、\s、\w 和 POSIX 字符类会按 Unicode 语义匹配;该标志还隐含 UNICODE_CASE。本文从迁移场景说明如何选择作用域、控制匹配范围并补齐回归测试。
-
Java BigInteger.modInverse 抛 ArithmeticException 通常不是精度问题,而是模数不为正或被模数与模数不互质。本文用 gcd 预检和异常兜底整理清晰的调用方式。
-
Java String.transform 可以把当前字符串交给 Function 处理,并让返回值使用任意泛型类型。本文从签名、字符串转换、数字结果、函数组合、异常传播和空值边界说明怎样正确使用它。
-
Java 25 升级后,预览特性的检查不能只看 java -version。本文用基线、编译、运行和四格矩阵确认 --enable-preview 是否在正确阶段生效,并区分 JDK 25 的预览语言特性与已转正特性。
-
Java Math.clamp 可以把整数或浮点数限制在闭区间内。本文按重载、版本、边界异常和浮点特殊值说明怎样选择调用方式,并给出 Java 17 可用的兼容写法。
-
Java URI.create 可以快速把字符串解析成不可变 URI,但它并不要求 URI 带 scheme。本文用相对路径和绝对 URI 说明 isAbsolute、路径组件、非法输入异常,以及何时改用 URI 构造器。
-
Java Locale.forLanguageTag 适合把 BCP 47 语言标签转换为 Locale,但它遇到格式不完整的标签会截断解析,不能代替严格校验。本文对比 forLanguageTag 与 Locale.Builder.setLanguageTag 的行为,并给出服务边界上的选择方法。
-
Java virtual threads 的优势是用较低的线程承载成本扩大阻塞 I/O 服务的并发规模,而不是让单个任务跑得更快。本文按等待占比、请求模型、资源限制和观测指标判断适用场景,并给出 Java 21+ 的落地写法。
-
Java 24 引入的 Gatherer 可以把 Stream 中的输入按自定义状态聚合成新的中间结果。本文用固定批次场景拆解 initializer、integrator、finisher、下游推送和并行边界。
-
Java Double.isFinite 对有限值返回 true,对 NaN 和正负 Infinity 返回 false。本文说明怎样在计算结果、业务范围和序列化边界之间设置判断,并区分 NaN、Infinity 与 -0.0。
-
Java 工具方法需要知道是谁调用了它时,可以用 StackWalker.getCallerClass() 获取调用者 Class。本文从 RETAIN_CLASS_REFERENCE 配置开始,说明 getCallerClass、walk、隐藏帧和底部调用栈异常的边界。
-
用 Java HttpClient.sendAsync 发起异步请求,结合 BodyHandler 和 CompletableFuture 读取响应正文,并区分 HTTP 状态、网络异常与回调异常。
-
用 Java jcmd 排查运行中 JVM 的线程问题:先通过 jcmd -l 确认 PID,再用 Thread.print -l 查看线程栈和并发锁,必要时用 Thread.dump_to_file 导出 plain 或 JSON 转储,并说明权限、容器与结果判断边界。
-
Spring WebFlux 的 flatMap 并发只作用于单次订阅。通过单例非阻塞许可约束实例共享下游调用,结合响应体缓冲、连接等待与取消边界,说明背压能控制什么,以及容量不足时如何处理。