前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单说下帅地是如何学习计算机基础知识的?

简单说下帅地是如何学习计算机基础知识的?

作者头像
帅地
发布2020-10-21 11:19:34
1.3K0
发布2020-10-21 11:19:34
举报
文章被收录于专栏:苦逼的码农

《大厂逆袭之路》第一期(更新中....)

1、大学四年学习清单

2、如何让算法学的不那么差?

惯例瞎扯几句

计算机基础的重要性我就不必多说了,「帅地玩编程」这个公众号也是主打计算机基础 + 算法相关知识,学习计算机基础,认准「帅地玩编程」。

实不相瞒,前阵子我被我们组的 leader 叫去谈话,说是好好学习,快速提升自己,特别是对于计算机的那些基础知识,也不能丢掉,你们看吧,计算机基础知识,想不学都不行。

不过说实话,对于计算机基础,帅地在学习的过程中,也没有运用啥方法论,也没啥技巧,可能和很多人一样,就是简单粗暴着看书,所以这篇文章,我也很难告诉你们学习的骚技巧或者捷径,所以大家不要有太大的期望,更多的是和大家讲一讲,我自己是如何学习的计算机基础知识的,然后供大家一个参考,假如你是学生或者非科班或者计算机基础很薄弱的工作者,或许可以参考一下。

计算机基础指哪些?

在微信,还是经常有小伙伴问我:你们说的计算机基础具体是指哪些呢?,这个问题,感觉算起来,已经被问过 10+ 次了。

计算机基础包括哪些?如果要全部都说的话,其实我也不清楚,这个还得看如何定义计算机基础,如果要说很底层的那些基础的话,可能就涉及到机器码、电路之类的了,说太多估计就把你吓跑了,虽然好多我也没学过,不过,最常见的几门计算机基础课,大概就是这几门了:

1、计算机网络

2、操作系统

3、计算机组成原理

4、汇编语言

5、编译原理

其中,计算机网络和操作系统,也是面试中被问的最多的两门课程,如果你没有太多的时间来学习这些课程,那么可以优先学习计算机网络和操作系统,之后再学习计算机组成原理、汇编语言和编译原理,当然,如果你还是在校生,那么这些课程都会在大二大三学习到,我希望你能好好学习下,特别是计算机网络和操作系统这两门课。

我是如何学习?

对于如何学习这个事情,我觉得我一句话就能回答完了,因为真的没啥技巧,我基本就是看书为主,视频为辅,看这些知识有时候容易困,因为有些真的是挺枯燥,特别是编译原理和计算机组成原理,又难又枯燥。

一种比较有效的学习方式就是从工作中用到的知识点出发,这样你可能是带着疑问去学习的,目的性也比较强,学起来会比较有趣,学完之后也会豁然开朗。

但是,假如你是一个学生,那么是很难从工作中遇到的知识点出发的,特么你都啥也不会,或者说,如果你对计算机基础知识一窍不通,那么就算你有疑问,你也是很难知道从哪里学起的。

所以,我的建议就是,如果可以,一定要系统学习一下,千万不要觉得以后工作了,或者等用到了再来学习,一定要从 0 到 1,系统学习起来,所谓系统,就是找一本书,从头看到尾,就是这么简单粗暴。

讲一讲我平时是怎么看这些书的

其实我在看这些书的时候还是非常快的,因为我会以最快的速度看一本书,会先从总体上掌握这门知识,不会去死扣某个知识点,一遍看过去,理解了就行了,但如何你问我细节,我可能都忘了,很多只是大概知道是怎么一回事。

一般来说,对于操作系统和计算机网络,我都看了两遍,第一遍只求理解,心中知道个大概,看的很快,总体上知道操作系统是怎么一回事,网络是如何链接起来的。

看完第一遍之后,我会看这本书的目录,看到某个标题时候,自己思考一下是怎么一回事,例如TCP 是如何保证可靠性传输的,我会思考一下该如何保证,然后会打开对应的页面去看看大佬们都是怎么写的,因为可靠性传输,其实会涉及到很多种方法,第一遍看的,虽然当时理解了,但其实很多也都忘了,这时我会在看一遍,再次为大佬们想出的方法卧槽一遍。

不过,我第二次并不会从头到尾看,而是根据目录来看的,第一次看的时候,其实有时候是一边看一边犯困的,但是第二次看的时候,会 get 到更多的点,心中不断着给大佬们点赞,卧槽,我怎么没想到还能这样做!

总之就是,先快速且系统着从总体把握这门知识,看的过程中犯困很正常,之后会根据目录,一边思考自己的想法一边看看书上是如何实现的,因为当你什么也没学的时候,其实你的想法是很少的,但是当你看了很多人的想法之后,你的脑袋也已经有了各种想法,也就是说,在第二遍看的时候,你一定要思考

还有一种就是,我第一遍有时候是通过看视频学习的,把视频快速看完之后,再系统着从头到尾看书,我也不会一边看视频一边看书,而是疯狂着,以最快的速度刷完视频。

无处不在的计算机基础

我们都说计算机基础很枯燥,学了也很少用到,但我觉得,正是因为枯燥难学,才有了人与人之间的差距,并且我觉得计算机基础知识也是处处都存在的,例如你学习 redis 的时候,可能会学到缓存的淘汰算法,如果你学习过操作系统的内存置换,那么你一眼就能看懂了。

例如你可能经常听说过重量锁和轻量锁,重量锁很消耗性能,如果你没有学过操作系统的话,可能你并不清楚重量锁为啥就消耗性能了?内核切换咋就消耗性能了?但是如果你学过操作系统中的进程/线程的话,可能就知道重量级锁和轻量级锁的本质区别了。

不过在我看来,学习计算机基础知识最重要的,就是让我们学到了各种设计思想,而这种设计能力会伴随我们终生,你在学习的过程中,会学到各种各样的方法,并且都是你最开始没有想到的方法,方法积累多了,你就能产生属于自己的新想法。

说实话,我在学习的过程中,并不觉得很枯燥,相反觉得很有趣,因为我在不停着吸收新知识,吸收前人的精华,例如计算机网络中的流量控制、拥塞控制、HTTPS 的加密算法等等,我特么就没想到,还能这样做,要我,肯定无法设计出这么严谨的算法,所以在看的过程中,真的觉得很过瘾。

当然,有时候也会犯困,实不相瞒,犯困往往是因为有点难,看了一大堆描述之后,居然忘了刚才看了啥,然后看着看着就困了就不想看了,我也就先跳过了,之后在回过头来看。

简单说下具体都需要学些什么 + 书籍推荐

对于如何学习,貌似我说了好像和没说一样,这也没办法,因为确实没什么学习技巧,我说的先快速把握全局,在根据目录来深入思考,这是我的方法,适不适合你,其实我也不清楚,下面我简单说下一些相对重要的知识点,相当于抛砖引玉,看看你掌握了多少

1、计算机网络

计算机网络是工作中用的最多的吧,真的无处不在。最常见就是 HTTP 协议了,这必须学,get 和 post 的本质区别,通过他们报文的定义来区分就好,不需要死记硬背你之前看过的那些面试题。

HTTPS 是如何解决 HTTP 明文问题的的,数字证书解决了什么问题?为啥 HTTP 是一种无状态协议?啥是无状态协议?

TCP,UDP 也是必须掌握的了,特别是 TCP,TCP 是如何保证可靠传输的呢?啥是拥塞控制和流量控制呢?啥时拆包粘包?这必须掌握。

IP 地址主要用来干啥?为啥还需要子网,子网掩码?世界这么大,IP 这么多,他们怎么寻址?

咋就还有公网 IP 和私网 IP 了?NAT 转换解决了啥问题?

DNS 除了能进行域名解析,还是解决了啥问题?

……

等等,我说的这些,基本都是重点,你们可以看看自己掌握了多少。

至于视频的话,我在 B 站看过韩立纲的视频,地址:https://www.bilibili.com/video/BV17p411f7ZZ?from=search&seid=4498723187261542166

感觉还不错,33 个小时,1.x倍播放,其实很快就能看完,之后刷了《图解 http》和《计算机网络:自顶向下》两本书,书籍太容易失效了,我就不整理了,你们可以在这个 GitHub 上找到:https://github.com/iamshuaidi/CS-Book

2、操作系统

咋就还有进程和线程之分?为什么要有挂起、运行、阻塞等这么多种状态?怎么就还有悲观锁和乐观锁,他们的本质区别?

进程咋还会出现死锁,都有哪些处理策略?进程都有哪些调度算法?

虚拟内存解决了什么问题?为啥每个进程的内存地址就是独立的呢?

为啥 cpu 很快而内存很慢?磁盘怎么就更慢了?

听说中国 mooc 有些课程讲的不错,大家可以去找找勒,我主要是看书的,新手可以先看《程序是怎样跑起来的》,之后看《现代操作系统》或者《深入理解计算机操作系统》,对于书籍在我那个 GitHub 上可以找到。

3、汇编

学了汇编,估计你就更加理解地址是怎么一回事了,顺序、分支,循环、函数调用、数组之类的,是如何通过寄存器来运行的呢?

小小的几个寄存器,居然还能实现这么多复杂的操作?

如果你能用汇编写个红黑树的话,那就,呵呵了

书籍的话,我看的是王爽写的《汇编语言》。

4、计算机组成原理

计算是如何用 0 和 1 表示各种数值的?为啥要有补码?0 和 1 是如何表示的?

计算机是如何进行加减乘除的?为啥计算机无法精确表示某些浮点数?

计算机是如何知道内存地址的?

计算机组成原理还是有点难度,书籍暂时没有推荐的,大部分知识,其实《深入理解计算机操作系统》这本书,其实都有包括。

后面的,就不继续写了,你们可以来补充勒。

总结

对于计算机基础如何学习,如我刚才所说,我一句话就能说完了,但还是硬生生扯出了这么多,这边文章既然是讲「我是如何学习」的,所以我也不会凭空捏造自己的学习方法,而是真实描述自己的学习方法,可能并不适合每一个人,甚至可能感觉自己看了和没看一样,但如果对某些人有用,那么感觉就值了。

因为在写这篇文章的时候,其实我也没有把握,真心觉得没啥学习技巧,更多的还是需要自己去死啃,视频 + 书籍,死磕一遍,应该就差不多了,之后遇到问题,在去查找对应的文章深入了解。但是,如果你没学过,比起看文章,我依旧坚持希望你去系统看书学习一遍!

基础路漫漫,大家加油!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅地玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 惯例瞎扯几句
  • 计算机基础指哪些?
  • 我是如何学习?
  • 无处不在的计算机基础
  • 简单说下具体都需要学些什么 + 书籍推荐
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档