-
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 生命周期边界。
-
介绍 Java 21 及以上如何在 switch 中使用 record pattern 直接绑定 record 分量,并处理嵌套结构、when 守卫、null 与穷尽性。
-
Java ZoneOffsetTransition 用来描述时区偏移发生不连续变化的瞬间。本文从 ZoneRules.getTransition 出发,说明怎样区分夏令时前进造成的不存在时间与回拨造成的重复时间,并给出业务解析时的判断边界。
-
Java 24 及更高版本可以用 Stream.gather 和 Gatherers.windowFixed 把连续元素聚成窗口,再映射成业务摘要。本文说明固定窗口、滑动窗口、尾窗口、不可修改结果和大窗口内存边界。
-
Java Pattern.asMatchPredicate 可以把已编译正则转换为 Predicate,直接交给 Stream.filter 做整条字符串筛选。本文对比 asPredicate 的子串查找语义,给出复用 Pattern、处理空输入和选择并行边界的紧凑写法。
-
Java ResourceBundle 按 Locale 查找资源时,应显式传入目标 Locale,区分请求候选链、JVM 默认 Locale 和基础资源,并用 getLocale 判断实际命中的 bundle。文章还说明如何在需要时禁止默认 Locale 参与回退。
-
Java virtual threads 可以让每个请求保持简单的阻塞式写法,但 newVirtualThreadPerTaskExecutor 不会自动限制外部服务的并发量。本文用 Semaphore 包住真正的外部调用,说明许可归还、中断处理、超时和连接池边界。
-
Java Map.computeIfAbsent 的映射函数返回 null 时不会记录键值映射。本文按触发条件、返回结果、异常边界和缓存策略拆开说明,帮助你区分未命中、空值与计算失败。
-
使用 Jackson JsonNode 处理 JSON 更新请求时,字段缺失与显式 null 不是同一种状态。本文用 has、get、path、isNull 和 isMissingNode 给出清晰的判断方式,并说明 PATCH 更新时如何选择策略。
-
BigDecimal 无参 divide 遇到 1/3 等非终止小数会抛出 ArithmeticException。本文按金额、比例和精确校验三类场景,说明 scale、RoundingMode 与 MathContext 的选择边界。
-
Java Matcher 判断可选分组时,要在成功匹配后区分 null、空字符串和非空内容。用备注行解析器说明命名捕获组、位置判断、状态误用和业务集成。
-
Java Files.walk 返回的 Stream
可能持有打开目录,filter 只负责筛选元素并不会关闭资源。本文用 try-with-resources 处理正常结束、提前终止和异常路径,并说明 maxDepth、符号链接、UncheckedIOException 与 Files.find 的选择边界。