Go语言技术文章
-
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 收藏 -
用 stat 对照 Linux 文件的 inode、mtime、ctime 和 sha256sum,判断配置是否真的被替换,以及服务是否重新读取了新文件。147 收藏 -
用 log/slog 给请求日志补 request_id 时,WithAttrs 适合固定上下文,Handler 包装适合动态注入。本文用一段可运行示例说明两者的边界、并发安全和验收方法。147 收藏