极客时间已完结课程限时免费阅读

导读 | 学习专栏的正确姿势

导读 | 学习专栏的正确姿势-极客时间

导读 | 学习专栏的正确姿势

讲述:黄洲君

时长06:07大小8.40M

你好,我是郝林,今天我分享的主题是,学习专栏的正确姿势。
到了这里,专栏的全部内容已经都推送到你的面前了。如果你已经同步学习完了,那么我要给你点一个大大的赞!
还没有看完的同学也不要着急,因为推送的速度肯定要比你们的学习速度快上不少。如果是我的话,我肯定无法用很快的速度,去认真地学习和理解专栏内容的。不过,粗读一遍的话,这个时间倒是绰绰有余的。我今天就想跟你聊聊学习专栏的正确姿势。

专栏应该怎样学

我们做互联网技术的人,应该对这种索引 + 摘要 + 详情的数据存取方案并不陌生。我希望我的专栏文章也可以达成这样的一种状态:它是你需要时,即能查阅的知识手册。
在第一次听音频或浏览文章的时候,你可以走马观花,并不用去细扣每一个概念和每一句话。让自己对每一个主题、每一个问题和每一个要点都有一个大概的印象就可以了。
如此一来,当想到或遇到某方面的疑惑的时候,你就可以有一个大致的方向,并且知道怎样从专栏里找出相应的内容。
这就是所谓的粗读,相当于在你的脑袋里面存了一份索引,甚至是一份摘要。利用这种快速的学习方式,你往往可以在有限的精力和无限的知识之间做出适合你的权衡。
极客时间可以让我们无限期地查阅专栏的全部内容。所以你完全不用心急,可以按照自己的节奏先粗读、再细读,然后再拿这个专栏当做知识手册来用。重要的是真正的理解和积极的实践,而不是阅读的速度。

实践的正确姿势

最近一段时间,有不少同学问我说:“老师,我快要学完这个专栏了,也买了你的书,那我后边怎么去实践呢?”
问我此类问题的同学,大多数都是很少有机会在工作中使用 Go 语言的程序员,或者是对 Go 语言感兴趣的互联网领域的从业者,还有一些是在校的大学生。
我给大家的第一个建议一般都是“去写网络爬虫吧”。
互联网络的世界很庞杂,但又有一定的规律可循,是非常好的技术学习环境。你编写一个网络服务程序,即使放到了公共的网络上,也还需要考虑清楚一系列的问题,才能让你有足够多的技术磨炼机会,比如,服务的种类、功能、规则、安全、界面、受众、宣传和访问途径,以及日常的非技术性维护。
我认为,这已经不是纯粹的技术实践了,对于初期的技术技能增长是不利的。当然了,如果你有信心和精力去搞定这一系列问题,并乐于从中学习到各种各样的技能,那就放手去做吧。
我在我的书和专栏中一直都在释放这样几个信号:“并发程序”“互联网络”“客户端”“网络爬虫”。这其实就是我们实践的最佳切入点。它成本低,收效明显,既有深度又有广度。
有的同学还问我:“我的程序爬取了某某网站,可是只爬了两三下就好像被人家封掉了”。原因很明显,你暴力获取人家的网站内容,肯定会封你的啊。
我们要让程序去模拟人的行为,模拟人使用网络浏览器访问网站内容的过程,而不是用尽计算力去疯狂地霸占人家的带宽和服务,否则那不就成了网络攻击了。这是一个非常重要的自我实践的技巧,请大家记住,“利己,但不要损人”。
注意,正常爬取网站内容并不意味着失去了高并发的应用场景。把内容下载下来只是一个开始,后边还有不少的工作要做呢。
单单“模拟人”这一点就需要花一些心思。而且,你可以同时爬取成千上万的同类甚至不同类的网站。这已经足够你研究和实践很长一段时间了。我在这里还要郑重地提示一下,做这类技术研究一定不要跨越道德的底线,更不能违反法律。
再进一步,我们最好以结构化的形式把爬取到的网络内容存储下来。当得到足够多的数据之后,你的选择就很多了。比如,对某类数据进行整理、提取和分析,从而挖掘出更有价值的东西。这就属于数据挖掘的范畴了。
在如今这个数据过剩的时代,这也是一项很重要的技能。又比如,基于这些数据提供统一的访问接口,制作成搜索引擎,甚至对外提供服务。这也是一个很有深度的选择。
当然,技术实践的方式远不止这些。不过鉴于篇幅,我就先说这么多。

优秀 Go 项目推荐

最后,我再给大家推荐一些优秀的 Go 项目。别忘了,阅读优秀的项目源码也是一个很重要的学习途径。请看下图。
(长按保存大图查看)
这幅图包含了我之前私藏的所有高Star,且近期依然活跃的 Go 项目。不得不说,在 Github 这个全球最大的程序员交友社区中,好东西真的是不少。
在这幅图的左上角,有我对图中各种符号的说明,大家在进一步读图之前需要先看一下。参看这些项目的顺序完全由你自己决定,不过我建议从“贴近你实际工作的那个方面”入手,然后可以是“你感兴趣的方面”,最后有机会再看其他的项目。千万不要贪多,要循序渐进着来。
分享给需要的人,Ta购买本课程,你将得18
生成海报并分享

赞 80

提建议

上一篇
导读 | 写给0基础入门的Go语言学习者
下一篇
01 | 工作区和GOPATH
unpreview
 写留言

精选留言(45)

  • 0x01
    置顶
    2018-12-05
    第一次发言,跟着学完了,这是我买的几个专栏里质量最高的
    40
  • siegfried
    2018-12-12
    “GOHackers”的团队成员人数已经超过上线。请问后续该怎么加入呢
    共 1 条评论
    18
  • Cloud
    2018-12-05
    其实一直想听老师讲go的编程思想中的特色,或者如何使用go组织最佳的代码结构,如何使用struct, interface实现面向对象的编程,这些老师可否答疑的时候再讲一下呢。
    12
  • 技术修行者
    2019-11-19
    在开篇中居然就看到了如何学习专栏的正确姿势,粗读->细读->知识手册的学习方式非常好,可以扩散到其他专栏的学习上。 我目前主要从事Java和Python相关的开发,今年的一个flag是系统化的学习一下Go。看到作者列出的GitHub上的优秀开源项目,真是用心。

    作者回复: 加油!:)

    8
  • 全宏
    2018-12-06
    请老师推荐一下golang开发的IDE,好用的,谢谢!

    作者回复: vscode,goland,或者liteide

    5
  • 我来也
    2018-12-05
    感谢老师的一路陪伴!
    4
  • escray
    2021-03-22
    文章里面说,“重要的是真正的理解和积极的实践,而不是阅读的速度”,不能赞同更多。 网络爬虫似乎一般用 Python 写的比较多,不知道如果是用 Go 来实现,会有什么样的优势。 之前可能想过学习完专栏的内容可以考虑参与一个开源的项目,当然写一个爬虫也是不错的选择。 看了老师提供的优秀 Go 项目,有点好奇,为什么在开发框架数据库分支里面包括了 elastic、redis 和 mysql,是指的 library 或者 driver 么,在 github 上找到 go-mysql 和 go-sql-driver/mysql 两个项目。 留言里面有提示说是:go-sql-driver/mysql 和 go-redis/redis 如果有机会的话,可能会去看一下 beego 。 倍洽的那个邀请链接似乎已经失效了(毕竟已经过去两年多的时间了),申请加入 GoHackers 团队空间的时候会说成员数已满。后来在留言里面看到,2018年12月份的时候就已经超过上限了。 也许知识星球是更好的选择。
    展开

    作者回复: 我来逐一回答你的这些问题。 1. Go写爬虫的优势当然是在单机的并发性能方面,这是Python很难比拟的。我在《Go并发编程实战》第二版这本书里用了一章的篇幅去讲怎样用Go去写单机的网络爬虫。你有兴趣的话可以去看一看。 2. 所谓开发框架,就是帮助你提高开发效率的程序库,所以理应包含那些纯Go语言编写的driver。 3. 除了Beego,你还可以去看看echo和gin,都是我比较推荐的。 4. 倍洽早已经没落了,而slack的话国内很多小伙伴都访问不了(或者访问很慢)。没办法,国内没有一个很合适技术社群平台。知识星球的话,你可以在那个app里面搜索“GoHackers”,不过这个星球是付费的。 对了,我发起的GoHackers社群也有QQ群的:361287127(不过现在不那么活跃了)。

    2
  • chenhz
    2018-12-26
    老师团队人员超过上线了 :-(
    共 1 条评论
    2
  • 兵戈
    2018-12-06
    感谢郝林老师的一路分享,收益良多,保重身体,期待下一站!
    2
  • kgkey
    2018-12-05
    感谢老师的分享
    2
  • 💢 星星💢
    2022-02-09
    我个人还为你们专门在BearyChat上创建了一个名叫“GoHackers”的团队空间。创建这个空间的初衷是我想增进与专栏读者们的交流,包括文章答疑、思考题解读以及在技术和职业方面的互通有无。当然了,即使不是本专栏的读者也是可以加入的,只要你对 Go 语言编程感兴趣就可以。通过这个邀请链接,你可以直接加入并参与讨论。不过,你可能需要先简单地注册一下。 这个网站停用了吗?
    展开

    作者回复: 这个公司都没了...你可以加入QQ群:361287127

    1
  • 杜金洋
    2019-07-17
    文章很不错, 近期打算看一些优秀源码 代码推荐导图中的mysql/redis建议加上organization. 例如: organization/repository mysql和redis服务端都是C写的,老师导图中的mysql/redis我理解应该是Golang的client吧? go-sql-driver/mysql go-redis/redis
    展开

    作者回复: 当然都是 client 啦

    1
  • 清风徐来
    2018-12-06
    感谢郝林老师的一路分享,收益良多,保重身体,期待下一站!

    作者回复: 好

    1
  • 顺势而为
    2022-11-20 来自广东
    本来想买高并发的那个进阶课程的,结果,还是决定买了爬虫那个
  • Ecoder
    2022-11-16 来自广东
    学习完这个项目,可以选了一个感兴趣的领域(比如云原生)。就去看优秀的开源项目,然后尝试修复bug,参与开源的项目。
  • enjoylearning
    2022-10-14 来自北京
    项目需要,买了很久,还没仔细看过一遍
  • 第一装甲集群司令克莱...
    2022-06-24
    老师的导图,真是航海上的指明灯!
  • Geek_783504
    2022-06-20
    冲冲冲
  • 陈善省
    2022-05-25
    感觉不错
  • 用户6109996491
    2022-05-13
    非常棒,现在实习受益很大