-
JDK 21 的 SequencedCollection 为有遇见顺序的集合统一了首尾访问和反向视图。本文从迁移回归入手,说明类型收窄、空集合异常、不可修改实现、reversed 视图及公共 API 兼容处理。
-
用 Java sealed interface 和 record 固定支付状态集合,结合 Java 21+ 的 switch 表达式减少非法状态组合,并在新增状态时获得编译期提醒。
-
Java 大文件不要先 readAllBytes 再 encodeToString。用 Base64.Encoder.wrap(OutputStream) 把编码器接到输出流上,输入端分块读取,关闭包装流时完成尾部补位,并根据协议选择基本、URL 或无补位编码。
-
JDK 26 通过 JEP 522 减少 G1 写屏障与 GC 后台线程之间的同步。本文用统一基线、GC 日志、JFR 和业务指标,说明怎样判断高吞吐优化是否在自己的负载上兑现。
-
ArrayDeque 明确禁止 null,不是实现遗漏,而是为了让 pollFirst 的 null 返回值稳定表示“队列为空”。本文从 addLast、pollFirst 和空值哨兵的关系出发,说明如何改造入队契约并验证边界。
-
Java Files.walk 返回的是惰性 Stream
,它可能持有目录遍历资源,不能像普通集合一样长期放着不管。本文说明如何用 try-with-resources 包住完整消费范围,区分空结果、遍历异常和关闭边界,并整理一个可复用的安全封装。
-
在早期JDK1.0发布时,Sun公司就为GUI开发提供了一套基础类库,这套类库被称为AWT(Abstract Window Toolkit),即抽象窗口工具包。AWT的起初设想就是为了统一实现不同操作系统的图像界面,但问题是,不同操作系统图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上
-
Java 25 的 AOT Method Profiling 会把训练运行得到的方法画像带到 JVM 启动阶段。本文用 record、create、on 三段命令拆解配置文件和缓存文件的关系,并核对 JDK、应用、操作系统与 CPU 不一致时的回退边界。
-
Java Path.relativize 失败通常不是目标文件不存在,而是两个 Path 的绝对相对类型或根路径不匹配。本文用一个最小诊断工具说明判断条件、统一路径和安全降级写法。
-
Java Optional 更适合表达方法可能没有结果,而不是长期挂在 DTO 或领域对象字段上。本文从一次字段改动引发的构造、序列化和调用问题出发,说明如何把缺失值语义放回正确边界。
-
在学习线程之前,需要先了解一下什么是进程。在一个操作系统中,每个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。例如同时运行的QQ、360安全卫士、Eclipse开发工具等。 在多任务操作系统中(即能同时执行多个应用程序),可以查看当前系统中所有的进程,这里以Windows操作系统为例,
-
用 Java Base64.Decoder 对比带 padding、无 padding 和非法尾部输入,解释 decode 的异常边界,并给出 String、byte[] 与 ByteBuffer 入口的选择方法。
-
Files.walk 的 maxDepth 从起始 Path 的深度 0 开始,所以当前目录始终会出现在结果中。本文用层级示例讲清深度、过滤、资源关闭和 API 选择。
-
Java Pattern.splitAsStream 会按照正则匹配到的分隔符创建有序 Stream,末尾空字符串不会进入流;本文用配置文本和日志字段拆分场景说明调用方式、空值边界、可变输入约束,以及它和 split、splitWithDelimiters 的选择差异。
-
Java Flow 的 request(long) 不是暂停线程,而是增加订阅未满足需求。本文从 onNext 停滞现象出发,解释固定窗口、半窗补请求、非法参数,以及 HttpClient BodySubscriber 的继续请求与取消边界。