Go语言技术文章
-
Go database/sql 事务中,业务语句失败、Rollback 失败和 Commit 失败对应不同的处理边界。本文用一段可复用代码说明如何保留原始错误、避免重复回滚,并解释提交失败后为什么要先按幂等键核对状态。123 收藏 -
Go context.WithValue 不要直接使用 string 或 int 作为跨包 key。本文用包内私有 key 类型和类型安全访问器,解决值碰撞、嵌套覆盖与类型断言分散的问题。123 收藏 -
stream_copy_to_stream 返回字节数偏少时,先区分源流已到当前位置、length 限制、offset 语义和目标流失败。本文给出可复制的 PHP 排查代码与边界清单。123 收藏 -
Go 限制上传读取长度时,不要只相信 Content-Length,也不要直接 io.ReadAll。本文用 io.LimitReader 暴露 maxBytes+1 字节,再配合 io.Copy 流式写入临时目标,区分正常文件、超限文件和读取失败。123 收藏 -
用 Go log/slog 的 WithAttrs 固定请求上下文,理解属性快照、WithGroup 分组继承和重复键的输出边界,并用一个可运行示例核对结果。122 收藏 -
Go 1.23 为 math/rand/v2.ChaCha8 增加了 Read 方法,适合从独立的确定性随机源批量取字节。本文从 NewChaCha8、Read、Uint64 交错调用和 Seed 重置入手,排查为什么同一道测试会出现不同字节序列,并给出并发隔离的写法。122 收藏 -
批量导出或生成大文件时,不要先拼成一个巨型字节切片。本文用 io.Copy、os.CreateTemp 和 os.Rename 组成流式落盘链路,说明内存边界、失败清理和原子替换如何配合。122 收藏 -
Redis 设置了 EXPIRE 后,键并不一定在到点瞬间从内存消失。本文从 TTL 读数、访问触发的惰性删除和后台主动过期检查入手,说明为什么会看到过期键,以及怎样用命令判断问题究竟在观察方式、访问路径还是过期清理压力。122 收藏 -
企业委托招聘服务时,验收不能只看推荐人数,应围绕岗位需求、候选人材料、面试反馈、到岗记录和回访结果形成一条可核对的交付链。122 收藏 -
MySQL 8.0 的 INVISIBLE 列可以让新字段先进入表结构,却不改变 SELECT * 的旧返回集。本文用同一张 orders 表演示灰度加列、显式读取和回滚检查。122 收藏 -
Redis 8.10 的 BLMOVEM 可以阻塞等待并批量搬运列表元素,但 COUNT 与 EXACTLY 的唤醒条件完全不同。本文从目标列表间歇性断粮的故障现象出发,拆清 timeout、OBO、BULK、事务与 Lua 场景的边界,并给出修复选择和上线检查清单。122 收藏 -
整理永雏小菲语音盒的素材收藏、分组、缓存和播放设置,说明公开产品资料页可见的功能与使用边界。122 收藏 -
Go pprof 看不到热点时,先确认 CPU profile 类型和业务负载是否覆盖目标路径,再用 seconds 拉长采样窗口,最后结合 top、list、flat 和 cum 判断样本是否足够。122 收藏 -
讲清 Go 自定义 net.Resolver.Dial 的调用边界,使用同一个 net.Dialer 转发上下文、网络类型和 DNS 地址,并接入 HTTP Transport 保留请求超时与本地网络配置。122 收藏 -
Python 3.15 引入 free-threaded Stable ABI(abi3t),本文从兼容路线、C API 改造、wheel 标签和双运行时测试说明扩展迁移准备。122 收藏