2023 年计算机基础最全自学指南!

大家好,我是 Rocky0429。

首先来看一张图,计算机专业大学四年需要学习的课程。

023

可能不同学校有所差异,基本上都大同小异。

对于想要自学计算机的同学,可以按照上面的课程,自学即可。

但是内容这么多,肯定要有重点的去学习,其中计算机基础一定要好好学,不管以后面试找工作还是保研、考研都很有用。

我在图中做了标记:

数据结构与算法计算机组成原理操作系统计算机网络数据库
023

下面是超极干的干货,保证不让你失望!记得帮我

点赞呀!

1、数据结构与算法

---Update 2022/11/15

大家一直想要的数据结构与算法学习路线全新升级啦!!!

全文 5k+ 字,内容很干,大家可以先收藏再细看。

023
图片放大看的更清晰哟~

---end

程序 = 数据结构 + 算法。

数据结构经常与算法放在一起,在有些高校,会存在“数据结构”和“算法设计与分析”这样两门课。

这就造成很多同学懵圈,数据结构与算法有什么区别?甚至有些同学认为这就是一种。

其实吧:

数据结构主要讲解数据的组织形式。就是我们要怎样把这些数据存储起来,所以有数组、链表、栈、队列、树、图,这是数据结构的重点。算法,则注重的是思想。比如数组里的元素怎么排序、怎么找到最大的数和最小的数等等。说白了就是解决现实中问题的思想。所以才会有贪心、动态规划等这些算法。

数据结构与算法,不管你怎么想,一定要认真学!不管面试还是考研都是必考!

下面总结一些重要的知识点吧,这样才能有针对的学。

【复杂度分析】

时间复杂度空间复杂度

学习数据结构与算法的第一课,我永远都选复杂度分析,在我看来,这是数据结构与算法中最重要的知识点,且不接受任何反驳。

文章推荐:

保姆级教学!彻底学会时间复杂度和空间复杂度

【数据结构】

数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。

【操作数据结构】

查找:数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。插入:往数据结构中增加新的节点。删除:把指定的结点从数据结构中去掉。修改:改变指定节点的一个或多个字段的值。排序:把节点按某种指定的顺序重新排列。例如递增或递减。

【数据结构书籍推荐】

《大话数据结构》、《数据结构与算法分析》

《大话数据结构》这本书与市场上的同类数据结构图书相比,内容更加趣味易读,算法讲解细致深刻。

是一本非常适合自学的读物。

023

这本书通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。

如果你还是看不懂,可以看我写的图解,不过有点慢,但是绝对通俗易懂:

数组:蛋蛋惨遭数组滑铁卢,面试官建议回村养猪。

链表:链表,画几下就整明白了!

栈和队列:呔!“栈”住,队列!

字符串:关于字符串,你知道这些么?

顺便说一句,我最新写的电子书《二叉树修炼之道:从入门到实战》上线了,共39 篇文章, 8w 余字,其中包括二叉树、二叉搜索树、平衡二叉树等6 篇入门精讲,及 37 道图解 LeetCode 二叉树经典题目,几乎每道实战题我都提供了递归法和非递归法(迭代法),大家可以尽情观看~

【算法】

学习算法的套路很简单,多看、多写、多上机。

回溯算法分治算法枚举算法贪心算法动态规划

查找算法

二分查找散列表查找树结构查找

字符串匹配

暴力匹配KMP算法

10大排序算法

冒泡排序选择排序插入排序希尔排序归并排序堆排序快速排序计数排序基数排序桶排序

【算法书籍推荐】

《算法图解》

示例丰富,图文并茂,这是一本像小说一样的算法入门书。

无论你是专业程序员,还是编程爱好者,亦或是需要重温算法的计算机专业学生,这本书都是你不二的选择。

书中的前三章将帮助你打下基础,带你学习二分查找、大 O 表示法、两种基本的数据结构以及递归等。

余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;Kzui 近邻算法。

023

《算法(第 4 版)》

算法领域的经典参考书,包含了经过几十年演化而成的算法核心知识体系。

书中讲解了多种算法和数据结构,让你能够在各种计算机环境下实现、调试并应用它们。

作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述

第 4 版具体给出了每位程序员应知应会的 50 个算法,提供了实际代码。

023

【视频教程推荐】

《数据结构》,浙大陈越和何钦铭教授联合授课,课程非常棒体系完整,上课体验不错,同时难度系数在线,质量也很好。能够学到很多的思维方法和技巧,想学好数据结构的同学们千万不要错过。

链接:数据结构_浙江大学_中国大学MOOC(慕课)

023
《数据结构与算法》,这门课程的最大特点是理论和实践的结合,你将学习到解决各种计算问题的算法技巧,并实现大约100个算法编码问题。

链接:Data Structures and Algorithms

【网站推荐】

如果还是觉得学起来很吃力,可以借助下面这个网站来学习。

VisuAlgo,数据结构和算法动态可视化网站。

链接:数据结构和算法动态可视化 (Chinese)

023

【刷题】

数据结构与算法的学习,往往要伴随着“刷题”,如果没特殊情况,我建议大家刷 LeetCode 就好。

刷题按照分类来刷,如果不知道刷哪几道题,可以看下这个前字节大佬的刷题笔记:

023

针对 LeetCode,题的解法有很多,我们往往追求的是最优解,这里有一份清华学长整理的 LeetCode 最优解,强烈推荐:

两者配合起来应该非常舒爽。

我在大学的时候参加 ACM,拿过亚洲区预赛银奖,刷题贯穿了我的整个大学生涯,总结了一些刷题的经验,感兴趣的可以看下。

算法题从入门到放弃?刷了几千道算法题,关于如何刷题有些话我想对你说

2、计算机组成原理

计算机组成原理,即“计算机”“组成”的“原理”。

我觉得它是所有计算机基础课程中最难学的一门课,整个课程的核心就是使用数字逻辑电路和触发器搭建一个可以运行汇编指令的机器。

【书籍推荐】

《计算机是怎样跑起来的》、《程序是怎样跑起来的》

正是因为计算机组成原理难学,所以对于初学者来说,比起其他几门,这门课的入门书籍选择就更得友好。

《计算机是怎么样跑起来》和《程序是怎么跑起来的》,这是两本很薄,作者用大白话的方式来阐述知识,图文并茂,对初学者来说相当 nice。

相比学习的心态,更多是带着好奇心的心态去读。

《计算机是怎样跑起来的》

本书倡导在计算机迅速发展、技术不断革新的今天,回归到计算机的基础知识上。通过探究计算机的本质,提升工程师对计算机的兴趣,在面对复杂的最新技术时,能够迅速掌握其要点并灵活运用。

023

《程序是怎么跑起来的》

本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。

023

【视频推荐】

视频首推卡内基梅隆大学的《深入理解计算机系统》系列课程,英语不好?没关系,有中英文字幕,看完这套视频,知识+六级顺利拿到手。

链接:【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩_bilibili

看这个视频的配套教材是《深入理解计算机系统》。

023
此外,国内的可以看下哈工大刘宏伟老师的课程(135讲),老师的课讲的非常好,计算机组成原理很难学,但是刘老师的课简直是福音。循循善诱的教学,把枯燥的课程讲的十分透彻,拓展的也很棒!

链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

023

3、操作系统

无论你学习什么语言,都避免不了和操作系统打交道。所有语言的最后执行,都是靠操作系统。

比如你学习 Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的。

不懂操作系统,你在未来学习编程语言的高级特性,涉及到线程进程调度,内存分配,或者是学习 Linux 相关的知识时,都会一头雾水。

只有学会了操作系统,才能够更好地学习其他语言和技术。

所以,操作系统是程序员进阶必会的知识。

【书籍推荐】

入门推荐

《操作系统导论》、《现代操作系统》

深入系列

《深入理解计算机系统》

以程序员的视角理解计算机系统。

这是一本入门级别的书,这本书其实并不“深入”,它谈论的内容还是相对比较浅的。

“覆盖面广”,其实就是这本书的最大优点。它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么。

看看这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。在一定程度上,其实它是在锻炼思维方式 -- 计算思维。

023

【视频推荐】

操作系统,说实话,在刚开始学的时候不建议直接闷头看书。

因为书看起来是真没意思。

这里推荐清华大学的操作系统课程,B站上可看。分上下。

链接:【清华大学】操作系统 陈渝 全113讲(上)_哔哩哔哩_bilibili

链接:【清华大学】操作系统 陈渝 全113讲(下)_哔哩哔哩_bilibili

看视频的时候可以结合着上面的【书籍推荐】。

看(上)的时候可以搭配《操作系统导论》

023

看(下)的时候可以搭配《现代操作系统》

023
也可以看哈工大李治军老师的课,,质量相当高,即讲了实现,还开放了 Lab,不过对大家有一个小要求,需要一定的组成原理和汇编知识。
023

4、计算机网络

计算机网络的相关知识在工作时使用的频率较多的。

学习计算机网络,你需要懂得Socket编程,知道TCP/IP网络模型,了解OSI七层网络架构,知道一个数据包是如何层层包装,再层层拆包,从客户端发送到服务端。

但是计算机网络好学的多,因为计算机网络不抽象,在现实生活中,都能找的到例子。

【书籍推荐】

《图解 HTTP》

图文并茂,简单易懂,很适合入门。

把一本书写薄还好读并且覆盖主要的知识范围并不是一件容易的事情。

这本书做到的,而且从对HTTP知识的覆盖程度到易读性都做得相当好。

本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。

023

《计算机网络》

绝大部分都在用谢希仁的这本《计算机网络》,讲的很好,浅显易懂,同样也是考研 408 的常用教材。

023

【视频推荐】

首先必须强推湖大教书匠的计算机网络微课堂,yyds!!!

一个动图做的最好的计算机网络视频课程,老师讲课逻辑清晰而且特别容易懂,b 站上有视频,可以 1.5 倍速使用哟。

链接:计算机网络微课堂(有字幕无背景音乐版)(陆续更新中......)_哔哩哔哩_bilibili

023
还有推荐哈工大李全龙老师的《计算机网络》

链接:哈尔滨工业大学 计算机网络_哔哩哔哩_bilibili

023

计算机网络中的细节非常多,李老师讲的也很全面。但有些细节是无需关注的。

比如Http协议的错误码分类,我们记不住,而且记住也没任何意义,知道有这个玩意即可,需要的时候,百度一下即可。

5、数据库

数据库就是存储数据的地方,但也不只是这么简单。

学习数据库,不仅要懂得SQL语句,表设计结构这些基础部分,还要懂索引、慢查询优化,配置参数调优。

再深入点儿还要学习SQL优化、备份与恢复、架构优化等等进阶内容。

【书籍推荐】

入门系列

《SQL 基础教程》、《SQL学习指南》、《数据库系统概论》

新手学 SQL,这里我不推荐《SQL 必知必会》啥的。

而是推荐这本《SQL 基础教程》。

这本书介绍的节奏的更加平缓,并且用图示和关键字加粗更加生动地介绍知识,适合零基础的学生。

对于零基础的朋友来说Mick的《sql基础教程》更容易看懂学会,非常适合入门者学习。

如果只推荐一本书的话,我只推荐这本。

023
深入系列

《MySQL技术内幕——InnoDB存储引擎》 《Redis设计与实现》

【视频推荐】

数据库本来我都是强推人大王珊老师的,但是人大的mooc课实在太难受了,幸好又发现了战德臣老师。 哈工大战德臣老师,讲解的很细致,不是照本宣科,非常考虑学生的学习思路,把数据库和应用上的逻辑关系做了很好的梳理,墙裂推荐!
023

码字不易,记得帮我

点赞呀

原创文章,作者:afeng135,如若转载,请注明出处:https://www.wegosn.com/1461.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注