Go语言技术文章
-
Go语言通过函数式装饰器模式,在不修改原函数基础上动态添加日志、监控等功能,利用闭包将函数作为参数传入并返回增强后的新函数,如loggerDecorator和metricsDecorator可链式组合,形成从外到内的执行流程,适用于HTTP中间件、错误恢复等场景,提升代码复用性与可维护性。359 收藏 -
整理并发治理上线前必须确认的 context、限流、连接池、降级和监控事项。357 收藏 -
合理使用Go的channel需选择合适的类型,无缓冲用于同步,有缓冲提升异步性能;发送方应及时关闭channel避免泄漏;利用select实现非阻塞操作与超时控制;减少频繁创建channel和goroutine,采用workerpool复用资源;通过fan-in/fan-out优化负载均衡,提升并发效率。351 收藏 -
配置 http.Client 和 Transport 超时,避免下游慢响应占满资源。351 收藏 -
panic不会跨goroutine传播,每个可能panic的goroutine都需自行defer+recover并执行资源清理,否则将导致静默泄漏;recover后不可继续业务逻辑,仅用于记录、降级与清理。350 收藏 -
Golang · Go教程 | 3星期前 | singleflight · 并发编程 · Go教程 · 后端工程 · Golang实战 · 缓存治理 · golang Go 并发控制 缓存击穿 请求合并 后端工程 生产实践 singleflight
从热点 Key 缓存失效导致并发回源的线上场景出发,讲清 Go singleflight 的 Do、DoChan、shared、Forget、错误传播、超时边界和上线观测。350 收藏 -
在Golang中,sync.Mutex和sync.RWMutex用于解决并发访问共享资源时的数据竞争问题,1.sync.Mutex是互斥锁,同一时间只允许一个goroutine访问临界区,适用于读写频率相近或写较多的场景,典型应用包括保护共享变量、结构体字段和配合sync.Once进行一次性初始化;2.sync.RWMutex是读写锁,允许多个读操作并发执行但写操作独占,适用于读远多于写的场景如配置管理、缓存系统和状态监控,能显著提升并发性能;3.选择时应根据读写比例决定,读写接近用Mutex,读远多于写347 收藏 -
通过一个后端服务调用第三方接口的案例,演示 Go context.WithTimeout、defer cancel、HTTP 请求取消、错误判断和常见坑,避免接口一直等待。346 收藏 -
Go连接Elasticsearch需处理TLS验证、v7/v8API差异、mapping结构错位及HTTP状态码检查,否则生产环境易现401、x509、timeout或查无结果。343 收藏 -
Go所有参数传递都是值传递,slice、map、chan、func、*T等类型因值中含指针可间接修改原数据;int、string、数组、结构体等则完全拷贝,修改不影响原值。342 收藏 -
本文介绍使用OpenSSH的ControlMaster多路复用机制,在不阻塞主进程的前提下,安全、可检测地建立并验证SSH连接是否真正就绪,适用于需后续复用连接的Go子进程场景。342 收藏 -
direnv在Go项目中不生效的根本原因是它默认只识别.envrc文件,而非go.mod;需手动创建.envrc并用layout_go设置GOBIN、PATH等,确保路径绝对且与模块一致,修改后须重新运行direnvallow。341 收藏 -
把 HTTP 请求耗时拆成处理、下游、序列化和写回阶段,定位 P99 主要来源。341 收藏 -
本文用一个完整 Go HTTP 服务示例,讲清楚如何在收到 SIGTERM 后先摘流,再等待请求完成,最后用超时上下文关闭服务,避免发布和重启时丢请求。340 收藏 -
围绕 Go 1.24 正式支持的泛型类型别名,讲清 type Alias[T] = ... 的语义、约束写法、API 迁移、兼容测试和公共库使用边界。339 收藏