software engineering notes

构建可靠
软件。

从一次请求的边界,到一个系统的韧性。这里记录架构取舍、工程实践与那些值得反复推敲的细节。

笔记系统 onlineUTC+08:00
last compile · 2026.07.29
selected notes

把复杂性放在正确的地方

VIEW ALL NOTES →
01 / API DESIGN

幂等不是一个 Header

从业务幂等键、状态机到并发窗口,重新拆解“重复请求也没关系”背后的设计条件。

Architecture
02 / DELIVERY

让镜像只携带运行所需

多阶段构建不只是缩小体积:它让构建依赖与生产运行时拥有清晰、可审计的边界。

Docker
03 / DATABASE

索引的价值,写在执行计划里

不要只看“建了索引”。从过滤率、回表成本到统计信息,判断 PostgreSQL 为什么真的使用它。

PostgreSQL
design principle

优雅的系统,应该能够从失败中恢复。

把取消、超时和重试写进正常路径。对用户而言,可靠性从来不是一个“异常情况”。

request.tsTypeScript
export async function fetchWithBudget(url: string) {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort(), 3_000);

  try {
    return await fetch(url, { signal: controller.signal });
  } finally {
    // 不把资源释放留给“也许会发生”的回调
    clearTimeout(timer);
  }
}