01 /
JavaScript 事件循环深入理解
2026-04-17
JS 是单线程语言,靠事件循环实现异步。执行顺序:同步代码 → 微任务队列(Promise.then、queueMicrotask)→ 宏任务队列(setTimeout、setInterval、I/O)。每次宏任务执行完,都会清空全部微任务队列,再取下一个宏任务。浏览器还有一个额外的"渲染"步骤位于宏任务之间,因此过多同步运算会阻塞页面渲染,长任务应用 scheduler.postTask 或 setTimeout 0 分片处理。
JavaScript
事件循环
异步
微任务
02 /
微服务通信:gRPC vs REST
2026-02-13
REST 基于 HTTP/1.1 + JSON,可读性强,生态成熟,适合对外开放 API。gRPC 基于 HTTP/2 + Protobuf,二进制编码体积小、序列化速度快,天然支持双向流式传输,适合内部微服务高频调用。选型关键点:如果接口需要被浏览器直接调用选 REST;若是纯后端服务间通信且对延迟敏感,选 gRPC 收益明显。
微服务
gRPC
REST
系统设计
03 /
数据库索引:B+ 树与查询优化
2026-01-09
MySQL InnoDB 使用 B+ 树 作为默认索引结构。叶节点存储完整数据行(聚簇索引),非叶节点仅存 key,利于范围查询。使用
EXPLAIN 分析执行计划时,重点关注 type 字段:ALL 表示全表扫描,ref 或 eq_ref 才是理想状态。复合索引遵循"最左前缀"原则,设计时需结合实际查询模式。
MySQL
索引
B+树
性能
04 /
前端工程化:Monorepo 实践
2025-12-05
Monorepo 是将多个项目放在同一个代码仓库中管理的策略。主流工具有 pnpm workspaces、Turborepo 和 Nx。核心优势在于:统一依赖版本、代码共享更方便、跨包改动一次提交即可追踪。配合
turbo run build --filter=... 可以做到增量构建,大幅提升 CI 效率。缺点是初期配置复杂,需要规划好包的边界。
前端工程化
Monorepo
pnpm
Turborepo
05 /
HTTP 缓存机制详解
2025-11-01
HTTP 缓存分为强缓存和协商缓存两大类。强缓存通过
Cache-Control: max-age 或 Expires 控制,命中时直接从本地读取,不发送请求。协商缓存则会向服务器发送请求验证资源是否变更,常用字段是
ETag / If-None-Match 和 Last-Modified / If-Modified-Since。合理利用缓存可以显著降低页面加载时间,减少服务器压力。
HTTP
缓存
浏览器
性能优化