java教程技术文章
-
讲清 Java 模式匹配 switch 如何根据 sealed 层级判断穷尽性,并覆盖 null、default、泛型与 MatchException 的边界。301 收藏 -
JDK 25 的 import module 可一次引入模块已导出包中的 public 顶层类型,并遵循更具体导入优先、同名冲突显式消歧等规则。299 收藏 -
用 Apache Commons IO Tailer 跟踪日志轮转时,关键是理解 fileRotated 与 fileNotFound 的先后边界,并用 Tailer.Builder 配置编码、轮询间隔、从末尾读取和重新打开策略。298 收藏 -
Java HttpClient 的 HTTP/2 连接复用重点在于长期复用同一个 HttpClient,而不是每次请求新建客户端。本文说明 HTTP_2 协议偏好、HttpResponse.version() 实际结果、HTTP/2 多路复用,以及 connectionPoolSize 与 keepalive.timeout.h2 的配置边界。294 收藏 -
Java Compact Object Headers 将 HotSpot 64 位对象头从传统的 mark word/class word 布局收敛到 64 位,本文解释压缩类指针、锁、GC 转发、JDK 25/27 启用方式与迁移边界。293 收藏 -
Java record 的紧凑构造器可以在不重复声明参数和字段赋值的情况下完成参数校验与规范化。本文用值对象示例说明隐式参数、异常边界和常见限制。293 收藏 -
Java 模块系统没有单独的只读导出关键字。本文用 exports 暴露稳定 API 包,把实现包留在模块内部,并说明限定导出、public、子包与 opens 的边界。293 收藏 -
Java List.copyOf 可以按源集合的迭代顺序创建不可变列表,副本不接受增删改,也不允许 null 元素。本文用一个小实验说明源集合、列表结构和元素对象之间的边界。292 收藏 -
文章 · java教程 | 2天前 | 文件处理 · Java · 异常处理 · nio · java 文件替换 Files.move ATOMIC_MOVE REPLACE_EXISTING 原子移动
Java Files.move 的 ATOMIC_MOVE 与 REPLACE_EXISTING 解决的是不同问题:前者约束原子移动,后者允许覆盖已存在目标。本文按 FileStore、目标状态和原子性要求拆解选择方式,并给出 AtomicMoveNotSupportedException 的处理边界。290 收藏 -
使用 Java Flight Recorder 的 RecordingFile.write 按事件类型筛选已有 recording.jfr,导出新的 JFR 文件;本文说明事件名称、多个事件白名单、类型清单和三种读取方式的选择边界。288 收藏 -
Java Commons CSV 中,空字符串是已映射列存在但值为 "";缺失列则要结合 isMapped、isSet 和 isConsistent 判断。本文给出安全读取顺序和不规则行处理方式。285 收藏 -
Gradle configuration cache 不复用时,先用 help 区分配置阶段和任务阶段,再根据问题报告修复 Project、监听器、外部进程和任务状态依赖;暂时无法迁移的任务只做局部 opt-out。281 收藏 -
Java CompletableFuture 合并两个异步结果时,优先用 thenCombine 让两个阶段正常完成后生成新值;需要切换线程池时使用 thenCombineAsync,并区分无返回值组合、allOf、异常传播和 join 的使用边界。280 收藏 -
Java Maven BOM 可以把一组相关依赖的版本集中到一个 POM,再由项目通过 dependencyManagement 和 import 引入。本文用原创示例说明 BOM 的写法、子模块声明、effective POM 排查,以及多个 BOM 重叠时的显式覆盖边界。279 收藏 -
Java Pattern 减少正则编译开销的关键是按规则生命周期复用编译对象。本文给出固定规则与配置规则写法,说明共享 Pattern、隔离 Matcher 及发布回退的注意事项。279 收藏