这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
一、高质量编程 1.什么是高质量
编写的代码正确可靠、简洁清晰
各种边界是否考虑完备
异常情况处理,稳定性保证
易读易维护
2.编程原则
a.简单性
消除多余的复杂性,以简单清晰的逻辑编写代码
不理解的代码无法修复改进
b.可读性
代码是写给人看的而不是机器
编写可维护代码的第一步是确保代码可读
c.生产力
团队整体工作效率非常重要
3.注释
- 注释应该解释代码作用
- 注释解释代码是如何做的
- 注释解释代码实现的原因
- 注释应该解释代码什么情况会出错
- 公共符号始终要注释 4.控制流程
- 避免嵌套,保持正常流程清晰
- 尽量保持正常代码路径为最小缩进
- 故障问题大多出现在复杂的条件语句和循环语句中 5.性能优化
- Benchmark运行测试
- Slice预分配内存
- 使用string.Builder优于String.Buffer
- 使用空结构体节省内存
- 多线程:使用atomic包 二、性能调优实战 1.性能调优原则
- 要依靠数据而不是猜测
- 要定位大瓶颈而不是细枝末节
- 不要过早优化
- 不要过度优化 2.性能分析工具pprof
- 命令 | 命令 | 意义 | | --- | --- | | topN | 查看占用资源最多的函数 | | web | 调用关系可视化 | | Heap | 堆内存 | | goroutine | 协程 | | mutex | 锁 | | block |阻塞|
- 采样原理和过程
CPU
操作系统每10ms向进程发送一次SIGPROF信号
进程每次收到SIGPROG会记录调用堆栈
写缓冲每100ms读取已经记录的调用栈并写入输入流
3.性能调优
- 业务服务优化
- 基础库优化
- Go 语言本身优化