java教程技术文章
-
文章 · java教程 | 1个月前 | Java · 并发编程 · CompletableFuture · java completablefuture exceptionallyCompose 异步恢复 超时回退
用 CompletableFuture.exceptionallyCompose 把异步降级接回原链路,区分业务异常、超时和回退失败,配合 orTimeout 完成可验收的恢复流程。336 收藏 -
Files.readString 适合小型文本读取,却会把整个文件和解码后的字符串同时带进堆。本文用内存预算、newBufferedReader 分块读取和 lines 流关闭三个检查点,说明大文件读取该如何选型。335 收藏 -
Java 25 的预览稳定值接口只能设置一次,适合做惰性初始化,但循环依赖会在取值时抛出 IllegalStateException。本文用两个稳定值的依赖图拆解触发边界、并发语义与强可达带来的生命周期取舍。335 收藏 -
用 Java Files.find 组合普通文件、扩展名、大小和修改时间条件,掌握 maxDepth、BasicFileAttributes 以及 Stream的资源边界。 335 收藏 -
配置文件直接覆盖时,读线程可能看到半截内容。本文用 Java NIO 的临时文件、Files.move 和同目录改名实现一次完整替换,并说明 ATOMIC_MOVE 不可用时如何回退与核对结果。332 收藏 -
用 Java Runtime.Version 解析并比较运行时版本,区分 feature、interim、update、patch 与 pre 预览标记,避免把字符串排序误当成版本判断。332 收藏 -
用 Java Thread.Builder.OfVirtual 创建虚拟线程时,统一配置线程名和 UncaughtExceptionHandler,并通过可见日志验收异常是否真正被接住。331 收藏 -
Java 反射调用私有方法失败时,问题通常不在方法签名,而在 Lookup 的访问能力、目标类所在模块和包是否开放。本文用最小示例拆开查找模式、privateLookupIn 与模块边界。331 收藏 -
BigDecimal 的 1.0 和 1.00 数值相等,但 equals 结果不同,放进 HashSet 也会留下两条记录。本文从订单金额比较误判的现场出发,说明 scale、compareTo、HashMap 去重和金额归一化的边界。330 收藏 -
文章 · java教程 | 2个月前 | 调试 · 异常处理 · Java教程 · 文件关闭 AutoCloseable Java教程 Java try-with-resources suppressed exceptions
Java 的 try-with-resources 会自动关闭资源;当业务代码和 close 同时抛异常时,关闭异常会作为 suppressed exception 保留。本文给出排查文件、JDBC 和网络资源关闭问题的检查清单。327 收藏 -
用 Java Optional.or 串联多级备用查询,理解 Supplier 的惰性执行、返回类型和异常边界,并用最小示例完成验证。325 收藏 -
围绕Java BigDecimal的scale、RoundingMode、除法和UNNECESSARY检查,整理金额计算中可直接落地的舍入规则与边界处理方案。325 收藏 -
Java 自定义 JFR Event 的提交条件应分成 isEnabled、shouldCommit 和 commit 三层:先确认有活动录制,再在 end 后判断时长阈值,最后只提交值得保留的事件。325 收藏 -
ConcurrentHashMap.computeIfAbsent 的映射函数不能递归更新同一键。本文解释原子计算边界、IllegalStateException 的成因,并用局部解析状态加 putIfAbsent 演示如何拆分递归计算与共享缓存发布。323 收藏 -
Java Matcher.find 会在区域内寻找下一个匹配片段,matches 则要求整个区域匹配。本文用日志过滤示例拆解两者的控制流、region 边界与 group 结果校验。320 收藏