Go语言技术文章
-
Go 泛型约束里的 ~string、~int 表示一组底层类型相同的类型集合。本文用自定义类型和组合约束说明波浪线与精确类型项的区别,以及如何选择约束边界。459 收藏 -
软件外包验收应把功能清单与缺陷台账分开管理,再用功能编号关联。本文给出功能清单、缺陷记录的字段设计,说明验收依据、关闭证据、交付物和权限检查,以及通过、有条件通过与不通过的整理方法。125 收藏 -
浏览器缓存命中却仍请求服务器,往往是资源过期后发生了协商缓存。本文从 304、Cache-Control、ETag、刷新方式和 Fetch cache mode 入手,给出 HTML、静态资源与个性化响应的排查和配置清单。477 收藏 -
Go 泛型约束应只暴露算法真正需要的能力。本文用 LatestByID 示例说明如何将 HasID 与 HasVersion 组合成 SyncRecord,解释接口嵌入的交集语义、类型项边界、函数参数替代方案,以及过度约束和性能误区。428 收藏 -
结合 Go 1.27 对具体泛型方法的支持,解释为什么接口方法仍不能声明额外类型参数,并用顶层泛型函数、接收者提升参数、具体泛型方法和窄接口四种方案重构 API。267 收藏 -
日志轮转后进程仍写旧文件,通常不是 logrotate 没生效,而是进程持有旧文件描述符。本文用 inode、rename、copytruncate 和 postrotate 解释现象,并给出可复用的排查与修复清单。490 收藏 -
通过命名切片调用泛型过滤函数后类型退化的问题,讲清 S ~[]E 的含义、类型推断、返回 S 的实现方式,以及 nil、底层数组共享和元素类型变化时的设计边界。387 收藏 -
从一次文件下载路径穿越排查出发,给出 pathlib 的安全拼接模板:拒绝绝对路径,解析根目录与候选路径,再用 relative_to 验证目录归属,并说明符号链接、strict 参数和竞态边界。463 收藏 -
Go 中同一算法只因数据类型不同而重复时适合使用泛型;不同类型需要不同方法实现、调用方只关心行为时更适合接口。本文用 Map 与 io.Reader 对比,并给出四项选择检查。230 收藏 -
使用 Java HttpClient 与 CompletableFuture 封装可取消的异步 GET 重试:只重试暂时性异常和指定状态码,加入退避、最大次数与请求超时,并把外层取消传播到当前 HTTP 交换或等待任务。212 收藏 -
用一个窄而清晰的 Go 类型约束统一 int、int64 和 float64 求和,并通过近似类型项支持业务命名类型。文章给出 Sum、SumBy、表驱动测试,以及空切片、溢出和浮点精度的边界说明。182 收藏 -
Go 的 QueryRowContext 总会返回非 nil 的 Row,查询错误、无结果和类型转换问题会延迟到 Scan。本文用可运行的错误分支解释这一设计,并给出 sql.ErrNoRows、Context 和 Row.Err 的正确处理方式。358 收藏 -
用 DateTimeImmutable 和 IANA 时区处理跨时区预约:解析时明确来源时区,保存统一 UTC,展示时再转换,并说明夏令时不存在和重复时间的处理边界。448 收藏 -
Go 批量查询不能只检查 QueryContext 和 Scan。本文用稳定主键游标分批读取数据,并在每页推进游标前检查 Rows.Err、处理 Close 错误与上下文取消,避免把半页结果误判为成功。270 收藏 -
Claude Sonnet 5.5 的价值不只在模型能力,而在更快响应、较低 token 成本与明确任务边界的组合。本文结合官方资料拆解企业迁移时应看的指标和验证方法。180 收藏