---
url: /survive/zknc3mka/index.md
---
# 对计算机专业学生的箴言

## 高考结束了以后应该做的事情

众所周知，高考结束了以后，身心都得到了放松。结束了整个高中的生活，那么这个暑假就应该**好好放松**。在大学，空闲时间很多，你可以自己自由的支配你的时间。你可以培养你的兴趣爱好，也可以去提升自己的专业能力。可以认识到很多与自己志同道合的朋友，也可以去参加各类比赛，为自己争得一份荣誉。

为了让自己在以后的学习和生活更加轻松，不浪费宝贵的时间，我们应该在高考结束以后，为大学的生活做一些提前的准备。

### 记住这些话

* 在大学学到的内容对于工作来说是**远远不够**的，我们要在课余时间自己去学额外的内容。

* 大学中的课对于我们来说很可能只会浪费时间，我们要制定一个自己的计划，**要永远跑的比学校快**。

* 在大学期间，要以「T」 型人才为目标，即对其他的方面都有所了解，对于自己未来工作的方向要**精通**。

* 所有的指导（包括这个指导）都是别人通过自己的经验总结出来的。再有参考价值最终都会与自己的情况会有一些出入。要自己总结符合自己实际情况的指导，并不断的去探索未来更多可能的路。

* Stay hungry. Stay foolish. 自己的脾气永远也不要比自己的本事大。人外有人，天外有天，就算是在学校中，你永远都不会一直是最强的那一个。不要被当前取得的成就所迷惑，要一直保持学习。

* 4 年很短，好好珍惜时间，好好珍惜你爱的和爱你的人。

### 制定未来的人生计划

1. 规划以后的工作方向
2. 规划大学本科毕业的时候应该达到的水平
3. 规划大学每一年结束的时候应该达到的水平（或完成某样目标）

在选择以后的工作的方向的时候。一定要**深思熟虑**。不同的工作方向将会决定你在大学中学到的知识，交到的朋友等。

因此，如果当前你的专业是你自己不感兴趣的或者与你未来的工作方向不同的，那么应该优先考虑在大一下学期的时候转专业；如果已经是在自己喜欢的专业了，那么就应该规划一下自己的技术栈（即**工作中**可以会用到的知识），并将其分解，一步一步的完成这些任务。

比如，你想要往前端发展，那么首先前端三剑客 HTML，CSS，Javascript + Typescript 要搞懂，几个经典框架，Vue，React 至少要弄懂，NodeJS，Deno 也要了解一下，业界的各种成熟方案，Nuxt.js ，SvelteKit 之类的全家桶也要会用，各种辅助工具，像 Postman，WebPack 更是不用说，考虑到可能找到还在手搓 JS 的雇主，Jquery 这样的技术也要知悉。又比如，你想要向后端发展，经典语言和框架，诸如 Java + SpringBoot，C# + Asp.net 这样的搭配组合要会用，这些技术尤其在政企单位用得多，而互联网企业追求敏捷开发，你要学Golang（例如 BiliBili），NodeJS，很多时候后端不仅仅是写服务端程序，你还需要会 MySQL，PostgreSQL 这样的经典 SQL 数据库操作以及 MongoDB 这样文档型 NoSQL 数据库的操作，Redis 缓存，分布式也需要知道。很多时候，面试造飞机，入职拧螺丝，但是你有着造飞机的实力肯定是好的。现在很多企业推行 DevOps，全栈，持续集成，CICD 这样的概念，说白了就是要求我们开发者掌握更多自己本分以外的知识和能力，那你前端就也要搞搞 Node 后端了，DBA 也要和后端和运维搭伙了...... 总之你的能力要上去才能满足老板对用更少的人力干更多的活的想法。

对于计算机专业的证书，首先你要知道 NCRE 证书是完全没有用的。没有一家企业会关注这个。而软考证书一般只有政企单位有时候会考虑，另外一个用途就是抵税，如果你要报考，至少中级起步，初级没有意义。

### 选购一个优秀的电脑

可以看生存手册《[电子设备的选购](/proverbs/ied.md)》。

### 选择优秀的软件

什么是一个优秀的软件？一个优秀的软件应该是没有广告的，没有病毒的，绿色的。功能简单，易用。说明文档标注清晰。有强大的社区进行维护。 同时不会安装其他捆绑软件。 这才是一个优秀的软件所必需具备的。

下面，我推荐几个使用频率较高的软件，都是我自己用过的，推荐各位去搜搜看：

#### 视频播放器

* [potplayer](http://potplayer.tv/?lang=zh_CN)（商业软件）：支持以0.1倍速率的变化，同时可以自由的拖动播放进度。缓冲速度几乎无感知，不会出现爆音的现象，也不会出现播放卡顿的现象。这是我目前用过的**最好的**播放器。唯一的缺点应该是只能在 windows 上运行，无法在 linux / macos 上运行。

* [VLC](https://www.videolan.org/vlc/download-windows.html)（自由软件）：支持以 0.1 倍速率的变化，也支持自由拖动。拖动的过程中会出现缓冲时间过长的现象，即，会有卡顿感。不过**支持全平台**的视频的播放。

#### 翻译软件

* [网易有道词典](https://dict.youdao.com)（商业软件）：采用了网易有道的翻译引擎，同时支持划词翻译，对于不能划词的还可以通过 OCR 来识别翻译。没有使用过其他的软件，感觉这个软件已经足够好用了。

#### 截图软件

* [Flameshot](https://flameshot.org)（自由软件）：全平台支持，有图形界面和 CLI 界面。

* [snipaste](https://zh.snipaste.com)（商业软件）：一个很好用的截图软件。可以一键截图，也可以在截图上进行标注。截好以后还可以将图片钉到窗口上，方便日后观看。软件分为收费和免费的两个版本。日常使用可以选免费版本，基本的功能已经够用了。没有使用过其他的软件。

#### 电源管理软件

* [energy star X](https://github.com/JasonWei512/EnergyStarX) （自由软件）：让你的电脑拥有像手机一样的 CPU 调度！可以**显著的**延长电脑在离电的情况下的续航的表现！注意：仅适用于Windows 11 21H2 (Build 22000) 以上的系统版本， Windows 11 22H2 (Build 22621) 以上的系统版本效果会更好。

#### windows 实用工具

* [PowerToys](https://github.com/microsoft/PowerToys) （自由软件）：微软最强的工具集，是微软的亲儿子。里面包含以下常见的功能：将窗口固定到其他窗口的顶部；使电脑保持唤醒状态；颜色选取器；查看什么程序在使用当前的文件；程序搜索和启动等等。是我目前用的最多的软件。非常推荐！

### 桌面整理软件

* [coodesker](https://github.com/coodesker/coodesker-desktop) （免费软件）：可以自动整理桌面，还在桌面上实现功能块。完全免费，软件本体很小巧，没有任何其他多余的功能。

### 选择并使用一个 Linux 发行版

这个世界并不是只有 Windows ，软件开发也并不是只有 Visual Code。无论是从开阔视野还是从学习知识来看，你作为一个计算机专业的学生**必须**接触和能够使用类 Unix 操作系统。而且，如果你未来向运维方向发展，Linux 维护也是必不可少的。

要搞清楚有超过 300 个发行版的 Linux 是难上加难的平方。你的选择也有很多。诸如 Ubuntu 系列，Arch Linux 系列，openSUSE 等都可以尝试，找到自己中意的。

### 学习一定的电脑优化/保养的知识

软件方面：

* 什么是电脑病毒？现代系统上有必要安装一个杀毒软件吗？
* 电脑垃圾是什么？需要一直清理吗？
* 电脑蓝屏了以后应该怎么处理？
* 现代电脑需要进行磁盘碎片整理吗？
* 如何下载软件？下载到流氓软件了怎么办？
* 电脑里剩余的空间少了，就意味着电脑的运行速度慢了吗？
* 电脑运行程序卡顿时，有哪些情况？
* 电脑开机太慢怎么办？
* 软件一定不能安装在 C 盘吗？

硬件方面：

* 电脑发热严重时，应该怎么办？
* 笔记本电脑如果一直插着电源，对电池有损害吗？
* 屏幕的颜色显示不准确怎么办？

这些是适合所有专业的同学的知识，如果你都可以回答个一二，那么你的电脑将会在你大学的四年里助你一臂之力。当然，电脑的知识远远不止这些，此处列出的都是**关于保养和维护**的知识，更多的可以查阅生存手册《[电脑必知必会](/proverbs/abc.md)》

以下是对这些问题的回答：

* 电脑病毒是一个恶意的软件，电脑病毒分为很多种，不过只要是对电脑有害的都可以归类为电脑病毒。现代电脑系统（windows 10 / 11）已经可以不需要安装额外的杀毒软件。电脑上自带 windows defender 已经有了足够的能力（世界排名前列）来应对日常的病毒。
* 电脑垃圾一般是系统运行的缓存文件，用来提升电脑的运行速度。对于临时文件，系统是会自动清除的，我们不需要管。而对于缓存文件，每次清理了以后，都会再次产生，我们也可以不用管。因此，我们不需要一直清理。
* 蓝屏了以后，可以试试重启电脑。如果还是蓝屏，则应该记录当前蓝屏的代码，然后再去网上查找对应的解决办法。如果无法解决，则应去请教身边的人（同学，维修店）。
* 如果你的硬盘是机械硬盘，则可以每月进行一次磁盘整理；如果你的是固态硬盘，那么就不需要进行磁盘整理。
* 下载软件可以先去 Microsoft Store 查找。如果没有对应的软件，则可以去**软件的官网**去查找。这里推荐用 bing 搜索。不要去其他的软件下载网下载。如果你下载到了流氓软件，可以下载 360 来清理。清理完了以后卸载 360 即可。
* 剩余空间少了不一定运行速度就会慢，电脑的运行速度与当前程序占用 cpu 的百分比有关。如果当前的 cpu 正在忙碌（占用 100%），那么运行其他的程序自然就慢了。
* 电脑卡顿时，有以下几种情况：

  1. cpu 运行忙碌
  2. 内存不足
  3. gpu 运行忙碌（一般是游戏）

  情况的判别可以打开任务管理器。然后看 cpu，gpu，内存，哪个达到了 100% ，那么就是哪个情况。同时，你也可以看到是哪个程序最占用资源，如果你将其关闭了以后，电脑就运行快了。
* 开机太慢有以下的可能的情况：
  1. 电脑启动项太多。启动这些程序花费了太多时间。可以去任务管理器开启或关闭对应的程序。
  2. 系统载入时间太长。如果你的电脑的系统装在了机械硬盘上，那么启动时间会比较长，如果你换成固态硬盘，那么启动时间会变短。
* 软件安装在 C 盘是上古时期的说法，现在已经不存在这样的说法了。可以将软件安装在 C 盘。当然，如果你的 C 盘的空间已经不足了，那还是将软件安装在其他的分区吧。
* 如果电脑发热严重，那么可能是电脑的积灰太多。可以去申请售后清灰。
* 电脑的电源充电器也叫电源适配器，它会在电脑没电的时候为电脑充电，如果电脑电池满电的时候，则会直接为电脑供电。此时，电脑会直接从电源适配器取电，不会从电池取电。那么就相当于保护了电池，对电池没有损害。
* 可以使用校色仪进行校色。校色仪可以去淘宝上租一个。

### 阅读《提问的智慧》这篇文章

在我们日常的生活中，难免会遇到很多问题。那么最有效的方法就是去咨询比自己有经验的同学。那么如何问问题就成为了一门艺术。一个好的提问可以快速的让对方理解你的困扰，也可以快速的，有针对性的给出解答方案。我自己就遇到很多同学不会问问题，从而导致在一个很普通的问题上浪费了整整半小时。

那么，如何去提问呢？请点击 [提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)

### 练习打字速度

如果你是一个文字工作者，那你就应该熟练的运用键盘。如果你是一个码农，那你不更应该提升自己的打代码的速度嘛。在大学期间，电脑用的是非常频繁的。因此为了让电脑成为你的得力工具，你应该能够熟练的运用电脑。

学习打字的第一步，你应该有一个正确的打字手法。不能再像以前一样，用一指禅了。

然后再慢慢的提升打字速度。

这里推荐一个练习的网站：[打字打字-在线打字练习](https://dazidazi.com/)

### 学习一个中文输入法

全拼是一种效率低下的输入法。你需要换一个效率更高的输入法。

首先，我们先来了解一下我们日常使用的输入法。中文输入法分为三种：一种是音码，一种是音形，最后是形码。

音码是以中文的拼音为基础。音码的好处是可以达到所想即所写，好学，简单易上手。但是他的缺点也很明显：同一个拼音可能对应着不同的字，选字是非常浪费时间的。

形码是以汉字的形状为基础的。形码的好处是重选率极低。正因为重选率低，所以基本上每个汉字都有不同的编码。这既是优点，缺点：如果你可以运用的很熟练，那么你的打字速度将会特别快，但是这也很难学。学习花费的时间可以是其他类型的输入法的几倍甚至是几十倍。

音形是音码和形码的组合。它比音码难学，比形码易学。可以它可以极大的降低音码的重选率，虽然没有形码低，但是对于非文字工作者已经足够了。

好了，你已经对中文输入法有了一个基本的了解了。那么接下来就是你选择的时候了。

### 音码

学习时间约为 1 天

* 双拼：双拼（也称双打）是一种建立在拼音输入法基础上的输入方法，可视为全拼的一种改进，它通过将汉语拼音中每个含多个字母的声母或韵母各自映射到某个按键上，使得每个音都可以用两个按键打出，极大地提高了拼音输入法的输入速度。这种声母或韵母到按键的对应表通常称之为双拼方案。双拼包括并不限于以下几种
  * 微软双拼
  * 小鹤双拼
  * 自然码

### 形码

学习时间约为 1 个月

* 五笔：五笔输入法是一种把字形跟键盘对应的输入法。就像拼音输入法，把拼音跟字母对应起来，按对应的键就可以输入拼音串一样。五笔把所有的汉字归为五大基本笔划（横竖撇捺折），所以叫五笔字型。所有的汉字，按一定的规则进行拆分，再将拆分开的典型部分，对应到键盘上，就形成了五笔字型输入法。形码包括并不限于以下几种
  * 王码五笔（86，98，新世纪）
  * 虎码

### 音形

学习时间约为 1.5 星期

* 音形：双拼 + 双形。如果要学音形，就必须先学对应的双拼。音形包括并不限于以下几种
  * 小鹤音形

这里推荐学习音形，他的学习成本不高，打字速度的上限也很大。如果可以熟练运用，可以达到所讲即所写的水平，即和语音输入速度一致。

我个人是用过微软双拼，小鹤双拼，小鹤音形，98版五笔。写这篇文章的时候，我是用98五笔写下的。我当时学了整整一个月。如果各位要学五笔，我推荐学98版，86版的拆字规则很逆天，虽然教程多，但是与拆字规则相悖。

### 学习一个标记语言

标记语言，是一种将文本以及文本相关的其他信息结合起来，展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息（包括文本的结构和表示信息等）与原来的文本结合在一起，但是使用标记进行标识。

常见的标记语言 AsciiDoc，Markdown，富文本，LaTex，TaXmacs 等

在这里，我推荐 Markdown 语法，Markdown 是一个轻量化的标记语言，很适合做一些日志，笔记的文字记录。本文就是用 Markdown 语法写的。Markdown 语法简单易上手，两个小时就可以熟练掌握了。而且在书写的过程中，你可以仅仅使用键盘来对一个文本**加粗**，*加斜*，~~划线~~等。

Markdown 的教程在[这里](https://Markdown.com.cn/)

Markdown 语法虽然简单易学，但也正是因为他的轻量，他没有太多的格式。如果你要更多的格式，那么你可以选择富文本。富文本支持的格式更多，知乎用的就是富文本。

当然如果你要写论文，那我会推荐你用 $\LaTeX$，$\LaTeX$ 是一个排版系统，可以对于生成复杂表格和数学公式。非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

### 学习使用版本管理工具

git 是一个程序员经常会用到的软件，那么对于其他专业的同学，我为什么也会推荐它呢？

> Git 不仅仅是个版本控制系统，它也是个内容管理系统(CMS)，工作管理系统等。

git 不仅可以用来管理文件的版本，可以当一个文件的当前的状态保存下来，如果你以后对这个文件进行了更改，你还是可以回到这个状态。类似于游戏中一个存档点，如果你认为做的某一个决定是不对的，那么你是有悔改的余地的。

同时，他还可以通过链接 Github, Gitlab，Gitee 等网站，实现多端云同步的功能。而且，也可以实现多人共同协作的功能。

### 下载一个清单类软件

一个好的时间管理软件不能少。如果你是一个不能自己控制自己时间的人，那么你就应该考虑一个 todo 软件。市面上的这类软件还是很多的。我这里就不做推荐了，各有各的优点。

### 考机动车驾使证

如果你的暑假没有事情干了话，考个驾驶证吧！早晚都是要考的，不如现在就考了。以后寒暑假再考，那必然是会占用自己的学习时间！

## 对于计算机专业学生的建议

> 任何有志于学习计算机科学的人，只需要三样东西，一根网线，一台电脑和一个带有 Linux 安装映像的 U 盘。

**注意：这是「实践导向」的，如果你是考研升学的「学术导向」，请忽略本文**

首先，学习计算机的你需要补上[计算机教育中缺失的一课](https://missing-semester-cn.github.io/)。

接下来，三个能力影响你的视界和能否接触到除了学校教授的老古董之外的真实前沿：**使用英语阅读和表达的能力**，**访问国际互联网的能力**，**流畅使用 [Linux](https://libhitchhiker.eu.org/) 的能力**。英语作为国际语言，是全世界程序员通用的交流沟通语言，你的英语能力不必能够写出如莎士比亚戏剧一般上流的文章，但必须能够确保在没有翻译软件的帮助下流畅无误的阅读英文文档。访问国际互联网自然不用多说，你能连接 [Github](https://github.com) 和 [Google](https://google.com) 吗？如果不能，那就想办法能。最后，除非你想好的自己的技术栈绝对在 ASP.NET，Windows Server 滞留，否则「类 UNIX 系统操作」是你绕不过去的。尽量避免在 Windows 系统上安装虚拟机应付学校 Linux 系统学习那几个可怜的学时。**这些素养，你应该在进入大学就开始培养。**

如果四年学习到头来你只会百度，看 CSDN，学习新技术全靠「菜鸟网」和 b 站视频，看不懂英文文档，把 「[C#](https://social.msdn.microsoft.com/Forums/office/en-US/214c0e7f-c7f8-45da-9a95-5b62ee35c092/how-to-pronounce-c?forum=Vsexpressvcs)」读作「C井」，从来没听说过 stackoverflow ，没有 Github 帐号更没有一个拿得出手的项目的话，那么你 99.99% 和一线的互联网企业是无缘的。事实上，你**尤其要避免**使用百度和 CSDN ！

除此以外，正如大部分普通高校一样，学校的教材，特别是涉及真正技术的教材，是陈旧过时的。这里无意争辩[谭浩强](https://www.zhihu.com/question/22793863)的教材是功是过，但是， with all due respect，除非你打算成为语言律师，你真的不应该在诸如 `i+=(++i)+(i++)` 这种东西上浪费时间。请自己寻找靠谱的书。

你可以参考下面这个书单（**请注意，它们只能教会你真实的知识，而不能保证你通过期末考试！你依旧不能扔掉教科书！**）：

计算机基础理论：

* [《计算机科学概论》](https://book.douban.com/subject/26877745/)（\[美]内尔·黛尔 / \[美]约翰·路易斯）

程序设计与程序设计语言：

* C

  * [《C语言程序设计 现代方法》](https://book.douban.com/subject/4279678/)（\[美] K.N.金）

  * [《C与指针》](https://book.douban.com/subject/3012360/)（\[美] 肯尼斯·里科）

  * [《C专家编程》](https://book.douban.com/subject/2377310/)（\[美] Peter Van Der Linden）

* C++

  * [《C++ Primer》](https://book.douban.com/subject/25708312/)（ \[美] Stanley B. Lippman / \[美] Josée Lajoie / \[美] Barbara E. Moo）

* Java

  * [《Java 核心技术》](https://book.douban.com/subject/34898994/)（ \[美] 凯 S.霍斯特曼）

  * [《Java 编程思想》](https://book.douban.com/subject/2130190/)（\[美] Bruce Eckel）

* SQL

  * [《SQL 基础教程》](https://book.douban.com/subject/27055712/)（\[日] MICK）

算法：

* [《算法》](https://book.douban.com/subject/19952400/)（\[美] Robert Sedgewick / \[美] Kevin Wayne）

* [《编程珠玑》](https://book.douban.com/subject/3227098/)（ \[美] Jon Bentley）

计算机网络：

* [《计算机网络：自顶向下方法》](https://book.douban.com/subject/36081529/)（\[美] James F·Kurose / Keith W. Ross）

密码学与信息安全：

* [《Cryptography Engineering》](https://book.douban.com/subject/4723079/)（Niels Ferguson / Bruce Schneier / Tadayoshi Kohno）

* [《图解密码技术》](https://book.douban.com/subject/26265544/)（\[日] 结城浩）

Linux：

* [《快乐的 Linux 命令行》](https://billie66.github.io/TLCL/index.html) （William Shotts）

* [《How Linux Works》](https://book.douban.com/subject/26266751/)（Brian Ward）

文化：

* [《大教堂和市集》](http://www.kaiyuanba.cn/content/other/The_Cathedral_and_the_Bazaar.pdf) （Eric S·Raymond）

* [《UNIX编程艺术》](https://book.douban.com/subject/1467587/)（Eric S·Raymond）

* [《UNIX痛恨者手册》](https://web.mit.edu/~simsong/www/ugh.pdf)（Simson Garfinkel, Daniel Weise ,Steven Strassmann）

你可能发现这些书都是外国人的，原因在此：参见[此处](https://mp.weixin.qq.com/s/IkbeDdEqvoaG5YUzWe2tRA)。

对于新兴语言，它们最好教程一般是它的文档和官方教材，由于它们变化迅速，纸质图书很难跟上，而在线文档和书籍不仅免费，对新手也很友好。

对于简单的脚本语言，诸如 Python 等，除非你希望成为这些语言的专家，想要钻研它们的实现机理，或者你的学习和特定目的有关（如 AI 研究，数据挖掘，数学建模），否则这些相对容易上手的语言根本不需要大费周章的专门学习。一般来讲从入手到达到基本能写小程序干活的水平也就一个下午。

计算机很大程度上是靠「自学」，所以诸如 Python，Javascript，Shell Script 之类的基础知识别指望学校一步步教你。除了工业语言像 Java，C#，C++ 之外，如果你以就业为目标，你要学会追逐业界的前沿，诸如 Go，Rust，Kotlin，Dart 等等，都是如日中天的新兴语言和技术。虽然俗话说，「在我之前出现的技术都是天经地义，在我从业时出现的技术都是可贵创新，在我之后出现的技术都是奇技淫巧」，但是你毕竟年轻嘛，你也不能指望用学校里教你的潜水技术去面对社会这一片沙漠吧（

另外，建议你建设自己的博客和/或个人站点，记录自己的学习历程。
