Go问答技术文章
-
filepath.Clean只能规范化路径字符串,不能证明文件仍在允许目录内。本文用 filepath.Rel 做词法范围判断,再说明符号链接、绝对路径和并发替换的防护边界。265 收藏 -
Go 文件跨盘迁移不要直接依赖 os.Rename;应在目标目录创建临时文件,复制并重新计算 SHA-256 校验,确认一致后再 Rename 替换目标,成功后按需删除源文件。115 收藏 -
Go 文件扫描中,os.Stat 会跟随符号链接返回目标对象;需要识别链接本身时应改用 os.Lstat,并结合 ModeSymlink、错误处理和业务决策选择正确的 API。350 收藏 -
Go os.ReadFile 失败时,先用 errors.Is 区分路径不存在与权限拒绝,再通过 *os.PathError、os.Stat 和父目录权限定位目录误当文件、路径上下文和运行身份问题。472 收藏 -
使用sql.NullTime接收database/sql查询中的NULL时间,利用Time与Valid区分缺失、零时间和具体时间,并说明展示与回写边界。452 收藏 -
围绕 Go database/sql 的事务边界,说明如何区分事务内校验结果与提交后的持久结果,正确处理 Rows、Rollback 和 Commit。501 收藏 -
Golang · Go问答 | 5天前 | go · 数据库连接池 · 故障排查 · database/sql · Go database/sql Rows提前退出 Go Rows关闭连接 database/sql提前退出 Go Rows.Err排查 Go查询结果集释放
Go database/sql 查询只取部分结果时,Rows 不能只依赖循环自然结束。本文用一个短生命周期函数说明如何关闭 Rows、保留 Scan 错误并检查 Rows.Err,帮助排查连接池占用不回落。240 收藏 -
讲清 Go database/sql QueryRow 没有记录时为什么要在 Scan 处理 sql.ErrNoRows,并将空结果、上下文取消和数据库故障分层转换为稳定的业务语义。170 收藏 -
Go ServeMux 将尾斜杠模式视为子树,访问子树根的无尾斜杠路径时会默认重定向。本文用 httptest 验证状态码与 Location,并说明如何注册精确路径覆盖默认规则。494 收藏 -
ResponseRecorder适合验证处理器输出,但不能代表真实连接和协议行为。本文用状态、Header、正文、Flush与NewServer测试分层补齐覆盖边界。442 收藏 -
从路径段与查询参数的组件边界出发,解释 Go net/url 中加号、空格、PathEscape、QueryEscape 以及两组 Unescape 的差异,并给出避免二次编码的排查清单。364 收藏 -
Go net/http 会按目标主机判断敏感请求头是否继续转发。本文结合 CheckRedirect 说明默认行为、跨域边界和受控目标的认证头处理方式。339 收藏 -
区分Go http.Client.Timeout与Transport阶段超时,明确拨号、TLS、响应头、响应体和业务代码的时间边界。484 收藏 -
Go net/http 中 204 No Content 的正确用法:服务端不要写正文,客户端按状态码决定是否解码响应体。210 收藏 -
Go HTTP 客户端请求成功后,Response.Body 需要正确读取和关闭,否则 Transport 可能无法复用 keep-alive 连接。本文用代码和排查表说明未关闭、未读完、提前返回及 Client 复用的处理边界。307 收藏