Go语言技术文章
-
Golang · Go问答 | 6天前 | 标准库 · net/http · Go问答 · ServeMux · HTTP路由 · Go 路径参数 http.ServeMux Request.PathValue 路由通配符
Go 1.22 引入的 http.ServeMux 路径通配符可以通过 Request.PathValue 读取,但空字符串既可能表示参数缺失,也可能是合法值。本文用订单路由示例拆开判断边界,并给出可兼容旧版本的处理方式。130 收藏 -
用一个可复现的锁竞争场景,说明 Java ReentrantLock.lockInterruptibly 的等待、中断、异常清理和 finally 释放顺序,避免把线程中断误写成强制解锁。422 收藏 -
测试 HTTP Handler 时,httptest.NewRequest 会按服务端请求语义填充 URL、Host、TLS 和 ContentLength。本文用路径、绝对 URL、HTTPS 与请求体四组样本,拆开检查请求目标边界,避免把客户端请求和服务端请求混在一起。349 收藏 -
Golang · Go问答 | 6天前 | 标准库 · 排序 · 泛型 · Slices · Go问答 · Go 稳定排序 iter.Seq slices.SortedStableFunc slices.Values
slices.SortedStableFunc 适合把迭代器中的数据收集到新切片后稳定排序。本文用订单优先级示例说明相等元素为什么保序、原切片为什么不会被直接改写,以及 Go 1.23 代码的兼容边界。266 收藏 -
Golang · Go问答 | 6天前 | go · 密码学 · 安全编程 · 密钥管理 · crypto/ecdh · Go crypto/ecdh PrivateKey.Bytes NewPrivateKey 密钥导出
crypto/ecdh.PrivateKey.Bytes 返回私钥的原始编码,适合在明确的密钥序列化边界重新调用 Curve.NewPrivateKey;本文拆开复制语义、曲线长度校验和敏感字节生命周期,避免把原始私钥 bytes 当成通用密钥文件格式。235 收藏 -
GitHub 2026 年第一季度 Innovation Graph 更新显示跨经济体开源协作继续增长,但指标只覆盖 GitHub 公共活动。本文拆解协作、开发者、仓库和语言指标的口径,并给出一套避免把平台数据误读成全行业结论的分析方法。495 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源包装对象可以把兜底清理与显式 Close 分开。本文用一个文件描述符包装示例说明 AddCleanup、Cleanup.Stop、KeepAlive 的调用边界,以及为什么它不能替代显式关闭。108 收藏 -
Golang · Go教程 | 6天前 | 性能分析 · Go教程 · 运行时监控 · 直方图 · Go p99 Float64Histogram runtime/metrics Buckets Counts
runtime/metrics.Read 返回 Float64Histogram 后,P99 不能直接对 Buckets 求平均。本文用 Buckets 与 Counts 的累计权重定位分位桶,并说明负无穷、正无穷和样本不足时的处理边界。314 收藏 -
Golang · Go问答 | 6天前 | 流式处理 · 工程实践 · net/http · Go问答 · HTTP服务器 · Go HTTP服务器 请求体 流式请求 EnableFullDuplex http.ResponseController
http.ResponseController.EnableFullDuplex 解决的是 HTTP 服务端同时读取请求体和写出响应的边界问题。本文用一个边读边回传的 Go Handler 拆开它的默认行为、启用时机、协议限制和测试检查点,说明什么时候该用,什么时候不该把它当成通用加速开关。296 收藏 -
用 Redis INCRBYFLOAT 做累计值时,重点不是把返回值当金额类型,而是核对输入格式、字符串结果、浮点误差和业务落库边界。487 收藏 -
用 time.ParseDuration 解析带小数、负号和多个单位的时长,区分语法错误与 Duration 溢出,并给出可复用的校验写法。358 收藏 -
Go 1.27 的 go/ast.PreorderStack 在遍历语法树时同时提供当前节点和父节点栈,适合判断嵌套函数、块作用域与调用位置。本文用一个可运行示例说明调用链、栈内容和边界处理。335 收藏 -
Golang · Go问答 | 6天前 | 命令行 · flag · 错误处理 · 工程实践 · Go问答 · Go Parse 命令行参数 参数解析 flag.FlagSet ContinueOnError
flag.FlagSet 的 Parse 失败并不等于整个对象回到初始状态。本文用 ContinueOnError 拆开 parsed、已写入的默认值、剩余参数和二次 Parse 的边界,说明什么时候应该新建 FlagSet,什么时候可以在测试或子命令场景复用。270 收藏 -
slog.Handler 收到的 Record 可能携带共享属性存储。单份转发通常可直接传递,多份分发或异步保留时应调用 Record.Clone,本文用 fan-out 与异步队列场景说明修改、并发和生命周期边界。119 收藏 -
数据库 · MySQL | 6天前 | MySQL · 错误处理 · 事务 · 存储过程 · 数据库运维 · MySQL存储过程 MySQL GET DIAGNOSTICS SQLSTATE MYSQL_ERRNO 事务异常处理
MySQL 存储过程中的异常处理不能只靠一个通用错误提示。GET DIAGNOSTICS 可以读取 SQLSTATE、MYSQL_ERRNO、MESSAGE_TEXT、NUMBER 和 ROW_COUNT,再把可审计的结果写入日志表;本文用订单入库事务说明诊断区读取、回滚与 RESIGNAL 的边界。215 收藏