![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 87
崔五月
曾梦想仗剑走天涯,因太胖取消原计划!
展开
-
Golang基础语法50问
1. 使用值为nil的slice和map会发生什么?答:允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,运行时会引发 panicfunc main(){ // map 错误示例 var m map[string]string m['a'] = 1 // error: panic: assignment to entry in nil map // m := make(map[string]string) // 分配内存后再添加才正确 /原创 2021-07-07 18:48:40 · 424 阅读 · 1 评论 -
Golang中GC回收机制三色标记与混合写屏障
整理自:Golang中GC回收机制三色标记与混合写屏障目标理解Golang中GC垃圾回收机制Go v1.3v1.3之前的标记-清除(mark and sweep)方法步骤:第一步:暂停业务逻辑,找出不可达的对象和可达的对象;第二步:开始标记,程序对所有可达的对象加上标记;第三步:标记完成后,开始清除未标记的对象第四步:结束暂停,让程序继续跑,然后循环重复这个过程,知道process程序生命周期结束;缺点:1.STW (stop the world) 会让程序暂停,程序出现卡顿;2.标原创 2021-07-07 12:00:27 · 522 阅读 · 1 评论 -
GMP学习笔记
整理自:Golang深入理解GPM模型总结掌握Golang协程调度器的原理,为什么Go的协程调度那么快?Go的调度器做了很多事情来避免过多的操作系统线程抢占,通过窃取调度(stealing机制)它们到正确的和未充分利用的处理器,以及实现自旋线程以避免过高阻塞或者解除阻塞切换的发生。一、Golang “调度器”的由来1.单进程时代的问题 1). 单一执行流程,计算机只能一个任务一个任务的执行; 2).进程阻塞所带来的CPU浪费时间;2.多进程、多线程的问题 1).设计变得复杂;进程/线原创 2021-07-05 18:04:00 · 372 阅读 · 0 评论