Go教程技术文章
-
Golang · Go教程 | 2星期前 | HTTP · 连接池 · Go教程 · 性能排查 · net/http · Go HTTP客户端 连接复用 Transport httptrace Response.Body
Go HTTP 客户端请求量上来后,如果 Response.Body 没有按路径读取并关闭,或每次请求都新建 Transport,连接池就很难稳定复用。本文从一个连接数异常的服务场景出发,用 httptrace 验收复用结果,并给出响应体、Transport 参数和回归检查的落地写法。397 收藏 -
Go 服务突然报 too many open files 时,先用 /proc/fd 和 lsof 判断文件描述符消耗,再检查 HTTP 响应体关闭、连接复用和 ulimit 配置,最后用指标与回滚手段确认修复有效。119 收藏 -
以大批量订单导出为例,介绍 Go 如何通过分段文件、固定内存排序、k 路归并和断点清单,把一次性组装结果改造成可恢复的流式导出流程。487 收藏 -
bytes.Buffer.Reset 会清空长度,却保留底层存储。本文用基准和 Cap 指标拆开 Reset、Grow、大请求复用之间的关系,给出什么时候复用、什么时候换成新 Buffer 的判断边界。333 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。413 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。351 收藏 -
Go 1.24 引入 os.Root 后,处理用户可控文件名不必再手写一套容易漏掉符号链接和 .. 的路径校验。本文用一个安全文件读取小实验,验证 OpenRoot、Root.Open、OpenInRoot 的边界,并说明旧版本的兼容做法。437 收藏 -
Go 泛型函数接收 map 的 key 时,comparable 约束看似简单,却会牵涉接口值、切片、map 和运行时 panic 边界。本文用可编译示例拆解约束选择,并给出从 any 迁移到类型参数的检查清单。486 收藏 -
Golang · Go教程 | 2星期前 | HTTP · go · 网络安全 · net/http · SSRF · 安全边界 · SSRF net/http net/url Go教程 netip 出站请求 内网地址
Go 服务如果允许按参数访问远端 URL,真正的风险不只在字符串校验:DNS 解析后的地址、IPv4-mapped IPv6、重定向目标和代理配置都可能改变出站边界。本文用 net/url、netip 和 net/http 写一套可复查的 SSRF 防护骨架,并说明哪些判断必须在连接前和每次重定向时重复。275 收藏 -
Go 1.21 引入的 log/slog 适合结构化日志,但 password、token 和手机号不能直接写入生产日志。本文从一个小型订单服务出发,用 ReplaceAttr 处理嵌套组字段,接入 JSONHandler,并用 bytes.Buffer 验证脱敏结果。247 收藏 -
Go 1.21 引入的 slices.Sort、slices.SortFunc 和 slices.SortStableFunc 写法很像,但比较器语义、等值元素顺序和适用场景并不相同。本文用订单列表排序示例拆开三者的选择边界,并给出可复查的测试写法。397 收藏 -
用 Go html/template 处理用户可控 href 时,单靠 HTML 转义并不够。本文从协议注入风险出发,演示安全 URL 过滤、模板上下文转义与表格驱动回归测试。292 收藏 -
Go database/sql 查询循环结束并不等于读取完整成功,本文从连接中断、Rows.Close 和事务提交三个现场拆开 Rows.Err 的检查边界,并给出可复现的代码与验收方法。102 收藏 -
Golang · Go教程 | 2星期前 | 容器 · go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS cgroup Go 1.25 容器 CPU 限额
Go 1.25 开始,Linux 容器中的默认 GOMAXPROCS 会参考 cgroup CPU 限额,并在限额变化时自动更新。本文用最小示例说明旧代码的风险、GODEBUG 兼容开关、runtime.SetDefaultGOMAXPROCS 和上线前检查。438 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · go · csv · 数据导入 · 错误定位 · CSV导入 encoding/csv Go教程 FieldsPerRecord LazyQuotes
Go 标准库 encoding/csv 默认会用首条记录推断字段数,遇到不齐列或引号不规范的文件就可能在中途报错。本文用导入小工具拆开 FieldsPerRecord、LazyQuotes、ParseError 和逐行处理边界。216 收藏