Go语言技术文章
-
用一个短时长 Go time.Timer 最小复现 Stop 后仍收到事件的现象,解释 Go 1.23 前后的通道语义差异,并给出不会误阻塞的兼容处理方式。471 收藏 -
OpenTelemetry 语义约定更新不会自动等价于所有链路字段改名。本文以当前语义约定 1.45.0 和 HTTP 迁移规则为例,说明如何识别字段变化、稳定性、双发迁移与 schema URL,并把应用、Collector、后端查询和回滚记录对齐。469 收藏 -
PHP 的 24 小时并不总是同一种语义:createFromDateString('24 hours') 会按时间组件推进,而 PT24H 表示固定时长。本文用时区切换场景说明差异,并给出业务选择和检查清单。467 收藏 -
Go unique.Handle 可直接进行相等比较。本文给出批次匹配和三组基准示例,区分字符串内容比较、句柄复用与转换成本,说明分配收益如何判断。466 收藏 -
CommentMap.Update 只迁移注释关联,不替换 AST 父字段。通过完整 Go 示例说明写回节点、Filter 筛选以及浅复制和注释位置的适用范围。466 收藏 -
Redis ACL SETUSER 限制命令时,不能只写 +get 或 +@read,还要同时配置键模式。本文从 reset 重建最小权限用户,比较单命令、命令分类与 Redis 7.0 选择器,并用 ACL WHOAMI、ACL LOG 和 NOPERM 区分排查方向。462 收藏 -
Go encoding/json 的 Decoder 可以连续读取多个顶层 JSON 对象。本文给出可复用的 Decode 循环,区分空输入、正常 EOF、截断 JSON、语法错误和字段类型错误,并说明 InputOffset 与 More 的使用边界。462 收藏 -
Go http.Client 请求超时却没有按预期结束,常见原因是使用了零值 Timeout、忽略了响应体读取阶段,或把 HTTP 状态错误误当成传输错误。本文用 httptest 构造延迟响应头的最小复现,并对比 Client.Timeout 与请求级 Context 的使用边界。462 收藏 -
Go 1.23 提供的 slices.Chunk 可以把切片按固定大小变成批次迭代器。本文从一个可中止的批处理场景出发,说明空输入、最后一批不足 n 个元素、n<=0 以及子切片容量边界。461 收藏 -
MoveBefore 传入同一个节点时本来就不会改变链表;本文从节点身份、所属列表和目标位置三个条件解释无变化现象,并给出可直接套用的排查写法。460 收藏 -
NumPy 布尔索引读取会复制数据,不能直接改成任意掩码的零复制视图。本文按聚合、原位修改与分块消费三种需求说明如何减少不必要的大数组副本,并交代掩码、数据类型和生命周期的限制。460 收藏 -
用 net/http.CrossOriginProtection 保护状态变更接口时,如果健康检查使用非安全方法,可用 AddInsecureBypassPattern 配置精确的例外模式。本文说明方法匹配、直接匹配、冲突和默认拒绝边界。459 收藏 -
用 Maven toolchains 把项目需要的 JDK 从 Maven 运行环境中解耦:配置 toolchains.xml、声明匹配条件,并处理版本范围、vendor 和 CI 路径边界。458 收藏 -
使用 strings.Builder 构造长字符串时,先校验空输入,再按片段和分隔符的字节数估算容量并调用 Grow。本文用一个可复用示例说明错误返回、Len、Cap、Reset 与 Builder 生命周期边界。458 收藏 -
使用 bytes.Cut 解析首个分隔符时,关键不是看 before 或 after 是否为空,而是读取 found。本文用一组覆盖空字段、缺少分隔符、空输入和空分隔符的示例,说明如何保留错误边界并安全复用原始字节切片。458 收藏