java教程技术文章
-
Java ServiceLoader 适合把接口与实现解耦,但真正容易出错的是提供者发现、延迟实例化和单个坏实现对迭代器的影响。本文用一个 Formatter 服务拆开 uses、provides、Provider.type 与 Provider.get 的边界。265 收藏 -
文章 · java教程 | 1星期前 | 字符集 · Java教程 · 异常排查 · CharsetDecoder · ByteBuffer · 乱码 ByteBuffer Java教程 Java CharsetDecoder 字符解码
Java CharsetDecoder 默认可能用替换字符掩盖非法字节。本文用 REPORT 模式捕获 MalformedInputException,拆解 ByteBuffer 的 underflow/overflow 边界,并给出可核对解码结果的最小示例。265 收藏 -
文章 · java教程 | 5天前 | Java · IO · 异常处理 · jdk · PrintStream JDK 26.0.2 PrintWriter checkError InterruptedIOException
JDK 26.0.2 调整 PrintStream 与 PrintWriter 的中断写入行为:自定义输出流抛出 InterruptedIOException 后,不仅保留线程中断状态,还会设置包装器错误标记,使 checkError 返回 true。本文说明兼容差异与处理边界。265 收藏 -
StampedLock 的乐观读不是无锁读取。本文用一个读多写少的库存快照示例,对比 ReentrantReadWriteLock 与 StampedLock,说明 validate、回退读锁、写锁转换和中断边界,帮助你决定是否值得替换现有锁。264 收藏 -
处理跨地区订单或预约时间时,LocalDateTime 遇到夏令时重复小时会对应两个瞬间。本文用 ZoneRules 判断重复与缺失时间,明确偏移选择,并用回放测试锁住边界。264 收藏 -
文章 · java教程 | 1天前 | Java · httpclient · BodySubscriber · 响应体大小 · java httpclient BodyHandler BodyHandlers.limiting
Java HttpClient 在 JDK 25 及以上可用 BodyHandlers.limiting 限制下游收到的响应体字节数,超限会取消上游并以 IOException 结束;JDK 11 到 24 则可用自定义 Flow.Subscriber 实现同样的硬上限。263 收藏 -
文章 · java教程 | 2星期前 | 性能优化 · 集合 · Stream · Java教程 · Collectors · java 内存 性能 Stream Collectors.groupingBy 分组统计
Java Stream 做分组统计时,先收集再多次遍历容易放大内存和 CPU 成本。本文用订单状态统计说明 groupingBy、groupingBy+下游收集器与并行流的边界,并给出可复查的基准与选择方法。260 收藏 -
用 Spring Boot 3 的 ProblemDetail 统一批量导入接口错误响应,并把校验错误准确映射回 Excel 行号,兼顾部分成功、事务边界与前端展示。258 收藏 -
文章 · java教程 | 3星期前 | 反序列化 · Java教程 · 安全编程 · Java IO · java Java安全 ObjectInputFilter 反序列化过滤 Serialization Filter
Java ObjectInputFilter 可以在对象反序列化过程中检查类名、数组长度、对象图深度、引用数和输入字节数。本文用一个白名单场景写出最小过滤器,并用可验证的拒绝案例检查边界。257 收藏 -
Java Files.readString 读取 UTF-8 配置时出现乱码或首字符异常,通常不是文件内容损坏,而是字符集与 UTF-8 BOM 的边界没有处理好。本文用最小示例区分默认字符集、显式 UTF-8 和 BOM 清理方案。257 收藏 -
Jackson 反序列化日期失败,往往不是 JSON 字段不存在,而是输入格式、时区和字段级格式化配置没有对齐。本文从报错现场出发,用 LocalDateTime、Instant 和 OffsetDateTime 三种类型拆开定位路径,并给出可验证的修复方案。256 收藏 -
文章 · java教程 | 2个月前 | 性能优化 · Java教程 · CompletableFuture · 接口聚合 · java completablefuture orTimeout completeOnTimeout 接口性能 P95
用指标驱动方式讲解 Java CompletableFuture 聚合接口优化:先建立串行调用基线,再改为并发请求、设置超时兜底,最后用 P95、错误率和慢依赖占比验证效果。255 收藏 -
Java 文件上传的内存风险不只来自文件大小,还和解析阈值、临时目录、并发量及清理结果有关。本文用一个可复核的 Multipart 流程,把配置、代码边界和验收指标串起来。255 收藏 -
文章 · java教程 | 2星期前 | 线程池 · 并发编程 · 故障排查 · Java教程 · 任务取消 · java 线程池关闭 shutdownnow 线程池执行器 Thread.interrupt
Java 线程池调用 shutdownNow 后,等待队列会被移出,但正在执行的任务只是收到中断请求,并不等于立刻停止。本文从一次停机任务未收敛的现场出发,拆解中断传播、阻塞调用、任务清理和 awaitTermination 验收方法。252 收藏 -
Java DateTimeFormatter 的格式化结果可能随默认 Locale 改变。本文用固定模式、Locale.ROOT 和本地化样式对照,说明如何稳定生成接口、日志和用户界面的日期文本。252 收藏