bigfish
记录技术和生活。
自建 Umami 给博客做访问统计
不接 Google Analytics,用 Umami + 现有的 Postgres 自建一套无 Cookie 的访问统计,含国内的镜像拉取、数据库迁移和 API 初始化。
自建 Umami 给博客做访问统计
用 Zola + Linkita 把博客搬到自己的对象存储上
不租服务器、不用 Netlify,把静态博客直接托管在自建的 RustFS(S3 兼容对象存储)上,并补齐 SEO 与访问统计。
用 Zola + Linkita 把博客搬到自己的对象存储上
领域驱动设计(DDD):从三层架构到 DDD 架构的演化
三层架构在复杂业务下的三个典型问题——业务逻辑分散、领域模型贫血、过度依赖数据存储,以及对应的 DDD 分层与各层职责划分。
领域驱动设计(DDD):从三层架构到 DDD 架构的演化
领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进
不堆概念,从一段下单的「事务脚本」代码开始,逐步演进到实体、值对象、聚合根与领域服务,说明 DDD 到底解决了什么耦合问题。
领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进
一行代码引发的性能暴跌 10 倍
循环里少写了一个引用,性能掉了十倍。从 JIT 逃逸分析与标量替换的角度,解释为什么「没被使用的对象」会真的被消除掉。
一行代码引发的性能暴跌 10 倍
一个正则表达式导致 CPU 高的问题排查过程
线上 CPU 飙到 80% 以上,最后定位到一个写错的邮箱正则。记录 top -H、jstack 到正则回溯(catastrophic backtracking)的完整排查过程。
一个正则表达式导致 CPU 高的问题排查过程