Go语言技术文章
-
Go 服务突然报 too many open files 时,先用 /proc/fd 和 lsof 判断文件描述符消耗,再检查 HTTP 响应体关闭、连接复用和 ulimit 配置,最后用指标与回滚手段确认修复有效。119 收藏 -
Go 的 PathEscape 与 QueryEscape 都能处理 URL 特殊字符,但服务端解析位置不同。本文用路径参数、查询参数和反向解析示例,说明编码边界、加号语义与测试方法。119 收藏 -
Go 的 map range 顺序没有稳定保证,同一张 map 也不能把第一次遍历结果当成下一次的顺序。本文用一个最小示例说明随机化边界,并给出测试、日志和接口输出需要排序时的可靠写法。119 收藏 -
Golang · Go问答 | 2个月前 | 并发 · 日志 · 标准库 · go · 错误排查 · 异步日志 handler log/slog Go slog.Record.Clone 属性生命周期
slog.Handler 收到的 Record 可能携带共享属性存储。单份转发通常可直接传递,多份分发或异步保留时应调用 Record.Clone,本文用 fan-out 与异步队列场景说明修改、并发和生命周期边界。119 收藏 -
用 Go 标准库解析源码,遍历 ast.FuncDecl,列出普通函数和方法的名称、参数签名与源码行号,并处理多名参数、无名参数、可变参数等常见 AST 边界。119 收藏 -
Go math/rand/v2 的顶层函数虽可并发调用,但任务需要独立状态时应为每个任务创建自己的 Rand。本文用 NewPCG、稳定种子和复现检查拆开并发安全、独立性与密码学安全边界。119 收藏 -
Go embed.FS 可以把模板目录嵌入二进制,再用 fs.Glob 按模式批量收集并交给 template.ParseFS。本文说明单层匹配、无匹配、非法模式和多层目录的处理边界。119 收藏 -
Go time.Time 取整时,Truncate 向下归入已开始的时间窗口,Round 选择最近的时间刻度。本文用代码和边界表对比两者结果,并说明 Location、负时间和非正 Duration 的处理方式。119 收藏 -
Bubble Tea 的 tea.Batch 适合互不依赖的命令并发组合,tea.Sequence 适合必须按顺序执行的命令。本文用原创 Go 示例说明两者的结果顺序、依赖关系、nil 命令与错误处理边界。119 收藏 -
Go Goldmark 默认按 CommonMark 解析 Markdown,表格语法需要显式接入 extension.Table。本文用一个最小 Go 示例说明 v1 的配置方式、Table 与 GFM 的选择、对齐输出和 v2 API 的迁移边界。119 收藏 -
围绕 Go database/sql 事务重试边界,说明怎样识别明确死锁错误、回滚完整事务、使用有限退避,并通过统一加锁顺序、幂等设计和提交不确定性避免把重试变成重复写入。119 收藏 -
用 Go time.ParseDuration 读取配置时长时,区分合法单位、空值默认、非法格式和业务范围校验,让超时与间隔配置在启动阶段可定位、可测试。119 收藏 -
Go 升级后 ZIP 字节快照失败,不一定是归档损坏。本文区分整包哈希、内部校验与成员内容,按输入、元数据和压缩器逐层判断,并给出成员级测试及发布哈希的取舍。119 收藏 -
Go 1.27 新增的 strings.CutLast 会围绕最后一个分隔符返回 before、after、found,而 strings.LastIndex 只返回字节位置。本文用重复分隔符、缺少分隔符、空分隔符和中文字符串说明两者的边界。119 收藏 -
Go bytes.Buffer.Grow 只预留后续写入空间,不会增加 Len。本文区分 Len、Cap 与 Grow 的语义,并用拼接示例说明如何预分配容量、复用 Buffer 和处理参数边界。119 收藏