最近有不少还在读书的同学来问我大学期间到底应该学什么,学了Java,看了JS, HTML,CSS, 尝试了一下SSH以后似乎就迷茫了, 这其中还有不少是计算机系的同学。
毫无疑问,为了毕业后找个好工作,在大学期间应该学一些应用层的技能,掌握一门应用广泛的语言及其框架。最好做过实际的项目,有过实习的经验, 这些都是简历中能看得到的加分项,是脱颖而出的重要砝码。
但是这些东西都是一颗大树的枝叶和花朵, 在大学期间更应该学习的是看不见的根,也就是基础知识, 对于科班出身的人更是如此。
原因很简单,基础知识虽然可以在工作以后再补,但是再也找不到这么多大块的时间,这么安静的环境,让你心无旁骛的钻研了。
你不用考虑着第二天怎么去应对客户的脸色,也不用去想着怎么去给领导解释昨晚的严重Bug不是我们的问题, 你只需要单纯的学习就好,看到有这么多同学把美好的时光都花在打游戏上,实在是令我扼腕叹息,要是把这些时间给我就好了!
我现在只能利用一些碎片时间补一下基础的知识,如果时光倒流,让我再坐到图书馆中去静静地看书该多好!
同学甲说: 基础,又是基础,老刘你说了多少遍了!我耳朵都听出茧子来了!
抱歉,基础就是这么很重要,我还是要像祥林嫂一样继续啰嗦。
我认为大学期间应该搞定的基础知识应该包括(不限于)这些:
2 C语言大学期间不要忙着去学Java , Python等高级语言, 你应该先去搞定C语言(不是C++啊),因为这门语言太贴近机器了, 能帮助你理解计算机的运行原理,不信你看看《深入理解计算机系统》, 通篇都是C语言,它怎么不用Java,Python去描述啊? 因为他们太高级了,太抽象了,描述不了底层啊。
学会C语言,才能给其他基础知识打下基础,因为大部分基础软件、系统软件都是C语言写的,你看不懂C程序那怎么行?
不要像我当年一样,看到别人已经能做网页了,自己还在命令行的小黑窗口中折腾,头脑一热就把C语言给扔了,后来又花了很多时间来弥补。
要记住你学会了C这门贴近硬件的,简单而又复杂的语言以后,再去学别的语言,几乎不费吹灰之力, 他们都太简单了!
3 理解计算机的组成原理如果你是科班的,老老实实地把《计算机组成原理》和《数字电路》这两门课学了,把那些实验内容(如门电路,半加器,全加器,触发器等)兢兢业业地做好。
你应该定个目标: 自己折腾一个简单的CPU,简单的就是进行数值运算,复杂一点儿的可以实现指令, 如果觉得教材实在枯燥,可以结合《编码》或者《穿越计算机的迷雾》 来学习, 如果实在喜欢玩游戏,可以到《我的世界》游戏中去制造CPU啊,已经有大牛这么做了。
4 理解操作系系统原理操作系统太重要了, 对操作系统的理解决定了你以后工作中能达到的深度,这里边藏着太多极为重要的概念, 例如进程,线程的概念,锁、调度,IO模型,虚拟存储等等 , 他们会在你以后做高性能,高并发系统这一块儿起到重要作用。
即使你先学会了Java , SSH/SSM, 随着你能力的提升,最后你还是得走入这些基础知识的世界。为什么不在大学期间把他们都搞定呢?
有人可能觉得OS太枯燥了,实在是看不下去,其实OS是一门动手实践课, 你可以去看看早期Linux 内核的源码(要求C语言啊),书籍文章多如牛毛; 也可以自己动手自制简单的操作系统,视频书籍也不少,就看你愿不愿意把玩游戏的时间花在上面了。
举个例子:哈工大的VOID同学就在本科期间从零开始做了一个类似于Linux 0.11的操作系统出来,他拿到了阿里的Special Offer , 目前在阿里就职。 他录制的《从零开始编写操作系统》视频可以在B站看到: https://www.bilibili.com/video/av12169693/
同学乙要问了: “人家是大牛,还有一个好学校,我一个三本的渣渣怎么可能做得出来? 你这不是给我设置了一个不可能完成的任务吗?”
确实是这样,天才永远只有少数,不可能每个人都成为天才,也不可能每个人都做出天才的成果。
但是我们也要在天才铺好的道路上坚持往前走走, 也许有一天就会发现,哦,我已经超越了这么多人了啊!
要坚持使用Linux而不是Windows,立志在后端做开发的更是要如此, 别像我大学时安装个双系统,结果整天宠幸Windows , 从来不翻Linux的牌子。
5 网络, 数据库, 编译原理把这三者合到一起, 是我个人觉得他们的重要性没有前面的高。
对于网络,需要理解网络分层模型,可靠性传输原理,TCP/IP协议,Socket编程,和操作系统结合起来可以考虑写一个Web服务器。
数据库的话首先理解SQL、关系模型、事务、索引, 要想深入学习的话可以看看查询是怎么实现的,事务是怎么实现的, 如果确实感兴趣一定要看看sqlite的源码。
学编译最好的方式就是自制一个编程语言了, 搞出来以后会对编程语言有个极为透彻的理解。
6 数据结构和算法这个重要性就不用再强调了,经常看码农翻身的可能都要烦了,可以看看之前的文章《学习数据结构有什么用?》
学习的过程中除了看书理解各种算法和数据结构外,更重要的就是做题、做题、做题!
同学丙说: “老刘,你说的不都是计算机的专业课吗?”
是的,就是计算机的专业课,一般来说,工作个几年以后你才会体会到他们的珍贵,更会痛惜大学时为什么不好好学,就像我现在这样。
不要局限于学校发的教材,现在网上的视频资源异常丰富,世界级大学的课程我们也可以看到,千万不要浪费。
同学丁说:老刘你别瞎BB了,你让我学Java,做项目,现在又让我造CPU,写操作系统,数据库,服务器...... 我都没时间和女朋友约会了。
恭喜你,已经有女朋友了,超越了大部分同学了,在大学谈一场恋爱,享受一下青春也是非常重要的事情。
但是我想说的是,你不可能把所有的都学会,你能做的就是集中火力突击一个方向,那就是你最感兴趣的方向。 只有那些经得住寂寞,耐得住诱惑的才最有可能成功,如果再和自己的兴趣结合起来,那简直肯定成功。
总而言之,计算机的基础知识让你和别人区分开来,让你有着比别人更快的加速度。
但是老刘瞎BB这么多估计也没太大用处,因为你不行动我也没有办法。
以上是大学学习计划之计算机的详细内容。更多信息请关注PHP中文网其他相关文章!

Linux在服务器和开发环境中性能优异,而Windows在桌面和游戏领域表现更好。1)Linux的文件系统在处理大量小文件时表现出色。2)Linux在高并发和高吞吐量网络场景中表现优异。3)Linux的内存管理在服务器环境中更具优势。4)Linux在执行命令行和脚本任务时效率高,而Windows在图形界面和多媒体应用上表现更好。

创建图形用户界面(GUI)应用程序是使您的想法栩栩如生并使您的程序更加用户友好的绝佳方法。 PygoBject是一个Python库,允许开发人员使用Linux桌面上创建GUI应用程序

Arch Linux提供了灵活的尖端系统环境,是用于在小型非关键系统上开发Web应用程序的强大解决方案,因为是一个完全开源的,并且在内核上提供了最新的最新版本

由于其滚动释放模型,它包含了尖端软件Arch Linux的设计和开发以作为服务器运行以提供可靠的网络服务,因为它需要额外的时间进行维护,持续的升级和明智的FI
![12必备Linux控制台[终端]文件管理器](https://img.php.cn/upload/article/001/242/473/174710245395762.png?x-oss-process=image/resize,p_40)
Linux控制台文件管理器在日常任务,在本地计算机上管理文件时或连接到远程时,可能非常有帮助。目录的视觉控制台表示可以帮助我们快速执行文件/文件夹操作和SAV

Qbittorrent是一个受欢迎的开源Bittorrent客户端,允许用户通过Internet下载和共享文件。最新版本Qbittorrent 5.0最近发行了,并带有新功能和改进。 本文将

以前的Arch Linux LEMP文章仅涵盖了基本内容,从安装网络服务(NGINX,PHP,MYSQL和PHPMYADMIN)以及配置MySQL Server和PhpMyAdmin所需的最小安全性。 这个主题与形式严格有关

Zenity是一种工具,可让您使用命令行在Linux中创建图形对话框。它使用GTK,这是一种用于创建图形用户界面(GUI)的工具包,使您可以轻松地将视觉元素添加到您的脚本中。 Zenity可能非常


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具