golang
已收录文章:333篇
-
使用中间件生成并传递TraceID,结合日志输出与跨服务传递,实现请求追踪;可通过OpenTelemetry构建标准化分布式追踪体系。240 收藏
-
使用gobreaker实现熔断,通过Closed、Open、Half-Open状态防止雪崩;结合rate.Limiter令牌桶限流控制流量洪峰;二者封装为中间件提升复用性,增强系统稳定性。239 收藏
-
Go语言从1.11起使用gomod管理依赖,取代GOPATH;通过gomodinit创建模块,自动生成go.mod文件;导入外部包如gorilla/mux后执行gobuild会自动下载依赖并更新go.mod和go.sum;常用命令包括gomodtidy清理依赖、goget升级版本、golist查看依赖、gomoddownload下载缓存;replace指令可替换依赖路径,但仅限本地调试,不宜提交至生产环境。238 收藏
-
合理选择值类型与指针参数可提升Go程序性能和清晰度。1.值传递复制对象,适用于小对象或不可变场景;2.指针传递复制地址,适用于大结构体或需修改原值;3.函数可混合使用值和指针参数,如UpdateUser(idint,u*User,isActivebool);4.建议统一方法接收者与参数类型,保持团队代码风格一致;5.尽管slice、map底层共享,但需整体替换时仍应使用指针。根据语义与性能需求权衡选择,使代码更安全高效。238 收藏
-
Golang凭借Goroutine和Channel实现的轻量级并发模型,在Web开发中显著提升了高并发、低延迟服务的性能与开发效率。其GPM调度机制将大量Goroutine高效映射到少量线程,避免I/O阻塞导致的资源浪费,实现M:N级并发;Channel通过通信共享内存,天然避免竞态条件,简化并发编程。相比Node.js的回调模式,Go代码更直观线性;相比Java线程模型,Goroutine创建成本极低,上下文切换开销小。标准库net/http支持快速构建高性能服务,单二进制部署简化运维。但需注意内存占用233 收藏
-
Go语言通过高阶函数实现装饰器模式,以函数包装函数的方式扩展功能而不修改原逻辑。1.定义统一函数类型如HandlerFunc;2.编写基础函数如Hello;3.创建装饰器函数WithLogging添加日志;4.实现WithTiming统计耗时;5.支持链式组合如WithLogging(WithTiming(Hello)),执行顺序由外向内;6.可针对HTTP场景封装HTTPLogger等通用装饰器。该模式依赖类型匹配与调用顺序,适用于日志、中间件等场景。232 收藏