java教程技术文章
-
JDK 26 使用 Java 24 引入的 Stream Gatherers,把窗口、扫描、映射和自定义状态组合进同一条流管道。本文按输入输出、andThen、生命周期、并行与落地边界说明怎样选择组合方式。190 收藏 -
JDK 26 为 java.net.http.HttpClient 提供 HTTP/3 能力,但迁移重点不是改一行协议常量,而是核对 HTTPS、代理、TLS、服务端能力与降级策略。本文给出可执行的评估矩阵和灰度清单。114 收藏 -
JDK 26 的 JEP 530 第四次预览把基本类型带入更多模式匹配场景。本文从旧写法的分支基线出发,解释 primitive pattern、instanceof 安全转换、switch 的 case 与 when,以及 Object、包装类型和 null 的装箱边界。492 收藏 -
JDK 26 的 JEP 516 让 AOT 缓存中的 Java 对象可以用与 GC 无关的格式顺序加载。本文按训练、组装、生产三个阶段说明怎样减少启动与预热工作,以及缓存失配时应该重建的边界。134 收藏 -
Java 虚拟线程 pinned 定位应先区分运行版本,再结合 JFR 事件与线程转储,记录时间窗口、调用栈和证据边界,避免把等待或同步关键字直接当成钉住结论。158 收藏 -
Java 服务变慢时,使用 jcmd Thread.print -l 获取线程状态、锁信息和栈帧,按 BLOCKED、WAITING、TIMED_WAITING 与 RUNNABLE 分组,再结合锁拥有者和多次采样定位真正的阻塞。241 收藏 -
Java Files.find 可以在遍历文件树时直接接收 BasicFileAttributes 做过滤。本文用普通文件、大小和修改时间三个条件说明属性匹配写法,并用 try-with-resources 及时关闭返回流。345 收藏 -
Java Pattern 减少正则编译开销的关键是按规则生命周期复用编译对象。本文给出固定规则与配置规则写法,说明共享 Pattern、隔离 Matcher 及发布回退的注意事项。279 收藏 -
Java record 的字段是 final,但可变 List 仍可能通过共享引用被外部修改。本文用 compact constructor 和 List.copyOf 处理集合防御性复制,并说明它不等于深拷贝。494 收藏 -
Java MethodHandles.Lookup 的权限不是全局开关:本文用私有实例方法、publicLookup 和模块 opens 关系说明句柄创建时的访问检查,以及如何收窄和管理句柄能力。320 收藏 -
文章 · java教程 | 2星期前 | Java · 集合 · 资源管理 · Stream · Java教程 · supplier Java Stream Files.lines Stream生命周期 重复遍历
Java Stream 不是可反复读取的集合视图:一次终止操作后,继续使用同一个 Stream 可能抛出 IllegalStateException。本文从昂贵数据源的生命周期出发,说明何时保存集合、何时保存 Supplier>,并给出 Files.lines 的资源关闭写法。 146 收藏 -
用 Java ClassValue 按 Class 延迟缓存元数据,理解 get、computeValue、remove 的生命周期、失效方式与并发边界。165 收藏 -
Java Files.probeContentType 返回 null 并不等于文件损坏,而是当前文件类型探测器无法确定 MIME 类型。本文区分 null 与 IOException,解释扩展名、平台和 FileTypeDetector 的影响,并给出上传场景的受控兜底策略。218 收藏 -
Java 使用虚拟线程后,可以通过 jcmd Thread.dump_to_file 导出包含虚拟线程的文本或 JSON 线程转储。本文从目标 JVM、格式选择、输出边界和诊断材料整理四个方面说明用法,并提醒它不是暂停 JVM 的一致快照。366 收藏 -
Java ArrayDeque 适合在队列两端进行插入、删除和查看。本文用首尾语义拆开 add、offer、poll、peek、push、pop 的选择,并说明空队列、null 元素和线程安全边界。312 收藏