
作为一个大二学生假期日志这个话题太真实了。刚才整理书签的时候翻到自己寒假那份学习计划表密密麻麻列了七门课现在回头看看能坚持下来的东西比想象中多但走弯路的坑也比想象中深。这篇日志我就打算掏心窝子聊聊这七门课——操作系统原理、计算机网络、数学电子技术基础、机器学习与最优化方法、离散数学、数据结构与算法C语言版、人工智能导论——在我这儿是怎么从“收藏了等于会了”变成“真学进去了”的重点讲讲我怎么挑B站资源、怎么搭配着学以及哪些课真的值得在假期死磕。先说我这个人的情况普通双非一本计算机科学与技术专业大二上刚结束。成绩中游偏上代码能力一般属于那种老师布置的作业能写完但你要让我独立做个项目就会发怵的类型。放假前我复盘了一下大一到大二上学期的课表发现一个扎心的事实学校把操作系统、计算机网络、机器学习这些硬核专业课全堆在大二下和大三但很多大三的课又默认你已经掌握了这些前置知识。这意味着什么意味着如果我不在假期提前啃一遍大二下开学大概率会被按在地上摩擦。所以这个假期我给自己定了个规矩不追求学得多深多全但每一门课必须建立整体框架知道它解决什么问题、核心知识点有哪些、和别的课怎么勾稽起来。方法就是B站找课 手写笔记 学完画一张思维导图。七门课走完一轮下来我最大的感受是B站真是个宝库但会淘课和不会淘课学习效率能差出三倍。这篇日志就把我淘课的心得、每门课的核心知识点、以及我踩过的坑都写出来给同样想利用假期弯道超车的同学做个参考。1. 假期学习规划的整体思路为什么是这七门课以及怎么排优先级七门课堆在一起如果平均用力大概率的结果是一门都学不透。我一开始也犯过这个错误第一周东看一下西看一下操作系统看两集跑去学机器学习机器学习还没上手又觉得离散数学要考试得先复习最后啥也没记住。后来我痛定思痛按两个维度重新排了序一个是“前置依赖”——这门课是不是其他课的基础另一个是“自学友好度”——B站优质资源多不多、不需要实验环境能不能学到东西。按这个标准我把七门课分成了三个梯队。第一梯队是数据结构与算法和离散数学这俩是计算机专业的地基所有后续课程都逃不开而且B站资源极其丰富完全可以零基础自学。第二梯队是操作系统原理和计算机网络这两门课偏理论但有大量可视化讲解属于“看懂了就很有成就感”的类型而且它们是后续分布式系统、数据库原理的前置。第三梯队是机器学习与最优化方法、人工智能导论、数学电子技术基础前两门需要一点线代和概率论基础数学电子技术则和我们计算机专业的主线稍微有点偏离所以优先级往后放。时间分配上我大概按 30% 给数据结构与算法20% 给操作系统15% 给计算机网络剩下的35% 由另外四门课瓜分。没办法数据结构不会后面全完蛋必须提前砸时间。实际执行下来这个比例基本靠谱但后来我发现一个问题我严重低估了数学电子技术基础需要的时间这门课虽然内容不难但知识点碎需要记忆的约定和符号特别多拖到后期才补就有点赶。2. 各门课的核心内容拆解与B站资源盘点2.1 数据结构与算法C语言版假期最该死磕的一门课数据结构与算法我愿称之为计算机专业的“内功心法”不管你以后做前端、后端还是人工智能这东西都逃不掉。寒假这一轮我重点啃了线性表、栈和队列、二叉树、图、排序和查找这几大块。C语言版相比于Java版或Python版有一个好处它逼着你用指针理解结构体的嵌套对内存布局的感受会深很多。比如链表翻转、二叉树层序遍历这种题你用C写一遍和用Java写一遍对“引用到底是个啥”的理解完全不一样。B站上这部分的资源是真多但质量参差不齐。我个人比较推荐某位讲得细、板书清楚的UP主的C语言版数据结构课程每集控制在30分钟左右代码是在IDE里现场敲的不是念PPT这点很重要。我试过看一些效率感很强的速成课一集两个小时讲完整棵树听完觉得自己会了合上电脑写题瞬间原形毕露。如果你时间有限我建议你找那种按知识点切成小视频的课线性表看几集、二叉树看几集看完一个知识点马上去刷对应的算法题效果比一口气刷十集强得多。关于刷题我踩过一个坑一开始我跟着课把代码“抄”了一遍就觉得自己掌握了结果过两天写个链表逆置直接卡住。后来我改了策略看完一个知识点合上视频自己默写核心代码卡住了再回看视频这样虽然慢但记得非常牢。2.2 操作系统原理别被名字吓到本质就是“资源管理”操作系统原理这门课我在没学之前觉得它一定全是玄乎的概念什么进程线程、虚拟内存、调度算法听起来就头大。学完一轮下来你会发现它的本质就一句话怎么把CPU、内存、磁盘这些有限的资源公平又高效地分给多个程序用。理解了这句话整门课的骨架就立住了。我假期重点看了进程与线程的区别、进程调度算法先来先服务、短进程优先、时间片轮转、多级反馈队列、同步与互斥信号量、管程、死锁的四个必要条件、虚拟内存与页面置换算法、文件系统这几块。如果你只是为了应付考试这几块基本能覆盖80%的考点。但如果想学得透彻一点我强烈建议配合着做一些小的模拟实验比如自己写一个简单的进程调度模拟器、用信号量模拟生产者消费者问题。这些东西在B站有配套实验讲解照着敲一遍你对操作系统的理解会上一个台阶。B站资源方面我最推荐的是一位能把“进程调度”讲成“食堂打饭”的UP主他的比喻特别生活化听完你很难忘记时间片轮转是咋回事。还有一位做动画讲解的UP主他的虚拟内存系列把页表、快表、缺页中断这些概念可视化得明明白白。我个人觉得操作系统这门课不适合看那种对着PPT念的课因为概念太抽象没有可视化辅助听二十遍你也想象不出“上下文切换”到底是个什么画面。2.3 计算机网络五层模型是主线抓大放小是重点计算机网络这门课内容又多又碎但好消息是它有一个特别清晰的骨架五层模型物理层、数据链路层、网络层、传输层、应用层。你只要把这五层分别解决什么问题搞明白整本书的目录基本就记住了。我寒假学习的主线就是顺着五层模型一层一层往下啃重点抓每层的关键协议数据链路层的以太网帧和MAC地址网络层的IP地址、子网划分和路由协议传输层的TCP/UDP和三次握手四次挥手应用层的HTTP/DNS。必须承认计网是这七门课里最容易学着学着就迷失在细节里的科目。比如数据链路层的差错校验什么CRC循环冗余校验考试确实要考但如果你只是想建立知识框架这种偏底层的细节可以先跳过去等学校老师细讲再回来看。我自己的策略是第一遍抓大放小每层只要知道三件事——这一层解决什么问题、主要协议是什么、数据单元叫什么帧/包/报文段/报文然后画一张五层模型的图贴在书桌前每天看一眼印象就特别深。B站推荐方面计算机网络的好课比操作系统还要多。有一门经典到近乎封神的计算机网络课程UP主全程用动画和抓包工具演示把三次握手、滑动窗口这些抽象协议讲得像在演电影我一个寒假刷了两遍。还有一位UP主的HTTP专题特别适合做Web方向的同学看从输入URL到页面显示这中间发生了什么他拆解得极其透彻。B站学计网的诀窍就是不要从头到尾只看一门课而是按章节混搭比如网络层看A老师传输层看B老师哪个老师讲得让你“哇”一下就跟他学那个章节。2.4 机器学习与最优化方法理论数学课不是调包课这门课我一开始就有心理准备知道它不等于“调参炼丹”但打开B站看了一节我才真正意识到它本质上是数学课在现代计算机下的应用。机器学习的核心思想其实很简单给计算机一堆数据让它自己找到规律然后用这个规律去预测未知的东西。但落到具体算法里就要用到梯度下降、最小二乘、拉格朗日乘子法这些最优化工具。我对这门课的定位是这轮假期学习我不强求把所有算法的推导都手推一遍但至少要把“损失函数”“梯度下降”“过拟合与正则化”这几个核心概念彻底弄明白并且知道每个经典算法大概是干什么的。B站上机器学习资源的两极分化特别严重。一端是面向调包侠的实战课上来就sklearn、TensorFlow讲了半天你还不知道原理另一端是偏数学推导的硬核课黑板上一堆公式和矩阵运算看到第二集就想放弃。我的建议是两头兼顾但别走极端先看一门轻松入门课搞清楚机器学习的整体地图监督学习、无监督学习、强化学习是什么意思再挑几集硬核推导课把梯度下降和线性回归手推一遍。我个人比较推荐一位从“大白话”开始讲的UP主他讲线性回归时是真的从“怎么找到一条直线拟合数据点”开始慢慢引到损失函数和梯度下降公式都是有推导过程的不是从天而降。这里特别提醒一句千万别跳过最优化方法直接去学神经网络。梯度下降不仅是机器学习的核心也是深度学习的核心你不把“梯度是什么、学习率太大太小分别会怎样”搞明白后面看反向传播就是天书。2.5 离散数学看似没用实则全是地基离散数学可能是七门课里最容易让人产生“我学这玩意儿干嘛”疑问的课程。我刚开始学的时候也觉得数理逻辑、集合论、图论这些东西离写代码好远但学到后面越来越发现它就是用来训练你“计算机式思维”的。比如数理逻辑里的命题逻辑和一阶逻辑本质上就是SQL查询、正则表达式和规则引擎的数学基础关系那一章讲的传递闭包就是图论里可达性分析的前奏图论的很多算法比如最短路径、拓扑排序就是数据结构里算法题的母题。B站上离散数学资源相对少一些但精品不少。我最推荐的是一位把离散数学讲出“侦探推理感”的UP主他会用那种“谁养鱼”的逻辑谜题来引入命题逻辑的推理规则特别有意思。还有一位讲图论的老师他的课程动画做得特别好欧拉回路、哈密顿回路这些概念用动画演示一遍比干看书理解得快多了。离散数学这门课我的学习心得是不要裸学一定要结合着离散数学在计算机里的实际应用来学。比如你学集合论的时候可以顺带想想数据库里的集合操作学图论的时候可以把知识图谱、社交网络推荐这种东西拿出来想一想。一旦建立“这门课和我以后要做的东西有关联”的认知学习动力会强很多。2.6 数学电子技术基础跟计算机主线有点偏但别完全放弃数学电子技术基础这门课说实话在七门课里是和我自己计算机专业方向软件方向最不搭的一门。它的核心内容就是数制与编码、逻辑门电路、组合逻辑电路、时序逻辑电路、存储器等等。我一度想过直接放弃但后来咨询了学长才知道有些学校考研复试或者某些硬件方向选修课会用到这些基础而且这门课学好了对理解“计算机到底是怎么跑起来的”很有帮助——比如你理解了一个触发器怎么存储1bit信息再去看寄存器、Cache、内存这些东西就有一种豁然开朗的感觉。B站上这门课我最推荐的是一位高校老师的数字电路课程他的PPT做得清楚还会配合仿真软件演示逻辑电路的工作过程。我学下来觉得这门课其实没那么难核心就是三大块数制转换二进制、八进制、十六进制互转、逻辑代数与或非、卡诺图化简、时序逻辑触发器、寄存器、计数器。你先把这三大块拿下来整本书的主干就有了。但我要说句实在话如果你是纯软件方向而且学校只把这门课列为选修那你可以把它的优先级放到最低假期先把时间留给操作系统、数据结构这些核心课这门课采用“考前突击 看B站速成课”的策略就够了。我身边就有同学把大量时间花在这门课上结果数据结构拉胯了开学后还得补很不划算。2.7 人工智能导论一门“地图课”千万别陷进细节里人工智能导论是我这学期假期最后看的一门课它的定位非常特殊它不是一门让你学会某个具体算法的课而是让你知道人工智能这个领域到底有哪些子方向、每个方向主要在解决什么问题的“地图课”。B站上人工智能导论的课大多分为两派。一派是高校老师的系统课从搜索算法开始讲讲到知识表示、机器学习、神经网络、自然语言处理覆盖面很广但内容偏理论听起来像天书另一派是AI从业者的科普向视频单个视频讲清楚一个概念比如“什么是强化学习”“什么是Transformer”通俗有趣但不够系统。我的建议是两者结合用科普向视频做预习建立直觉再用系统课做正课补充严谨的定义和数学表达。这里有一个我踩过的坑人工智能导论这种课太容易让人产生“雄心壮志”了。我一不小心就陷进去查Transformer的细节查了两天发现自己连自注意力机制都搞不清于是妄图从零推导一遍浪费了好几天。后来我意识到作为大二学生你现在的任务是建立“人工智能地图”而不是攻克某一个牛角尖。每章看到能跟人解释清楚大概原理的程度就够了具体的算法细节等大三学了机器学习基础、深度学习课程后再来补。3. 学习过程中的实操方法与避坑经验3.1 B站淘课的通用方法论搜什么、怎么筛、何时弃七门课学下来我最大的收获之一就是学会了如何高效地在B站淘课。刚开始我特别迷信播放量和收藏量觉得百万播放的课一定好结果踩了不少坑。后来我总结出一个筛选流程第一步先搜课名加“课程”或“速成”或“期末”这几个关键词看看最近一年内有没有新的优质投稿这一步能排除很多画质差、内容陈旧的老课第二步点开评论区看有没有同专业的学生留言说“老师讲得真好”“期末靠这个过了”这种真实反馈比任何数据都有用第三步试听5分钟重点看他的讲解是不是有逻辑。比如讲排序算法如果是一上来就甩代码跑一遍结果而没有先讲清楚这个排序算法的核心思想比如冒泡排序为什么叫冒泡、快速排序的分治思路到底解决什么问题那这门课大概率不适合建立框架只适合考前突击。还有一个特别有用的技巧如果你发现一门课某个章节没看懂不要硬刚立刻换一个UP主的课看同一个章节。每个老师的切入角度不一样有的擅长比喻有的擅长画图有的擅长推导换个人讲可能一下就通了。我学快速排序的时候第一个老师讲了半小时我还是懵的换了另一位老师用“选一个基准值把小的放左边大的放右边”这个思路一讲我三分钟就懂了。3.2 笔记与思维导图用输出倒逼输入对抗遗忘曲线我见过很多同学看网课就是纯“看”手边连笔都没有两倍速刷完一集关掉视频大脑一片空白。这种学习方式本质上只是娱乐不是学习。我在假期坚持了两个习惯一个是“写讲义式笔记”另一个是“画章节思维导图”。“写讲义式笔记”不是抄PPT而是看完一个小节之后合上视频用自己的话把这一节的核心概念写出来。比如看完进程调度那一节我会在本子上写“调度就是CPU决定先让哪个进程干活时间片轮转就是大家轮流来公平但可能有上下文切换开销多级反馈队列就是让短任务先跑长任务慢慢降级……”写完之后再看书对照漏掉的地方就是你没记住的地方重点标红第二天复习时只看这些标红的地方。思维导图我一般每门课画一张总图、每章画一张分图。画分图的时候有一个细节要注意不要只画知识点名字要连带着把“它解决了什么问题”写上去。比如数据结构的图里链表旁边写“解决数组插入删除需要移动大量元素的问题”哈希表旁边写“把查找时间从O(n)降到O(1)但需要处理冲突”。这样画出来的导图你期末复习时扫一眼就能回忆起整门课的思路比看十遍教材都管用。3.3 搭配学习的组合拳课际串联让你记忆减半效果翻番这个假期我体会最深的一件事是这几门课根本不是孤立的它们之间有很多隐藏的“连接线”一旦你打通这些连接线学习效率会翻倍。举几个我在实际学习过程中发现的组合拳。操作系统里的进程同步和互斥用信号量解决生产者消费者问题这个模型的数学基础其实来自离散数学里的“计数”和“状态”思想而进程调度里的先来先服务其实就是数据结构里的队列短进程优先其实就是“以运行时间为关键字的最小堆”的一种应用。数据结构里的树和图在计算机网络里就是路由表和DNS解析的底层结构。机器学习里的线性回归说白了就是在做“离散数学里那套函数映射”的拟合。还有最直观的数据结构的哈希表在操作系统的页表、文件系统的索引里全是它的影子。所以我强烈建议你学的时候有意做“跨课联想”学操作系统的页面置换算法时想一想这能不能用数据结构里的队列或栈来实现学计网的滑动窗口时想一想这跟操作系统的生产者消费者缓冲区是不是一个道理学机器学习的梯度下降时想一想这和离散数学里函数极值有什么关系。这种联想不一定非要多么准确、深刻但只要你开始做跨课思考你就从一个“被动接收知识的容器”变成了“主动连接知识的织网者”这是质的飞跃。4. 常见问题与避坑实录我替你踩过的那些雷4.1 学习效率低下的最大元凶收藏夹吃灰与计划过载假期学习最常见的死法不是不学习而是准备学习的时间比学习本身还长。我在假期第一周就干了这样的蠢事花了好几天时间筛选资源收藏了二十多门课建了七八个收藏夹觉得自己将来一定能看完结果开学时发现真正点开看完的不到三成。后来我给自己立了一个规矩同一门课最多收藏两套资源一套全程系统学一套备选查漏补缺其他的不管多好都不碰。资源是学不完的你的时间是有限的与其在“选哪个老师更好”上内耗不如随便挑一个讲的过去的老师赶紧开始。另一个坑是计划过载。我以前特别喜欢制定那种精确到半小时的学习计划表早上八点学操作系统九点半学计网下午数据结构……结果坚持了三天就崩了。后来我换了一种轻量级的方式每天只定两个任务一个是“必做”——比如看完操作系统的进程调度四集并写完笔记另一个是“选做”——比如刷五道链表算法题。必做任务无论如何都要完成选做任务完不成也没关系。这种方式大幅降低了我每天的心理负担反而让我坚持了整个假期。4.2 知识点遗忘太快怎么办间隔重复 费曼学习法假期学到第五周的时候我发现自己遇到了一个大麻烦第一周学的数据结构链表操作回头做题居然手生了。线上刷题刚开始还能做出来过一个星期再问自己“链表逆转到底有几种写法”脑子里居然只剩一团模糊。后来我查了一些关于记忆的研究才明白这是“遗忘曲线”在作祟——你学得再投入没有间隔重复和主动回忆一两周后就会忘得七七八八。我用的解决办法有两个。第一个是A4纸回忆法每学完一个专题就在一张A4纸顶部写下专题名然后凭记忆写下你能想到的所有关键词和逻辑关系写完之后对照笔记补漏。这张A4纸就变成你两天后、一周后再回忆的索引。这种方法比反复看笔记有效得多因为“检索”这个动作本身就在强化记忆。第二个是费曼学习法找一个完全不懂的人比如你爸妈或室友把刚学的东西从头到尾讲一遍。如果能用他们听得懂的话讲明白说明你真理解了如果不能说明还有模糊地带回炉重看。我学TCP三次握手时就是给我爸讲了一遍为了让他听懂我甚至编了一个“打电话”的比喻讲完之后我自己对“为什么要三次不是两次”的理解都变深了。4.3 遇到难课想放弃怎么办降低单次输入量增加高密度重复七门课里我差点在“最优化方法”上栽跟头。学梯度下降那一章的时候公式推导多到爆炸什么偏导数、方向导数、学习率衰减策略我看到一半就萌生了退意。后来我采用了一个“细嚼慢咽”策略一次只看十分钟的视频看完就把这一步的公式抄下来琢磨透直到自己能默写推导为止。一门两小时的课我硬是拆成了五个下午来学。过程很痛苦但效果拔群——那些公式我现在还记得而用两倍速刷完的同学习惯性遗忘。还有一个小技巧是“高密度重复”难啃的内容在第一遍学了之后隔半天、隔一天、隔三天、隔一周各回顾一次。回顾不是完整重看而是看思维导图和A4纸回忆页回忆不起来的地方单独翻视频重看。这个方法听上去很笨但对付“难课想放弃”的情绪特别有效因为每一次回顾你都会发现“哎这个我居然记住了”成就感会推着你继续往下学。5. 七门课的总结对照与假期复盘5.1 课程难度、B站资源丰富度和自学友好度横向对比假期结束前我给自己做了一张表来复盘七门课的学习体验从课程难度、B站资源丰富度、自学友好度、以及我个人推荐假期是否优先学这四个维度打分满分5分。这张表纯属个人感受仅供参考课程课程难度B站资源丰富度自学友好度是否推荐假期学数据结构与算法C语言版4.554强烈推荐操作系统原理44.54强烈推荐计算机网络3.554.5强烈推荐离散数学3.53.53.5推荐机器学习与最优化方法4.543视基础而定数学电子技术基础333软件方向可缓人工智能导论2.554.5推荐做地图扫盲从这张表可以看出来纯软件方向的同学假期最值得投入的是数据结构、操作系统、计网这三门“铁三角”它们既是后续课程的地基B站资源又足够成熟。离散数学是比数据结构还底层的地基但它比较抽象、反馈慢适合穿插学习不要单周全天啃。机器学习和人工智能导论属于“上限很高但不急在假期”的方向如果你高数线代还没学明白建议先补数学基础不要直接硬上。数学电子技术基础则要看你的专业方向来定。5.2 假期学习的时间分配参考和“回校衔接”的小建议最后聊一下假期结束后的衔接问题。我发现很多人假期学完就扔了开学直接去上课结果发现假期学的和在课堂上学的内容对不上等于白学。我的做法是每门课都留一份“未完成问题清单”。比如操作系统里我对虚拟内存的“需求和页错误处理”还想深挖计网里我对BGP协议还没太懂机器学习里的推导题我留了三道没完全搞明白。这些清单上的问题就是开学后我要重点听课解决的问题。带着问题去上课和空着脑袋去上课效果天壤之别。另外一个建议是“用费曼笔记做开学预习”。开学前一周我会再快速过一遍每门课的思维导图把核心概念用一两句话写在笔记本扉页上做成“一页纸知识地图”。开学后上第一节课的时候老师讲一个概念我低头一看笔记发现自己假期学过那种“我认识它”的感觉会让你对这门课瞬间充满信心。别小看这点信心它能支撑你度过很多个被作业折磨的夜晚。从假期第一天下定决心要学这七门课到写下这篇日志时六门课已经走完一轮最后一门人工智能导论也到了收尾阶段。回头看看这两个月我最满意的不是看完了多少集网课而是建立了一个属于自己的学习循环选课、跟学、笔记、联想、复盘、留问。这个循环的最后一环“留问”尤其重要它让我对开学后的课堂学习充满期待——因为我知道自己要找的答案在哪也知道哪些问题要重点听。这些课的笔记我一共写了四个笔记本每一本都翻得卷了边这大概就是假期努力过的痕迹了。