Learning Log · 互联网技术

LZZ的学习记录

// 笔记 · 总结 · 思考  ·  持续更新中

笔记列表 — 05 entries
01 / JavaScript 事件循环深入理解 2026-04-17
JS 是单线程语言,靠事件循环实现异步。执行顺序:同步代码 → 微任务队列(Promise.thenqueueMicrotask)→ 宏任务队列(setTimeoutsetInterval、I/O)。每次宏任务执行完,都会清空全部微任务队列,再取下一个宏任务。浏览器还有一个额外的"渲染"步骤位于宏任务之间,因此过多同步运算会阻塞页面渲染,长任务应用 scheduler.postTasksetTimeout 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 表示全表扫描,refeq_ref 才是理想状态。复合索引遵循"最左前缀"原则,设计时需结合实际查询模式。
MySQL 索引 B+树 性能
04 / 前端工程化:Monorepo 实践 2025-12-05
Monorepo 是将多个项目放在同一个代码仓库中管理的策略。主流工具有 pnpm workspacesTurborepoNx。核心优势在于:统一依赖版本、代码共享更方便、跨包改动一次提交即可追踪。配合 turbo run build --filter=... 可以做到增量构建,大幅提升 CI 效率。缺点是初期配置复杂,需要规划好包的边界。
前端工程化 Monorepo pnpm Turborepo
05 / HTTP 缓存机制详解 2025-11-01
HTTP 缓存分为强缓存协商缓存两大类。强缓存通过 Cache-Control: max-ageExpires 控制,命中时直接从本地读取,不发送请求。协商缓存则会向服务器发送请求验证资源是否变更,常用字段是 ETag / If-None-MatchLast-Modified / If-Modified-Since。合理利用缓存可以显著降低页面加载时间,减少服务器压力。
HTTP 缓存 浏览器 性能优化