2026/6/26大约 6 分钟
线程 A 已经拿到了资源 1,线程 B 也拿到了资源 2。接下来,线程 A 想继续往下走,需要资源 2;线程 B 想继续往下走,又需要资源 1。
两个线程都没抛异常,也不是 CPU 把机器打满了。线上看到的现象可能只是几个请求一直不返回,线程池里的工作线程慢慢被占住。
这类问题麻烦就麻烦在这里:程序没有“算错”,而是卡在一条自己解不开的等待链上。
线程死锁说的就是这种情况:一组线程互相等对方释放资源,等待关系绕成闭环,参与其中的线程都没办法靠自己继续执行。
如果这些线程正好承载订单、支付、库存这类关键流程,外部看到的就不只是某个线程 BLOCKED 了,而是接口超时、队列堆积,甚至进程迟迟退不干净。
2026/6/26大约 28 分钟
MySQL 是后端开发最常用的关系型数据库之一,也是数据库面试中最容易追问到底的专题。学习 MySQL 时,建议围绕“索引怎么让查询变快、事务怎么保证一致性、日志怎么保证恢复和复制、备份怎么兜住数据事故、执行计划怎么定位慢 SQL”这几条主线展开。
适合谁看
- 想系统学习 MySQL 原理和性能优化的后端开发者。
- 准备 MySQL 索引、事务、MVCC、日志、执行计划相关面试题的同学。
- 已经能写常规 SQL,但对慢 SQL 分析、索引设计和事务问题不够熟的读者。
- 需要在项目中处理 MySQL 性能、数据一致性和字段设计问题的工程师。
2026/6/26大约 5 分钟
SQL 是后端开发绕不开的数据库基本功。无论后续学习 MySQL 索引、执行计划,还是做慢 SQL 优化,都需要先把查询、过滤、聚合、连接、子查询和数据修改这些基础语义掌握扎实。
适合谁看
- 正在学习数据库基础和 SQL 语法的后端开发者。
- 准备 SQL 基础、SQL 查询题、数据库 CRUD 相关面试题的同学。
- 写过简单 SQL,但对 JOIN、GROUP BY、HAVING、子查询和执行顺序不够熟的读者。
- 想在学习 MySQL 索引和 SQL 优化前补齐 SQL 基本功的工程师。
2026/6/26大约 3 分钟
