计算机组成原理课心法

目前与计算机相关的书籍太多了,几乎每天都有新书发布,而且很多书质量很差,更别说圣经级别的书了。

武侠小说中,也有不少武功秘籍,其中最厉害的就是内功法门。有了扎实的内功基础,任何武术都可以很快学会,编程也是如此。这些能提升内在力量的书,都被称为圣经层面。

我将这些书分为五类。

1、计算机作文原理

2、计算机操作系统

3、计算机编译原理

4、数据结构和算法

5、计算机网络

一、计算机作文原理

这门关于计算机组成原理的课程解释了计算机如何很好地工作。当一个女孩问一个计算机问题时,答案就隐藏在这门课程中(大雾)。

二、计算机操作系统

操作系统真的可以说是超人。它为我们做了如此强大的事情,以至于我们甚至都没有注意到它。只有学习它,我们才能深刻领略它的精妙之处,甚至为之所动。被计算机科学家的设计思想震惊,有些想法实际上可以应用到我们的工作开发中。

操作系统的四个重要模块是内存管理、进程管理、文件系统管理和输入设备管理。这是我学习操作系统的顺序,也是我推荐给大家的顺序,因为内存管理不仅是最重要、最难的模块,也是与其他模块关系最密切的模块。我认为它会相对容易学习。

在学习的过程中,你可能会遇到很多“虚拟”的概念,比如虚拟内存和虚拟文件系统。事实上,它们在本质上都是一样的。它们都向下屏蔽差异并提供向上统一。方便我们的程序员使用的东西。

此外,您还遇到过各种调度算法。在这里你可以看到数据结构和算法的魅力。理解为什么提出这么多调度算法对我们来说很重要。当然你可以说是更快更高效,但是由于一些问题引入新算法的过程是我们重点学习的。

你也会开始明白,进程和线程最大的不同就是在上下文切换时,线程不需要切换虚拟内存,因为同一个进程中的线程都共享虚拟内存空间,线程也不需要切换仅此切换。与进程上下文切换的性能开销相比,性能开销大大降低。由于虚拟内存和物理内存的映射关系需要查询页表,页表的查询是一个很慢的过程,所以常用的地址映射关系缓存在TLB中,可以提高查询速度页表。如果进程切换,TLB缓存的地址映射关系会失效,缓存失效意味着命中率降低,所以虚拟地址到物理地址的转换过程会很慢。

你不会傻傻地认为数据在读写后会直接写入硬盘,也不会觉得读写方式的性能会很低,因为你发现操作系统会有一个“磁盘”“Cache Cache”,它已经为我们做了缓存工作,它预取数据,缓存最近访问的数据,并使用 I/O 调度算法来合并和排队磁盘调度 I/O,所有这些都是为了减少操作系统访问磁盘的频率。

……

太多了,这里就不赘述了,剩下的留给大家在学习操作系统的路上去探索和发现。

还有一件事需要注意。学习操作系统时,不要误认为是Linux操作系统。这也是我在初学者时犯的一个错误。 Linux 操作系统的实际实现会有些不同。如果想要Linux操作系统的具体实现,可以选择看Linux内核相关资料,但在此之前,必须掌握操作系统的基本知识,这样学起来才能事半功倍。

开始

对于从未学过操作系统的人,我建议大家在学习的时候不要直接看书。相信我,几分钟后你就会退出,然后把厚本放在显示器上,就没有后续了。毕竟直接看书太无聊了。当然,用它在显示器上玩游戏更好。

B 操作系统课程有很多资源。我还阅读了不同老师教授的课程。我认为比较好的入门级课程是“操作系统-清华大学”。本课程由清华大学马兵讲授。我们不能去清华大学,但至少我们可以选择在线听清华大学的课程。课程的讲授顺序和我之前推荐的学习顺序一样:“内存管理->进程管理->文件系统管理->输入输出设备管理”。

B站清华大学操作系统视频地址:

清华大学的视频教学书应该是《现代操作系统》。您可以同时学习视频和书籍。例如,看完视频的内存管理后,可以阅读书中对应的章节。直接看书就好了。

深度学习系列

我觉得《现代操作系统》这本书缺少很多细节,还是比较笼统的,书很无聊。

推荐一本更详细的操作系统书籍——《操作系统入门》,这本书不仅告诉你什么,还告诉你怎么做,书的内容是一步一步的,一层一层的,读一读我还是觉得挺有意思的。这本书的两个部分,内存管理和并发,都非常好。没有找到这本书中文版的资源,但是微信阅读可以免费阅读这本书。

当然,被誉为神书的《深入理解计算机系统》这本书在豆瓣上的评分是9.8。严格来说,这本书不是一本操作系统的书。这是从程序员的角度来看的。了解计算机系统不仅涉及操作系统,还涉及计算机组成、C语言、汇编语言等方面的知识,是一本比较全面的书。

它告诉我们计算机是如何设计和工作的,操作系统的关键点是什么,它们的作用是什么。本书的目的是阐明原理,而不是深入探讨某个主题。太深了,太详细了。读完本书,我们可以对计算机系统的各个组成部分是如何工作的有一个理性的认识。在某种程度上,它其实是在锻炼一种思维方式——计算思维。

三、计算机编译原理

首先,一个正式的问题:编译原理不容易上手!

也就是说,你需要准备一些基础知识来学习。

编译原理的学习和实践,通常是基于计算机编译过程、计算机基本工作原理,甚至是一定的数学知识的积累,在编译原理的不同阶段分布和应用。如果没有这些基础知识的积累,到了一定阶段基础不足,很快就无法继续后续的研究了。

所以,在入门学习中,首先要认真积累上述1和2。

四、数据结构和算法

相信无论是毕业的同学还是在校读书的同学,都或多或少的被数据结构和算法的课程折磨过。数据结构和算法从一个非常重要的概念开始:程序=数据结构+算法。对于初学者来说,这句话你可能不完全明白计算机构架是什么意思,但对于已经工作两三年的同学,我相信这句话是对的。言出必行。

对于数据结构和算法的学习,我个人认为应该分为三个步骤:首先,可以大致了解什么是算法。您可以从一些科普书籍开始。我把这个过程称为进入阶段;那么你可以尝试实现一些比较简单的数据结构和算法,让你对数据结构和算法有更深入的了解,这个过程我称之为练习阶段;最后,要了解数据结构和算法背后的相关数学原理,这个过程我称之为原理阶段。

具体学习过程可以看我之前的回答:

不管你认为数据结构和算法重要与否,你一定要知道一些事情,因为面试的时候会被问到!

书籍推荐:

开始

图片[1]-计算机组成原理课心法-老王博客

入门的同学,我建议你不要追求太多,只看经典书籍。

不要一开始就从《算法导论》开始,对于初学者来说,读这些书肯定会很吃力。一旦你无法咀嚼它,挫败感就会非常强烈。

那就放弃学习算法吧。

所以,初学者,我建议你找一些比较容易阅读的书,比如《大数据结构》和《算法图解》。

不要太在意写作的深度,重要的是能不能一直读下去。

《大华数据结构》这本书最大的特点就是理论有趣而不枯燥。并且对于每一个数据结构和算法,作者都结合生活中的例子进行了讲解,可以给大家一个非常直观的感受。

虽然这本书有400多页,但两天看完应该没问题。

如果你之前没有数据结构和算法方面的知识,你可以从这本书开始。

《算法图》和《大华数据结构》走的是一样的路线,正如本书的副标题写的那样,《算法导论像小说一样有趣》,主打“图解”,通俗易懂。它不到 200 页,所以内容较少。

作为入门老师,阅读本书将使您对数据结构和算法有一个大致的了解。

当然,这些引物的普遍问题是缺乏细节,不系统,不够严谨。

所以,如果你想系统地学习数据结构和算法,读这两本书肯定是不够的。

基础系列

通过基础入门算法书的训练,你逐渐领悟了算法的魅力,现在是时候踏入基础系列算法领域了! ! !

这些书需要您花些力气才能阅读。

在学习的过程中,很多同学在看到一篇算法普及文章时,往往会有这样的想法。

糟糕,如果这篇文章的代码是 Java 语言就好了。

哎呀,要是这篇文章的代码是用 Python 写的就好了。

虽然代码不严重影响阅读,但还是有很多强迫症同学喜欢看文章的解释代码是自己的好。

我在这里推荐“数据结构和算法分析”。这本书非常系统、全面、严谨,也不是特别难。适合对数据结构和算法有一定了解,至少掌握一门编程语言的同学。还有,作者很用心。

他用了三种语言,写了三个版本,分别是:《数据结构与算法分析:C语言描述》《数据结构与算法分析:C++描述》《数据结构与算法分析:Java语言描述》。

采访系列

众所周知,对于程序员来说,算法主要用于面试。

因此,我推荐三本对面试有用的书,分别是:《剑侠情缘》、《编程明珠》、《编程之美》。

《剑道》这本书的目的很明确,就是用来采访的。

这本书包含了几乎所有常见的经典面试问题。如果能看懂这本书的内容,应付普通公司的面试应该不成问题。

我做了一个小程序,说明了“建智offer”,应该可以帮助大家学习。有兴趣的可以微信搜索图鉴鉴赏。

我还录制了一些免费的视频课程,展示了B站的剑指优惠,有兴趣的也可以看看。每个视频控制在5分钟以内。

图剑报价:搜索二维数组

“双指针”的魅力!图解 LeetCode 第 11 期:装水最多的容器

《编程明珠》这本书豆瓣评分很高,9分。

这本书最大的特点是讲了很多海量数据的处理技巧。这可能很少被其他算法书籍涵盖。面试中经常会问到海量数据处理的问题,尤其是校招面试。无论是开阔眼界,还是应对面试,这本书都值得一读。

《编程之美》这本书的作者很多,大部分都是微软的工程师,所以书的质量是有保证的。不过这里的算法题有点难,不是很系统,所以我把它放在面试的这一部分。如果你有一定的基础,喜欢研究一些算法问题,或者想面试谷歌、Facebook等公司,可以先拿本书中的问题进行自我测试。

五、计算机网络

与操作系统相比计算机构架是什么意思,计算机网络更容易学习,因为计算机网络不是抽象的。如果想知道网络的详细情况,可以通过抓包来分析,无论是手机、个人电脑,还是服务器,它们使用的计算网络协议都是一致的。

也就是说,计算机网络不会因为设备的不同而不同。每个人都遵循这套“规则”来相互交流。这组规则就是 TCP/IP 网络模型。

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

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

我想学点东西,先从我们平时做的事情做起。

比如ping命令可以说是我们判断网络环境时最常用的。您可以先了解当您的计算机 ping 您的室友或同事的计算机时会发生什么。知道一个数据包是如何转发的,那么你就知道网络层、数据链路层和物理层是如何工作的,以及如何相互配合。

了解ping流程,相信当你学习了HTTP请求流程后,你一定能很快掌握。因为网络层以下的工作方式,学ping的时候就已经了解了。你只需要掌握传输层的TCP协议和应用层的HTTP协议,就可以了解访问网页的全过程。这也是一个常见的面试话题。毕竟,它可以测试你的网络知识的全面性。

最重要的知识是TCP。无论是建立连接的过程、断开连接的过程,还是数据传输的过程,TCP都不容忽视。根据可靠数据传输的特点,可以拆解为超时和重传。 、流控、滑动窗口、拥塞控制等知识点。学完这些,就只能对TCP有一个“感性”的认识了。另外,我们要知道Linux提供的TCP内核的参数的作用,这样才能从容应对。工作中遇到的问题。

接下来,我推荐我读过并认为不错的有关计算机网络的书籍和视频。

开始

本系列面向没有任何电脑基础的朋友。如果您已经熟悉计算机,请不要忽视它们。让我们看看我的建议是否正确。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论