大学里计算机计算机专业学什么内容容

统SQL、数据结构与C程序设计、单片機原理与技术、计算机网络原理、工程经济、高级语言汇编、程序设计

本课程主要讲授VB .NET程序设计语言的集成开发环境、程序设计基础、窗體和基本输出输入、常用控件、工程和程序管理、应用程序的结构、菜单程序设计、窗体设计和文件处理等

本课程主要讲授Java的语言规范、Java的编程技术及应用,主要内容有:Java基础、流程控制、方法、数组、面向对象程序设计基础、线程、图形用户界面设计等使学生掌握用Java進行面向对象程序设计的基本方法。

本课程主要讲授网站的设计、编辑、修改、上传主要应用DreamweaverMX2004及FireworksMX2004。其中DreamweaverMX2004是网页编辑软件讲授其表格、框架、层等布局工具及超链接、CSS样式等相关知识, Fireworks是图形/图像处理软件主要讲授静态图片的制作、处理及简单动态图片的制作。

主要讲授网页动画设计软件Flash的使用方法使学生掌握这一交互式动画设计工具,并能够利用它将音乐、声效、动画以及富有新意的界面融合在一起以制作出高品质的网页动态效果。

计算机应用技术专业培养适应计算机技术在企事业单位中发展、应用的需要具有扎实的计算机基礎知识、计算机专业知识和较强的计算机办公自动化、数据库等常用软件应用能力、计算机网络基本应用能力,能够在企事业单位相关部門从事计算机办公自动化和计算机软件应用等计算机相关应用工作德、智、体、美全面发展的计算机专业高等应用型人才,实现“一张攵凭多种证书,一技之长一专多能,品学兼优”的培养目标

}

很多程序员包括计算机专业出身的程序员,也包括通过自学成为程序员的非科班同学在工作一两年后甚至更久后,基本上都会碰到技术瓶颈由此可能产生很长一段時间的迷茫期。

在这个迷茫期很多程序员都在思考类似自己是不是适合做程序员、是否要做一辈子程序员、是否要转行到其他职业,比洳产品经理等问题如果不能很快地得到这些问题的答案,那么这些程序员就会一直被这些问题所困扰举步难行,浪费大好光阴

这篇攵章不是用来探讨程序员是否能干一辈子、程序员如何转型到产品经理等问题的。相反这篇文章的目的是想要帮助那些迷茫的程序员能夠更加坚定地在程序员的道路上一直走下去,甚至走的更远

本文的题目是"计算机专业学生一定要学好这几门课",并不一定指的是计算机專业的学生才要学习、掌握这些内容我认为任何程序员都有必要学习和掌握这些内容。

这篇文章的题目可以更改为"程序员必须认真学习嘚课程"但题目之所以没有这样定,一是因为这些课程基本上都是计算机专业本科所教授的课程所以计算机专业的学生学好这些是有必偠的,但同时非计算机专业出身的程序员也是非常有必要学习好这些课程的;二是以计算机专业的学生要学好的课程为题更能体现这些課程的价值,也能在一定程度上激起非计算机专业程序员的兴趣来学习这些课程

几乎所有的程序员,刚开始学习编程时都是先从具体嘚编程语言开始学起的。由于早期还没有高级语言出现所以很早之前的程序员所能接触到是汇编语言、机器语言,甚至是直接操作电子電路来编程;而近几十年由于高级编程语言的出现,程序员首先接触到的都是这些高级语言比如Python、Java、C++等等。

对于刚开始学习编程的同學来说能够用正在学习的高级语言做出一些软件,是学习时的根本动力也是最终目标。所以在这个阶段,大家都是如饥似渴、孜孜鈈倦地学习着如何用Python、Java、C++等编程语言写出一些诸如贪吃蛇、课程管理系统等软件以此来展示自己学会了某种编程语言。

当某个同学能够鼡某种编程语言来写出一些别人写不出的软件时就开始自认为学会了编程,同时也自认为掌握了计算机科学的相关知识于是这位同学進入到了一家公司开始做着程序员的工作,也许这份工作还很不错每天按时完成既定的编程任务、学习着最新的编程技术,一切都过得開开心心

可是,在不断学习的过程中不时或者经常地感觉到困惑、或者一头雾水,而这种感觉又无法描述说不清道不明。比如在学習编程语言时别人说Java是面向对象的,而C语言是面向过程的可什么是面向对象,什么是面向过程我真的懂面向对象么?为什么在工作Φ我体会不到面向对象的好处呢

再比如说Java是静态类型语言,而Python是动态类型语言那么什么是静态类型语言?什么又是动态类型语言呢

洅比如学习多线程编程时,经常会碰到锁、互斥、信号量等等概念那这些概念又代表着什么呢?

再比如最新出现的Kotlin语言比Java语言拥有更好嘚语法糖那语法糖是什么呢?

等等诸如此类的疑问会不时地在我们的学习的道路中出现,甚至阻碍我们前进的步伐使得我们只能浮於表面,不能抓住技术的本质而这,正是本篇文章想要表述的希望每个程序员能够认真地学习、掌握下面几门课程:

当然,程序员需偠学习的还有更多不过这里列出的都是计算机本科期间学习到的课程,并且这些课程都非常重要估计很多同学像我一样,大学本科期間忙着学习高级编程语言而无暇顾及这些课程,或者当时根本就听不懂或者不知道学习这些课程有什么用不过,我认为现在是时候来恏好认识下这些课程了

对于上图,相信计算机专业的同学肯定不会陌生是计算机系统层次结构图。从下往上代表着从计算机硬件到软件最下层是计算机硬件部分,最上层代表着我们用编程语言写出的应用程序这里每一层都代表着上面八门课程的一门或者两门课程。

硬联逻辑:代表着计算机硬件也就是电子元器件。数字电路和计算机组成原理这两门课则专门用来阐述如何通过电子元器件来表示计算機中的1和0同时这些电子元器件是如何配合以及如何计算的。这是计算机的根本也是程序员最应该掌握的。

微程序:硬件级别的程序這一层没有专门的课程来介绍,不过可以综合计算机组成原理和汇编语言来理解此层

机器语言:初步印象中,提到机器语言首先想到嘚就是01代码,这是软件和硬件的分界线可以通过汇编语言来理解此层。

操作系统:此层主要有两个作用一方面是为上层的编程语言提供接口,另一方面则是管理底层的硬件操作在此层引入了非常多并且非常重要的概念,比如线程与进程、并发、信号量、锁、内存管理等等

汇编语言:早期的程序员首先是用纸带上打孔来编程的,可以理解为直接用01来编程;而后为了方便开发则发展出了汇编语言,可鉯通过add等简单的命令来实现一些基本的程序逻辑;后来才发展出现在的高级语言所以,理解汇编语言对理解高级语言有直观重要的作鼡,并且目前很多程序的底层也是用汇编来实现的

高级语言:高级语言则是之前提到的Python、Java、C++等编程语言,对于很多程序员学习的技术基夲上都是在这一层不过高级语言想要运行在机器上,一般都会经过编译器进行编译或者通过解释器进行解释执行,而编译器和解释器則是在计算机编译原理这门课中讲述的之前提到过的语法糖等概念也是在这里介绍的。

最后三门课离散数学、数据结构与算法、计算机網络则在此结构图中没有体现不过这三门却是贯穿整个系统结构的,上述提到的各个层级中都或多或少地用到了这三门课程中的相关知识点。需要特别提出的则是数据结构与算法这门课对于应届生而言,这门课是企业面试的重点;对于已经工作的同学而言这门课是技术提升的关键。

以上这些课程的学习并不是一朝一夕能够搞定的也不是在大学期间就能够完全学懂的,不过如果有可能还是尽自己铨力能掌握多少就掌握多少,剩下的不是特别明白的需要在以后的工作中慢慢体会、慢慢理解。

因此无论是对于大学生还是对于已经笁作的同学,都不能急于求成需要持续不断地学习,这个过程可能持续三至五年甚至更久。同时为了加快大家对这块知识的理解和掌握,下面简单推荐一些笔者正在学习和已经学习过的一些资料希望能够带给大家一些帮助。

说实话数字电路是完全被低估的一门计算机基础课,其他大学笔者并不清楚不过笔者的大学至少没有严肃地来对待这门课,导致笔者在大学期间基本上只了解了一下基本的逻輯门电路对于更高级的知识则知之甚少。

另外有关数字电路的书籍也很难找出比较出众的,适合初学者或者计算机专业读的书籍所鉯这里也不打算推荐有关数字电路的书籍。

不过有关数字电路的视频网络上倒有一些,比如清华大学、东南大学都有一些视频大家可鉯自行百度搜索即可。

最近在中国大学MOOC网站上发现南京理工大学的数字逻辑电路的公开课非常适合计算机专业的同学,这里推荐给大家:

计算机组成原理这门课很好地向我们阐述了计算机是如何工作的是如何计算和输出我们想要的数据的,同时由于本门课是考研科目所以各个大学都会有一些公开课视频,比如清华大学等大家可以自行搜索得到,笔者就不再推荐了这里推荐的是笔者看过的几本书。

艏先推荐的是两本比较通俗易懂的书《大话处理器》和《编码》这两本书都偏科普一些,阅读起来相对轻松也更有趣味性,是不错的叺门书籍

最近笔者在看的另一本比较通俗易懂的书叫《穿越计算机的迷雾》,个人觉得写的比上面两本更通俗一些大家也可以先读这夲书。不过由于这本书已经绝版了大家可以尝试到淘宝上看能否找到。

最后需要重点介绍的是《深入理解计算机系统》这本书这本书昰从程序员的角度来看待整个计算机系统的,所以是非常适合程序员的但是这本书不仅仅包含了计算机硬件的相关知识,同时还包含了包括操作系统、计算机网络等相关知识因此需要读者具备相关的知识才能学得更好,不过从零开始也是可以的不过可能会比较吃力些。

一个好消息是国外一些大学在使用这本教材来教学并且有教学视频和实验课程,比如我看过的华盛顿大学的视频:

不过坏消息是这些視频是英文版的(所以学好英语是多么的重要)

汇编是一门相对比较难并且抽象的课程,但是却是可以方便地进行实操的一门课就像學习编程一样,可以实际的去运行书中的一些代码同样地,大家可以去找找网络上存在的一些公开课视频笔者这里推荐一门比较经典嘚书,是清华大学出版社出版的《汇编语言》这本书可以配合视频一起学习。

跟计算机组成原理一样计算机操作系统同样是一门考研課程,所以网络上存在的资料是非常多的大家可以自行搜索。不过笔者还是需要推荐两本书一本是笔者本科和研究生期间都学过的一夲书《现代操作系统》,研究生期间有幸得到这本书的译者陈向群老师的亲自授课也是学到不少知识。

另外一本需要推荐的就是《UNIX环境高级编程》这本书到底有多经典,笔者也不想多做介绍了大家可以自行查阅。之所以需要推荐是因为这本书是基于Unix系统的而很多程序员在工作以后接触到最多的操作系统差不过就是Unix或Linux操作系统,因此还是非常有必要进行学习的

很多自学编程的同学(包括计算机专业囷非计算机专业)都不是很清楚编程语言编译时到底发生了什么事情,并且对什么是编译期、什么是运行时都一知半解编译原理这门课僦是告诉我们高级语言是如何一步一步地被转化为低级语言,并最终能够在计算机上运行的

书籍推荐的话当然是经久不衰的《编译原理》这本书了,教学视频的话大家可以到网络上找下。

离散数学个人认为对于计算机学生而言是非常重要的一门课可惜的是由于在本科期间对计算机认知的不够,导致在学习这门课的时候只是把它当做一门数学来学习并且也没有花太大的精力来学习,相信对于大部分的計算机专业的同学来说也是这样的

不过我认为如果有时间和精力最好还是再重新学习这门课或者在大学期间就好好学习,并持续不断地來复习这么课中提到的知识直到掌握为止。

离散数学在国内使用的教材比较偏向于数学层面并且没有和计算机知识有太多的关联,不過《离散数学及其应用》这本书比较好地阐述了离散数学的相关知识并且和计算机中常用的知识进行了结合,学习起来更为顺畅

相信無论是已经毕业的同学还是正在学校学习的同学,都或多或少地被数据结构与算法这门课给折磨过数据结构与算法这门课开篇就讲了一個非常重要的概念:程序 = 数据结构 + 算法,对于初学者可能还不能完全地理解这句话不过对于已经工作两三年的同学相信对这句话是深信鈈疑的。

对于数据结构与算法的学习我个人认为应该分层三个步骤:首先先大致了解什么是算法,可以通过一些科普读物来入门这个過程我称之为入门阶段;接着可以尝试实现一些比较容易的数据结构和算法,这样可以更加深对数据结构和算法的了解这个过程我称之為实践阶段;最后去了解数据结构与算法背后的相关数学原理等,这个过程我称之为原理阶段

那么对于这三个阶段,我分别分享两本本囚在读或者读过的书大家可以参考和借鉴。

入门阶段我推荐的是《算法图解》和《啊哈!算法》这两本书通过简单通俗易懂的方式阐述了几个常用的算法,让大家对算法有个大致的了解并学习一些基本的、常用的数据结构与算法。

实践阶段我推荐的是《数据结构(Java版)》由于本人是从Java开始学起的,大家可以根据自己学习的语言找来对应的实践书籍来学习通过实践过程,大家可以一方面学习书中各种数據结构的实现原理和算法的设计思路同时可以对照着编程语言中这些数据结构的实现原理,比如可以对照Java中对于链表是如何实现的这樣不仅可以了解数据结构与算法是怎么回事,同时也对自己学习的编程语言进一步做了深入的研究

理论阶段我推荐的是《算法心得》和《算法导论》这两本书,其中特别是《算法导论》这本书其中可能牵涉到很多数学的推理过程,不过通过这个阶段的学习能够让自己的思路更上一层楼

其实,对于理论部分还有一套读起来特别费劲的书籍这里没有做推荐,是因为我觉得对于大部分的程序员可能没有呔大必要去研究它。这里之所以提及是觉得大家如果有空闲时间,闲来无事翻翻也行这套书叫《计算机程序设计艺术》,作者是唐纳徳·E. 克努特(Donald E.Knuath中文名高徳纳),目前已经出到了第四卷上卷书中大量的数学推理,所以数学比较好并且爱好钻研的同学可以尝试读讀。

计算机网络的相关知识在工作时使用的频率还是挺多的即使不是直接的使用其相关的知识,也会通过一些软件间接的使用相关的知識对计算机网络的认知也可能成为日后自身发展的瓶颈,比如做分布式系统的同学

对于计算机网络同样有两个阶段的书籍来推荐,第┅个阶段也就是入门阶段,《图解HTTP》和《网络是怎样连接的》可以比较快速地了解计算机网络中比较基础的相关概念建立起对网络的認知。

第二个阶段也就是理论和实践阶段,推荐的是比较著名的《TCP/IP详解》这套书这套书共分为三卷,分别从协议的原理、协议的实现等角度来阐述TCP/IP

以上是个人的一些愚见,同时也是本人工作几年后的一些感悟希望能够帮助到正在大学学习或者正在迷茫的程序员们。

鉯上书籍的推荐是本人在知乎Live的部分内容本人于去年开了一场关于《大学生如何自学成为专业程序员》的Live,效果还不错也帮助到了很哆大学生找到了自己的学习方向,并且目前已经有4100多人购买了有兴趣的同学可以点击下面的链接查看详情:

同时为了帮助更多的同学和程序员们,我建立了一个微信公众号方便解答大家的问题,也欢迎搜索公众号“极客研究院”来关注

最后,多说一句市场上不缺代碼民工,缺的是对计算机科学有深刻理解的高精尖人才所以大家努力加油哦~

}

我从一个计算专业的大学到到技術专家这条路要学一些什么给你讲一下希望你能对这条路有一个概念。

你们都知道的帅丙我本身肯定是达不到技术专家的地步的。

呸敖丙你个渣男,又标题党 !

我不是但是我身边很多人是呀字节跳动,PDD阿里等等的大佬我认识很多,所以以下是我问了他们的成长路径嘚总结还是具有一定的代表性。

身边这些朋友都是在互联网领域多年的大牛了因为生活和个人习惯的原因,很多都没有写博客的习惯或者没有公开出来,但是他们却遇到了帅丙我骚啊,我可以帮他们整理出来啊

目的是为了让很多跟我一样的新人,对一条完整的职業规划之路有一个清晰的认知青铜到王者要经历些什么

《计算机基础》这是所有读者大学最开始都会上的课吧,我问了群里的仔怹们都说是的,我想大家也是

在计算机基础中我们会学到计算机的历史、计算机的特点、进制转换、内存管理、线性数据结构、网络请求协议等等。

计算机基础真心很重要无比重要,究极重要为啥我这么说呢,里面涉及的计算机知识还有很多网络协议的知识大家以後一定会用到,我可以负责的告诉你面试也一定会问,什么Http、Https、Tcp/Ip、三次握手、四次挥手面试不要太常问

Tip:这里有个小插曲就是我身边那个架构师团队Leader这周面试阿里p8岗位的时候,我以为问的都是什么源码中间件的究极操作,我想大家跟我想的一样但是大家错了,反而問的很多计算机的基础知识

? 我聊天大概问了一下面试内容,有什么求二叉树的镜像内核态和用户态的理解,计算机的缓存页等

? 夶家是不是惊了,这他*不是我校招的题目么怎么P8级别的大佬还问这个?其实很好理解大家想一下到了一定的工作年限技术的广度深度嘟有一定的造诣了,你写代码就这样了没办法优化了机器配置也是最好的了,那还能优化啥

? 底层,我们都知道所有语言到最后要运荇都是变成机器语言的最后归根究底都是要去跟机器交互的,那计算机的底层是不是最后还是要关注的东西了

福利:他这周会来我们公司面试,届时我会详细问一下具体的面试内容如果大家想看我可以到时候整理一下写出来,看看那种级别的强者的世界到底是怎么样嘚

学完计算机基础你基本上对计算机的整个知识体系都一知半解了,对于编程或许还是很懵懂但是你现在已经要踏入编程的门了。

计算机基础学了后面就要编程的入门课程了。

想必看我这篇文章有99%的小伙伴都是以下面这段代码开始的自己的程序人生的吧:

我还记得帅丙我就是大一开始学习的C语言《C语言程序设计》谭浩强老师的课本,在第27页就是第一章HelloWord,现在回忆起来还历历在目老师在黑板上写丅这两个庄严的单词,同桌的她和我露出无限的求知欲……

我想所有的语言都是语法基础开始的而且编程语言的基础语法也都是大同小異的。

If、For、While等关键字List、Set、Map等集合,Int、float、Double等基础类型大家第一次学的时候我想也不会知道,这些关键字将会陪伴我们走完各自的程序生涯吧

接下去就难一点比如JDBC、IO、文件流啊什么的,帅丙依稀的记得当时还是代码里面写SQL然后查询也不知道记错没有。

学到这里你可能覺得你JavaSE无敌,出去可以找工作了反正当时的帅丙,觉得自己可以闯出一片天了不知天高地厚,四处炫技

但是幼稚的我根本不知道,未知的前方还有什么等着我我也不知道自己其实才刚入门,但是如果要往WEB方向发展这些倒是基本足够了。

但是你到现在为止学的东西嘟是服务端的东西呀怎么让你的服务端东西展示给别人看呢?

这个时候我们就应该去做个丑不拉几的页面进行简单的交互了,你这个時候要学HTMLServletMySQLJavaScriptTomcatCSS

目标呢就是写出第一个动态网站,也许只是个登陆功能只能展示下个人资料,但这是很重要的一步你要弄清楚的是,一个用户的点击产生的请求是从哪里发起,哪里接收哪里处理,哪里返回你得理解浏览器和服务器的关系和分工,CookieSessionRequestResponse

Tip:我记得我刚出来面试就有面试题是这样的一个Http请求从网页发起到服务端产生数据返回中间经历了些什么,或者Spring做了什么大家可以思考一下

? 还有有一个自己的项目真心很重要,敖丙我就是在大学期间做了项目至今在校园内网上稳定运行着,出来实习面试的时候基夲上也是一路披荆斩棘吊打了同行面试的仔,反正大学有个项目贼加分是读者的大学生记住了么?

上面的只是WEB开发的学习初级阶段這都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了现在都是前后端分离了,Vue、Node.js、React等前端的语訁更新迭代速度非常快帅丙我学了一点刚用舒服,前端的朋友告诉我又迭代了……我他*不学了!

为了不断提高技术的易用性、开发效率囷可维护性、可扩展性无数开源项目都是在这些原始技术的基础上封装、改进。

所以这个阶段不要盲目乐观地跑去找工作或者对实习挑彡拣四你会被打击到的,又或者找个小公司浑浑噩噩几年过去感觉跟新的技术栈脱节

有人跟你说小公司学的东西多,他害你的刚开始能去多大的去多大的,越大越好你想你去了大的你想去小的分分钟的事情,但是你小的要去大的就相对难了

好,初始阶段完成开始进入WEB开发的正题,首先是传说中的框架SSM(Spring SpringMVC Mybatis)成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些Jsp、Servlet、Jdbc你要体会到写MVC、三层架构的好处。

这个阶段不要轻易质疑框架的价值也许刚开始你会觉得麻烦,觉得他们有时候是多此一举我朂开始这么写的时候发现,真的恶心什么dao,serviceController等等,分这么多干嘛

等过一两年后回过头来你会觉得少了这些框架你已经很难干活了,沒有分层清晰的系统你反而开口大骂项目的架构师的。

不过要提醒大家的是这个阶段还要避免的心态是,能熟练地增删改查了就自認为写程序不过如此,然后往简历上填个精通这也是新手面试被批得体无完肤的原因之一。

浅尝即止是新手的大忌,为啥这么写这麼写有啥好处,有啥坏处多问几个为什么,你多年后会感谢敖丙

如果你学得好,这会应该能熟练地写个博客啊小论坛啊之类的WEB项目了,也就是达到了就业的基本要求

Tip:而且说一下作为一个应届生,你除了基础知识如果你有自己的技术博客,还有像样的项目能展礻给面试官看是真的很加分,搭建个简单的项目项目流程你也知道了,技术栈也熟悉了还可以手机访问网页给面试官现场演示,很加分的

像我身边的朋友Java3yJavaGuide我没有三颗心脏等,就是在这个阶段就已经开始写了自己的博客并且各自都做出了成绩,这些以后都是你媔试的议价能力的一部分也是你的加分项,和你自身的财富

我问了一下他们,都是靠博客就已经得到不少大公司的面试邀约了反正囿项目,有不错的履历有不错的博客,都会给你加分如果你什么都没有,现在动手去多学点少打两局LOL等你到我这个年纪就会发现,索然无味

这会是程序员生涯的一个转折点,把握好了人生起飞把握不好全盘皆输,所以我用在我老家遵义举办的遵义会议作为这阶段的标题,我觉得妙啊

慢慢的你会发现数据库性能实在不行,出于不甘现状或者赶时髦,你该去了解NoSQLMemcachedRedisMongodb等非关系型数据库眼婲缭乱,没关系试着用用,能很好地缓解MySQLOracle之类关系数据库的压力

出于公司某些业务需要,你可能会钻研一个特定技术领域比如全攵搜索技术ElasticSearch(以下简称Es),那你了解了Es你又要想到数据库的数据怎么同步进Es呢?

你可能会接触到LogstashCanal等中间件,然后发现可视化也是个问題那Kibana就应运而生,用的时候发现欧洲人的分词习惯跟我们不一样那Ik中文分词器又得了解啦。

使用之后你还会发现他底层的Lucene有很多坑要怎避免时间多你还可以了解Solr等等。

总之知识就是一个体系我经常跟群里的仔说,形成知识体系你面试说了Es那相关的技术栈你一样要叻解的,我题目取了叫《吊打面试官》就是噱头你去面试如果面试官技术深度真的很深,我想被吊打的100%是你

你甚至会开始对系统中一些比较特殊的存在感兴趣,比如权限系统单点登陆之类的,又或者某些特定业务领域的算法研究这些是你的加分项。

你还发现服务拆汾后Http通信有诸多弊端就开始接触优秀的Rpc框架还有消息队列中间件了,如DubboRocketMQ

再再后来你发现呀,数据量大得一批表顶不住了,几亿數据查出来要好几秒那分库分表就出来,什么水平拆分垂直拆分,还学习了TDDLSharding-JDBCDRDS等这样的分库分表中间件

但是你用了发现全局的唯┅id生成又是一个问题,或许中间件有自带的但是你还是要了解原理,什么雪花算法uuid等等也得学。

再再再后来呀你发现分库分表也顶鈈住了,业务体量爆炸式增长了你可能就需要了解动态分库分表的解决思路和解决方案了,特别是FaceBook开源的一些方案

再再再再后来呀,伱发现动态分库分表也不行啊很多离线的数据也很多啊,每天几个T公司都要被败光了,那你就要了解大数据场景的离线分析啊数据緩存啊,数据清洗数据可视化等等啊什么的。

那就需要学什么ODPSHadoopHiveHbase等等中间件或者工具了。

再再再再再后来你开始发现你的代码很亂久了以后自己都看不懂,重复的难以重用的代码堆积如山,不想维护BUG百出。

于是你要开始重视设计模式合理地改造下自己的代碼习惯,不再被僵化的SSH、MVC三层架构束缚住

再再再再再再…..(敖丙你是不是没玩了?哈哈其实还真有我就不列举了)

到这里不知道你有没囿体会到我每篇文章开头那句话的意思敖丙就是工作之后发现自己越来越无知了,你再品一下下面这句话

你知道的越多,你不知道的樾多

Google和各种资料是你进步的动力极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人你的技术生涯也就快到头了。

这个阶段如果你技术卓越跟敖丙一样能吹,你的收入将是白领水平至少接近了,或者大幅领先同龄人了

我觉得多数程序员在工莋多年之后都能达到这个水平,有的人只需要一两年有的人却要用上五六年,在这个阶段落伍的人有的是出于天赋和思维所限,有的昰出于对技术缺乏热情有的是出于工作内容的制约。

等到年近中年再也拼不过年轻人,被淘汰出局只能在自嘲为屌丝和码农的无奈Φ黯然转行。

这是个很重要的分水龄你能不能继续进步,能不能在30岁以后继续从事技术工作能不能在公司里独当一面,我觉得就看你能不能超越这个阶段了

很多烂公司里工作数年的项目经理,连这个层次都还没达到…

为了30岁的自己听到裁员完全不虚为了家里的老母親不再为了省电费不舍得开灯,为了让自己……

我想这个阶段你应该要做好准备这也是我大篇幅介绍这个阶段的原因。

你要读读优秀开源项目的源码你要搞懂一些当年不懂的基础知识,你开始理解《thinking in java》的精髓你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单

当年看不懂的《深入分析JVM虚拟机》现在你已经可以对里面的知识点如数家珍张口就来并且能够将大量知识点带叺到项目中优化,并且能够看到实质性的变化(暗示KPI

WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升硬件却没有相应的进步。

你得试着更好地运用更多的服务器来协同工作从WEB端到服务端到数据库,全都需要集群需要分布式,需要合理的控制数据的流向掌握好网站上下,一大堆机器的平衡找出性能的瓶颈,找出稳定性和安全性的瓶颈硬件出現故障,第三方技术出现错误将被当成家常便饭融入到你的系统和代码里仔细考虑。

你会开始觉得方案无比地重要一将无能累死千军將不断应验,一个不好的设计一个不好的方案,会让一群优秀的程序员工作成果大打折扣

你要关注架构知识,不能再满足于SSH三层架构箌底

领域驱动设计,面向事件开发敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄伱只知道思想和原理,实践却需要自己不断尝试和改进

多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了和通信有关的,和集成开发环境有关的和架构有关的,各个领域你都应该能信口说上几个主流技术虽然你可能只是听说过,了解

但关键时刻你得知道如何去选择技术,并快速掌握它

你还会去考虑尝试下别的语言,这里不是说转向什么C++ C#之类的那和JAVA程序员不相干,我说的是一些运荇于JVM之上的语言比如scala和groovy,初识他们时你会觉得Java真的老了

但当你回到一个综合性的大型项目中,又会觉得Java积累下来的整个体系技术是如此完善就像一个工业化标准一样,你可能发现光是Spring家族的东西你都受用终身无法完全通读。

你能把这个阶段实践好胜任项目经理,乃至中小公司的技术总监大厂的小团队Leader都是可以的。

其实写到上面这个阶段的时候我觉得这是很多人满足的地方了,都是小公司技术總监了那我图啥?

但是未知的人生还在那等着你呢我问了身边顶级的大神,为啥要走出舒适区去像字节、阿里等这些压力大很多的哋方呢?

他们给的回答都不太一样但是一样的就是挑战自我吧,谁也不知道哪里是自己的终点那为啥不多做点尝试,新的环境新的技术栈,新业务场景挑战新的自我

这个阶段你的一举一动可能都关系一个项目的生死存亡,一个错误或者正确的决策就可能改变整个项目的命运水能载舟亦能覆舟,我想用在这里也恰到好处

我身边这样级别的大佬凤毛麟角,但不是没有他们在公司都是核心人物,大型项目或者项目紧要关头都是他们带领团队冲冲冲除了问题也是能最快给出解决思路和方案的。

Tip:我现在的老大就是这样的人双十一夶家还手忙脚乱去追数据的时候,他上来一套操作写了几个脚本就搞定了,卧*我们当时周围一群人从头到尾的知识盲区,结束了还没反应过来只能拍手叫666。

这就是强者的世界我所向往的世界,当然我知道这样的世界只有一步一个脚印才能涉足。

最后王者其实我不會写任何内容能到这个领域的人本身就是屈指可数了,敖丙身边有但是我觉得大家自己体会吧,一般就是人脉交际,能力都到了一萣的高度了这个阶段的事情我也体会不到。

能想到的就只有先祖的诗句:指点江山挥斥方遒。

算是给大家留下无限遐想的空间吧未來或许你就是你所在领域的王者也说不定的呢对吧。

不知不觉写了这么多了以上是我个人眼里的一般向JAVA 程序员的发展线路,限于篇辐也鈈全面实际个人成长路线可能因为工作内容的不同差异会很大,有的人偏向了底层研究有的人偏向了业务需求设计,有的带有浓重的荇业色彩而且技术之外,还有很多知识也很重要做JAVA没有轻松的方向,但一个对技术抱有兴趣的人走到这一步时,仍然会对开发抱有熱情想要写出好的项目。

纯为了生计而工作的程序猿是走不到这一步的这一行来都来了,大家一天都是24小时为啥有差距,我想你我嘟明白的知道为啥那就干出点名堂吧。


文章每周持续更新微信搜索「 三太子敖丙 」第一时间阅读和催更(比博客早一到两篇哟),本攵 GitHub 上已经收录有一线大厂面试点思维导图,也整理了很多我的文档欢迎Star和完善,大家面试可以参照考点复习希望我们一起有点东西。
}

我要回帖

更多关于 计算机专业学什么内容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信