![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 74
better_hui
这个作者很懒,什么都没留下…
展开
-
golang源码之channel
channel是golang语言goroutine间的通信方式。一、数据结构1、hchantype hchan struct { qcount uint // 目前队列中的数据数量total data in the queue dataqsiz uint // 队列的容量size of the circular queue buf unsafe.Pointer // 队列points to an array of data...原创 2021-06-24 08:23:03 · 354 阅读 · 0 评论 -
golang源码之slice
目录一、数据结构二、初始化 makeslice三、添加 append一、数据结构二、初始化 makeslicegolang中有很多初始化slice的方式,我们以make方式,来看一下slice在底层是如何初始化的。func main(){ c := make([]int ,1) c = append(c ,1) fmt.Println(c)}转变一下汇编代码 , 命令如下:go tool compile -S main.go0x...原创 2021-06-23 20:11:54 · 297 阅读 · 0 评论 -
golang垃圾回收 三色清除
目录标记清除算法1、标记 (mark phase)2、清除 (mark phase)缺点优化三色标记原理问题:屏障技术原理写屏障删除屏障混合写屏障标记清除算法1、标记 (mark phase)stw ,找到所有不可达的对象,做好标记2、清除 (mark phase)清除未标记的对象缺点1、stw , 暂停整个程序2、标记需要扫描整个heap3、清除数据会产生碎片优化1.3版本前,...原创 2021-06-09 19:30:59 · 285 阅读 · 0 评论 -
go内存模型及工具
目录内存结构arenabitmapspansmspan内存管理组件 mcachemcentralmheapGo内存分配流程总结:对象分三种:申请流程:内存结构go程序启动时,会像系统申请一块连续的虚拟内存结构,并划分为如下结构:arenaarena区块是死去模型中的堆区 , 他被划分为page ,每页8k .bitmapbitmap区域标识了arena区域哪些地址保存了对象,并使用4bit标...原创 2021-06-07 20:25:51 · 197 阅读 · 1 评论 -
值传递、引用传递、址传递
分类从类型的角度来讲 , 类型可以分为值类型和引用类型从传递的角度来讲,分为值传递、址传递、引用传递。传递是在函数或者方法调用时才会提到的概念从参数的角度来讲,分为实参和形参。shic实参 , 是调用时真实传递给函数或者方法的参数 , 如 add(1,2) , 1和2就是实参形参 , 是定义函数或者方法时设立的参数,实际不存在,主要是为了接受主调函数传入的数据,如 func add(a ,b int){} a,b就是形参。值、地址、引用值是一个宽泛的范围 , 一切皆值 .原创 2021-05-27 20:11:26 · 1343 阅读 · 0 评论 -
begoo学习笔记之 - 安装
安装begoo时,报如下错误:go get: module github.com/beego/beego/v2: Get "https://proxy.golang.org/github.com/beego/beego/v2/@v/list": dial tcp 172.217.160.113:443: connectex: A connection attempt failed because the connected party did not properly respond af原创 2021-05-24 14:41:28 · 119 阅读 · 0 评论