在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.Go语言简介 源于google 2009年对外发布 比较新的语言 https://www.ogeek.net/article/126998.htm
2.常用类型: slice channel 管理协程 锁比channel高效,什么时候用锁什么时候用channel看实际情况 interface 常用类库:*.os.File,*.net.TCPConn,*bytes.Buffer 解耦依赖,在哪里使用,在哪里定义
3.并发 CSP 通过通信来共享数据,而不是通过共享数据来通信 使用context web服务端模型 (建立tcp连接,新建协程去读写) 标准库net/http、thrift等都是用这种服务端模型
4.性能分析 CPU -- 在runtime中每隔很短的时间,会记录当前正在运行的协程栈。持续一段时间,一段是5~10s,通过分析这段时间记录下来的栈,出现频率比较高的函数则是占用CPU较高。 内存 -- 内存分析只能分析在堆上申请内存的情况,和CPU分析采用同样的方法。通过分析这些采样的记录,判断出哪些语句申请内存较多。 性能测试工具 -- import "net/http/pprof" https://blog.csdn.net/moxiaomomo/article/details/77096814
性能调优:查看哪一块代码对象分配比例较高,减少对象的分配 减少gc export GODEBUG=gctrace=1 export GOGC=100 mem = now_mem * ( 1 + GOGC/100) // 可以调整gc条件 GOGC=100表示内存达到当前内存的2倍时产生gc;当然也可以选择尽可能快的频繁gc,但是频繁gc容易引起cpu飙高。
5.高效GO代码 对象复用 streaming sync.Pool -- new完对象后放到池子里,需要的时候再去拿,但是不能保障不被gc 动态调整pool的大小,内存复用最优化 |
请发表评论