3 进阶路线:如何深入学习Go语言?
-
时间与复利思维
- 一万小时定律 - MBA智库百科 (mbalib.com):大量训练。
-
思维模型
- 类比:类比旧知识
- 知识组块:将知识拆分
- 知识体系:知识之间的联系:wiki、笔记双链,一条条链构成自己的知识体系
- 实践与输出:学习金字塔1
- 已知与未知
-
垃圾回收
- 准备阶段
- 并行标记阶段
- 辅助标记阶段
- 标记清扫阶段
-
Go进阶
- 切片底层结构
- 哈希表底层结构
- 协程调度
- 内存管理
- 线程、协程、进程
- GMP模型2
-
GMP模型
-
在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
-
随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
-
-
学习
学习金字塔
学习金字塔指出,通过阅读或是视听的方式接收到的信息,能够留住的低于 30%。而通过实践能够留下的知识却高达 75%。大量的案例都表明,软件工程或者说编程是一门实践的科学。纸上得来终觉浅,我们需要反复的实践,才能在报错与调试的折磨中一步步成长。
不过要注意的是,实践并不是简单的重复,而是要不断地用一项超出你当前能力的任务挑战自己,尝试它,分析你在完成它的过程中的表现,然后纠正错误。
学习金字塔同时指出,最好的学习方式其实是教给其他人,这也是费曼学习法的核心要义。当我们把一个知识点从 0 到 1 教给了他人,就意味着我们真正掌握了它。很多人会倾向于用复杂的词汇来掩盖他们不明白的东西,但这其实只是在糊弄自己,因为我们不知道自己也不明白。
所以我鼓励你更多地输出自己的知识,这其实也是一个学习的过程。一个闭源的系统,最终将由于熵增而走向死亡,只有不断地接收新的和有用的知识,才能保持活力。
Go思维导图
作业
Go知识图谱
人的大脑也有聚焦模式(focused mode)和发散模式(diffuse mode)两种思维方式,你认为这种现象是如何指导你的学习的?
聚焦模式(focused mode)和发散模式(diffuse mode)两种思维方式。 在每个阶段中这两种学习模式,是交替使用的。
- 聚焦模式会让我们自己更专注。可往往遇到自己知识盲区时,尤其是无处可学需要自己创新时,又或者无法理解某个知识点时,聚焦模式反而会限制我们的视野。 此时切换成发散模式,不再单独聚焦在需要解决的问题上,往往能给我们带来全新的思路。 发散并不是漫无目的的发散,而是有自顶向下的大局观意识,从而做到形散而神不散。
- 发散模式带给我们的灵感,往往需要我们自己有着足够的相关知识储备,才能在不同的知识中碰撞出火花。
推荐资料
- 一万小时定律 - MBA智库百科 (mbalib.com)
- 如何学习:学习困难科目的实用思维方法 Learning How to Learn
- A Mind for Numbers 芭芭拉《学习之道》
- 如何高效学习
- Scalable Go Scheduler Design Doc:https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw/edit#heading=h.mmq8lm48qfcw
·
学习金字塔
↩︎-
-
GMP模型
-
在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
-
随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
「此文章为3月Day10学习笔记,内容来源于极客时间《Go分布式爬虫实战》,强烈推荐该课程!/推荐该课程」 ↩︎ -