java教程技术文章
-
Files.lines 返回的是带文件资源的 Stream。本文用可运行示例说明 try-with-resources 的关闭边界、异常路径和大文件读取时的验收方法,避免句柄长期占用。499 收藏 -
文章 · java教程 | 1个月前 | 消息队列 · Java · 事务 · 架构设计 · Spring Boot · spring boot 最终一致性 事务消息表 Outbox Pattern 订单通知
订单状态写入数据库后再发送通知,最容易出现数据库成功而消息丢失的窗口。本文用 Spring Boot 和 outbox_event 表,把业务写入与待发送事件放进同一个事务,再用独立发送器处理重试、幂等和失败回退。498 收藏 -
文章 · java教程 | 3天前 | Java教程 · Java 反射 · 方法句柄 · 类型适配 · 并发基础 · java MethodHandles MethodHandle MethodType 参数适配器 WrongMethodTypeException
MethodHandle 真正难的不是找到方法,而是让调用点、目标句柄和参数适配器拥有可核对的 MethodType。本文用 filterArguments、explicitCastArguments 和 invokeExact 组合一个可运行的调用链,并说明 WrongMethodTypeException 应该在哪一层提前发现。497 收藏 -
解释 Java record 作为 HashMap 键时查询失败的原因,覆盖 equals、hashCode、一致性约束、可变字段与嵌套对象的排查方法。496 收藏 -
梳理 Spring Boot 接口参数校验完整工作流:定义 DTO 边界、添加校验注解、触发 @Valid、统一错误响应,并给出常见误区和速查表。495 收藏 -
ArrayList.subList 返回的是由父列表支撑的视图。父列表一旦绕过该视图发生结构修改,视图语义就会失效,常见表现是 ConcurrentModificationException。本文用可运行示例拆开视图、结构修改、复制隔离和安全删除的边界。494 收藏 -
Java 26 的 StructuredTaskScope 仍是预览 API。本文用两个并发子任务演示如何配置 timeout、调用 join 获取结果,并解释超时后取消与 close 等待线程结束的边界。493 收藏 -
Java Semaphore 的公平参数不是性能开关,而是等待线程获取许可的排队契约。本文用批量调用限流场景说明 permits、公平与 tryAcquire 超时的边界,给出线程饥饿复现、可靠释放和验收清单。492 收藏 -
文章 · java教程 | 2个月前 | Spring Boot · Java教程 · 接口设计 · Webhook · 幂等设计 · java spring boot WebHook 回调接口 幂等 状态流转 验签
本文从 Java 服务接收第三方 Webhook 的接口设计出发,说明如何定义回调目标、验签参数、幂等键、错误响应、状态流转和兼容策略,避免重复通知和伪造请求。488 收藏 -
用一个订单事件解析故障,拆开 Java record pattern 在类型匹配、嵌套解构和 null 分支中的边界。486 收藏 -
线程池满载或进入关闭流程时,任务拒绝不应该只变成一条模糊异常。本文从一个有限队列的订单异步任务池出发,拆解拒绝处理器的错误语义、四种内置策略与调用方重试边界,并给出可验收的 Java 示例。484 收藏 -
文章 · java教程 | 2个月前 | Java · 线程安全 · DateTimeFormatter · 日期处理 · 并发问题 · java 线程安全 日期格式化 threadlocal SimpleDateFormat DateTimeFormatter
线上偶发出现 2025-13-32 这类异常日期,很多时候不是数据源错了,而是多个线程共享了 SimpleDateFormat。本文从复现现象开始,逐步验证共享可变状态,并给出 DateTimeFormatter 和 ThreadLocal 两种修复方式。481 收藏 -
文章 · java教程 | 3天前 | 并发 · Java · 线程池 · 性能优化 · future · java 并发任务 future take poll CompletionService 完成队列
Java 完成队列会把已完成的 Future 放入队列,适合从多个并发任务中按完成先后消费结果。本文用一个最快结果优先的查询场景,比较 take 与 poll 的边界,并说明超时后如何取消剩余任务和安全关闭线程池。479 收藏 -
文章 · java教程 | 2个月前 | Java · Stream · 集合统计 · 分组聚合 · Collectors · java Stream Collectors groupingBy counting summarizingInt
本文用订单列表示例讲清 Java Stream 分组统计:按状态分组计数、按用户汇总金额、用 summarizingInt 一次拿到数量、总和、最大值和平均值。478 收藏 -
文章 · java教程 | 2星期前 | 命令行工具 · Java教程 · Java 25 · 语言特性 · 入门实践 · Java 25 Compact Source Files instance main JEP 512 java.lang.IO
Java 25 正式交付 Compact Source Files 和 instance main,单文件小工具可以省掉显式 class、static 与 String[] 参数,同时仍使用 java、javac 运行。本文从一个可运行的命令行小程序开始,核对 java.lang.IO、自动导入、参数入口和迁移回普通类时的边界。478 收藏