学习计算机基础有什么推荐的书和视频?

大家好,我是小林。

之前有读者问我,学习计算机基础有什么推荐的书/p>

这一个我就很有心得了,因为我大学的专业并不是计算机专业的,是电气自动化专业的,所以学校的课程并没有操作系统、计算机 络、计算机组成、数据库这类课程,但是还是会有编程课。

所以,计算机基础这些课程都是我自学过来的,期间看过了很多的书,也在中国慕课和 B 站刷过很多视频,踩过不少的坑。

其实在自学过程中,最容易踩坑的地方就是不看自己当前水平,盲目跟风买那些豆瓣高分的大而全的计算机黑皮系列的书,然后学几天,就放弃了。

这些大而全的计算机黑皮书当然很经典,但是它们并不适合新人入门学习,因为这类书籍的内容都充满大量的专业术语,我们人在看到陌生又难以理解的词汇时,就会感觉很吃力,脑子看着就会很累,就会驱使你做简单和快乐的事情,比如睡觉、刷短视频、玩游戏。。。

不要问我,为什么知道的那么清楚,因为我就是这么踩坑过来的。

所以,我认为学习一门学科的时候,要从最基础的书开始学起,接着搭配视频快速入门,然后再渐渐步入到这些大而全的计算机黑皮书

关键的问题来了,计算机基础有哪些入门的基础书和视频呢/p>

接下来,我就跟大家分享下,我看过的书和视频,都是从入门再到进阶的路线。

现在大多数高级语言都会有容器,就是把一些常见的数据结构封装成了容器,然后使用起来就比较方便,但是不利于我们理解底层的数据结构是怎么变换和操作的,所以这门课还是很有意义的。

如果想要实战的话,可以去 Leetcode 官方出品的免费教程 Leetbook, 站很细心的按照各个知识点循序渐进地罗列了出来。讲解知识 + 实战演练,学习起来会比看书效率高。

第二个,leetcode:

https://leetcode-cn.com/problemset/algorithms/

《剑指 offer》作为大经典,是一定要刷两遍以上的,很多题都是面试时的原题,里面包含了很多笔试常用的思想方法,反复看,反复研。

我一开始每天 10 题,过两遍以后,要求自己每天快速过剑指一遍。

leetcode 由于题目十分之多,刷完是不可能的。我的意见是 leetcode 作为你弱项的专项练习。

leetcode 右侧有标签分类,如下图:

对于入门计算机组成,可以先看前 10 个视频,看完这 10 个视频也就不到 2 个小时,看完前 10 个视频对计算机的工作方式就有一个基本的了解了。

看完前 10 个视频就可以开始看书了。

讲真,不太建议小白一上来就看那些厚的不行的计算机组成原理的黑皮书,这些书是经典的没错,也正是由于它们是经典的,所以这些书的知识体系很全、很多、很厚。

但是这样很容易让初学者迷失在里头,可能刚兴致勃勃看几十页就放弃了,于是这些厚的不行的书就成为了你们的垫书神器知识没学多少,颈椎病倒是治好了。

这两本不用 1 个月就能看完,因为在看这两本书的时候,你会看的很顺畅,相比学习的心态,你更多的是会带着「好奇心」的心态去读。

其中**《程序是怎么跑起来的》是一个「微缩版本」的计算机组成原理**,你可以只选择看这一本,从这本书的名字也可以知道,它是从计算机是怎么运行程序的视角来讲的,然后把涉及到的计算机硬件和它们之间是如何协作的一点一点的给大家带出来,让大家能瞬间明白这些计算机硬件的作用。

这本仅仅是入门级别,主要的作用是让初学者明白计算机组成原理这门课是学什么的,以及梳理主要的知识体系,用了这本书的概念后,在去深入计算机组成的时候,就不会雨里雾里的。

另外,《编码:隐匿在计算机软硬件背后的语言》这本书也很不错,是本科普类的书,非常适合非科班的同学,主要讲是计算机工作的原理(二进制编码、加减法运算、计算机部件、浮点数定点数、处理器等),也就是跟计组息息相关的知识,它的内容很有趣味性,并不想教科书那样晦涩难懂,丝毫不会让你感到生硬,读起来很畅快。

深入学习

想要深入学习计算机组成原理的同学,我首先推荐《计算机组成与设计:硬件 / 软件接口》这本书,

这本书确实很厚,差不多 500 多页,但是**书从来没有人规定一定要从头读到尾,一页页的读的。**重要的不是看完一本书,而是从书上学到多少,解决了什么问题。

大家可以挑这几个章节看,跟开发者关系比较大的章节:

  • 第一章:计算机抽象以及相关技术,这个章节主要是介绍了计算机组成的思想,可以简单快读看,不用重点读;
  • 第二章:指令,大体上讲的是计算机是如果识别和运行指令的,以及代码到指令的过程;
  • 第三章:计算机的算数运算,介绍的是计算机是如何进行加减乘除法的,以及浮点数的运算;
  • 第五章:层次化存储,讲的是计算机的存储层次结构,而且重点讲的是 CPU Cahe。

看书觉得很累,也可以结合视频一起看,这里推荐哈工大的《计算机组成原理》视频,在 b 站就可以直接看,大家自己去搜索就可以。

看书和看视频可以相互结合的,比如你看视频看了计算机指令的内容,然后你可以不用继续往下看,可以回到一本书上,看书上对应这个章节的内容,这是个很好的学习方法,视频和书籍相辅相成。

你要是觉得哈工大的计组课程太难,你可以看王道考研的计算机组成原理的视频课程,同样 b 站就可以看。

这个视频虽然是针对考研的,但是也是可以作为学习计组的资料,讲的内容不会太深,适合你快速建立计算机组成原理体系,和梳理计组知识的脉络。

另外,在推荐一本《深入理解计算系统》这本书,人称 CSAPP。

可能大家以为这本书是讲操作系统的,我最开始也以为是这样。后面当我开始啃这本书的时候,发现我大错特错,它远不止我想的那样。

这本书是从程序员的角度学习计算机系统是如何工作的,通过描述程序是如何映射到计算机系统上,程序是如何执行的,以及程序效率低下的原因,这样的方式可以让大家能更好的知道「程序与计算机系统」的关系。

CSAPP 涵盖的内容非常多,有计算机组成 + 操作系统 + 汇编 + C语言 + Linux系统编程,涉猎的领域比较多,是一本综合性的书,更是一本程序员修炼内功的指引书。

CSAPP 主要包括以下内容:

  • 信息表示(如何使用二进制表示整型、浮点数等);
  • C 和汇编语言的学习(通过汇编语言更深入地理解C语言是什么);
  • 计算机体系结构(存储层次结构、局部性原理、处理器体系结构);
  • 编译链接(C语言如何从文本变成可执行文件、静态链接、动态链接);
  • 操作系统的使用(异常控制流、虚拟内存、多个系统调用介绍);
  • 络及并发编程(并发的基本概念、 络相关的系统调用的介绍)。

你会发现有部分内容和《计算机组成与设计:硬件 / 软件接口》这本书重合了,重合的部分就是重中之重的计算机组成原理知识了,而且内容都是差不多的,你可以看完一本书的内容,然后跳到另外一本看相同章节的内容,多本书的结合可以让我们更加容易理解。

这两本书有个区别:

  • 《计算机组成与设计:硬件 / 软件接口》讲的指令格式是 RISC 的;
  • 《深入理解计算系统》讲的指令格式是 x86 的;

其他重合的计组知识都大同小异。

CSAPP 的视频课程是国外老师录制的,但是在 b 站已经有好人帮我们做了中文字幕,看了这视频,相当于在国外上了一门计算机课的感觉。

B站地址:https://www.bilibili.com/video/BV1iW411d7hd

《操作系统 – 清华大学》

该清华大学的视频教学搭配的书应该是《现代操作系统》,你可以视频和书籍两者结合一起学,比如看完视频的内存管理,然后就看书上对应的章节,这样相比直接啃书相对会比较好。

清华大学的操作系统视频课讲的比较精炼,涉及到的内容没有那么细,《操作系统 – 哈工大》李治军老师授课的视频课程相对就会比较细节,老师会用 Linux 内核代码的角度带你进一步理解操作系统,也会用生活小例子帮助你理解。

OSI 参考模型与 TCP/IP 的关系

TCP/IP 络参考模型共有 层,其中需要我们熟练掌握的是应用层、传输层和 络层,至于 络接口层(数据链路层和物理层)我们只需要做简单的了解就可以了。

对于应用层,当然重点要熟悉最常见的 HTTP 和 HTTPS,传输层 TCP 和 UDP 都要熟悉, 络层要熟悉 IPv4,IPv6 可以做简单点了解。

我觉得学习一个东西,就从我们常见的事情开始着手。

比如, ping 命令可以说在我们判断 络环境的时候,最常使用的了,你可以先把你电脑 ping 你舍友或同事的电脑的过程中发生的事情都搞明白,这样就基本知道一个数据包是怎么转发的了,于是你就知道了 络层、数据链路层和物理层之间是如何工作,如何相互配合的了。

搞明白了 ping 过程,就明白了两个计算机是怎么通信的了,然后你学起 HTTP 请求过程的时候,会很快就能掌握了,因为 络层以下的工作方式,你在学习 ping 的时候就已经明白了,这时就只需要认真掌握传输层中的 TCP 和应用层中的 HTTP 协议,就能搞明白访问 页的整个过程了,这也是面试常见的题目了,毕竟它能考察你 络知识的全面性。

重中之重的知识就是 TCP 了,TCP 不管是建立连接、断开连接的过程,还是数据传输的过程,都不能放过,针对数据可靠传输的特性,又可以拆解为超时重新、流量控制、滑动窗口、拥塞控制等等知识点,学完这些只能算对 TCP 有个「感性」的认识,另外我们还得知道 Linux 提供的 TCP 内核的参数的作用,这样才能从容地应对工作中遇到的问题。

接下来,推荐我看过并觉得不错的计算机 络相关的书籍和视频。

入门系列

此系列针对没有任何计算机基础的朋友,如果已经对计算机轻车熟路的大佬,也不要忽略,不妨看看我推荐的正确吗。

如果要入门 TCP/IP 络模型,我推荐的是《图解 TCP/IP》,这本书也是以大量的图文来介绍了 TCP/IP 络模式的每一层,但是这个书籍的顺序不是从「应用层 —> 物理层」,而是从「物理层 -> 应用层」顺序开始讲的,这一点我觉得不太好,这样一上来就把最枯燥的部分讲了,很容易就被劝退了,所以我建议先跳过前面几个章节,先看 络层和传输层的章节,然后再回头看前面的这几个章节。

另外,你想了解 络是怎么传输,那我推荐《 络是怎样连接的》,这本书相对比较全面的把访问一个 页的发生的过程讲解了一遍,其中关于电信等运营商是怎么传输的,这部分你可以跳过,当然你感兴趣也可以看,只是我觉得没必要看。

如果你觉得书籍过于枯燥,你可以结合 B 站《计算机 络微课堂》视频一起学习,这个视频是湖南科技大学老师制作的,PPT 的动图是我见过做的最用心的了,一看就懂的佳作。

《The TCP/IP GUIDE》

白嫖站点:http://www.tcpipguide.com/free/t_TCPSlidingWindowAcknowledgmentSystemForDataTranspo-6.htm

当然,计算机 络最牛逼的资料,那必定 RFC 文档,它可以称为计算机 络世界的「法规」,也是最新、最权威和最正确的地方了,困惑大家的 TCP 为什么三次握手和四次挥手,其实在 RFC 文档几句话就说明白了。

TCP 协议的 RFC 文档:https://datatracker.ietf.org/doc/rfc1644/

实战系列

在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议,最好都可以亲手尝试抓数据 ,接着可以用 Wireshark 工具看每一个数据 文的信息,这样你会觉得计算机 络没有想象中那么抽象了,因为它们被你「抓」出来了,并毫无保留地显现在你面前了,于是你就可以肆无忌惮地「扒开」它们,看清它们每一个头信息。

那在这里,我也给你推荐 2 本关于 Wireshark 络分析的书:《Wireshark 络分析就这么简单》 与 《Wireshark 络分析的艺术》

五、MySQL

MySQL 入门的话是了解 SQL 语法,进阶的话是深入底层实现原理。

千万不要一上来就看《高性能 MySQL 》,我曾经先读《高性能 MySQL 》然后一路暴雷… 因为这本不是入门的书籍!

我先介绍下 MySQL 的重点知识,也是面试常面的知识点:

  • 基本语法:select/delete/insert/update、limit、join等
  • 索引:B+树,聚族索引,二级索引,组合索引,最左匹配原则,索引失效、慢查询
  • 事务:事务四大特性ACID,事务隔离级别,MVCC
  • :全局锁、表级锁、行级锁、快照读、当前读、乐观锁、悲观锁、死锁
  • 日志:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)
  • 架构:读写分离、主从架构、分库分表、数据库和缓存双写一致性

MySQL 入门推荐《SQL必知必会》,这一本很薄的书,主要是讲数据库增删查改的 SQL 语法。

学完 SQL 语法,我们不能止步,要深入去了解 MySQL 底层知识。

MySQL 用的最多的就是 InnoDB 引擎了,所以进一步学习 InnoDB 是很有必要的,这里推荐《MySQL技术内幕》,这本书可以结合《MySQL是怎么样运行的》一起看。

好了,看完上面的,你对 MySQL 已经有相当多的认识了,MySQL 还有一本高性能的书《高性能 MySQL 》,非常的经典,这本书比较厚,大家可以当作字典,索引章节大家可以去看看,看完后你对索引的认识又会刷新一遍。

六、Redis

要入门Redis,就要先知道这东西怎么用,说白了,最开始就是先学习操作Reids的相关命令,就像我们入门MySQL的时候,都是先学习SQL语言。

入门 Redis 命令这一块我当时没有去专门买书看,而是直接看视频,因为我觉得命令的使用实操性还是比较强的,跟着老师敲命令学习会比较快一些。

这里我推荐下尚硅谷 Redis 视频课,在 B 站就可以看,讲的还是挺清晰的,也把Redis很多重点知识也讲了,比如 Redis基本数据结构、持久化技术、主从复制、哨兵、集群等等,一套连招下来,就基本入门了。

视频是帮助我们快速入门,但是并不能至于视频,因为一些细节的知识点视频上并没有提及,这时候我们就要回归书本。

这里推荐学习Redis的圣经级别的书——《Redis设计与实现》,因为它太经典了!

书本上主要围绕这几大知识点:数据结构、AOF和RDB持久化技术、 络输入输出系统、主从复制、哨兵模式、集群模式。

到这里你已经是入门Redis了,不仅会了 Redis 基本命令,还懂 Redis 的实现,剩下的就是学习如何在实战中运用Redis。

这里推荐《Redis实战》这本书,该书通过实际的例子, 展示了使用 Redis 构建多种不同的应用程序的方法。

处于进阶阶段的 Redis 学习者可以通过阅读该书来学习如何使用 Redis 去构建实际的应用,然后举一反三, 把书中介绍的程序和方法应用到自己遇到的问题上。

七、看书心得

没有人规定看书一定要一页一页的全部看完,我们要知道看书的目的是什么/strong>

无非不就是收获知识,和解决问题嘛。

所以最好的看书方式是带着问题去翻阅,比如:

  • 带着程序是如何在计算机里跑起来的问题,去学计算机组成原理;
  • 带着输入一条 url 到 页显示, 期间发生了什么的问题,去学习计算机 络;
  • 带着进程、内存、磁盘是如何被操作系统管理点,去学习操作系统;
  • 带着如何实现一个高并发 络模型,去学习 络编程;

我之前也写过一篇我的看书心得,帮助到了很多同学,建议没看过的同学,去看看; 看书的一点小建议

八、融汇贯通

看到这,很多小伙伴会说了,学了这么多计算机基础,怎么将这些知识点融会贯通呢/p>

我之前写过一篇文章,用一个案例把计算机原理 + 操作系统 + 数据结构 + 计算机 络融会贯通,带大家感受下感受计算基础之美:如何将计算机组成、操作系统、计算机 络、数据结构与算法融会贯通/p>


这次分享就到啦。

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34338 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月11日
下一篇 2022年2月11日

相关推荐