Go语言技术文章
-
用 testing.TB.Context 把测试生命周期传给子协程,处理取消时机、Cleanup 顺序和 goroutine 退出验收,避免测试结束后仍有后台工作。407 收藏 -
用雨后玻璃温室、青苔小径和顶部留白做一套竖屏手机壁纸,提供可复用的中文提示词、英文提示词、柔光变体与改词方法。296 收藏 -
用原生 Popover API 做一个可访问的无 JavaScript 弹出层,覆盖 popover、popovertarget、light dismiss、焦点行为与不支持浏览器的降级方案。235 收藏 -
reflect.TypeFor[T]() 从 Go 1.22 开始直接返回泛型类型 T 对应的 reflect.Type。本文对比旧的 reflect.TypeOf((*T)(nil)).Elem(),说明接口类型、指针类型、类型缓存和 Go 版本兼容边界,给出可运行的类型判断示例。184 收藏 -
上传图片时先用 Go image.DecodeConfig 读取宽高和格式,再决定是否进入完整解码,减少大文件校验阶段的内存压力。223 收藏 -
QueueHandler 本身不会自动把日志变成安全的异步链路:如果它把记录送回监听同一队列的日志路径,就会出现递归、重复输出或队列持续增长。本文用最小示例拆开 QueueHandler、QueueListener 与 logger 层级的边界,给出可验证的安全配置。306 收藏 -
Java 线程池准备退出时,close、shutdown 和 awaitTermination 到底怎么配合?本文用一个可验证的收尾流程说明停止接收任务、等待完成、记录未完成任务和超时兜底的边界。399 收藏 -
PHP flock 能让同一文件的竞争请求排队,但它不会自动替业务去重。本文用一个可复现的并发脚本,拆解锁模式、临界区范围、异常退出和释放后的再次执行,给出检查与回滚方法。196 收藏 -
Golang · Go问答 | 1星期前 | golang · Context · 信号处理 · Go问答 · 服务退出 · Go 优雅退出 os/signal signal.NotifyContext 进程信号
Go 服务使用 signal.NotifyContext 接收终止信号时,常见问题不是信号不存在,而是注册时机、父 Context 已取消或测试进程没有真正发送信号。本文用一个最小服务拆解注册顺序、取消边界和可复现的验收方法。129 收藏 -
Kubernetes v1.37 已于 2026 年 8 月 26 日发布。本文不堆更新清单,而是从稳定特性、兼容风险和回滚证据三条线拆解新集群升级前后的判断方法。314 收藏 -
多轮对话一旦超过模型上下文窗口,常见表现不是单纯报错,还包括旧约束丢失、工具参数变长和响应质量波动。本文用一个可复现的 token 预算实验,拆解消息裁剪、摘要保留与最近轮次保护的组合策略。361 收藏 -
Golang · Go教程 | 1星期前 | golang · 服务端 · 故障排查 · net/http · 连接泄漏 StateIdle ConnState Go net/http StateHijacked
Go net/http 的 ConnState 能记录连接从新建、活跃、空闲到关闭的状态变化,但它不是按请求计数的万能监控器。本文用一个连接数持续上涨的场景,建立状态计数、识别 Hijacked 长尾,并用复现和回收检查确认问题是否真正消失。311 收藏 -
数据库 · Redis | 1星期前 | Redis · Redis Cluster · 故障排查 · Pub/Sub · Redis Cluster Redis PUBSUB SHARDCHANNELS Redis 分片订阅 SHARDNUMSUB
Redis Cluster 使用分片 Pub/Sub 后,频道是否活跃、订阅者到底在哪个节点,不能再只看 PUBSUB CHANNELS。本文用 PUBSUB SHARDCHANNELS、SHARDNUMSUB 和节点范围核对分片频道,拆开模式匹配、活跃定义与故障排查边界。228 收藏 -
MySQL 开启 ONLY_FULL_GROUP_BY 后,ANY_VALUE 可以解决哪些非聚合列报错?本文用订单分组示例说明它的语义、风险边界和核对方法。371 收藏 -
Go sync.Cond 的关键不是把 Signal 换成 Broadcast,而是让等待条件、互斥锁和唤醒范围保持一致。本文从有界队列场景出发,拆解 Wait 的循环写法、Signal 与 Broadcast 的选择、丢唤醒风险和可验证的测试边界。104 收藏