记录真实开发问题、项目实践和两三句就能说明白的技术点
本地 docker run 一把梭,真正发到服务器就出事:时区差 8 小时、日志找不到、内存不受控、升级要停服、回滚靠重传 jar。本文按真实发布流程给出一套务实做法——镜像只在构建机打、运行镜像用 JRE 并配 MaxRAMPercentage、日志挂载出容器、--res...
Nginx 能扛几十万并发,但默认配置远没发挥出来。本文先讲透 master-worker 多进程 + epoll 事件驱动模型——理解了模型,调优参数就顺理成章,再给出完整的高并发配置:worker 进程与连接数计算、系统内核参数、HTTP keepalive 与 gzi...
同一个 Spring Boot 应用,有人打出 800MB 的镜像,有人做到 150MB 且构建飞快,差别全在 Dockerfile。本文先从镜像分层原理推出两条铁律——不变的放前面、单条 RUN 用完即清,再给出生产级多阶段构建模板(maven 构建阶段 + JRE 运行...
凌晨告警"消费积压 XX 万条"怎么处理?本文把积压当系统性故障而不是随机事件:先讲清积压本质是消费速度跟不上生产速度,列五种最常见成因(消费者太少、单条太慢、下游故障、毒消息卡死、频繁 Rebalance),再给出三层观测手段(lag 指标、耗时日志、主动对账)与"先止血...
消息丢失是 MQ 生产事故高发区,且可能发生在生产者、Broker、消费者任意一段。本文把消息一生拆成三关逐个击破:生产端用同步确认 + 失败重试 + 本地消息表补偿防"发不出去";Broker 端用刷盘策略 + 多副本 + ISR 与 acks=all 防"存不住";消费...
从 Topic、分区、副本、offset 到消费组,Kafka 的核心概念不难但全是考点。本文先用一张"数据组织图"讲透每个概念的职责,再走一遍消息从生产到消费的完整链路:分区选择、攒批发送、ISR 同步、acks=0/1/all 语义,最后给出 spring-kafka ...
上消息队列该选 Kafka 还是 RocketMQ?本文不罗列参数,而是先把四款主流 MQ 的架构模型讲清楚:Kafka 的分区日志与高吞吐、RocketMQ 的事务与延迟消息、RabbitMQ 的交换机路由、Pulsar 的存算分离,再给一张含吞吐量级、功能特性、运维成本...
“三级缓存”人人会背,但为什么必须是三级、为什么构造器注入解决不了循环依赖?本文从 Bean 生命周期(实例化-属性填充-初始化)讲起,用 A/B 互相依赖的代码还原三级缓存的工作流程与提前暴露机制,深入剖析 AOP 代理与“半成品被引用”的矛盾——这是必须多设一层的根本原...
日志、权限校验、耗时统计等横切逻辑如何优雅落地?本文建立 AOP 术语坐标系(Aspect/Pointcut/Advice/JoinPoint),详解五种通知的执行时机与顺序、execution 与 @annotation 切点表达式写法、JDK 动态代理与 CGLIB 代...
支付回调重复通知、消息队列重复投递、用户狂点提交按钮、RPC 自动重试——不做幂等轻则脏数据重则资损。本文先讲清幂等与防重的区别,再逐一拆解六种生产方案:数据库唯一索引(并发兜底最强)、状态机单向流转、Redis SETNX 防重窗口、token 令牌原子消费、乐观锁 CA...
线上 CPU 飙高、内存告警、接口全超时怎么一步步查?本文把故障排查变成可复制的操作手册:先讲排查总纲(先定性再定位),再用完整命令链覆盖三大高频事故——CPU 100%(top -Hp + jstack 定位死循环或 GC 风暴)、内存溢出(各类型 OOM 解读 + jm...
还在用 Future.get() 傻等、写串行查表拼装的慢接口吗?CompletableFuture 是 Java 8 异步编排的利器。本文先点出 Future 阻塞、无依赖编排、异常难处理三大痛点,再用大量可运行示例讲透 runAsync/supplyAsync、then...
用 Redis 做分布式锁,只 SETNX 会死锁、不设过期时间会误删、锁超时业务没跑完会并发穿透。本文从 V1 到 V4 逐步推导出正确实现:原子加锁(NX EX)+ 唯一 value + Lua 原子释放,讲透看门狗自动续期、Redisson 可重入锁原理(Hash 计...
为什么引入一个 starter 依赖什么都不配置就能用?本文从 @SpringBootApplication 与 @EnableAutoConfiguration 拆起,讲清自动配置加载链路(imports/spring.factories 配置列表 + 条件注解 + 配置...
GC 是 JVM 面试的必考主题。本文按判定、算法、收集器、调优的顺序展开:可达性分析与 GC Roots、四种引用类型、标记-清除/复制/标记-整理三大算法与分代理论、Serial 到 G1/ZGC 各收集器特点与适用场景(含 CMS 四阶段与 G1 Region 思想)...