background picture of the home page

记录技术,沉淀成长

RabbitMQ 核心八股

一句话结论 RabbitMQ 的核心是 Exchange → Binding → Queue 的路由模型。消息可靠性靠三阶段保障(Confirm + 持久化 + ACK),死信队列处理失败消息,延迟消息靠 TTL+DLX 实现。 Exchange 类型

thumbnail of the cover of the post

Kafka 核心八股

一句话结论 Kafka 是分布式日志系统——消息按序追加到 Partition 末尾(顺序写),消费者按 Offset 拉取(Pull 模型)。高吞吐靠顺序写 + 零拷贝 + 批量压缩。 核心概念 概念

thumbnail of the cover of the post

Redis 持久化与高可用

一句话结论 RDB 是快照备份(全量、快、可能丢数据),AOF 是命令日志(增量、安全、文件大)。生产环境两者结合使用。高可用靠主从复制 + Sentinel + Cluster三级递进。 持久化 RDB(Redis Database) SAVE: 主线程执行 → 阻塞所有请求 ❌ BGSAVE:

thumbnail of the cover of the post

MySQL EXPLAIN 与慢查询优化

30 秒回答 EXPLAIN 是用来判断 SQL 执行计划的工具,面试重点看 5 个字段:type、key、rows、Extra、possible_keys。优化慢查询的顺序一般是:先确认慢 SQL 和执行频率,再看执行计划是否走对索引,然后检查扫描行数、回表、排序、临时表、锁等待和数据量增长。不要

thumbnail of the cover of the post

MySQL B+ 树与索引

一句话结论 MySQL InnoDB 用 B+ 树作为索引结构——非叶子节点只存键不存数据、叶子节点存完整行并通过双向链表连接。千万级数据只需 3-4 层,范围查询顺序 I/O 极快。 核心原理 为什么 B+ 树 二叉树千万数据约 24 层(24 次随机 I/O),B+ 树每节点存 1000 个键

thumbnail of the cover of the post

MySQL 锁:行锁/间隙锁/临键锁

一句话结论 InnoDB 有三种锁:行锁(锁定具体行)、间隙锁(锁定行之间的间隙,防插入)、临键锁(行锁+间隙锁,InnoDB 默认)。RR 隔离级别通过临键锁解决幻读。 核心原理 三种锁 表数据: [id=5] ...(间隙)... [id=10] ...(间隙)... [id=15] SELE

thumbnail of the cover of the post

MySQL 索引类型与优化

一句话结论 MySQL 索引优化围绕一个核心目标:减少回表。手段是覆盖索引、联合索引、索引下推,工具是 EXPLAIN。 覆盖索引 一句话: 查询所需字段全部能从索引中获得,不需要回表查聚簇索引。 -- 索引: (user_id, status, created_at) SELECT user_id

thumbnail of the cover of the post

MySQL 事务隔离与 MVCC

一句话结论 MySQL InnoDB 通过 MVCC(多版本并发控制) 实现非锁定的一致性读——每个事务看到的是快照数据,读写互不阻塞。隔离级别决定了快照的"新鲜程度"。 核心原理 四大隔离级别

thumbnail of the cover of the post

Go select 详解

一句话结论 select 是 Go 的多路复用语句——同时监听多个 Channel 操作,哪个先就绪执行哪个。多个同时就绪则伪随机选择一个,避免饿死。配合 default 可实现非阻塞操作。 核心原理 执行机制 1. 对所有 case 的 Channel 上锁(按地址排序防死锁) 2. 检查是否有

thumbnail of the cover of the post

Go panic 与 recover

一句话结论 panic 中断当前 Goroutine 的正常执行,沿调用栈向上传播并执行沿途的 defer。recover 只能在 defer 中捕获 panic,阻止程序崩溃。 核心原理 panic 传播 func C() { panic("error in C") } func B() { C(

thumbnail of the cover of the post