• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言学习

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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的大小,内存复用最优化


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
golang程序员前景怎么样?Python、Java、go语言的优势互比发布时间:2022-07-10
下一篇:
go包的理解发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap