如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了
Posted 退休的龙叔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了相关的知识,希望对你有一定的参考价值。
最近收到很多大学生粉丝的私信,大多数粉丝们都迷茫着大学计算机该怎么学,毕业后才能找到好工作。
可能是最近回答这方面的问题有点多,昨晚还真梦回大学…其实工作了20多年,当过高管,创过业,就差没写书了。
大家也不用再私信问我大学计算机有没有什么好的学习方法了,我今天给大家统一写成文章,如果你能按照这个方法去做的话,毕业时你绝对能吊打90%以上的同届学生。
文章有些长,但绝对能让你收获满满!
文章目录
一、不要挂科
大家应该都听过“没挂科的大学不是完整的大学”这句话吧?我也不知道是哪个王八蛋吃饱了撑着搁那误人子弟,千万不要挂科!
第一,挂科补考浪费时间,尤其是一些非专业课的文化课,比如马克思之类的,有这个补考的时间你去参加些活动没准都能找到对象了;
第二,有第1次就可能有第2次,第1次挂科感觉也没有想象中的那么严重啊?隔壁还有几个比我挂的还要多的呢也没啥事,出现这种心理,那就一发不可收拾了。
二、培养自主解决问题的能力
很多大学教的第一门语言就是C语言,对于没有基础的大学生来说可能会有些不适应,有时候看到老师上课一顿操作猛如虎,自己动手却寸步难行,十行代码八行报错,甚至后面学到指针连听都听不明白了,这都很正常。
但千万不要轻言放弃,程序员这条道路上主要做的两件事就是制造问题和解决问题,一定要培养自己解决问题的能力。
解决问题的方法有很多种,可以问身边的同学或者老师,也可以去网上找找资源去看看,这个老师教的听不懂,去网上找找别的老师对于这一块的讲解,比如中国大学MOOC上面的课程,比如B站的一些课程,再比如一些博主的博客,以及一些技术交流群,都是可以解决问题的途径。
只要你坚持下去,你早晚都会成为你羡慕的人。
三、清楚职业方向
大部分的大学对于学生的培养讲究的是一个全面性,同一窑子烧出来的瓦片差别并不是很大,你要想与众不同,你就得跳出这个知识圈,去延伸到培养方案上没有的领域。
这里的延伸不是盲目的延伸,而是确定自己的职业方向,程序员有很多的细分职业,自己可以去百度查一下,挑选你喜欢的职业,然后去前程无忧、BOSS直聘等招聘网站多看看相关职业的岗位要求,看看做这个职业需要掌握什么,然后自己去寻找资源往这些技能去学习,出来之后你就是企业需要的人。
四、精通1门语言
学校可能教你很多门语言,C、C++、Java、C#、Python都有可能会教,但你要记住一个点,学校教这些是带你入门,剩下的东西还是需要你去深入学习,搭配上面所提到的职业方向去学习,比如说想做后端工程师,那么就可以考虑用Java或者其他语言去深入学习。
我记得以前我去高校做毕业生招聘的时候,我比较喜欢问“你精通什么语言”,有不少的大学生的回答是“我什么都会一点”,殊不知这是一个必然被PASS的答案,所以学计算机的,起码要精通一门语言,能解决这门语言中90%的问题就算精通了。
五、学好数据库
几乎所有的应用软件后台都需要数据库,爬虫、数据分析、web开发等等方面,多少都跟数据库有牵扯,一般规模大一点的数据都会用到数据库,计算机本身就跟大量数据有着千丝万缕的关系,这个是必须掌握的。
无论是SQL数据库还是NoSQL数据库,掌握1个就可以了,我建议大学生可以去掌握一下mysql数据库,它是目前比较火热的一个数据库,它的开源、免费和体积小但速度快等特点,使得很多中小企业都喜欢用它。
如果想更高端一点的话,那就学Oracle吧,它是目前世界上流行的关系数据库管理系统。
六、不要忽视网络原理
计算机网络原理可能在你读大学的时候很少用得到,或者刚开始参加工作也用得不多,但等你工作了几年之后,你开发出来的东西总不能在前几年的水平上吧?
优秀的程序员对计算机网络原理是很熟悉的,不然你做出来的东西凡是涉及到网络问题你就只能归根于wifi信号不好,一听就是对网络原理不熟悉。
这个时候如果你能在大学学好它,虽然短时间不会用到,但后面捡起来的时候会容易很多。
七、数据结构和算法
所有的小程序或者软件都运行在数据结构之上,数据结构不只是用于组织数据,还极大地影响着代码的运行速度,因为数据结构不同,代码的运行可能相差很多数量级,甚至数据结构弄不好的话,数据量一旦过大,产品就会出现崩溃。
算法有多重要?打个比喻,语言和技术等东西就像是招式,那么算法就是你修炼的内功,招式再令人瞠目结舌,内功不行那还不是一脚的事情?你不经打那有什么办法。
所以在业内有这么一句话“好程序=数据结构+算法”,想要写出好程序,数据结构和算法是你必须要掌握的。
八、竞赛或者做项目
计算机相关专业的竞赛有很多,比如阿里的天池大数据竞赛、华为的华为软件精英挑战赛等等,在国内含金量都很高;再比如全国高校计算机能力挑战赛等全国性赛事更不用讲了,如果有机会还可以参加一些国际性比赛,比如ACM国际大学生程序设计竞赛等等,都是经验和镀金的好选择。
参加这些含金量高的专业性竞赛不仅能够提升你的专业知识,而且还能丰富你的简历,甚至在大赛中直接被大企业内定都是有可能的。
当然了,也不是人人都能参加专业性竞赛并取得成绩,那么这种情况,我建议就是去做1个可持续性维护的项目,这个适用于绝大多数学计算机的大学生。
比如说你想做1个商城类网站,一开始的时候你可能只学会了一点前端的html和CSS,只能做1个非常简陋的1.0版本网页,简陋到你自己都很少见到这么差劲的东西,没有关系,等你后面学会了JS,给网页渲染了更多的特效,这时候就开始形成了看起来还不错的2.0版本;接着你又学到了数据库等后端知识、学到了服务器等知识,你开始给它更新了不同的版本,不仅仅拥有了前端视觉,也拥有了较为完善的后端,甚至你还可以去给它增加社交功能、智能推荐功能等等。
随着你对这个项目的不断维护,它也在不断趋于更高级、更完善,最终你把它放进你的简历上,作品一拿出来,就说我自己单独开发了这么一个网站,面试官一看这个网站还不错,问你一些技术的问题你也答得上来,看来确实是你自己做的,那么你很有可能会从众多面试者当中脱颖而出。
但千万记住,不要去网上找别人的项目源码来直接拼凑上去,没什么意义,你可以参考,但那只是参考,你还是要写出你自己的代码,时间可能会比较长,但哪里出了问题你才清楚,这才是属于你的项目。
结语
今天的分享有些长,如果对你有帮助,或者身边有人在读大学,可以转发让他们看看,也许你的一个随手之举,便能让惊醒沉睡的人。
最后送大家一句话,不是闲人闲不得,能闲必非等闲人,加油!
感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:
点击文末的名片可以抱走
如果能重来,你要选 Vite 还是 Webpack ?
❝作者:晚天
原文:https://juejin.cn/post/7106136866381889573
❞
Webpack 的第一次发布是在 2013 年发布,长久以来是主流的前端打包工具。Vite 的第一次发布是在 2021 年,是近两年来前端打包工具中的后起之秀,重点解决 Webpack 在开发阶段的开发痛点。截止 2022.6,Webpack 的 Github Star 数 61.2k,Vite 的 Github Star 数是 42.7k。虽然 Vite 刚刚发布 2 年,但是热度可见一斑。
下面我们来对 Webpack 和 Vite 的不同点进行比较,并且解释 Vite 之于 Webpack 性能优势来源于哪里?
Webpack
Webpack 是一个基于打包器的构建工具,同一个入口文件的代码会打包成一个 Bundle 文件。Webpack 长期来的一个痛点是对于大规模应用的应用启动和热更新速度很慢。
当文件发生变动时,整个 JavaScript Bundle 文件会被 Webpack 重新构建,这也是为什么使用 Webpack 的大规模应用在应用启动和热更新时速度很慢的原因。这给进行大规模 JavaScript 应用的开发者造成了很差的开发体验。
Webpack 如何工作?
Webpack 打包过程:
从一个入口文件开始,基于代码文件中的所有
import
,export
,require
构建依赖树;编译 JS/CSS 等模块;
使用算法排序、重写、连接代码;
优化。
开发环境的 Webpack:
打包所有代码;
启动 webpack-dev-server 托管打包好的代码;
启动 websocket 处理热更新 HMR。
应用规模越大,启动和热更新代码越慢。及时启动了热更新,每次代码变更也需要重新生产 Bundle 文件。
Vite
Vite 是旨在提升开发者体验的下一代 JavaScript 构建工具,核心借助了浏览器的原生 ES Modules 和像 esbuild 这样的将代码编译成 native code 的打包工具。
Vite 主要有两方面组成:
一个开发服务器,基于 ESM 提供丰富的内建能力,比如速度快到惊人的模块热更新(HMR);
一套构建指令,使用 rollup 进行代码打包,且零配置即可输出用于生产环境的高度优化的静态代码。
Vite 的核心能力和 webpack
+ webpack-dev-server
相似,但是在开发者体验上有一些提升:
无论项目大小有多大,启动应用都只需更少的时间;
无论项目大小有多大,
HMR(Hot Module Replacing)
热更新都可以做到及时响应;按需编译;
零配置,开箱即用;
Esbuild 能力带来的 Typescript/jsx 的原生支持。
大型的 JavaScript 项目在开发和生产环境有比较差的性能表现,往往是因为我们使用的构建工具没有充分做到并行处理、内存优化和缓存。
核心理念:Bundless 开发环境构建
浏览器的原生 ES Modules 能力允许在不将代码打包到一起的情况下运行 JavaScript 应用。Vite 的核心理念很简单,就是借助浏览器原生 ES Modules 能力,当浏览器发出请求时,为浏览器按需提供 ES Module 文件,浏览器获取 ES Module 文件会直接执行。
应用启动
Vite 将应用中的模块分为依赖和源码两类,分别进行服务器启动时间的优化。
依赖模块,开发过程中基本不会变化。Vite 对依赖采用了 esbuild 预构建的方式,esbuild 使用 Go 编写,并且比以 JavaScript 编写的打包器预构建依赖快 10-100 倍;
源码模块,是用户自己开发的代码,会经常变动。
Vite 在浏览器请求时按需转换并以原生 ESM 方式提供源码,让浏览器接管了打包程序的部分工作。
Vite 如何工作?
Vite 通过原生 ES Modules 托管源代码,本质上是让浏览器来接管部分打包器的工作。Vite 只会在浏览器请求发生时,按需将源码转成 ES Modules 格式返回给浏览器,由浏览器加载并执行 ES Modules 文件。
热更新
在基于 Bundle 构建的构建器中,当一个文件变动时,重新构建整个 Bundle 文件是非常低效的,且随着应用规模的上升,构建速度会直线下降。
传统的构建器虽然提供了热更新的能力,但是也会存在随着应用规模上升,热更新速度显著下降的问题。
Vite 基于 ESM 按需提供源码文件,当一个文件被编辑后,Vite 只会重新编译并提供该文件。因此,无论项目规模多大,Vite 的热更新都可以保持快速更新。
此外,Vite 合理利用浏览器缓存来加速页面加载,源码模块请求根据 304 Not Modified
进行协商缓存;依赖模块请求通过 Cache-Control: max-age=31536000,immutable
进行强缓存,因此一旦缓存,不会再次请求。
生产环境仍需打包
在生产环境使用 ESM 会存在大量额外网络请求问题,因此生产环境不太试用 ESM,最好的方式还是代码进行 tree-shaking、懒加载、和 chunk 分隔等。
那么生产环境的构建为什么不直接使用 esbuild,而是使用 rollup 呢?这是因为 esbuild 在代码分隔、css 处理等方面的功能仍在开发中,rollup 在应用打包方面更加的成熟且灵活。
性能提升
Vite 依托支持原生 ESM 模块的现代浏览器,极大的降低了应用的启动和重新构建时间。Vite 本质上是一个在开发环境为浏览器按需提供文件的 Web Server,这些文件包含源码模块和在第一次运行时使用 esbuild 预构建的依赖模块。
Vite 和 Webpack 的主要不同在于开发环境下对于源码如何被托管以及支持哪种模块规范。
依赖预构建
Vite 在首次启动时,会进行依赖预构建。依赖预构建有两个目的:
CommonJs 和 UMD 的兼容性:开发阶段,Vite 的 Dev Server 将所有代码视为原生 ES 模块。因此,Vite 必须将 CommonJS 或 UMD 发布的依赖项转为 ESM。
性能:Vite 将有很多内部模块的依赖视为单个模块,以提升页面加载性能。比如,
lodash-es
拥有超过 600 个内部模块,当import debounce from 'lodash-es';
时,浏览器会同时发起超过 600 个请求,并行请求过多将会显著影响页面加载性能。因此预构建将lodash-es
视为一个模块,浏览器只需要发起一个请求。
缓存
文件系统缓存
Vite 会将预构建的依赖缓存到 node_modules/.vite
,它根据几个源决定是否需要重新运行预构建步骤:
package.json
中的dependencies
列表;包管理的
lockfile
,例如package-lock.json
,yarn.lock
或者pnpm-lock.yaml
可能在
vite.config.js
相关字段中配置过的。
只有在上述其中一项发生更改时,才需要重新运行预构建。
如果处于某些原因,你想要强制 Vite 重新构建依赖,你可以用 --force
命令选项启动开发服务器,或者手动删除 node_modules/.vite
目录。
浏览器缓存
解析后的依赖请求会以 HTTP 头 max-age=31536000,immutable
强缓存,以提高开发时的页面重载性能。如果你想通过本地编辑来调试依赖项,可以:
通过浏览器调试工具的 Network 选项卡暂时禁用缓存;
重启
Vite Dev Server
,并添加--force
命令以重新构建依赖;重新载入页面。
Typescript 原生支持
Vite 天然支持引入 .ts 文件,单仅支持 .ts 文件的转译工作,并不执行任何类型检查。
Vite 使用 esbuild 将 TypeScript 转译到 JavaScript,约是 tsc 速度的 20-30 倍,同时 HMR 更新到浏览器的时间小于 50 ms。
对比
简单对 Webpack 和 Vite 进行一个对比:
Webpack
支持的模块规范:ES Modules,CommonJS 和 AMD Modules;
Dev Server:通过
webpack-dev-server
托管打包好的模块;生产环境构建:webpack
Vite
支持的模块规范:ES Modules;
Dev Server:原生 ES Modules;
生产环境构建:Rollup
总结
由于浏览器原生 ES Modules 的支持,当浏览器发出请求时,Vite 可以在不将源码打包为一个 Bundle 文件的情况下,将源码文件转化为 ES Modules 文件之后返回给浏览器。这样 Vite 的应用启动和热更新 HMR 时的速度都不会随着应用规模的增加而变慢。
最后
如果你觉得这篇内容对你挺有启发,我想邀请你帮我个小忙:
点个「喜欢」或「在看」,让更多的人也能看到这篇内容
我组建了个氛围非常好的前端群,里面有很多前端小伙伴,欢迎加我微信「sherlocked_93」拉你加群,一起交流和学习
关注公众号「前端下午茶」,持续为你推送精选好文,也可以加我为好友,随时聊骚。
点个喜欢支持我吧,在看就更好了
以上是关于如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了的主要内容,如果未能解决你的问题,请参考以下文章
思否有约 | @陈大鱼头 :要是能重来,我还是会选这条充满着内卷和996的路
火遍Steam的精品游戏:如果人生能重来,你会活成谁的模样?