java教程技术文章
-
Java 25 StructuredTaskScope 子任务失败时,使用 FailedException 读取原始原因,让兄弟任务响应中断,并用 close 等待资源安全收尾。208 收藏 -
文章 · java教程 | 2天前 | 字符集 · Java教程 · HTTP客户端 · java httpclient charset BodyHandlers ofByteArray ofString
Java HttpClient 的 BodyHandlers.ofByteArray 适合保留原始响应字节,ofString 适合文本,ofString(Charset) 适合协议或业务已明确字符集的文本。本文用响应资产、字符集和内存边界三个角度说明如何选择,并补充流式读取、文件落盘和敏感数据日志的安全边界。429 收藏 -
Java Optional.stream 会把有值的 Optional 变成只含一个元素的顺序 Stream,把空 Optional 变成空 Stream。本文用一组可选查询结果拆解 flatMap(Optional::stream) 的写法、边界和落地选择。170 收藏 -
Java sealed interface 在未命名模块中要求 permits 子类型同包;命名模块可以跨包但不能跨模块。本文按 package、module 和 permits 三层关系拆解常见编译错误与代码组织方式。265 收藏 -
Java record 的紧凑构造器可以在不重复声明参数和字段赋值的情况下完成参数校验与规范化。本文用值对象示例说明隐式参数、异常边界和常见限制。293 收藏 -
Java computeIfAbsent计算回调不应更新同一个Map。结合JDK25文档和单线程依赖计算示例,区分容器重入检测与业务依赖环,说明完成缓存、失败清理及并发改造边界。207 收藏 -
Java 21 开始可以用 SequencedCollection 统一表示具有明确遇到顺序、支持两端操作并可反向查看的集合。本文从 List、Deque、SortedSet 和 LinkedHashSet 的共同接口出发,说明 getFirst、getLast、addFirst、removeLast 与 reversed 的使用方式,以及空集合、不可修改集合和旧版本兼容边界。308 收藏 -
用一个小型任务协调器讲清 Java 虚拟线程执行器的创建边界、正常关闭、超时收敛和 Future 取消,帮助区分执行器生命周期与单任务中断。140 收藏 -
从 G1 GC 日志的事件行、Eden/Survivor/Old/Humongous 区域变化和阶段耗时入手,区分 Young、Mixed、Full GC 与 evacuation failure,建立暂停原因的分析顺序。221 收藏 -
用 PreparedStatement.addBatch 收集多组参数,在明确的提交窗口中执行 JDBC 批量写入;本文同时说明自动提交、更新计数、BatchUpdateException 与失败回滚的处理边界。156 收藏 -
Java 模式 switch 的 default 不接收 null。本文通过独立空值分支、组合兜底和输入矩阵,说明如何区分缺失值与未知类型,定位分支内部的空指针风险。162 收藏 -
Java HttpClient 遇到 3xx 时,301/302/303 可能让 POST 变成 GET,而 307/308 保留方法。本文讲清 followRedirects 的选择、请求体重发边界和响应链排查方法。207 收藏 -
Java 项目同时使用 module-path 和 classpath 时,问题通常来自依赖形态、命名模块可见性或编译与启动参数不一致。本文按路径对象、命令复现、模块声明和部署清单四层定位冲突。210 收藏 -
文章 · java教程 | 2天前 | JSON · Java · 序列化 · 类型系统 · java 反序列化 jackson sealed interface 多态JSON JsonTypeInfo
Java 多态 JSON 映射的关键不是把 JSON 直接绑定到任意类,而是在 sealed 类型集合、kind 判别字段和 Jackson 反序列化策略之间划清边界。本文给出从旧模型迁移到显式逻辑类型名的做法,并说明未知类型、缺失字段和新增子类型如何回归。478 收藏 -
通过 LinkedHashMap、TreeMap 和下游 Collector,分别控制 Java Stream 分组后的键顺序与组内元素顺序。104 收藏