Context包详解 Context是官方标准库中很常用的包,主要用于提供生命周期以及中断信号的控制,也用于API以及协程间通信,使用的场景非常多,下面介绍其中几个常用的函数 Background()该方法用于初始化一个空的上下文 WithValueWithValue 用于向上下文中的传递值,在一些API框架中使用频率非常高 例如: 12345678func TestWithValue(t *testing.T) 2023-08-16 Golang
GMP调度模型 作为一名优秀Golang开发者来说,了解Goroutine的调度机制是必不可少的。 Goroutine的由来我们都线程的创建,销毁以及切换,都是由操作系统来完成的,而且成本很大,而颗粒度更小的协程,创建仅需要非常小的内存,一个线程可以创建上万个协程,并且整个生命周期,都由用户自己来掌控, 大大提升了性能以及灵活性。 GMP模型的核心思想 重用线程 限制同时运行的线程数尽可能等于CPU的核心数目, 2022-08-16 Golang
Golang GC原理 Golang 从诞生之处到现在对GC做了诸多改进,目前用的GC算法为三色标记算法。 基础知识 在说三色标记算法之前,必须要了解一些基本的概念,否则无法真正理解Golang的GC算法 通常,一个垃圾回收器的执行过程被分为两个部分。 赋值器:程序中的代码,对于垃圾回收器而言,关注的对象之间的引用,这些相互之间的引用,就构成了一张有向图,操作对象,也就是操作对象之间的引用关系。 回收器:负责垃圾回 2021-08-16 Golang