-
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 并发只作用于单次订阅。通过单例非阻塞许可约束实例共享下游调用,结合响应体缓冲、连接等待与取消边界,说明背压能控制什么,以及容量不足时如何处理。
-
Java CDS 默认归档可以复用核心类元数据;固定启动命令的应用还可以用 AppCDS 动态归档覆盖应用类,从而减少启动阶段重复加载。本文给出生成、加载和排查归档失效的最小方案。
-
围绕 Spring Boot Actuator 的 HTTP 端点暴露,说明 include、exclude、health 详情可见性与 Spring Security 访问边界的配置方式。
-
用一个 Java 多语言小项目说明 ResourceBundle.Control 如何控制候选 Locale、默认 Locale 回退和 root 资源包,避免缺少翻译时落到不期望的语言。
-
Java System.Logger 怎样避免低级别日志提前构造复杂参数?本文拆开 isLoggable、Supplier 和日志后端的责任边界,给出两种写法、选择表与常见误区。
-
从 lookup()、in() 到 privateLookupIn(),梳理 Java MethodHandles.Lookup 在同模块与跨模块场景中的权限变化。
-
Java VarHandle 的 acquire/release 不是“弱版 volatile”的简单替换:写线程用 setRelease 发布状态,读线程必须用同一个状态变量的 getAcquire 观察到发布值,随后读取的数据才获得对应的排序与可见性保证。本文用一个发布数据的小例子说明配对关系和排查清单。