Go语言技术文章
-
用请求级 context 派生查询超时,把它传给 database/sql 的 QueryContext,并在取消、超时和驱动错误之间做出清晰判断,同时保证结果集关闭和连接池资源回收。344 收藏 -
Go database/sql 的 sql.DB 是连接池。需要让一组操作落在同一个数据库会话时,可以用 DB.Conn 获取独立连接;操作结束必须调用 Conn.Close 将连接归还池中,并用上下文控制等待时间。209 收藏 -
用 Go database/sql 查询一条记录时,QueryRowContext 的错误要在 Scan 处读取,并正确区分 sql.ErrNoRows、类型转换失败和查询错误。302 收藏 -
Go ReverseProxy改写请求头需要区分Director与Rewrite、目标URL与HTTP Host。本文给出固定上游的原创示例,说明转发元数据的重建和继承边界,并归纳迁移时的选择规则。303 收藏 -
Go SSE 推送的关键不是循环 Write,而是用 ResponseController.Flush 提交事件,用 ticker 心跳维持空闲连接,并通过 Request.Context 感知客户端断开后停止生产。294 收藏 -
Go multipart 上传要同时限制请求总大小和解析内存:MaxBytesReader 负责入口上限,ParseMultipartForm 负责内存与临时文件取舍,再把超限统一返回 413 并清理资源。201 收藏 -
Go HTTP 客户端拿到响应后,Body 的读取程度和关闭时机都会影响连接复用。本文按完整读取、只看状态码和有限排空三种场景说明如何选择,让 defer、读取上限与 HTTP/1 复用策略各司其职。125 收藏 -
Go HTTP客户端分层超时需要区分网络环节上限、请求业务预算与客户端总超时。本文通过原创小响应示例说明配置方法、正文读取和资源关闭,并解释超时并存与常见误用。157 收藏 -
介绍 Go 1.22+ net/http ServeMux 的路径参数提取方式,说明 PathValue、参数校验以及 400、404、405 状态码的边界,并给出适配外部路由的 handler 契约。417 收藏 -
Go 配置文件不要直接截断写入。本文用同目录唯一临时文件、Write、Sync、Close 和 Rename 组织一次原子替换,说明失败清理、权限、并发读改写以及平台持久化边界。218 收藏 -
Go 的 archive/tar 只负责顺序读取归档条目,不会替业务自动决定输出目录边界。本文围绕路径穿越、绝对路径、符号链接、硬链接和设备节点,比较词法过滤、专用空目录与更强文件系统隔离三种方案,并给出一套拒绝危险类型、只写入目标目录的解包实现。120 收藏 -
用 go/parser 生成 Go AST,再用 ast.Preorder 以迭代器形式完成深度优先前序遍历;同时比较 Inspect 与 PreorderStack 的控制边界,并处理解析错误、节点筛选和源文件位置。206 收藏 -
用 embed.FS、fs.Sub 和 html/template.ParseFS 组织 Go 默认模板,说明包内构建边界、启动阶段解析和请求执行的错误处理方式。423 收藏 -
Go嵌入资源遍历需要区分原始文件系统与fs.Sub子视图的相对路径。本文通过完整代码说明WalkDir回调、目录跳过和同视图读取规则,避免路径混用。360 收藏 -
围绕 encoding/xml.Decoder.Token 讲清混合 XML 节点的顺序读取、StartElement 分派、CharData 处理和 Skip 跳过嵌套子树,给出可复用的 Go 遍历函数与边界处理方式。208 收藏