Go语言技术文章
-
Go 的 ZIP 条目名本来就使用正斜杠表示层级,但不能把名称直接拼到解压目录。本文用 archive/zip、filepath.IsLocal 和 filepath.Localize 还原目录结构,并区分目录条目、文件名编码与读取错误。149 收藏 -
用 Go log/slog 的 Logger.With 在请求入口固定 request_id、method 和 path,再把派生 Logger 传入服务层,让 JSONHandler 输出一致的请求属性,并避开全局污染与敏感字段泄露。149 收藏 -
Linux strace -f 会把子进程的系统调用也带进来,输出很快变得难读。本文用 -e、-P、-o、-ff、-qq 和 -s 分层缩小范围,并说明如何验证筛选没有把关键调用隐藏掉。149 收藏 -
Java 虚拟线程出现 carrier 被固定时,先按 JDK 版本判断 synchronized 是否属于 pinning 来源,再用 JFR 的 jdk.VirtualThreadPinned 和 jdk.tracePinnedThreads 定位阻塞栈,最后决定保留 synchronized、拆分临界区或改用 ReentrantLock。149 收藏 -
本文介绍在使用 mgo.v2 驱动操作 MongoDB 时,如何精准地向指定 configid 对应文档的 widgets 嵌套数组中追加新元素,核心是结合 $push 更新操作符与结构化查询条件。 本文介绍在使用 mgo.v2 驱动操作 MongoDB 时,如何精准地向指定 `configid`148 收藏 -
RAG 应用里,回答看似有引用却指错段落,往往不是模型单独出错,而是切块编号、索引元数据和原文版本没有保持同一条链路。本文用文档快照、chunk_id 和回答后验校验,搭一套可定位、可回归的引用验收方法。148 收藏 -
用 Go os.DirFS 暴露静态资源或模板目录时,关键不是把绝对路径换成相对路径,而是确认 io/fs 的 ValidPath 约束、根目录语义和测试边界。本文用一个最小文件服务示例拆开这些判断。148 收藏 -
reflect.Value.Comparable 用来先判断值是否具备 Go == 比较条件。本文从接口值和 slice、map 等不可比较类型出发,说明安全比较的写法、panic 边界与迁移检查点。148 收藏 -
解释 Go bytes.Buffer 的 UnreadByte 何时成功、何时返回错误,并用读取游标、最后一次读取和 Reset 场景给出可复现的核对方法。148 收藏 -
go/ast.Preorder 返回一个按深度优先顺序遍历语法树的迭代器。本文从源码扫描器的高压场景出发,拆解节点顺序、break 提前停止和解析错误的边界,并给出可复查的实现方式。148 收藏 -
用 Go 的 testing.B 对比 json.Marshal 与复用 bytes.Buffer 的 json.Encoder,说明如何固定输入、报告分配次数、避免把准备工作计入循环,并正确解释速度、内存和输出换行差异。148 收藏 -
用户输入的正则模式不能交给 MustCompile。本文用 regexp.Compile、errors.As 和 syntax.Error 做输入边界、内部诊断与对外提示的分层处理。148 收藏 -
农业种子经销商进货验收,不能只看包装是否完整。本文按标签字段、供货凭证、批次台账和异常隔离四个环节,整理一套可追溯的核对方法。148 收藏 -
MySQL 覆盖索引通过让过滤、排序和结果列落在同一索引中,减少回到聚簇数据页读取整行的机会。本文以订单列表为例,讲解投影收窄、联合索引设计、EXPLAIN 验收及写入成本控制。148 收藏 -
Go io.NewSectionReader 可以把 ReaderAt 限定在指定偏移和长度内读取。本文说明 off 与 n 的范围表达、ReadAt 的相对偏移、EOF 判断以及并发和资源生命周期边界。148 收藏