java教程技术文章
-
文章 · java教程 | 5天前 | 序列化 · Record · Java教程 · 兼容性 · java Serializable ObjectInputStream ObjectOutputStream record
Java record 实现 Serializable 后,序列化状态由 record 组件决定,反序列化会调用规范构造器;普通可序列化类的重建路径和自定义钩子不同。本文用最小示例划清两者边界。313 收藏 -
Java Path.normalize() 只整理 . 和 .. 等冗余名称,不检查文件是否存在;toRealPath() 会访问文件系统并返回已存在目标的绝对真实路径。本文用符号链接和选择清单说明两者边界。298 收藏 -
Java Stream 使用 groupingBy 分组后,可以把 mapping 放在下游收集器中提取每组指定字段;如果改用 toMap,还要明确重复键的合并策略,并检查并行收集的顺序与合并边界。296 收藏 -
Java sealed class 或 sealed interface 的分支覆盖率异常,先区分 permits 类型边界与 if/switch 真实分支,再检查 JaCoCo prepare-agent、Surefire argLine、编译版本和测试路径。289 收藏 -
Java pattern matching for switch 遇到 null 时不会自动进入 default。本文用 case null 与 case null, default 对比说明匹配边界、合法组合和实际检查清单。274 收藏 -
BigDecimal.divide 不指定舍入规则时,遇到 1/3 这类非终止小数会抛出 ArithmeticException。本文按金额小数位、有效数字和严格校验三种场景说明如何选择 scale、MathContext 与 RoundingMode。266 收藏 -
Java sealed interface 通过 permits 限制直接实现者,并要求它们用 final、sealed 或 non-sealed 明确后续扩展边界。本文结合层级、模块包约束和二进制兼容性说明如何正确设计。266 收藏 -
CompletableFuture 异常处理要先定位阶段,再按目标选择 exceptionally、handle、whenComplete 或 exceptionallyCompose,并检查异常包装与线程池。265 收藏 -
文章 · java教程 | 6天前 | Java · httpclient · BodySubscriber · 响应体大小 · java httpclient BodyHandler BodyHandlers.limiting
Java HttpClient 在 JDK 25 及以上可用 BodyHandlers.limiting 限制下游收到的响应体字节数,超限会取消上游并以 IOException 结束;JDK 11 到 24 则可用自定义 Flow.Subscriber 实现同样的硬上限。263 收藏 -
Java Files.lines 返回的是持有文件资源的惰性 Stream,必须在 try-with-resources 中关闭;本文说明文件句柄为何持续占用、正确写法以及与 readAllLines、BufferedReader 的选择边界。248 收藏 -
Java 高并发统计计数优先考虑 LongAdder:它通过分散内部计数降低更新竞争,再用 sum 汇总;AtomicLong 则更适合序列号、额度和需要原子读改写的精确状态。本文对比两者的吞吐、读取、重置和迁移边界。243 收藏 -
Java Optional 的 empty 表示没有值,不等于异常。通过 map、filter 和 orElseThrow 的边界设计,可以保留真实故障并稳定处理缺省结果。242 收藏 -
Java HttpClient 的 sendAsync 返回可取消的 CompletableFuture。本文区分请求级超时与业务主动取消,给出保留原始 future、定时 cancel、异常分类和响应体收尾的完整写法。240 收藏 -
从异常中的模块与包名入手,区分 exports、opens 和读取关系,给出 Java 反射 setAccessible 失败的诊断代码与最小修复方案。227 收藏 -
Java HttpClient 没有直接的 multipart 表单构造器,需要自己处理 boundary、CRLF、文件段和长度。本文给出可计算长度的拼接方案,并说明大文件如何改用可重复创建的流式请求体。225 收藏