置顶 精华 原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)
一、为什么不推荐 Executors 阿里开发手册明确禁止使用 Executors 创建线程池,原因是: newFixedThreadPool 使用无界队列 LinkedBlockingQueue,可能 OOMnewCachedThreadPool 最大线程数为 Integer.MAX_VALUE,...
置顶 精华 原创 深入理解 JVM 垃圾回收:从分代模型到 G1 调优实战
一、为什么要理解 GC Java 程序员不需要手动释放内存,但一旦出现 Full GC 频繁、STW 时间过长的问题,如果不理解垃圾回收原理,就只能靠猜。 一次典型的故障:某订单服务在大促期间 RT 从 50ms 飙升到 3s,监控显示每分钟触发 2~3 次 Full GC。 二、分代假说 JVM ...
置顶 精华 原创 Spring Boot 3 优雅处理全局异常的 5 种方式(含源码)
前言 如果每个 Controller 都写 try-catch,代码会变得又臭又长。Spring Boot 提供了多种全局异常处理机制,本文逐一对比。 方式一:@ControllerAdvice(最常用) 方式二:统一响应体 方式三:自定义异常 + 错误码枚举 方式四:实现 ErrorControl...
原创 crontab 自然触发验证 (CRONSYNC-2056)
这是一篇用于验证 crontab 自然触发同步的临时文章,验证完成后会删除。
原创 Java 线程池参数详解与生产环境最佳实践(避坑指南)
## 一、为什么不推荐 Executors 阿里开发手册明确禁止使用 `Executors` 创建线程池,原因是: - `newFixedThreadPool` 使用无界队列 `LinkedBlockingQueue`,可能 OOM - `newCachedThreadPool` 最大线程数为 `I...
原创 Spring Boot 3 优雅处理全局异常的 5 种方式(含源码)
## 前言 如果每个 Controller 都写 `try-catch`,代码会变得又臭又长。Spring Boot 提供了多种全局异常处理机制,本文逐一对比。 ## 方式一:@ControllerAdvice(最常用) ## 方式二:统一响应体 ## 方式三:自定义异常 + 错误码枚举 ## 方式...
1共 6 条