Go教程技术文章
-
Go 1.26 为 runtime/pprof 增加了实验性的 goroutineleak profile,可以帮助发现因 channel、锁等并发原语永久阻塞的协程。本文用一个提前返回的收集器复现泄漏,说明启用开关、采样方式、误判边界和回滚检查。257 收藏 -
用 Go 1.24+ 的 os.OpenInRoot 和 os.Root 将文件打开限制在指定目录内,理解相对路径、符号链接、错误边界与旧代码迁移方式。256 收藏 -
部署一个很小的 Go Web 服务时,模板和静态文件常常成为额外的发布物。本文从零搭建一个使用 embed.FS 的小项目,把页面与资源编译进单一二进制,并说明目录、路由、验收和更新边界。255 收藏 -
Go slog.LevelVar 适合把日志级别做成可并发更新的运行时开关。本文用一个 HTTP 管理入口演示 LevelVar、Handler 与回滚配置的配合,重点核对动态生效、并发读取和错误配置不污染当前级别。255 收藏 -
用 Go net/http 实现文件上传时,同时处理请求体大小、multipart 内存边界、原始文件名清洗、扩展名校验和服务端存储名。254 收藏 -
Go 服务更新本地配置时,直接覆盖正式文件可能让读取方看到半截内容。本文用临时文件、写入校验、Sync 和 Rename 组成原子替换流程,并补上权限、并发读取、失败回滚与验收日志。253 收藏 -
Go 的 io/fs.ReadDir 会按文件名排序返回目录项,但底层 ReadDirFile、os.File.ReadDir 和错误场景的行为并不完全一样。本文从一次目录索引顺序错乱的排查开始,拆清排序、部分结果和测试边界。253 收藏 -
Go log/slog 不只是把日志改成 JSON:请求 ID、用户字段和模块信息应该在哪一层注入,决定了日志能否检索以及每条记录的成本。本文从 HTTP 请求链路拆开 With、分组属性、动态字段和高并发场景的取舍。252 收藏 -
用 base64.Encoding.Strict 对比普通解码,验证末尾填充位、CorruptInputError 和 DecodeString 的错误边界,给出可复现的 Go 示例。252 收藏 -
Golang · Go教程 | 1个月前 | csv · Go教程 · 后端架构 · 流式响应 · 大文件导出 · 大文件下载 FLUSH CSV导出 Go教程 流式写出 csv.Writer rows.Next
Go 做大文件 CSV 导出时,不建议一次性把全量数据查到内存再拼成文件。更稳的方式是按批读取数据库、边读边写 csv.Writer,并通过 Flush、限流、超时和指标观察控制下载链路。251 收藏 -
Go 1.24 新增 os.Root,用于把文件操作限制在指定目录内。本文从不可信压缩包和上传文件的落盘链路出发,说明 os.OpenRoot、Root.Create 的用法、适用边界和迁移检查点。251 收藏 -
Go 1.27 新增标准库 uuid 包。本文用 NewV7、Parse、Compare 和 String 拆开时间排序、格式兼容、非法输入与零值边界,给出可运行的请求标识示例。251 收藏 -
Go 1.23 的 maps.Keys 返回 iter.Seq,遍历顺序仍不保证稳定。本文从 for range 与 maps.Keys 的关系出发,演示如何用 slices.Sorted 得到可复现的键序列,并说明排序成本与兼容边界。251 收藏 -
Golang · Go教程 | 1个月前 | HTTP · 文件下载 · Go教程 · Range请求 · ServeContent · 断点续传 Content-Range Go教程 HTTP Range ServeContent 206 Partial Content 视频拖动
用 Go 的 http.ServeContent 实现支持 Range 的文件响应,覆盖 206 片段返回、416 越界、Accept-Ranges、浏览器拖动和普通 200 兜底。250 收藏 -
Golang · Go教程 | 1星期前 | 文件操作 · 配置管理 · 数据持久化 · Go教程 · 原子替换 · 配置文件 Go 数据持久化 os.Rename 原子替换 os.File.Sync
配置文件写入成功并不等于断电后一定保留。本文用 Go 的临时文件、os.File.Sync、os.Rename 和目录同步串起安全替换流程,解释每一步解决什么问题,以及如何用重启和故障注入思路核对结果。250 收藏