
golang
文章平均质量分 95
jayzym
总有人要当废物,为什么不能是我呢?
展开
-
深入解析 Go 中 Slice 底层实现
转载https://halfrost.com/go_slice/切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时,切片还具有可索引,可迭代的优秀特性。一. 切片和数组关于切片和数组怎么选择?接下来好好讨论讨论这个问题。在 Go 中,与 C 数组变量隐式作为指针使用不.转载 2021-03-23 15:17:58 · 324 阅读 · 0 评论 -
垃圾回收算法(计数、标记、复制),golang垃圾回收
Golang GC 发展Golang 从第一个版本以来,GC 一直是大家诟病最多的。但是每一个版本的发布基本都伴随着 GC 的改进。下面列出一些比较重要的改动。 v1.1 STW v1.3 Mark STW, Sweep 并行 v1.5 三色标记法 v1.8 hybrid write barrier GC 算法简介这一小节介绍三种经典的 GC 算法:...转载 2020-04-17 17:59:10 · 606 阅读 · 0 评论 -
GoLang中的切片扩容机制
切片的容量[5]int 是数组,而 []int 是切片。二者看起来相似,实则是根本上不同的数据结构。切片的数据结构中,包含一个指向数组的指针 array ,当前长度 len ,以及最大容量 cap 。在使用 make([]int, len) 创建切片时,实际上还有第三个可选参数 cap ,也即 make([]int, len, cap) 。在不声明 cap 的情况下,默认 cap=len ...转载 2020-03-11 17:19:39 · 1959 阅读 · 0 评论 -
使用Golang 程序的性能优化及 Pprof
使用Golang 程序的性能优化及 Pprof程序的性能优化无非就是对程序占用资源的优化。对于服务器而言,最重要的两项资源莫过于 CPU 和内存。性能优化,就是在对于不影响程序数据处理能力的情况下,我们通常要求程序的 CPU 的内存占用尽量低。反过来说,也就是当程序 CPU 和内存占用不变的情况下,尽量地提高程序的数据处理能力或者说是吞吐量。Go 的原生工具链中提供了非常多丰富的工具供开发...转载 2019-01-02 17:16:13 · 537 阅读 · 0 评论 -
Golang silence最大容量
前言在《深入理解 Go Slice》中,我们提到了 “根据其类型大小去获取能够申请的最大容量大小” 的处理逻辑。今天我们将更深入地去探究一下,底层到底做了什么东西,涉及什么知识点?Go Slice 对应代码如下:func makeslice(et *_type, len, cap int) slice { maxElements := maxSliceCap(et.size)...转载 2019-07-17 16:23:25 · 1011 阅读 · 0 评论 -
Go 性能调优之 —— 编译优化(逃逸分析、内联、死码消除)
编译优化本节介绍Go编译器执行的三个重要优化。逃逸分析 内联 死码消除Go 编译器的历史Go 编译器在2007年左右开始作为 Plan9 编译器工具链的一个分支。当时的编译器与 Aho 和 Ullman 的Dragon Book非常相似。2015年,当时的 Go 1.5 编译器从 C 机械地翻译成 Go。一年后,Go 1.7 引入了一个基于SSA技术的新...转载 2019-08-22 11:41:13 · 3125 阅读 · 0 评论