时间与复利思维
思维模型
垃圾回收
Go进阶
GMP模型
在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
学习金字塔指出,通过阅读或是视听的方式接收到的信息,能够留住的低于 30%。而通过实践能够留下的知识却高达 75%。大量的案例都表明,软件工程或者说编程是一门实践的科学。纸上得来终觉浅,我们需要反复的实践,才能在报错与调试的折磨中一步步成长。
不过要注意的是,实践并不是简单的重复,而是要不断地用一项超出你当前能力的任务挑战自己,尝试它,分析你在完成它的过程中的表现,然后纠正错误。
学习金字塔同时指出,最好的学习方式其实是教给其他人,这也是费曼学习法的核心要义。当我们把一个知识点从 0 到 1 教给了他人,就意味着我们真正掌握了它。很多人会倾向于用复杂的词汇来掩盖他们不明白的东西,但这其实只是在糊弄自己,因为我们不知道自己也不明白。
所以我鼓励你更多地输出自己的知识,这其实也是一个学习的过程。一个闭源的系统,最终将由于熵增而走向死亡,只有不断地接收新的和有用的知识,才能保持活力。
聚焦模式(focused mode)和发散模式(diffuse mode)两种思维方式。 在每个阶段中这两种学习模式,是交替使用的。
·
GMP模型
在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
「此文章为3月Day10学习笔记,内容来源于极客时间《Go分布式爬虫实战》,强烈推荐该课程!/推荐该课程」 ↩︎