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):从基础代码探讨高内聚低耦合的演进
CMS 三色标记法
并发标记下用户线程改引用会导致对象漏标。记录三色标记法的原理,以及 CMS 用增量更新、G1 用原始快照各自解决漏标问题。
CMS 三色标记法
ReentrantLock 源码解析
从 lock() 一路跟到 AQS 的 acquire、tryAcquire 和 LockSupport.park,理清独占锁的获取、自旋与阻塞唤醒流程。
ReentrantLock 源码解析