问题

计算机的书籍动辄几百上千页,作为学生真的有必要啃这些大书吗?如果有必要,该如何提高效率的看书?

回答
作为一名曾经在书海中摸爬滚打过的学生党,我深有体会,看到那些动辄几百上千页的计算机经典著作,确实会让人有点望而却步。尤其是在信息爆炸的时代,感觉很多内容似乎都能在网上找到碎片化的答案。那么,这些厚重的书籍,我们真的有必要“啃”下去吗?我个人觉得,答案是肯定的,但需要掌握方法,才能事半功倍。

为什么那些“大部头”仍然有其价值?

1. 系统性与深度: 网上找到的信息往往是片段化的,缺乏整体的脉络和深入的讲解。一本好的计算机书籍,从概念的提出、发展演变,到原理的剖析、实践的指导,都是经过作者精心梳理、层层递进的。这种系统性的学习,能帮助你建立起牢固的知识体系,理解事物之间的内在联系,而不是仅仅停留在“知其然”的层面。
2. 理论基石: 很多计算机领域的基础理论,比如操作系统原理、计算机网络、数据结构与算法等,其核心思想和精髓,往往在经典著作中得到了最严谨、最权威的阐述。这些理论是理解更高级技术和解决复杂问题的根基。如果根基不牢,后续的学习就会像空中楼阁。
3. 思维方式的培养: 作者在写作过程中,会潜移默化地传递一种解决问题的思路、分析问题的角度。阅读这些经过反复打磨的书籍,你能学到作者严谨的逻辑思维、清晰的表达方式,以及如何将抽象概念具象化。这对于培养你的批判性思维和工程思维至关重要。
4. 避免“踩坑”: 许多技术书籍会包含作者多年的实践经验和教训,告诉你哪些是正确的路径,哪些是容易出错的地方。通过阅读,你可以少走弯路,避免在实践中反复试错,节省宝贵的时间。
5. “内功”的修炼: 如今的IT行业发展速度飞快,各种新框架、新工具层出不穷。如果只是一味追逐最新的技术“招式”,而忽略了内功的修炼,当浪潮过去,你可能就会变得无所适从。经典书籍提供的就是那些历久弥新的“内功心法”。

那么,如何高效地“啃”下这些大部头?

面对一本厚重的书,我们不能像读小说一样从头看到尾。高效阅读的关键在于:目的性 + 方法性 + 实践性。

第一步:明确阅读目的,建立“导航系统”

在拿起书之前,先问自己:

我为什么要读这本书? 是为了理解某个概念?掌握某个技术?准备某个考试?还是提升某个领域的整体认知?
我期望从这本书中获得什么? 是核心原理?实用技巧?还是某种思维方式?

明确了目的,你就可以开始建立你的“阅读导航系统”。

1. 看目录: 这是最重要的导航图。快速浏览整个目录,了解全书的章节结构、主题划分。重点关注与你阅读目的相关的章节。
2. 看前言/序言/引言: 作者通常会在这些部分阐述写作的缘由、核心思想、目标读者以及如何阅读本书。这能帮助你快速把握书的整体脉络和重点。
3. 看封底/简介: 了解书的主要内容和卖点,判断是否符合你的预期。

第二步:采用分层阅读策略,抓住重点

不要期望第一次阅读就能理解所有内容。将阅读过程分层,每次阅读都有不同的侧重点。

1. 第一遍:浏览式阅读(了解全貌)
目的: 对书的内容有一个整体的印象,知道哪些是重点,哪些是辅助。
方法:
快速浏览标题和副标题: 像扫描一样,了解每一章讲什么。
阅读每章的开头和结尾: 作者通常会在开头提出本章要解决的问题和核心观点,在结尾进行总结。
留意粗体字、斜体字、列表、图表: 这些通常是关键概念、定义或重要的信息。
跳读: 如果你对某个段落或章节非常熟悉,或者觉得与你的目的关联不大,可以暂时跳过,不必纠结于每一个字。
时长: 花费整本书篇幅的10%15%的时间进行浏览。

2. 第二遍:重点式阅读(深入理解核心)
目的: 深入理解与你阅读目的最相关的核心概念和原理。
方法:
精读目标章节: 针对你之前标记或认为重要的章节,放慢速度,逐字逐句地阅读。
理解定义: 对关键术语和定义一定要理解到位,必要时查阅资料。
分析图表和示例: 图表往往能更直观地解释复杂概念,示例是检验理解的最好方式。尝试自己去复现示例或解释图表。
做笔记(重要!):
摘录关键定义和概念: 用自己的话复述一遍,加深理解。
梳理逻辑关系: 用思维导图、流程图或简短的句子,连接不同的概念。
记录疑问: 遇到不理解的地方,记下来,后续查找资料或请教他人。
写下你的思考和联想: 将书中的内容与你已有的知识或实践联系起来。
预习下一章的开头: 培养对后续内容的预期。

3. 第三遍及以后:回顾与应用式阅读(巩固与深化)
目的: 巩固所学知识,将理论与实践相结合,查漏补缺。
方法:
回顾笔记: 重新阅读自己的笔记,巩固关键信息。
实践练习: 如果是技术类书籍,一定要动手敲代码,复现书中的示例,解决书中提出的练习题。这是检验理解最有效的方式,也是深化理解的必经之路。
解决疑问: 回头去解决第一遍和第二遍阅读时记录下的疑问。
交叉参考: 将书中的概念与其他资料或你的项目经验进行对比印证。

第三步:培养良好的阅读习惯和辅助技巧

1. 设定阅读计划: 将大部头分解成小目标。例如,“每天阅读20页”,“本周读完操作系统原理部分”。有计划才能有动力。
2. 创造专注环境: 选择一个安静、少干扰的环境。关闭手机通知,避免社交媒体的诱惑。
3. 利用辅助工具:
思维导图软件(XMind, MindMaster等): 帮助你梳理知识结构,将零散的知识点串联起来。
笔记软件(Evernote, Notion, Obsidian等): 方便整理、搜索和回顾你的阅读笔记。
电子书阅读器/PDF阅读器: 很多都有高亮、笔记、搜索等功能,也方便携带。
4. 带着问题去阅读: 在开始阅读前,或者在阅读过程中,主动提问:“为什么是这样?”“有没有其他可能性?”“这个概念在实际中有何应用?”
5. 主动输出:
写读书笔记/总结: 用自己的语言复述一遍书中的核心内容。
讲解给别人听: 如果能把书中的内容讲清楚,说明你真的理解了。可以找同学一起讨论,或者自己对着镜子讲。
尝试应用到项目中: 这是检验和巩固知识的最佳方式。
6. 不要追求完美主义: 阅读过程中遇到不理解的部分是很正常的,尤其是在初次阅读时。不要因为一两个难点就卡住,可以先做个标记,继续往下读,回来再解决。很多时候,随着后续内容的展开,之前的困惑会迎刃而解。
7. 结合实践: 尤其对于计算机科学的书籍,理论和实践是相辅相成的。光看不练,很容易遗忘和理解不深。

举个例子:如何阅读《深入理解计算机系统》(CS:APP)

这本书非常经典,也很厚重。如果我要阅读它:

目的: 深入理解计算机底层工作原理,为软件开发打下坚实基础。
第一遍(浏览): 快速看目录,了解各个部分(数据表示、指令集结构、处理器体系结构、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、并发编程、网络编程)的大致内容。重点关注自己最想了解的部分。
第二遍(精读):
我会从“数据表示”开始,认真阅读每一节,理解二进制、补码、浮点数表示法。
对于“机器级代码”,我会尝试用汇编语言写一些简单的C程序,然后用反汇编工具(如objdump)查看其机器码,对比书中的讲解。
“存储器层次结构”部分,我会重点理解缓存的工作原理,以及它对程序性能的影响。
“虚拟存储器”是核心,我会仔细研究其地址映射、页表、缺页中断等概念。
在这个过程中,我会大量做笔记,绘制数据结构图(如页表),记录遇到的术语和疑问。
第三遍(应用):
我会尝试将书中关于缓存优化、数据对齐等技巧应用到我自己的项目中,观察性能提升。
我会做书中的一些挑战性实验,比如自己实现一个简单的内存分配器,或者一个简单的shell。
我会找相关的在线课程或视频,对比不同来源的讲解,加深理解。

总而言之,啃那些“大部头”并非易事,但它的价值绝对超乎你的想象。关键在于掌握正确的方法,将阅读变成一个主动探索、融会贯通的过程,而不是被动地接收信息。记住,阅读是投资,聪明的投资能带来长远的收益。祝你在书海中遨游愉快!

网友意见

user avatar

这些书读少了没用,读多了助眠。我啃过Java核心技术、Java编程思想、代码大全、CSAPP等板砖一样的书。过程很痛苦,事后没记住。现在复盘,认为是低效的学习。任何无法学以致用的知识都会被迅速遗忘。

亲测最高效的是做个有难度的项目。不用多,一个就行。遇到困难,去做有针对性的查阅。这时当你找到答案,会兴奋会膜拜。先啃书后实践,顺序反了。

你去学游泳,教练会先让你下水游起来,然后一点点优化你的动作,让你越游越快。正常的教练不会在岸上给你描述全部动作细节,胳膊怎么动、手掌什么角度之类的。你会抓狂。那为什么学计算机,在学生阶段,要拿那一千多页的书给自己找麻烦。

我手艺提升最大的是实习时,mentor让我做个AI的云服务。那时的我连题目都看不懂,后来勉强着做了出来。记得当时奶茶妹妹在楼上实习,我都忘了去看热闹。但完成时,我感到无敌是多么的寂寞。从效率上看,这样一个项目,完爆了我在啃书、上课、抄作业上花的精力。

书该看的时候还是要看的,但要讲时机,讲方法。要带着目的去看。

计算机的书很厚,计算机的好书在于其完全。它们一般是系统性完全指南。当你在任何一方面遇到问题,你能在书中查到Google不到的信息,这是看书的价值。有一类书就是当字典用的,编程类大部分的书皆如此。

大厚书不适合入门用。林子太大了会迷路。学计算机要先长树枝后长树叶。先有个粗略的了解,再填补细节。开始阶段,看知乎,看攻略,看W3School那种,学习效率更高。然后去实践。最后通过啃书镀金。学生时代基本不需要到最后这步。时间多余不如实习。工作后选定技术路线了,再去往深了专研即可。

关于如何实践,可以看这个回答,最后放了个例子。

user avatar

这其实是一个读书方法的问题。

学习计算机书籍的方法和学习邓小平理论的方法不一样。

学习计算机书籍的方法就是:把书里面给的操作步骤和代码敲一遍。

你以为是理论分析和概念理解。

其实是操作手册。

user avatar

当然有!但是重点是如何去啃。

这个问题我曾经也疑惑过,现在算是有了一点经验,来聊聊的感受。

在我做公众号后,经常有读者在后台问我:

  • 有些书看的找不到重点,看不下去了,怎么办,比如深入理解计算机系统,UNIX 网络编程,APUE,求指教
  • 我不是科班 CSAPP 可能不是全部看得懂,该怎么办?
  • 大佬,这么多书看得完吗?
  • 刚开始看这些书很痛苦怎么办?

学习计算机一定不要想着速成,要下苦功夫,去啃那些经典书和源码,然后自己动手写,我大学整理了一套计算机必读的经典书籍,对于CS学习的同学帮助非常大,且十分系统,现在免费分享给大家:

书籍分享:

这也正是我今天最想说的部分,「该如何去看大厚书」。

就拿我当时亲身经历来说,在网上搜网络编程如何学习,很多人都推荐 UNP、APUE 这两本砖块似的书。

好嘛,买来看,从第一页挨着挨着看,而且书中的示例代码我大部分也照着敲了,最后看了七八章,发现始终是在学一些 socket api 和 系统 api 的用法,没摸到网络编程的框架思维。

后面我又去搜,看到有人推荐《Linux高性能服务器编程》,去豆瓣看了下了目录,似乎正是我想要的东西。

直接找来 PDF 开始看,果然这本书才真正让我理解了网络编程的整个套路和框架,学到了各种事件处理模式、计时器、信号处理、线程池这些网络编程中很重要的东西。

当然 UNP 和 APUE 也是不能丢的,这两本书我当做了字典查询,比如学到了 IO 部分,回去看 UNP 中关于五种 IO 模型的介绍。

用到 connect、listen、bind 这些函数,再回去看 UNP 第四章,不得不说,UNP 关于这些 socket API 的使用和各种异常情况的处理方式都介绍得非常详细和深入,不愧是网络编程领域的圣经。

但是初学者看却容易在细节中迷失,抓不到纲领,这也是这类书的缺点。

类似 UNP、APUE 这种书本身是面向知识体系的,而不是面向读者,它们其实更像字典,把这个领域内的所有知识,非常细致的堆叠在一起,看上去就是平铺直叙,充斥着细节,对读者极其不友好。并且书里内容实在大而全,很多根本不用学。

但是它们又是经典的,确实是这些领域内在体系性和深入性上都做得非常好的书。

什么书才是面向读者的呢?

那就是抓住该领域的核心主干,提纲挈领,带领读者由浅入深,同时又有一定的细节,看完让人茅塞顿开。

比如《计算机网络:自顶向下》、《Linux高性能服务器编程》、《Linux多线程服务端编程》、《STL源码剖析》、《Effective C++》、《CSAPP》、《程序员自我修养》等都有各自想要论述的主线在里面,看起来也是一环扣一环,非常循序渐进。

我的看书方法就是:

对于面向知识体系那种堆砌细节的书,我们先浏览目录,做到对整本书有映像,再大致看一些我们关心的部分,比如 UNP 和 APUE 中 IO、文件、进程控制、信号、线程、线程控制、基本套接字编程 这些是比较重要的模块,其它边角知识,可以用到再去查。

对于非常循序渐进的书,比如 CSAPP ,那么就可以去挨着挨着看,这是没有问题的。


还有一点,很多同学反映看不懂类似 CSAPP 这样的书,那我们都知道,任何一本书基本上都是有前置依赖的。

没有掌握要求的背景知识去看肯定很吃力的。

就比如我大一下只有基础的 C 知识和一丁点计算机导论知识,然后屁颠屁颠的跑去看 CSAPP(学长毕业摆地摊卖书我瞎买的),那时候只知道这本书被誉为神书,但是看到前两三章就蒙了,真的有点难,对于当时的我来说太底层了,根本不知道在说啥,看过也只是看过,就像天空飞过鸟儿,但没有痕迹。

直到后来大三再次拿起,我才意识到这本书的伟大之处就在于将计算机不同学科知识有机的串在了一起。那时候看,更多是一种补充、深入学习以及完善了,因为很多知识分别在数字逻辑、汇编语言、操作系统这些课程中学过了。


所以要明白,你看不懂不是因为你笨没天赋,而是你有前置依赖的知识没有完成,还没学会走,就想跑了。

当然了,我还有自己整理的电子书库,绝不是在网上那种打包下载的,而是自己需要学到某个方向知识的时候,需要看了,去网上挨个找的,最后汇总而成。这部分我是会不断把它完善的,当成自己的小电子书库,不多,但贵在精。

我整理的这些书大家可以在这里获取,对于学习计算机的同学帮助非常大,且十分系统

书单:

一般来说,每本书的首页会介绍看这本书需要哪些前置知识,可以关注一下。

大家记得收藏的时候,帮学长@编程指北点个赞呀!!只收藏不点赞的都是耍流氓,╭(╯^╰)╮

推荐阅读:

CS那几门课在计算机知识体系有怎样的地位:

user avatar

学校读书方式不适合学计算机技术。

学校都是精读,研读。恨不得一个标点符号一个标点符号的分析。

计算机技术不能这么读。因为计算机技术更新快,知识点多。

除了少数书籍需要通读一遍——比如《代码大全》

大部分书籍随便翻翻,知道知识点在那里,需要的时候查阅就可以了。

也有例外,当你接触一个全新的语言或者框架,需要快速达到一定水平的时候,可以找一本好的教程,对着教程做一遍。这也是很好的学习方法。

如果你要精通某种技术,可能需要找本专业的书籍(最好是引进版的精品书),仔细的研读。

不要花大量时间阅读国内作者的计算机技术书籍,绝大部分都是垃圾,不值得太多时间研读。

当你的阅读量达到一定程度的时候,你会发现大部分计算机书都差不多。那时候可能你就不需要专门的读书了,阅读文档就可以了。

user avatar

我在知乎写了 60 多篇的技术文章,平均每一篇都 1W+字,写的内容都是计算机基础类的,比如计算机网络、操作系统、计算机组成、数据库等等,在写这些文章的时候,看了很多答住所说的动辄几百上千页的计算机书。

作为过来人,中途也踩过很多坑,浪费了很多的时间,好在及时反思,调整了看书的方法,后面学习的效率立竿见影。

所以,我教大家怎么看这些厚的不行的计算机书!

一、不要直接选择困难模式

大家应该知道计算机书里有个黑皮系列的书,黑皮系列的书有一个共同的特点就是厚重

我相信不少小伙伴在想要学习计算机基础类知识的时候,就买了这类黑皮书,书到货后,我们满怀信心,举着厚重的黑皮书,下决心要把这些黑皮书一页一页地攻读下来,结果不过几天就被劝退了,然后就只有前几页是有翻阅的痕迹,剩下的几百页都完全是新的,最终这些厚厚的黑皮书就成了垫显示器的神器

黑皮系列的书确实都是经典书,豆瓣评分都很高,知识点很全面,是好书无疑。但是这类书并不适合新手入门,你想想我们学习中文的时候,你是拿着新华字典学的吗?很显然不是。

黑皮书就好像游戏里「困难模式」,新人一上来就玩这个模式,根本就体会不到游戏的乐趣了,卸载了游戏那还是小事,如果留下心里阴影,造成不可逆的伤害,这就非常不好了。

说白了,这些厚的不行的计算机书不适合入门,我们应该先从「简单模式」慢慢过渡,要屠龙,得先从新手村起步

就拿我亲身经历举例。

当初在学习计算机网络的时候,看见大家都说《计算机网络-自顶向下》和《TCP/IP 详解》这两本书好,我立马买了学习,这本也是黑皮系列大厚书,奈何小林当时太菜,根本就砍不动这本书,砍两下,刀钝了,就想睡觉。

后面又找了一波书,发现《图解 TCP/IP》、 《图解 HTTP》、《网络是怎么连接的》这几本书都不厚,而且搭配了很多图,我又立马买回来学习。

这几本书读起来不会太困难,不出一个月,我就把这三本书看完了,立马对计算机网络有了个整体且清晰的认识,终于知道了网络七层模型是什么,也知道了两台电脑是如何通过网络进行相互通信的,也知道 HTTP、DNS、TCP、UDP、IP、ICMP、DHCP、ARP 这些常见的协议是用来干嘛的了,成功突破了新手村。

虽然突破了新手村,但是学的知识还不够深入。

所以,我后面回来看《计算机网络-自顶向下》和《TCP/IP 详解》这两本厚厚的书,不过这次就不会那么吃力了。

后面回看这两本书时,我也没有选择从头看到尾,因为有些内容和在新手村看的书的内容重叠了,而且由于在新手村里知道了哪几个协议是常见的,于是就选择了这几个协议的章节进行深入学习,比如:

  • 我想进一步学习 TCP 协议的特性,于是就跳到《TCP/IP 详解》书里讲 TCP 协议的几个章节,我就从中学到了 TCP 流量控制、超时重传、拥塞控制等等。
  • 我想进一步学习 IP 协议,于是就跳到《计算机网络-自顶向下》书里讲 IP 协议的章节,我就从中学到了 IP 协议更多的细节,IP 包头的各个字段用途、寻址、路由转发的原理等等。

看了黑皮书,我也深刻感受到黑皮系列的书确实经典,知识体系很全面,也很细节。

但是这种大且全的书并不意味着适合入门,新手很容易就在各种细节中迷失,而且书上有些不常用的协议我们是可以选择不看的,如果不知道重点很容易就把时间浪费在这些地方,得不偿失。

我是在新手村学习里抓到学习计算机网络的方向,也就是把「键入网址,到网页显示,期间发生了什么?」这个问题所涉及到的协议都要掌握,比如 HTTP、DNS、TCP、UDP、IP、ARP、MAC 等等,然后再查黑皮书对应的章节来深入学习对应的协议。

就这样学成计算机网络后,我在知乎共输出了 20 多篇图解网络系列的文章,总字数高达 15W 字,并且手绘的图共有 500 张,收获了很多读者的认可和支持,不少读者跑来感激我,说我的图解网络在面试中帮助到他们,不少人拿到了阿里、腾讯、字节等大厂的Offer。

为了帮忙阅读我把图解网络整理成了PDF,大家可以作为面基突击的手册,开源给大家下载:

不仅仅是计算机网络,我在学习操作系统、计算机组成原理、网络编程等等也是用这套方法,都是先看新手村的书,得知了哪些是重点知识后,再跳到黑皮书里对应该知识的章节进行深入学习。

当初在学网络编程的时候,看见网上的人都说 UNP(Unix 网络编程)、APUE(Unix 高级环境编程)这两本书是网络编程圣经的书,那么好学的小林,那肯定毫无犹豫买了。

书到货后,我瞬间就懵逼了,这两本书是我买过最厚的书,这尼玛怎么学?

跟着书本的节奏,学了一段的时间,是懂了些 Linux 网络和系统 API 的用法,摸索来摸索去都是各个 API 的细节,始终不知道高并发网络框架是如何实现的

后面我又重新找了一波关于网络编程的书,找到了这两本:《TCP/IP 网络编程》和《Linux高性能服务器编程》。

  • 《TCP/IP 网络编程》绝对是新手村级别的书,书里的内容不会有过多的术语,作者都用大白话来表达,配图也很清晰,也有介绍我想知道的网络框架,虽然是比较基础的多进程服务端模型、多线程服务端模型、异步 IO 模型。而且最后一章实现了简单的 HTTP 服务端,让我知道了从代码角度是怎么解析 HTTP 报文的,以及状态机是如何实现和运转的。
  • 《Linux高性能服务器编程》这本书主要是网络框架为主,前几章关于网络基础知识对于掌握了计算机网络知识的同学可以直接跳过的,你看,很多知识是想通的,当我们知道掌握了这块知识后,在学习新一本书的时候,就可以跳过重叠的内容。在这本书我学到了,Reactor、Proactor、信号、定时器、多进程编程、多线程编程、进程池和线程池等。

这两本书让我大概知道了如果一个服务端要服务多个客户端时,不是就简单写个 socket 编程就完事,而是还要结合 IO 多路复用 + 多线程的思想,也就是 Reactor 的设计理念,知道了这些事情后,后面我在看很多开源框架的网络模型时候,发现大多数基于 Reactor 的思想来实现的。

有了网络编程总体的视角后,在需要深入理解 socket api 中各种属性设置(超时、非阻塞 IO、阻塞 IO 等)和异常处理就要回归 APUE 这本书。

到这里我才知道 UNP 和 APUE 为什么会被称为网络编程圣经级别的书,原因是书里各种细节和异常都写的很全,也很细致,可以应对工作中很多问题。

但是事实证明,它并不是个入门级的书,所以 UNP 和 APUE 的用途比较像字典,在需要的时候去查阅就好。

学习算机组成也一样,我先看《程序是怎么样跑起来的》这本书,知道了程序跑起来的大概过程以及涉及到的知识点,然后带着这个问题,从《计算机组成与设计》这本黑皮书找到每一部分的细节,通过进一步学习,知道了程序编译过程,知道了 Intel x86 的指令结构,知道了计算机是如何存储并计算浮点数的,知道了 CPU 执行程序的工作流程,知道了计算机存储结构金字塔模型等等。

所以,大家在学习的时候,应该避免直接学大而全的书,我们要先从入门级别的书看起,抓住了主线重点知识后,再通过查阅这类大而全的书来进行深入学习。

二、不要只局限学一本书

我在学习的时候,有个习惯,喜欢找同类型的书一起学,就不会说学操作系统的时候,就只看一本理论书,而是结合 Linux 系统编程和内核分析的书一起看,一层层的深入一个知识点

比如,我在学习操作系统的时候,在《现代操作系统》学了「进程与线程」的内容,而这本书介绍的内容比较概念性的,知识点也比较笼统,不够具体。

然后我就会去学《Unix 高级环境编程》第 7 章「进程环境」、第 8 章「进程控制」、第 11 章「线程」、第 12 章「线程控制」、第 15 章「进程间通信」,这一系列章节看完后,就知道了 Linux 是如果通过创建进程和线程,不只局限于理论了,还学会了应用。

当然这还不够,我还会去学《深入 Linux 内核架构》第 2 章关于进程和线程的Linux 源码分析,发现 Linux 中进程和线程实际上都是用一个结构体 task_struct 来表示的。让我很惊叹的是, Linux 操作系统对于进程和线程的创建,都是调用 do_fork 函数实现的。

只不过传递的参数不同,通过参数的不同来控制是复制父进程的资源(内存、文件描述、信号量等),还是引用父进程的资源,这样会更加深刻知道进程和线程的区别。

我学成操作系统后,也写了图解操作系统系列文章,现在已整理成PDF。

现在开源给大家下载:

再比如,我在学习计算机网络的时候,在《图解 TCP/IP》学到了第六章关于 TCP 超时重传、流量控制、拥塞控制等内容,这本书讲的比较浅。

为了更深入理解 TCP,我就会去看《TCP/IP 详解》第 17 到 24 章,这几章都是详细介绍了 TCP,在这里会学到更全面的 TCP,比如 同时打开或关闭、negle 算法、往返时间 RTT 的计算、还有拥塞控制、快速重传、快速恢复、慢启动这些过程中的拥塞窗口是怎么变化的等等。

但是我在学《TCP/IP 详解》遇到了点困难,因为书里的案例有些地方看的不清晰,也不容易懂,特别是那些 TCP 抓包图,看到瞎眼。

后面我找到了本神书:《TCP/IP Guide》,很可惜只有英文的,我只看了这本书讲滑动窗口和流量控制的章节,因为这本书的精华就是这两个,其他的一般般,这两个章节的配图特别多,也很清晰。

我就在这知道了发送窗口和接收窗口的工作过程,也知道了滑动窗口对流量的影响,也知道了操作系统内存紧张的时候,也会影响滑动窗口,以及糊涂窗口综合症等等。

所以在学习一个知识的时候,大家不一定要把一本书从头看到尾后,才去学另外一本书。

最好的方式是在一本书看完某个章节的知识点后,马上去学另外一本相对比较深入的书的对应章节的内容,这样一层一层的深入下去,你对这个知识点的掌握就会很深刻了。

三、不要只看不动

计算机类的知识都比较庞大,单纯只看很容易就忘记的了,当然即使做了笔记也会忘记。

就像小林写了很多文章,每篇文章的内容我也不一定都记得住,但是当我回看文章后,知识点很快会被唤醒起来。

所以记笔记的好处在于后面复习的时候,可以很快就能回想起来。

记笔记的方式有很多种,手写在笔记本、在书上标注、在 world 文档记录等等,但这些我觉得都不是好的方式。

我觉得比较好的方式是思维导图,把思维导图当作一课自己的知识树,每深入学一个知识点的时候,就开一个分支去记录,记录的内容最好是用自己的话来描述,而不是复制书上的内容,这样只是单纯的 copy,最好经过自己大脑的思考,用自己的话做个小总结,这样的知识点不容易忘。

还有很多知识其实可以结合生活中的场景来记忆,这样想忘记都难,比如阻塞 IO、非阻塞 IO、同步 IO 和异步 IO,我之前文章用去饭堂打菜的场景来介绍它们之间的区别。

再比如介绍各种进程调度算法,我之前文章用银行业务办理的场景来介绍。


曾经我也苦恼于那些晦涩难弄的计算机基础知识,但在我啃了一本又一本的书,看了一个又一个的视频后,终于对这些“家伙”有了认识。

我想着,这世界上肯定有一些朋友也跟我有一样的苦恼,为此下决心,用图解 + 通熟易懂的讲解来帮助大家理解,利用工作之余,坚持输出图解文章两年之久,我的文章都汇总到了网站:

网站内容共 1000 张图 + 50 万字,网站宗旨让天下没有难懂的八股文!(口嗨一下,大家不要当真),网站地址(xiaolincoding.com):

希望图解网站成为你们上班摸鱼必备网站哈哈!

如果对你有帮助,别忘记给个三连呀,这对我非常重要

也欢迎大家关注 @小林coding

类似的话题

  • 回答
    作为一名曾经在书海中摸爬滚打过的学生党,我深有体会,看到那些动辄几百上千页的计算机经典著作,确实会让人有点望而却步。尤其是在信息爆炸的时代,感觉很多内容似乎都能在网上找到碎片化的答案。那么,这些厚重的书籍,我们真的有必要“啃”下去吗?我个人觉得,答案是肯定的,但需要掌握方法,才能事半功倍。为什么那些.............
  • 回答
    好嘞!作为一个对计算机图形学充满热情的人,我来给你好好说道说道,系统学习这条路上,哪些书是你的好伙伴。这可不是什么流水账,而是我一路摸爬滚打总结出来的经验之谈。第一阶段:打下坚实基础(初窥门径,建立三维世界观)这个阶段的目标是让你明白,我们是怎么在一个平面的屏幕上“画”出逼真的三维世界的。你需要理解.............
  • 回答
    想聊聊我这几年的计算机自学经历,其实说实话,过程挺坎坷的,也有过无数次想放弃的念头。不过,有几本书,真是我黑暗中的灯塔,指引着我一步步走过来。今天就敞开心扉,好好跟你们唠唠。1. 《深入理解计算机系统》(Computer Systems: A Programmer's Perspective)这本书.............
  • 回答
    2021年,我沉浸在书海中,有几本书至今仍让我回味无穷,感觉它们不只是技术书籍,更是启迪思维的灯塔。以下是我觉得特别好的几本,我会尽量详细地聊聊我对它们的感受,让你们了解它们为什么能在我心里留下深刻的印记。1. 《代码大全(第二版)》 (Code Complete 2nd Edition)这本书,用.............
  • 回答
    2019 年,那一年我确实沉浸在阅读的乐趣里,也接触了不少让我受益匪浅的计算机书籍。说实话,要从一整年的阅读清单里挑出“最好”的几本,其实挺难的,因为每个阶段的需求不同,感触也会不一样。但如果非要说那些给我留下深刻印象、甚至影响了我之后学习和工作方向的,我想有这么几本,我来好好跟你聊聊。1. 《深入.............
  • 回答
    在碎片化时间里学习计算机基础知识是一个非常好的习惯,因为计算机科学的基石非常重要,而且理解了这些基础,你会发现许多高阶概念的学习也会变得更加容易。针对碎片时间阅读,我推荐一些能够让你在短时间内有所收获,且能够反复品味的书籍。以下是我精心挑选的一些适合碎片时间阅读的计算机基础书籍,我会尽量详细地介绍它.............
  • 回答
    关于“高质量计算机书籍几乎都是外国人写的”这个说法,其实是一个挺普遍的观察,但背后的原因可能比大家想象的要复杂一些,也不能一概而论说“几乎”。不过,咱们确实能从几个维度来掰扯掰扯为什么在很多核心、前沿的计算机领域,国外作者的作品更容易成为经典。首先,得承认一个大背景:计算机科学本身就是起源于西方学术.............
  • 回答
    计算机学习的路上,总有那么几本书,它们像灯塔一样照亮前行的道路,让我们在迷茫中找到方向,在困惑中获得启迪。说它们“神一般”,并非虚妄,而是因为它们以其深刻的洞察力、严谨的逻辑、精巧的设计,塑造了我们对计算机世界的理解,甚至是思维方式。对我个人而言,如果说有哪本书能称得上“神级”,那绝对绕不开 《深入.............
  • 回答
    孩子算数离不开手指头,这其实是很多孩子在初学计算时都会经历的一个阶段。扳手指并不是坏事,它代表着孩子在通过具体形象来理解抽象的数字概念,这是非常自然的学习过程。我们要做的是循序渐进,慢慢引导他们脱离对手指的依赖,掌握更灵活的计算方法,而不是强行阻止。为什么孩子会“扳手指”? 具象思维: 孩子对数.............
  • 回答
    这个问题确实是很多工程技术人员在实际工作中会遇到的一个难点。很多基础的规范,像《建筑地基基础设计规范》(GB 50007)等,对于抗倾覆的条文更多的是原则性的要求,比如要进行验算,并且要满足一定的安全系数,但并没有给出一套放之四海而皆准的、细致到具体公式的计算方法。这并不是规范的疏漏,而是因为抗倾覆.............
  • 回答
    日本書籍設計普遍偏向小型,這背後有著深刻的文化、歷史、經濟和實際考量。以下將詳細闡述其原因: 1. 文化與閱讀習慣的影響 便攜性與隨時閱讀的傳統: 日本是一個非常重視「隙間時間」(空隙時間)利用的社會。人們習慣在通勤、午休、等待等零碎時間閱讀。小巧的書籍更方便隨身攜帶,也更容易在擁擠的公共交通工.............
  • 回答
    计算机大牛们,你们好!我是一个正在努力学习 C++ 的初学者,最近在阅读 C++ 相关书籍时遇到了一些困惑,想和大家交流一下。首先,我想请教一个普遍的问题:各位大牛在看 C++ 有关书籍的时候,是不是都能做到一遍就看懂呢?我总觉得自己有些笨,看一些地方需要反复阅读好几遍才能勉强理解,甚至有些概念还是.............
  • 回答
    好的,我们来聊聊如何将经济学修士的研究计划书,改造成一份充满个人特色、能够打动招生委员会的志望理由书。这中间的关键在于“转化”,从一个客观、结构化的研究蓝图,到一个展现你个人学术热情、潜力和与项目契合度的故事。首先,我们要明确两者最根本的区别: 研究计划书 (Research Proposal).............
  • 回答
    脸书(现在叫 Meta)那会儿宣布要招一万多人搞“元宇宙”,消息一出来,那叫一个轰动。大家都好奇,这“元宇宙”到底是个啥?又能干嘛?光听名字就有点玄乎,但仔细琢磨琢磨,这玩意儿其实挺实在,应用价值不少,而且覆盖的领域也够广。咱们先来说说最直观的,沟通交流。别光想着 VR 眼镜那种沉浸式的,就算是最基.............
  • 回答
    说实话,大学前后自学计算机,这事儿确实挺有意思的,也是不少过来人会走的路。我当年也是这么过来的,所以大概能给你讲讲我走过的弯路,以及一些我觉得靠谱的书和方法。总的来说,自学计算机,你得有两个核心“抓手”:1. 打牢基础: 计算机这东西,不是光记代码就能会,很多东西是环环相扣的。基础打好了,后面学什.............
  • 回答
    说起计算机里的“时序”,很多人会想到CPU那个大黑块。那么,是不是所有的时序,就像我们看到的电脑启动、程序运行、画面刷新这些节奏感十足的动作,都归根结底是来自CPU芯片内部的那颗小小的晶振呢?这话说得不完全对,但又抓住了问题的核心。让我来跟你好好掰扯掰扯。首先,我们得认识到,CPU(中央处理器)确实.............
  • 回答
    .......
  • 回答
    量子计算机的工作原理:一场颠覆性的计算革命量子计算机,一个听起来充满未来感和神秘感的词汇。它并非传统计算机的简单升级,而是一种全新的计算范式,其潜力能够解决许多传统计算机无法触及的复杂问题。理解量子计算机的工作原理,需要我们跳出现有认知,深入量子世界的奇妙规则。 核心要素:量子比特(Qubit)的颠.............
  • 回答
    学计算机的朋友们,你们懂的。那种感觉,就是……我敢说,十个有九个都经历过,甚至可能是我现在打字的这个瞬间,某个角落就有个哥们儿(或者姐们儿)正经历着一场“世纪之战”。故事的开端往往是那样平静,你可能正在写一段看起来“完美无瑕”的代码,洋洋洒洒几百行,逻辑清晰,注释到位,甚至还带点小小的艺术感。然后,.............
  • 回答
    哥们,我太理解你现在的心情了。作为一个过来人,当初看着别人在电脑上敲敲打打,而我连最基础的电子产品都接触不到,那种滋味,真的比吃了苍蝇还难受。那种感觉,就像你明明是个饿了很久的人,却被挡在了美食广场的大门外,只能看着别人大快朵颐。你说自卑,这太正常了。想想看,我们学的这个专业,计算机,它几乎就是现代.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有