java教程技术文章
-
Java CompletableFuture 里的 exceptionally、handle 和 whenComplete 都能接住异常,但职责并不相同。本文用一条可运行的订单校验流水线说明三者的返回值、异常传播、旁路记录和质量门禁边界,帮助你把失败处理放在正确的位置。125 收藏 -
支付渠道类型一多,enum 加 switch 容易把新增渠道遗漏在多个分支里。本文用 Java sealed interface 建模支付路由,和 enum + switch 做边界对比,给出兼容扩展、测试覆盖和上线选择建议。242 收藏 -
文章 · java教程 | 6小时前 | 故障排查 · Java教程 · JFR · 虚拟线程 · 并发性能 · synchronized reentrantlock 虚拟线程 JFR Java 21 VirtualThreadPinned
Java 21 虚拟线程并不是开得越多越快。只要把慢 I/O 放进 synchronized,虚拟线程就可能 pin 住承载它的平台线程,吞吐随并发上升反而下降。本文用 JFR 和 tracePinnedThreads 还原定位过程,并给出锁替换与版本边界。343 收藏 -
Java 项目本地构建通过、CI 却失败,往往不是代码突然变坏,而是 JDK、Maven 依赖缓存和质量检查没有被流水线固定。本文用一个订单服务的构建场景,拆开版本矩阵、依赖缓存、测试门禁和失败通知的配置边界。434 收藏 -
StampedLock 的乐观读不是无锁读取。本文用一个读多写少的库存快照示例,对比 ReentrantReadWriteLock 与 StampedLock,说明 validate、回退读锁、写锁转换和中断边界,帮助你决定是否值得替换现有锁。264 收藏 -
Java 25 把紧凑对象头从实验能力变成产品能力,但它不是所有服务都应立即打开的开关。本文用对象数量、堆占用、GC 次数和锁竞争四个观察点,说明它节省了什么、可能影响什么,以及如何在生产环境做小范围验证。394 收藏 -
Webhook 接口只校验一个固定密钥还不够,泄露过的请求可能被再次发送。本文从零做一个 Java 签名校验小服务,用时间戳、HMAC-SHA256 和请求体摘要判断请求是否可信,并用 curl 验收通过、过期和篡改三种结果。215 收藏 -
Java 批量导出订单报表时,直接把查询结果收集到 List 再写 Excel,很容易在大数据量下触发 Full GC 甚至 OOM。本文从一次导出任务的架构改造出发,拆解数据库游标读取、分片文件写入、任务状态保存和 Range 续传的配合方式。200 收藏 -
支付请求交给 Java CompletableFuture 后,超时不等于扣款失败,直接重试可能造成重复扣款。本文用幂等键、任务状态表、超时收口和延迟重试搭出一条可核对的处理链,并补上失败通知与人工复核边界。352 收藏 -
Java 8 应用升级到 Java 21,真正容易卡住的不是语法,而是 JAXB 缺失、强封装反射和默认字符集变化。本文用一套可复用的检查顺序,把编译、启动和回归验证串起来。425 收藏 -
文章 · java教程 | 1星期前 | 消息队列 · Java · 事务 · 架构设计 · Spring Boot · spring boot 最终一致性 事务消息表 Outbox Pattern 订单通知
订单状态写入数据库后再发送通知,最容易出现数据库成功而消息丢失的窗口。本文用 Spring Boot 和 outbox_event 表,把业务写入与待发送事件放进同一个事务,再用独立发送器处理重试、幂等和失败回退。498 收藏 -
文章 · java教程 | 2星期前 | 文件处理 · 配置管理 · Java · 命令行工具 · nio · Java Files.mismatch 配置目录校验 Files.mismatch Java文件对比
部署前想确认两份配置目录是否完全一致,不必先引入第三方 diff 库。本文用 Java NIO 的 Files.mismatch 做一个小型目录核对工具,处理参数校验、相对路径、二进制差异、报告输出和退出状态,最后给出可复查的本地运行方式。371 收藏 -
Java 25 将 ScopedValue 正式纳入平台 API,适合在一次请求的调用链里传递不会被中途修改的 requestId、租户和权限快照。本文用虚拟线程示例对比 ThreadLocal,给出最小写法、边界和迁移判断。284 收藏 -
文章 · java教程 | 2星期前 | Java · HTTP · ndjson · httpclient · 性能实践 · 流式读取 背压 Java HttpClient NDJSON BodyHandlers.ofLines
Java HttpClient 读取 NDJSON 时,先用 BodyHandlers.ofLines() 把响应转成逐行流,再在消费端做字段校验、数量上限和超时收尾。本文用订单事件流说明连接关闭、异常中断与消费速度不匹配时的处理边界。309 收藏 -
文章 · java教程 | 2星期前 | 并发 · Java · CompletableFuture · Java CompletableFuture 任务取消 orTimeout completeOnTimeout
CompletableFuture 超时后,调用方返回并不等于后台任务停止。本文用一个可复现实验对比 orTimeout、completeOnTimeout 与 cancel,给出超时降级、线程中断和资源回收的检查方法。152 收藏