文章
这里收录了我发布的全部文章。
-
Go 服务:从接口契约到分层实现
写业务代码"无从下手"的本质是逻辑还在脑子里碎片化。解法是固定一条拆解路径——先定接口契约(入参出参),再定领域模型(存什么),最后分层填充业务逻辑(Handler → Service → Repository)。每一层只做一件事,卡壳时用伪代码注释占位,逐步替换为真实代码。
-
Go 服务:容量评估与扩容决策
Go 服务本身几乎不是瓶颈(纯 CPU 可达 10 万+ RPS),真正的瓶颈在数据库查询、RPC 调用等 I/O。决策核心是:用 CPU 利用率 × P99 延迟的组合判断该优化代码还是加机器,用连接池指标定位隐藏瓶颈。
-
Go 网络(一):goroutine-per-connection 模型与生产实践
Go 的网络编程模型是 goroutine-per-connection:每个连接一个 goroutine,写同步阻塞风格的代码,runtime 的 netpoller 在底层用 epoll/kqueue 实现异步 I/O。关键在于超时管理(Deadline 是绝对时间不是超时)和连接池配置(MaxIdleConnsPerHost 默认 2 是生产环境的坑)。
-
C++ 竞赛:ACM 模式 I/O 的组合拳
ACM 模式写 C++ 的 I/O 模板只有两行:iosbase::syncwith_stdio(false); cin.tie(nullptr);——关掉 C stdio 同步和 cin 对 cout 的 tie,把默认慢的 cin/cout 提到接近 scanf/printf 的速度;然后用 cin >> 读 token、getline 读整行、stringstream 切分变长字段 这三招覆盖 95% 的输入格式;剩下 5% 的极限数据量(> 10^7 整数)用 fread + 手写 parseInt 解决。最容易踩的坑是 cin >> 和 getline 混用时换行符残留、scanf 读 double 用错 %f、输出循环里写 endl 拖慢几十倍。