搜索
首页系统教程LINUX大学学习计划之计算机

大学学习计划之计算机

Feb 01, 2024 pm 05:54 PM
linuxlinux教程红帽linux系统我的世界linux命令linux认证红帽linuxlinux视频

大学学习计划之计算机

1 前言

最近有不少还在读书的同学来问我大学期间到底应该学什么,学了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就该这么学。如有侵权,请联系admin@php.cn删除
Linux和Windows之间的硬件兼容性有何不同?Linux和Windows之间的硬件兼容性有何不同?Apr 23, 2025 am 12:15 AM

Linux和Windows在硬件兼容性上不同:Windows有广泛的驱动程序支持,Linux依赖社区和厂商。解决Linux兼容性问题可通过手动编译驱动,如克隆RTL8188EU驱动仓库、编译和安装;Windows用户需管理驱动程序以优化性能。

Linux和Windows之间虚拟化支持有哪些差异?Linux和Windows之间虚拟化支持有哪些差异?Apr 22, 2025 pm 06:09 PM

Linux和Windows在虚拟化支持上的主要区别在于:1)Linux提供KVM和Xen,性能和灵活性突出,适合高定制环境;2)Windows通过Hyper-V支持虚拟化,界面友好,与Microsoft生态系统紧密集成,适合依赖Microsoft软件的企业。

Linux系统管理员的主要任务是什么?Linux系统管理员的主要任务是什么?Apr 19, 2025 am 12:23 AM

Linux系统管理员的主要任务包括系统监控与性能调优、用户管理、软件包管理、安全管理与备份、故障排查与解决、性能优化与最佳实践。1.使用top、htop等工具监控系统性能,并进行调优。2.通过useradd等命令管理用户账户和权限。3.利用apt、yum管理软件包,确保系统更新和安全。4.配置防火墙、监控日志、进行数据备份以确保系统安全。5.通过日志分析和工具使用进行故障排查和解决。6.优化内核参数和应用配置,遵循最佳实践提升系统性能和稳定性。

很难学习Linux吗?很难学习Linux吗?Apr 18, 2025 am 12:23 AM

学习Linux并不难。1.Linux是一个开源操作系统,基于Unix,广泛应用于服务器、嵌入式系统和个人电脑。2.理解文件系统和权限管理是关键,文件系统是层次化的,权限包括读、写和执行。3.包管理系统如apt和dnf使得软件管理方便。4.进程管理通过ps和top命令实现。5.从基本命令如mkdir、cd、touch和nano开始学习,再尝试高级用法如shell脚本和文本处理。6.常见错误如权限问题可以通过sudo和chmod解决。7.性能优化建议包括使用htop监控资源、清理不必要文件和使用sy

Linux管理员的薪水是多少?Linux管理员的薪水是多少?Apr 17, 2025 am 12:24 AM

Linux管理员的平均年薪在美国为75,000至95,000美元,欧洲为40,000至60,000欧元。提升薪资可以通过:1.持续学习新技术,如云计算和容器技术;2.积累项目经验并建立Portfolio;3.建立职业网络,拓展人脉。

Linux的主要目的是什么?Linux的主要目的是什么?Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

互联网在Linux上运行吗?互联网在Linux上运行吗?Apr 14, 2025 am 12:03 AM

互联网运行不依赖单一操作系统,但Linux在其中扮演重要角色。Linux广泛应用于服务器和网络设备,因其稳定性、安全性和可扩展性受欢迎。

Linux操作是什么?Linux操作是什么?Apr 13, 2025 am 12:20 AM

Linux操作系统的核心是其命令行界面,通过命令行可以执行各种操作。1.文件和目录操作使用ls、cd、mkdir、rm等命令管理文件和目录。2.用户和权限管理通过useradd、passwd、chmod等命令确保系统安全和资源分配。3.进程管理使用ps、kill等命令监控和控制系统进程。4.网络操作包括ping、ifconfig、ssh等命令配置和管理网络连接。5.系统监控和维护通过top、df、du等命令了解系统运行状态和资源使用情况。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。