Go语言技术文章
-
Redis Stream 消费者组出现积压时,先用 XPENDING 区分未分配消息和已分配未确认消息,再按 idle 时间和重试次数决定 XAUTOCLAIM、人工核查还是进入重试队列。本文用可复现的订单事件示例梳理定位、接管与回滚边界。422 收藏 -
Go 项目从 fmt.Println 走向结构化日志后,标准库 slog、zap 和 zerolog 都能完成 JSON 输出,但默认行为、扩展方式、性能与迁移成本并不一样。本文按项目约束比较三种方案,并给出可落地的选择规则。151 收藏 -
Go 的 PATCH 接口如果直接把请求体解码到普通结构体,字段缺失和显式 null 很容易被合并。本文用指针与 json.RawMessage 设计可验证的更新参数,说明两种方案的取舍、错误处理和兼容边界。226 收藏 -
文章 · php教程 | 1个月前 | 依赖注入 · 架构设计 · PHP · PHP 8 · 属性 · ReflectionClass · 依赖注入 可测试代码 ReflectionClass 构造器注入 PHP 8 属性
不引入完整容器,也可以用 PHP 8 属性和反射做一个可控的轻量依赖注入容器。文章从构造器参数解析、服务注册、单例边界和测试替身四个角度,给出可运行的小实现,并说明哪些场景不该继续扩展。262 收藏 -
用 sync.Pool 复用 bytes.Buffer 可以减少短生命周期对象的分配,但必须处理 Reset、取出类型和跨请求数据污染问题。本文从一次响应体串数据的故障现场出发,给出可验证的实现、边界和复查方式。173 收藏 -
Go 里 errors.Is 返回 false,很多时候不是目标错误不对,而是错误链在中间被格式化字符串截断了。本文从一个可复现的订单查询示例出发,比较 %v、%w 和自定义错误的行为,再给出 errors.Is、errors.As 的检查边界与测试写法。148 收藏 -
订单表把地区和渠道放在 JSON 字段后,JSON_EXTRACT 条件常常无法直接利用普通索引。本文用一张 orders 表复现慢查询,再通过生成列与联合索引让 EXPLAIN 和实际耗时同时给出可核对的变化。278 收藏 -
Redis 分布式锁最危险的 bug 不是没加锁,而是释放时删掉了后来持有者的锁。本文从锁过期、业务变慢和重复释放的现场出发,说明唯一令牌如何确认所有权,再用 Redis Lua 脚本把校验与删除放进同一个原子动作,最后补上续期、超时和故障恢复边界。326 收藏 -
Go 服务调用不稳定依赖时,重试循环里反复使用 time.After 容易留下不可控的定时器分配,固定退避也会让请求集中重试。本文用可取消的 timer.Reset 写一个带上限、抖动和结果核对的重试器。351 收藏 -
面对百万行 CSV,不要一上来就把文件整体读进内存。本文用同一份订单导出数据比较 csv 流式读取、pandas chunksize 和 SQLite 分批导入,给出按内存、清洗复杂度和后续查询需求选方案的可运行边界。330 收藏 -
Redis Stream 消费组出现 pending 积压时,先用 XPENDING 看数量和空闲时间,再用 XAUTOCLAIM 接管超时消息,最后通过幂等、分批和回滚把积压安全排空。494 收藏 -
GitHub 披露受污染 VS Code 扩展事件后,Go 团队应如何检查仓库权限、Actions 工作流、依赖来源和密钥暴露?本文给出一套可在半小时内完成的安全体检清单。388 收藏 -
2026年七夕是8月19日,按国务院公布的2026年部分节假日安排,七夕不属于全国统一放假的法定节假日。本文把日期核对、是否放假、请假与出行安排几个容易混淆的点放在一起说明。165 收藏 -
Go 服务接收 JSON 时,json.Decoder 和 json.Unmarshal 的区别不只在写法。本文用连续 JSON 请求的真实场景,说明如何选择解析方式、如何检查请求体边界,以及怎样避免多读数据或漏掉尾部内容。446 收藏 -
PHP PDO 事务里最容易误判的不是 beginTransaction,而是异常有没有真正离开业务边界、commit 是否只发生一次,以及回滚后调用方是否仍把失败当成功。本文用订单扣库存场景拆开这些边界。329 收藏