Go爬虫学习笔记(二)

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Go爬虫学习笔记(二),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

3 进阶路线:如何深入学习Go语言?

  • 时间与复利思维

  • 思维模型

    • 类比:类比旧知识
    • 知识组块:将知识拆分
    • 知识体系:知识之间的联系:wiki、笔记双链,一条条链构成自己的知识体系
    • 实践与输出:学习金字塔1
    • 已知与未知
  • 垃圾回收

    image

    • 准备阶段
    • 并行标记阶段
    • 辅助标记阶段
    • 标记清扫阶段
  • Go进阶

    • 切片底层结构
    • 哈希表底层结构
    • 协程调度
    • 内存管理
    • 线程、协程、进程
    • GMP模型2
  • GMP模型

    • 在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
      image

    • 随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
      同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
      image

学习

学习金字塔

image

学习金字塔指出,通过阅读或是视听的方式接收到的信息,能够留住的低于 30%。而通过实践能够留下的知识却高达 75%。大量的案例都表明,软件工程或者说编程是一门实践的科学。纸上得来终觉浅,我们需要反复的实践,才能在报错与调试的折磨中一步步成长。

不过要注意的是,实践并不是简单的重复,而是要不断地用一项超出你当前能力的任务挑战自己,尝试它,分析你在完成它的过程中的表现,然后纠正错误。

学习金字塔同时指出,最好的学习方式其实是教给其他人,这也是费曼学习法的核心要义。当我们把一个知识点从 0 到 1 教给了他人,就意味着我们真正掌握了它。很多人会倾向于用复杂的词汇来掩盖他们不明白的东西,但这其实只是在糊弄自己,因为我们不知道自己也不明白。

所以我鼓励你更多地输出自己的知识,这其实也是一个学习的过程。一个闭源的系统,最终将由于熵增而走向死亡,只有不断地接收新的和有用的知识,才能保持活力。

image

Go思维导图

image

作业

Go知识图谱

人的大脑也有聚焦模式(focused mode)和发散模式(diffuse mode)两种思维方式,你认为这种现象是如何指导你的学习的?

聚焦模式(focused mode)和发散模式(diffuse mode)两种思维方式。 在每个阶段中这两种学习模式,是交替使用的。

  • 聚焦模式会让我们自己更专注。可往往遇到自己知识盲区时,尤其是无处可学需要自己创新时,又或者无法理解某个知识点时,聚焦模式反而会限制我们的视野。 此时切换成发散模式,不再单独聚焦在需要解决的问题上,往往能给我们带来全新的思路。 发散并不是漫无目的的发散,而是有自顶向下的大局观意识,从而做到形散而神不散。
  • 发散模式带给我们的灵感,往往需要我们自己有着足够的相关知识储备,才能在不同的知识中碰撞出火花。

推荐资料

  1. 一万小时定律 – MBA智库百科 (mbalib.com)
  2. 如何学习:学习困难科目的实用思维方法 Learning How to Learn
  3. A Mind for Numbers 芭芭拉《学习之道
  4. 如何高效学习
  5. Scalable Go Scheduler Design Doc:https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw/edit#heading=h.mmq8lm48qfcw

·


  1. 学习金字塔

    ↩︎

    • GMP模型

    • 在 GMP 模型中,G 代表的是 Go 语言中的协程(Goroutine),M 代表的是实际的线程,而 P 代表的是 Go 逻辑处理器(Process)。Go 语言为了方便协程调度与缓存,抽象出了逻辑处理器的概念。在任一时刻,一个 P 可能在本地包含多个 G,同时,一个 P 在任一时刻只能绑定一个 M。
      image

    • 随着我们对协程、运行时协程调度的理解越来越深入,我们的知识组块、知识体系都可能会有所更新。例如,下面这个改进后的 GMP 模型就加入了本地运行队列和全局运行队列。它可以让我们更深入地看到调度器的运作模式,每个逻辑处理器 P 中都有单独的本地运行队列用于存储协程,这是为了减少并行时锁的使用。
      同时我们也有全局共享的全局运行队列、本地运行队列可以获取全局运行队列中的协程,全局运行队列也可以接收本地运行队列中的协程。
      image


    「此文章为3月Day10学习笔记,内容来源于极客时间《Go分布式爬虫实战》,强烈推荐该课程!/推荐该课程」 ↩︎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137602.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!