这是我参与「第三届青训营 -后端场」笔记创作活动的的第 3 篇笔记。
本篇主要内容框架
高质量编程
高质量编程简介
编码规范
代码格式
推荐使用gofmt自动化格式代码
错误和异常处理
错误判定
性能优化建议
字符串处理
atomic包
-
锁的实现是通过操作系统来实现,属于系统调用,atomic 操作是通过硬件实现的,效率比锁高很多
-
sync.Mutex 应该用来保护一段逻辑,不仅仅用于保护一个变量
-
对于非数值系列,可以使用 atomic.Value,atomic.Value 能承载一个 interface{}
性能调优实战
性能调优简介
性能分析工具pprof实战
性能分析工具pprof 在开始前要提前安装graphviz: 相关的一些pprof使用教程:segmentfault.com/a/119000001… darjun.github.io/2021/06/09/…
性能调优案例
cpu的查看
运行程序后在终端输入命令
go tool pprof "http://localhost:6060/debug/pprof/profile?second=10"
在弹出(pprof)后输入top可具体查看
在定位到耗用cpu最高的函数后,输入 list 对应函数名
输入命令web
堆空间的使用
使用ui视图直观查看,在localhost:8080/ui上查看
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap"
协程grooutine的情况
只需要把后缀换一下就行 go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/grooutine"
mutex锁
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"
阻塞block
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/block"