Go爬虫学习笔记(二)

news2025/1/17 5:55:56

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

  • 时间与复利思维

    • 一万小时定律 - MBA智库百科 (mbalib.com):大量训练。
  • 思维模型

    • 类比:类比旧知识
    • 知识组块:将知识拆分
    • 知识体系:知识之间的联系: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分布式爬虫实战》,强烈推荐该课程!/推荐该课程」 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

漏洞分析丨cve-2012-0003

作者:黑蛋一、漏洞简介这次漏洞属于堆溢出漏洞,他是MIDI文件中存在的堆溢出漏洞。在IE6,IE7,IE8中都存在这个漏洞。而这个漏洞是Winmm.dll中产生的。二、漏洞环境虚拟机调试工具目标软件辅助工具XP-SP3、KaliOD、IDAIE6Windbg组件gflags.exe三…

Java 不同路径

不同路径中等一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径&#xff1f…

直播间与2位优秀创作者分享经历

我是卢松松,点点上面的头像,欢迎关注我哦! 昨天,卢松松的直播间好像又被推荐给了2.9万人观看,讲了一个小时后直播间的人数一直攀升,最终冲破了2万人大关。晚些时候,白杨SEO也来到了我的直播间&…

【数据结构】——树与二叉树

文章目录树二叉树二叉树的性质完全二叉树二叉树的存储遍历二叉树和线索二叉树6.4 树和森林哈夫曼树应用树 树的定义:树是以分支关系定义的层次结构。 D; 树(Tree)是n(n≥0)个结点的有限集。 R 数据关系 有且仅有一个特定的称为根(Root) 的结点 当n>1时&…

FCN网络介绍

目录前言一.FCN网络二.网络创新点前言 在图像分割领域,有很多经典的网络,如MASK R-CNN,U-Net,SegNet,DeepLab等网络都是以FCN为基础进行设计的。我们这里简单介绍一下这个网络。 一.FCN网络 FCN网络介绍   FCN 即全…

【学习笔记】人工智能哲学研究:《心智、语言和机器》

关于人工智能哲学,我曾在这篇文章里 【脑洞大开】从哲学角度看人工智能:介绍徐英瑾的《心智、语言和机器》 做过介绍。图片来源:http://product.dangdang.com/29419969.html在我完成了一些人工智能相关的工作以后,我再来分享《心智…

基于libco的c++协程实现(时间轮定时器)

在后端的开发中,定时器有很广泛的应用。 比如: 心跳检测 倒计时 游戏开发的技能冷却 redis的键值的有效期等等,都会使用到定时器。 定时器的实现数据结构选择 红黑树 对于增删查,时间复杂度为O(logn),对于红黑…

【Unity趣味编程】——c++实现小球的自由移动

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

IOS APP Store发布流程

一、官网添加新版本 进入官网,点击左上角号,添加新版本 新增版本 -> 填写推广文本、更新内容 -> 点击存储 二、Xcode打包 苹果打包需要注意版本号、版本code不能与线上重复。 点击Xcode -> Product -> Archive,选择App Store 第二步选择导出…

移除元素问题解决方法------LeetCode-OJ题

问题: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 要求: 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改…

爆品分析第5期 | 一条视频带货3700+,这款斋月不锈钢厨具套装火了!

俗话说民以食为天,吃在任何一种文化中都占据重要的位置,要做出一道美味佳肴,除了食材、烹饪者的自身厨艺之外,还少不了一口好锅。新冠疫情以来,全世界范围内的封闭让很多人养成了居家做饭的习惯,不仅为厨具…

Spark高手之路1—Spark简介

文章目录Spark 概述1. Spark 是什么2. Spark与Hadoop比较2.1 从时间节点上来看2.2 从功能上来看3. Spark Or Hadoop4. Spark4.1 速度快4.2 易用4.3 通用4.4 兼容5. Spark 核心模块5.1 Spark-Core 和 弹性分布式数据集(RDDs)5.2 Spark SQL5.3 Spark Streaming5.4 Spark MLlib5.5…

玩转金山文档 3分钟让你的文档智能化

在上个月底,我们给大家推荐了金山轻维表的几个使用场景,社群中不少用户反响很好,对其中一些场景的解决方案十分感兴趣。但也有一些人表示,有些场景不知道如何实现,希望我们能提供模版/教程。这次我们将做一期热门模板盘…

案例20-内存长期占用导致系统变慢

一、背景介绍 本篇博客是对生产环境出现内存长期占用导致系统变慢的原因分析及总结。 现状: 系统出现了爬取加载慢的情况,核心服务的内存占用很高的情况。 如下图: 二、思路&方案 查询服务内存占用过高的原因: 1、服务启动…

再学C语言43:字符串表示和字符串I/O

字符串是以空字符(\0)结尾的char数组 在程序中定义字符串 1)字符串常量 字符串常量(字符串文字):位于一对双引号中的任何字符 双引号里的字符加上编译器自动提供的结束标志\0字符,作为一个字…

线程安全 List 效率测试

List 常见类以及各自优缺点可自行参考 https://blog.csdn.net/weixin_39883065/article/details/111197724 本机环境 java 版本:1.8.0_161 window 信息: 测试代码 下面通过代码测试 List 线程安全类 Vector、Collections.synchronizedList(List lis…

在空投之后,Blur能否颠覆OpenSea的主导地位?

Mar. 2023, Daniel数据源: NFT Aggregators Overview & Aggregator Statistics Overview & Blur Airdrop一年前,通过聚合器进行的NFT交易量开始像滚雪球一样增长,有时甚至超过了直接通过市场平台的交易量。虽然聚合器的使用量从10月到…

【Redis】P1 Redis - NoSQL

Redis - NoSQLSQL 与 NoSQL差别一:结构化 与 非结构化差别二:关联性 与 非关联性差别三:规范化查询语句 与 非规范化差别四:事务 与 无事务差别五:磁盘存储 与 内存存储RedisRedis 的安装当前数据库存储主要分为 关系型…

vivo全球商城:库存系统架构设计与实践

作者:vivo官网商城开发团队 - Xu Yi、Yan Chao 本文是vivo商城系列文章,主要介绍vivo商城库存系统发展历程、架构设计思路以及应对业务场景的实践。 一、业务背景 库存系统是电商商品管理的核心系统,本文主要介绍vivo商城库存中心发展历程、…

Golang的下载与安装

Windows系统 进入golang官方下载网站:所有版本 - Go 编程语言如图所示 下载后打开您下载的 MSI 文件,然后按照提示安装 Go。 验证是否已安装 Go。