博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言学习
阅读量:7287 次
发布时间:2019-06-30

本文共 881 字,大约阅读时间需要 2 分钟。

1.Go语言简介

源于google  2009年对外发布

比较新的语言

https://www.jb51.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的大小,内存复用最优化

转载于:https://www.cnblogs.com/biang/p/10644364.html

你可能感兴趣的文章
Python开发SVN批量提交命令脚本
查看>>
关于IE的bug(CSS)
查看>>
Linux NFS服务器详解
查看>>
Tomcat invalid LOC header (bad signature)
查看>>
永久关闭selinux
查看>>
修改nginx服务的默认用户
查看>>
linux下查找字符串的命令
查看>>
Squid代理服务器的ACL访问控制和日志分析
查看>>
创业很辛苦,需要足够坚持面对
查看>>
uboot移植(一):移植前的准备工作
查看>>
PaaS平台型IT运维&运营模式能给企业带来什么?
查看>>
全球市值Top20的加密货币技术对比
查看>>
python 操作 K8S
查看>>
「docker实战篇」python的docker-抖音appium模拟滑动操作(22)
查看>>
C语言中什么是原型定义
查看>>
Mail服务器架设
查看>>
C++中关于指针作为参数传递的问题
查看>>
大清单报表应当怎么做?
查看>>
Spring AOP 实现方法日志记录以及执行时间打印
查看>>
Linux中 tail -f;tail -F;tailf的区别
查看>>