-
用 Java Normalizer 构建 NFC 名称比较键,区分组合字符、原始展示值和规范键,说明本地运行判断、数据集成与兼容折叠边界。
-
ExecutorCompletionService 把任务提交和结果消费分开,适合多个 Callable 并发执行后按实际完成顺序取结果。本文用最小 Java 示例说明 take、poll、Future.get 的配合方式,以及异常、超时和线程池关闭边界。
-
Java Flow 的 request(long) 不是暂停线程,而是增加订阅未满足需求。本文从 onNext 停滞现象出发,解释固定窗口、半窗补请求、非法参数,以及 HttpClient BodySubscriber 的继续请求与取消边界。
-
ByteBuffer flip 与 rewind 对比:理解 position、limit 和 capacity,用写后读取与从头重读示例说明选择规则,避免重复 flip 和误读容量尾部。
-
Java NIO 可以在 Files.newDirectoryStream 中直接传入 glob,只筛选当前目录中匹配文件名的目录项。本文说明常见通配符、资源关闭、异常处理,以及 glob 与递归遍历和自定义过滤器的边界。
-
Java HttpClient 可以用 HttpRequest.BodyPublishers.ofFile(Path) 把本地文件作为请求体发送。本文说明文件请求体的构造关系、Content-Type 设置、异常处理和与响应文件下载的区别。
-
Java URI 保留原始查询时应读取 getRawQuery,而不是 getQuery。本文用最小示例说明百分号编码、加号、重复参数、null 与空查询的区别,并给出转发、签名和缓存键场景的选择边界。
-
Java HttpClient 通过 HttpClient.Builder.followRedirects 设置重定向策略。本文比较 NEVER、NORMAL 和 ALWAYS 的行为,说明默认值、HTTPS 到 HTTP 的边界、POST 方法变化,以及如何查看 previousResponse。
-
Java HttpClient 的响应头从 HttpResponse.headers() 取得,再按需求使用 firstValue、allValues 或 map。本文用一段最小示例说明单值、多值、大小写和缺失响应头的处理边界。
-
解释 Java URI.resolve 对普通相对路径、根相对路径和网络路径引用的处理差异,并给出解析后检查 scheme、host 与 path 的安全封装。
-
Java 控制台字符集不能只看 Charset.defaultCharset()。本文区分 Console.charset、stdin.encoding、stdout.encoding 和 System.console() 为空的边界,给出终端、IDE 与重定向环境的处理方案。
-
Java ZonedDateTime 遇到夏令时回拨时,同一个本地时间可能对应两个有效偏移。本文用 ZoneRules.getValidOffsets() 先判断重复,再用 withEarlierOffsetAtOverlap() 或 withLaterOffsetAtOverlap() 明确选择,最后将结果转换为 Instant 保存,避免账单、预约和审计记录出现歧义。
-
Java Optional 链式调用里,map 适合把当前值转换成普通值,flatMap 适合连接本身就返回 Optional 的查询。本文从返回类型入手,说明怎样避免 Optional>、怎样让空值传播保持清晰,以及在哪个边界收敛成默认值或异常。
-
Java Class-File API 可以直接读取 .class 文件模型,不必通过 Class.forName 加载目标类。本文从 ClassModel、MethodModel 到 CodeModel,演示如何按方法名枚举方法指令,并说明无方法体、惰性解析、版本兼容和 CodeElement 类型筛选边界。
-
用 Java HttpRequest.BodyPublishers.ofInputStream 延迟打开请求体,处理重复发送时重新提供 InputStream,以及文件流和 HttpClient 生命周期边界。