go
文章平均质量分 66
CCSU__LRF
破铜烂铁acmer
展开
-
【go】interface接口是什么?底层结构体源码
控制平面 : 管理集群中的和节点 : 一组工作机器,称为节点,每个集群至少有一个节点pod:节点会托管podpod是所有业务类型的基础,也是K8S管理的最小单位级,!接下来我们细说一下其中的控制平面中的组件。原创 2023-05-17 14:50:09 · 277 阅读 · 0 评论 -
【go】defer作用,使用场景,注意事项以及源码分析
## defer 结构体 ```gotype _defer struct { sp uintptr //函数栈指针 pc uintptr //程序计数器 fn *funcval //函数地址 link *_defer //指向自身结构的指针,用于链接多个defer}```原创 2023-05-12 20:17:23 · 534 阅读 · 0 评论 -
【go】context作用以及源码分析
}Deadline方法用于获取Context的截止时间,如果没有设置截止时间则返回false。Done方法用于获取一个只读的channel,当Context被取消或者到达截止时间时,该channel会被关闭。Err方法用于获取Context的错误信息,如果Context未被取消则返回nil。Value方法用于获取Context中指定键的值,如果键不存在则返回nil。原创 2023-05-04 17:22:29 · 532 阅读 · 0 评论 -
go 内存管理-从TCMalloc到go内存管理
GO中把对象分为小对象和大对象(>32KB),而小对象分为tiny对象(1Byte~16Byte),和其他小对象。从large span set选择合适数量的页面组成span。TCMalloc 把对象分为3种,小对象大小:0。与mcentral向mheap申请内存的相同。直接在PageHeap选择。,大对象大小:>1MB。原创 2023-05-04 16:36:43 · 594 阅读 · 0 评论 -
【go】channel结构体源码和读写和关闭过程
当一个 goroutine 要向 channel 中发送数据时,它会执行。当一个 goroutine 要从 channel 中接收数据时,它会执行。当一个 goroutine 要关闭 channel 时,它会执行。原创 2023-04-28 09:37:02 · 726 阅读 · 0 评论 -
【go】 如何保证并发安全
Go 提供了一些原子操作,如 atomic.AddInt32、atomic.LoadInt32、atomic.StoreInt32 等,可以在不使用锁的情况下对共享资源进行原子操作,从而保证并发安全。使用 context 包可以对协程进行控制,比如可以通过 context.WithTimeout、context.WithCancel 等方法设置超时时间、取消协程等操作,从而保证协程的安全退出。当需要等待多个协程执行完毕后再进行下一步操作时,可以使用 sync.WaitGroup 进行协程同步。原创 2023-04-27 21:39:57 · 213 阅读 · 0 评论 -
【go】三色标记-垃圾回收机制
该算法是一种基于标记-清除(Mark and Sweep)算法的改进版本,采用**三种不同的颜色(白色、灰色和黑色)**来表示对象的不同状态。这个阶段的操作通常是从堆的起始位置开始,对于每一个对象,都会检查它是否被标记,如果没有被标记,就将其释放掉。,这样就会出现在扫描结束后,栈上仍存在引用白色对象的情况,这时的栈是灰色的,不满足三色不变式,所以需要对。通常,这个阶段会从根对象开始遍历,对于所有可达的对象,都会打上标记。,标记不再使用的对象,然后释放它们所占用的内存空间。使其变黑,完成剩余对象的标记,原创 2023-04-27 10:35:24 · 470 阅读 · 0 评论