文章 · 第 3 页

4 分钟

Go sync.Once

Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。sync.Once 是 Golang package 中使方法只执行一次的对象实现,作用与 init 函数类似,但也有所不同。本文还解释了 sync.Once 源码中,done 为什么作为第一个字段。

4 分钟

Go sync.Pool

Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。Go 语言标准库中的 sync.Pool 可以建立对象池,复用已有对象,解决内存分配碎片化的问题,有效减轻垃圾回收的压力(Garbage Collection, GC),在特定场景下可以有效地降低内存占用,提升性能。最后介绍了 sync.Pool 的作用和用法。

4 分钟

Go 逃逸分析

Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。介绍了 Go 内存分配逃逸分析(escape analysis)的几种典型场景,变量所使用的内存什么时候分配到栈上,什么时候分配到堆上。以及如何利用逃逸分析的原理优化代码的性能,例如传值 VS 传指针。

2 分钟

2020 年终总结

从 2020 年开始,在博客里记录每一年的成长与改变。年初的时候,给自己定了两个目标:工作上升一级,博客浏览量能翻一倍。第一个目标没想到刚过完年,就实现了。第二个目标到年底的时候也基本达成了,月 UV 3w,月 PV 8w。在这里,将过程中的一些经历和感悟记录下来。

4 分钟

Go struct 内存对齐

Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。本文介绍了结构体(struct)占用的内存空间如何计算,为什么要字节对齐/内存对齐,Go 语言中的大小和对齐保证(size and alignment guarantees),字节对齐和安全访问(原子访问)的关系,以及如果利用内存对齐的规律减小 struct 内存占用。