置顶 精华 原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)

一、为什么不推荐 Executors 阿里开发手册明确禁止使用 Executors 创建线程池,原因是: newFixedThreadPool 使用无界队列 LinkedBlockingQueue,可能 OOMnewCachedThreadPool 最大线程数为 Integer.MAX_VALUE,...
1个月前 阅读 1.6万 点赞 870 评论 2

置顶 精华 原创 深入理解 JVM 垃圾回收:从分代模型到 G1 调优实战

一、为什么要理解 GC Java 程序员不需要手动释放内存,但一旦出现 Full GC 频繁、STW 时间过长的问题,如果不理解垃圾回收原理,就只能靠猜。 一次典型的故障:某订单服务在大促期间 RT 从 50ms 飙升到 3s,监控显示每分钟触发 2~3 次 Full GC。 二、分代假说 JVM ...
2个月前 阅读 3.8万 点赞 1049 评论 3

置顶 精华 原创 Spring Boot 3 优雅处理全局异常的 5 种方式(含源码)

前言 如果每个 Controller 都写 try-catch,代码会变得又臭又长。Spring Boot 提供了多种全局异常处理机制,本文逐一对比。 方式一:@ControllerAdvice(最常用) 方式二:统一响应体 方式三:自定义异常 + 错误码枚举 方式四:实现 ErrorControl...
2个月前 阅读 4.6万 点赞 2441 评论 3

原创 crontab 自然触发验证 (CRONSYNC-2056)

这是一篇用于验证 crontab 自然触发同步的临时文章,验证完成后会删除。
4天前 阅读 9 点赞 0 评论 0

原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)

## 一、为什么不推荐 Executors 阿里开发手册明确禁止使用 `Executors` 创建线程池,原因是: - `newFixedThreadPool` 使用无界队列 `LinkedBlockingQueue`,可能 OOM - `newCachedThreadPool` 最大线程数为 `I...
1个月前 阅读 13 点赞 0 评论 0

原创 Spring Boot 3 优雅处理全局异常的 5 种方式(含源码)

## 前言 如果每个 Controller 都写 `try-catch`,代码会变得又臭又长。Spring Boot 提供了多种全局异常处理机制,本文逐一对比。 ## 方式一:@ControllerAdvice(最常用) ## 方式二:统一响应体 ## 方式三:自定义异常 + 错误码枚举 ## 方式...
2个月前 阅读 11 点赞 0 评论 0