张欢老师的java学习路线图
作者:互联网
张欢老师的java学习路线图
张欢老师java学习路线图 .....(前略)但是会总会有一些人在半年之后还记得这些东西,那个时候你再回过头来,你就有能力 再继续往前走了,但是大部分同学都会忘的,这个是人跟人之间的区别,这里我也个你强调一下 怎么样能够让你的基础进步,不要总是让别人来推着你,你一旦离开了培训机构,就没有人再来 推着你了,那个时候基本上工作当中说句不该说的话,跪舔都没人跟你那啥,都是这样的,你可 难问出什么干货了,所以说珍惜这半年的时间,在这半年你想问什么东西,不管是我还是其他的 老师都一定能够给你解答, 第一阶段:JavaSE 图形界面 Java当中不应该以图形界面作为重点,工作从来没写过任何图形界面的东西,java当中什么东西 都要学,这个图形界面不用学,老的AWT,新的Swing,最新的JavaFX,这些东西顶多了解一个事 件监听机制就可以了,不要浪费时间。 Java8 我们的课程是基于JAVA7的,在这个课程设计的时候市场当中使用8 的并不是特别多,但是你不 能够忽略Java8,坦白来说jdk发送以来最大版本的更新就在java8,跟java8相比,1.5简直什么都 不是,我们之前说1.5改动是最大的,那是java8没出,这里面的新特性改动特别特别的大,你要 是不会,活也能干,但你要是会了,你干起来真是相得益彰如虎添翼,而且这个东西的市场份额 正在逐步上升,我建议你在javaSE 11天+18天课程过了以后,看看java8的东西,如果需要指导 意见,问我们的讲师都是可以的 Jvm 你会javaSE别人也会JavaSE,你怎么知道哪些程序员是高级程序员,高级程序员他会研究JVM, 而低级中级程序员他们只会应用,只会写代码而已,相同的代码,两个代码长得一摸一样,你也 这么写他也这么写,写出来的.class文件也是一模一样的,往服务器上一部署,他就能比你的性能 高,这上哪说理去,机器配置一样,环境软件配置也是一样的,代码长得一模一样,结果他的性 能是你的5、6倍那么高,因为他了解JVM,他可以调整这里的垃圾回收算法,这是区别你是初级 程序员还是中高级程序员的一个标志性的技术面之一, 在这里有内存模型,平常上课也画过一些内存图,那就是玩呢,那个内存图我画的太简略了,属 于扫盲性质的,如果要是你对他的内存模型特别了解,以我上课的内存图比例来说的话,这图画 的就太复杂了,咱们现在是初学,没有学到那么深的层次,但是等到以后你工作了一两年的时 候,假如你工作两年了,对于JVM还不怎么知道呢,那你就算是落后了,有两年工作经验的程序 员,一定要对JVM有所了解,包括类加载机制,咱们也会有所介绍,但是只是领你近了一个门, 你需要自己在里面在深入的走,注意我可万分强调,强调好几遍了,不是现在往里深入,而是你 半年之后再往里深入,你现在没有这么多时间,每天新知识已经很多了,我不是让你现在做这件 事情,而是怕你半年之后不知道干啥,逐渐被刷下来, 这里面性能调优什么的,这方面我就不多说了。 其他(录音不清楚存疑) 有些东西不是很常用,但是了解也有一定优势,什么JNI,JNDI,(JNDI)这个词你们在web阶段 会用到,但是JNI的话我估计不会,然后RMI,对这些词有所了解, JavaSE总结 如果后面JavaSE学完了,看着这里面的词,觉得不过也就这意思,没有什么东西,那是你学浅 了,但凡一个变量int a = 10;,他这里面都有深入的东西,JVM是怎么处理这个变量的呢,栈凭 什么是先进后出的呢,这个东西到底是怎么一个原理呢,这里面其实有很多深层次的东西可以进 行研究的,但是现在你一定要把入门的技术掌握好了,我之前带班有同学跟我反馈问题,说Hello world我不会写,我就纳闷怎么不会写呢,我说你写一个我看看,他打开一个记事本以后写上 public class 就问,老师这个为什么是public呢,public是什么意思呢,class是什么意思呢,为 什么第三个单词要跟你的文件名一模一样的呢,为什么我后面要写一个大括号不写小括号呢,里 面 static什么意思呢,void又是什么意思呢,怎么就得叫main,不能叫其他的,这是为什么呢, 这样的话你的Hello world是写不了的,而且你在没有掌握Hello world根本没有写代码的情况 下,给你解释static静态的对对象的生命周期又怎样的影响,这样是学不了的,有些同学会这样, 这是学习方法的问题,你现在应该先把入门的技术掌握好了,但是不算完,你要是想赚更多的 钱,这里面的坑其实很深,你挖的越深,赚的钱越多,我这里强调一点,在JAVA世界中,javaSE 不叫基础,叫核心,这两个词是有区别的,你看英文的资料,从来没有说这是个basic,但是大家 都管它叫做standard,core,都叫这些词,标准的,核心的,只有各种各样的教材,包括我们的课 程,说这是个基础,没错他是一个基础,但他同时也是一个核心,你不要觉得学完基础这东西 后,这里面再也没有其他东西了,你出去工作了,早晚有一天你会返璞归真,回过头来,继续看 JavaSE,我之前给同学做过比喻,我说java他是一棵树,你现在是从树干开始学习,你从地表顺 着树干往上爬,越爬你就觉得这个树开始分叉了,这个时候枝繁叶茂,你掌握的脉络越多,你的 广度越广,你就越牛,但是早晚你会发现这颗树越长越大,而你的能力是有限的,那个时候你就 会返璞归真,你就会回到你的本质上,你会顺着树干爬下来,开始往下爬,研究他的树根,这个 是你正常学习的一个脉络,往往你什么时候研究到树根了,要么是你初学跑偏了,要么你已经工 作三五年了,你要先往上走,学的更多更多更多,把面扩开了,等你以后有了工作经验再往深处 挖,这是关于JavaSE学习的建议 (原版录音8:38到此处) 第二阶段 关系型数据库 后面第二阶段关系型数据库,很多同学在找工作的时候简历当中,都会写精通MySQL,精通 Oracle,精通SQL Server,精通PostgreSQL,凡是听说过的数据库名字全都给你精通写上去 了,那这样的话你很容易被怼,原来我就经常怼人家,凡是这里面写精通MySQL的,上来就说一 个“****”(录音9:09)的问题,一怼一个准,往往都是这样的, 咱们作为Java程序员应该了 解,我们学习数据库,其实只是学了数据库的应用,而不是数据库的原理,而且我们学的重点在 这里,在SQL语句,各种各样的SQL语句你都能写,Oracle里面***(录音9:33)你也都会用,基 本上都是这样的,这对于Java程序员来说已经算是够了,因为真正的数据库调优,有运维的人他 们去做,有专门的人来做这件事情,所以你尽可能的体现自己的优势在Java这里,而在这里面, 你需要了解,你学的只是一个SQL语句,将SQL语句用于MySQL,你在MySQL里面写SQL语句, 在Oracle里面写SQL语句。 什么时候你要是精通了,原来我见过一个真正的Oracle大师,Oracle是一家公司的名字,他们的 数据库也叫Oracle,他们有一个认证叫做OCA,OCP,OCM,是国际认证,OCM是Oracle Certified Master 的缩写,全中国大陆地区OCM认证的人数好像不超过几百个人,我非常有幸,见过其中 一个(笑),他跟我所说的那些东西,我一脸蒙蔽,直到今天我回想还是一脸懵逼,因为这是数 据库DBA专业做的,他们是专业做的,他们一般不写你这样的Java代码,他们写数据库相关的代 码,这里面你可以不要跑偏,但是如果有一天你Java学的差不多了,我就想学习一下也是有好处 的,而你现在都是学的标准的SQL语句,你要先快速上手,这个是第二阶段,在我们课程当中大 概是七天的时间,这里有些数据库,IDE我们把常用的这些名字列了出来,并不是说你每一种都学 要掌握,只要会一个两个就得了,就业班应该用的是这个东西,SQLyog(11:20),简体中文 版,很友善,Navicat用着其实也是非常好的,但是你要是想用Oracle,那你最起码应该会用 PLSQL,这个东西跟SQL语句标准版是不一样的,PL/SQL Developer各种各样的东西,这个是阶 段二。 第三阶段 前端基础 前端基础这些东西都是告诉你怎么样做网页的,但是只是一个应用,跟真正的前端工程师是不能 比的,前端工程师这些东西他们也学,但是他们会学更多东西,你肯不能因为界面花花绿绿特别 好看,就觉得前端挺有意思的,然后你就去做前端了,那你这样朝三暮四是不会学有所成的,一 定要以Java为核心,这个前端呢以后也会给大家进行讲解,只掌握我这里写上的东西基本上就已 经够了,如果你想了解一下***(12:17)语言是怎么回事,****是怎么回事,要了解哪些,基本上 你已经算是跑偏了,那些是前端比较高级的术语,这个是关于前端,有了它网页你就会写了,数 据库你会操作了,网页你会写了,后面我们会将第四阶段JavaEE, 第四阶段 JavaEE 这个东西我来强调几个问题,里面有Servlet/JSP,这个是咱们课程学习的一个重点,但是我经常 遇到很多应届生,想当年我去面试他们的时候他会告诉我我非常熟悉*****(Hibemate存疑 12:47),但是却根本不知道JPA规范,JavaEE是我们的学科名称,他其实这里面并不涉及任何的技 术产品,他这里其实是一套技术规范,更多的厂家它们遵循了这套规范,推出了自己的技术产 品,这里面你需要了解JavaEE是一套规范体系,它是抽象的,而不是具体的,这里面Servlet/JSP 学完了之后你只是掌握了基础的知识,Servlet这里面你应该了解web socket,进行全双工的通 信,跟socket差不多,但是是基于HTTP的,在网页当中能够实现推送消息,而不是请求消息,很 牛X。 后面JSF这个东西比较落后,但是JMS你是应该有所了解的,后面还有Web Service,这个是当今 Web的一个主流,学习JavaEE一定要会Web Service,想当年我毕业的时候我就不会,后来我就 在工作的前几个月,在那学的Web Service,我才知道什么叫做里面的WS,什么叫做里面的RS, 我才首次听说****(13:59)这种东西,Web Service应用非常非常的广泛,不管你是做互联网还 是传统的企业,用的很广泛,企业可能用WS更多,但互联网基本都是RS,这里面有一些规范我就 不说了,什么****,各种各样的***,你学到那里基本上你就知道了 (原版录音14:21) 第五阶段 Web整合 你有可能再来这个班之前听说过,有所谓的****(14:29)SSh,三大框架,那不叫三大,把大字 去掉,那叫三个框架,三大的意思是说掌握了这三个基本上没有其他东西了, 掌握着三个核心基 本上其他的东西都会了,但不是这样,这里struts这个东西你应该会,如果企业要是用你一定要掌 握,我们也会讲,但是这个东西互联网当中很少有公司会用了,Hibemate这是全自动的***(OM 15:00存疑)框架,再往后面Spring Framework,我只说这一个,记住这个名字Spring Framework,当你学到这里的时候越深越不嫌深,你要是能把老师问的跳楼才好呢,你要有这样 的一种决心,这是唯一对得起“大”字的一个框架,什么Hibemate,Mybatis,不用照样能行, 你出去找一个工作五六年的,你去问,你们公司用不用***?呵呵...这样,你们公司用不用 Hibemate?谁还用那玩意儿,你们公司用不用Spring?那不是废话吗,肯定得用Spring啊,是 这样的,当然我说的会有一些夸张,学到Spring的时候一定要越深越不嫌深,当然你要掌握方 法,先掌握基础再往深处走,这个是关于Spring Framework。 再往后面容器我就不多说了,你们主要是学的Tomcat,其他各种各样的容器你要会应用,特别是 Nginx,做**(16:00)代理特别好,当然Nginx一般不会交给你进行使用,但是他的常见操作, 往上传个包什么的,你不能说在那里等运维的人买来冰棍以后再来帮你做这个事,你不应该求 人,应该自己也能做这件事,这个是关于第五阶段。 第六阶段 软技能 IDE 这个阶段你需要掌握一些软技能,你可千万不要小看这个软技能,“神”在细节之中,这个话你 一定要注意,这里面有哪些东西,比方说IDE,还记得这词什么意思嘛?集成开发环境,咱现在用 的是Eclipse,这是免费当中使用最为广泛的,但是全宇宙最好的JavaIDE,是IntelliJ IDEA,咱们 有同学其实也在使用,我也见到了,但是这个东西不是你现在的重点,你现在其实用记事本是最 好的,因为真的会发现这个代码明明写错了,你瞪着眼看二十分钟没看出来,那是因为你代码敲 得太少了,所以说IDE现在还不是重点,但是以后进入了公司,不管他用的哪一个你都需要会用, 你用了Eclipse你会发现其他用起来其实都差不多的,这个是关于软技能 版本控制 SVN和Git,特别是现在Git特别火,你一定要会,你没有必要了解他的原理,但是你平常提交一个 呀,**(17:17)一个呀,出一个分支呀,都应该能够做,我只把关键字给你列出来,这样的话你 好知道这个面,我只告诉你面,我现在说多了可能你也觉得吸收不了什么东西,只把面告诉你, 防止这半年以后不知道应该干什么地 构建 包括这里面构建,早起是Ant,后来现在主流全都是Maven,但是安卓那帮人,他们都非常熟悉 Gradle,Ant是基于脚本的,Maven是基于配置的,Gradle是基于代码的,特别特别牛逼 日志 这个是体现你综合素质的地方,咱们平常自己写点代码什么的,你在这里调试调试运行一把,真 正到服务器当中你没有debug,你只能靠日志,那个时候往往你写一个功能需要二十行代码,结 果你日志居然写了有十五行之多,往往都是这样的,你不要因为麻烦就不写,而且日至这个东西 你不要小看,这里了解一下Log4j和LogBack有什么区别,1.X和2.X有什么区别,什么叫做异步日 志,原来我在公司做开发的时候,就有鲜活的案例,我们的这个程序性能非常的低,然后要搞一 个什么活动,结果性能上不去,后来发现这里面的日志,大家都没有注意这个细节,日志居然用 的是同步日志,没有用异步日志,后来把他配置成异步以后,性能猛然上升,不是说上升好几倍 啊,会上升大概百分之三四十左右,特别特别牛X。 测试 你自己一定要会写单元测试代码,TestNG简单看看就得了,关键是JUnit,这是事实上的单元测 试规范,你写一个代码灵不灵,完不完善,你不要指望公司里面有测试人员来帮你测你的代码, 他们只管测功能测性能,测这个成品,他们是不管你的代码的,记住这句话,不愿意为了一行代 码去写十行测试代码,一旦出现问题,你要排除错误的代码,就不止一百行,我只写了一行代 码,你要想用JUnit测试他你往往需要写十行,你如果觉得这十行不值,一旦出了事,那可不止一 百行,所以说单元测试是你综合素质的一个体现,这里面要强调一下这个, 软件 后面各种各样的软件你浅尝辄止,这里面我强调这个东西WIKI特别是Confluence,这是一个在线 的一个类似于博客的东西,团队的知识库,一般用的是这个东西,做事情有好几种方式,你真正 工作了有人来找你做点什么事,第一,来来来我给你说一下啊,第二,来找一个地方我给你画一 下怎么回事,第三种方式,给你发个链接你自己看一下吧,看完你这事就明白了,这个链接就是 Confluence,文档链接,作为程序员你要做的PaperWork其实是非常多的,纸面的工作,一定要 会写技术文档,这个是对你的一项软技能的要求,一般都是用word,但是现在呢,**(20:30) 开发上来了,大家一般都会用Confluence,用word话你版本更不更新什么的,人家还用着旧版 呢,这都不好弄,用Confluence,在线版。 Linux 这个东西,你没有必要去研究他的内核,当然你研究更好,但是你去应用它,是大有裨益的,这 里面常用的命令你要会,你不能我想查看个日志连tail命令都不会,还得求人家运维帮你,那简直 就是露怯了,然后这里面Bash脚本你一定要会编写,这是最基本的要求了。 Docker 再往后Docker是一个容器,近些年来比较火,你愿意了解一下,有很大的优势。 (21:08截止至此) 第七阶段 框架扩展 在这里面越广越不嫌广,这里面有些东西我们培训当中也是有的,我就不挨个给你念了,念了你 可能也不知道是什么,CXF,与web Servers相关的东西,其实你可以怎么记呢?“磁悬 浮”Shiro是干什么的呢,安全相关,这是一个日语,日语的发音他叫Shiro,他其实是堡垒的意 思,再往后面我的就不多说了什么搜索呀,Thrift,后面SpringBoot Spring 咱们一般如果只说一个Spring,其实说的刚才这玩意(Spring Framework),但是Spring他们 家还有更多的框架,什么SpringBoot Security Data,Spring Data JPA 这简直颠覆了我对 Hibemate的认识,想当年我刚工作的时候我用这东西我觉得太吊了,太灵活了,虽然说性能不是 特别高,但是对中小型项目来说,用起来贼爽贼爽的东西,这里面就涉及到一个面的问题了 RPC Dubbo这东西我跟你说一下,这东西是马云他们家出的,马云他们公司有一个叫梁飞的人,这个 人带领了其他的五个人总共六人小组,研究出了Dubbo这么个东西,内部也在使用,后来用着用 着他们就觉得,我们有更好的想法,想创造一个能够适用更大场景的新品,就把这东西扔掉不要 了,怎么不要了,把它放到**(22:48)上面开源了,这东西就不再维护了,一直截止到2012年, 不再用了,然而他并不是废弃了,其他的一些公司,像什么京东啊,当当啊,他们把这个Dubbo 这个东西捡了起来,如获至宝的跪舔,哇,这东西太牛逼了,我们可以稍微改进一下,什么 DobboX之类的,这都是跪舔,都是这样的,通过这个事情你就可知,阿里巴巴在Java世界中, 基本上是国人的骄傲了。包括Jackson还是FastJson,我忘了是哪个了,也是他们公司出的,世界 当中都是有人用的,他们丢弃了Dubbo了以后用的叫HSF,叫“好舒服”,内部叫这个,有点猥 琐,但是内部真的是这么叫的,问阿里的技术人员,“听说你们用好舒服是吧”,“对,用的是 这个”他们都能听懂,这是内部黑话,这个东西他们是不开源的,所以说市场当中开源的Dubbo 居多,但是这里面ZeroC Ice是在国际当中有着最强性能的,比你Dubbo更加牛逼,而这个东西学 起来成本会比较高,Dubbo很简单,国人写的,而且有中文官方文档,这是个好事,学起来可顺 了。 序列化 这里面什么Gson 什么Jackson、FastJson、Protobuf,这其实叫protocol buffer,序列化就没 有比它更快的,这个东西特别特别牛逼。 Netty 后面我说一下这个,Netty这个东西,他就是NIO,用它写出来的,好像是一个韩国棒子写的,没 记错的话,他写了一个Mina,这个东西用来进行Socket高性能通信,后来他写完以后跟阿里的情 况差不多,他觉得这个东西已经趋于成熟了,但是我有更好的想法,像创造一个更牛逼的,就把 这个送给阿帕奇了,给了阿帕奇软件基金会,然后他自己写了一个更牛逼的就叫Netty,Netty这 个东西如今简直是如日中天,这个东西罕逢敌手,但凡是Socket通信当中,你们之后也会自己编 写Socket,但是工作当中大家都用Netty, 全都是Netty,这个性能贼高贼高,Dubbo底层用的 就是它,好多外国框架底层用的也是它,可见这个棒子同学有多牛逼,但是他也做过丢人的事, NIO这个东西出来了以后他编写了Netty,应用的非常好,结果后来JDK1.7除了NIO.2,他把这个 东西拿起来以后呢,觉得异步更好,他就想把这个Netty升级一把, 推出一个5.0的版本,结果 玩砸了,这个5.0版本出来以后,不是很认可,性能反而下降了,说明他这方面没有设计好,具体 什么技术原因他也没说,于是就从官方网站上把Netty5.0版本又给下架了,曾经用那些5.0版本的 人就全都骂娘了,这是他干的丢人的事,但是总体来说Netty4.0这个版本还是相当相当牛逼的。 第八阶段 量级提升 这里面作为一个Java程序员是没有必要掌握大数据技术的,你不要说“大数据,好牛逼的噻”, 他是不一样的技术方向,但是这里面有些东西你要是掌握了,对于你是很有帮助的, Cache&NoSQL 比如说这玩意,“Cache&NoSQL”,这个东西,什么Redis,咱们后面就会讲Redis,把它作为缓 存,比方说新浪微博,你给他点一个赞,他马上就能收到通知,他怎么就性能这么高,他的数据 可不是保存在数据库里的,要是保存在数据库里面就算你是SSE,那又能快到哪去呢,不如内存 块,在内存当中,部署一个Redis集群,新浪微博拥有中国大陆地区最大的Redis集群,这是2015 年,现在怎么样不知道了,他们这里面的集群是规模最大的,这里是Redis,它是一种 ***(27:03),一般都是用来进行缓存的。 其他 MongoDB文档性的存储,性能贼高,这里面都是一些量级提升,至于刚才的Hadoop呀, ZooKeeper,咱们也不学ZooKeeper,动物园管理者叫ZooKeeper,Hadoop就是大象,Spark 是那个闪电,Storm风暴,什么蜜蜂,麒麟(Kylin),麒麟是国人写的,Kylin.apache.org,里 面专门有一个中文版,你只要点一下,整个网站都是中文的,这是国人的骄傲,也不是说咱们中 国人什么都写不出来,咱们也会有一些独创的技术被世界所使用,只不过跟其他的相比比较少, 这个也是期待你们将来,我已经没戏了(笑),这里面消息队列各种各样的MQ我就不多说了, 第九阶段 高层招式 UML 我这里要强调一个问题,你不要觉得项目经理就是你的出路,你不要觉得你当了项目经理你就很 牛逼,不是这回事,我可能之前已经说过了,项目经理那个叫小转行了,转成业务方向了,不做 技术了,你觉得程序员一定就不能做程序员吗?那是迫于行业当中的形式,也是你自己的选择, 更多的是你自己的选择,我之前也说过了,很多人到了三十多岁不做程序员了,觉得做程序员很 低级,那是你没有见过高级程序员,高级程序员吊得很,项目经理跟人过去点头哈腰的,你看这 东西能做吗?能不能给我们这提前一下呀,求着人家过去办事,人家那写起代码来简直那是, 锣 鼓喧天鞭炮齐鸣,红旗招展人山人海,那真是这么回事,所以说你如果技术牛逼你在团队当中的 位置就会提升,什么架构师,那都是技术方面的,而项目经理跟架构师没有谁高谁低,这里面, 项目经理是业务方面的,架构师是技术方面的,这是两条路,你本来是个程序员,以自己技术作 为突破口进去,然后你要跟随自己内心的选择,你是想做业务还是想做技术,你本来就是想做业 务,你就是想跟客户一块出去喝酒,那这样的话你做出了自己的选择,不做了,你不能说技术做 不下去了,那是你自己的选择,这是我的态度,仅供你参考,如果你不喜欢跟客户打交道,不喜 欢跟他们签合同点头哈腰的,好像两杯酒喝下去这两人就非得死在同一天不可,我没有这种习 惯,我就想做技术,那你就死钻这个技术,你往上面你做架构师,从初开,到中开,到高开, (29:35)再到架构师,你再往上面走什么首席架构师都是你,首席技术官都是你,你照样牛逼, 这是我给你强调的一点,而UML是架构师的基本课程,你作为程序员也应该懂得什么类图,什么 时序图,什么部署图,你都应该懂,你这些东西不懂对你写代码一定影响都没有,但是你不能没 有一个上进心吧,不想成为架构师的程序员不是好程序员,郭德纲曾经说过,不想当厨子的司机 不是好将军,所以说你一定要有一个上进心,你们是不是还在琢磨这仨有啥关系呢? 设计模式 后面设计模式这个东西,其实它没有什么门槛,你现在其实就能买一本书,里面说设计模式,这 里面六项原则,二十三种设计模式,这东西你掌握起来其实不难,这些都是武功招式,但是就看 你的内功是多少,你如果要没有内功,只会比划那些招式,那你怎么比划都是没有用的,那如果 你要是虚竹一般,无崖子七十年功力注给了他以后,打一拳,就相当厉害,这里面你内功不够学 完以后可以说白学,你就知道这花样是这么回事,但是你用不出来精髓,因为你的代码没有十万 二十万的,你写什么设计模式,那只是玩呢,你可以学,学完以后你早晚有一天会发现,“工作 两年了我才发现,哦,原来设计模式怎么牛逼呀,我都会了这么多年我才知道他原来这么牛 逼”,这个时候你已经升华了。 其他 后面这里有一些技能,重构,敏捷开发,***(31:16),软件工程,这些都是一些高层招式,这 里面很多东西都是一些技法,以及一些理念,软件工程,我相信咱们班也有一些软件工程相关的 专业,可能不多,软件工程这里面有什么东西呢,瀑布模型啊,螺旋模型啊,各种各样的这些模 型,你如果相当项目经理这些东西都很有用的。 第十阶段 底层内功 这是一个无底洞,一般初学者,我当初上大学的时候什么数据结构,算法,这些我们都学, TCP/IP我们不学的,Linux内核不学,但是这四个数据结构、算法、编译原理、操作系统,都是本 门课程,我当年就没有好好学,因为当年我觉得学了这些东西对写代码丁点帮助都没有,然而后 来我工作了,我发现身旁有工作十多年的大神,在地铁当中,我在地铁里面用一个ipad在那看视 频,他在地铁当中拿着也是一个ipad,里面写的算法导论,他写的是这个东西,这个时候我才知 道想当年上大学的时候高校交给我的编译原理是多么有用,操作系统多么有用,但是那个时候我 再学我已经没有时间了,我天天工作压力那么紧,想学点什么东西太难了,这个是阶段十,这里 面是无底洞,你如果要是对于TCP/IP协议非常了解,那基本上网络方面罕逢敌手,Linux内核,刚 才说了一个应用,这里面内核你从1.0版本你就开始看,那操作系统基本上没有人比你更懂, 总结 所以说这张图,咱们现在学的东西在哪呢?(基础知识)也不能说都在这,这里也有一点,你不 要担心,只要你在Java的道路当中走下去,在座的各位,都会比我牛逼的,都会比咱们一般的程 序员牛逼的,我现在给你的图,你现在看起来我相信你内心没有什么感觉,但如果要是说,(有 感觉是吗?压力好大是吗)我的意思是说你应该有很多看不懂的东西,不知道他是干什么的,没 有这方面的感觉,你出去工作,你被耽误个一年两年,你周围的那些一块出来的人,工资蹭蹭的 往上涨,你开始捉急的时候,你再过来看这张图,你就会觉得有一个救命稻草,反正我中间是被 耽误过,耽误过一年多,那个时候虽然说技术没有长进,生活方面是有长进的,懂得了很多人生 道理,就当是宝贵经验了(34:04),但是技术确实是被耽误了,这是一个路线图,我可强调一 下,可不是你现在回去就买一本TCP/IP协议就在那啃,那样的话真是自杀行为,你回去买一本 Linux内核就在那啃,真的是自杀行为,不信你就买一本试试,也就百十来块钱一本,挺厚的,跟 字典似的,字又小又密,纸张还薄,它还特别厚,你买一本真的,要是自杀的话,你真得要珍爱 生命,三思,我再说一下我为什么要跟你说这个路线图,不是为了跟你装逼的,跟你们说我多牛 逼,想当年我做过什么东西,我向来觉得我当年是牛逼也好怂逼也好,跟你其实没有什么关系, 我是一个老师,我过来讲这个课,跟你传授一些基础的知识,我当年多牛逼,就算我说的“啊, 老师你果然好牛逼”,那你的技术就涨了吗?你没涨,那牛逼都在我的身上呢(笑),这个都是 我曾经的事迹,不是说我把这个牛逼吹给你以后你也能牛逼了,你感受一下牛逼之气,你也去那 身散发着牛逼的味,不是这样,所以说跟学生装逼不叫做本事,有本事跟同时装逼,跟一块开发 的同事看谁厉害,那才叫本事,所以说不是为了跟你们装逼的,这里面随便拿点东西,你现在不 会,但早晚有一天你会超过我,那个时候你再回来鄙视我,我不也得听着吗,不是为了跟你装 逼,而是为了把这些东西交给你以后,半年以后找工作,再好的工作,三五个月过后新鲜感就过 了,逐渐逐渐你这份工作做腻了,你周围人都涨工资了,你想跳,你会发现,我的技术好像跟跳 工作之前差不多诶,没怎么涨,怎么才能涨呢,问周围同事吧,没有人能告诉你,也不是绝对的 啊,有些人会愿意告诉你,但大多数人都不愿意告诉你,他们特别鸡贼,这我是把冷话说给你, 我说或者不说事实都是这样,这是给你分享一个路线图 我不希望说,明天下午我就回到顺义了,我走了以后你也不认识我我也不认识你,你离开了传智 播客以后什么助教老师什么班主任,后面的讲师,大家谁都不认识谁,你离开传智播客我们跟你 的合同已经到期了,你走你的,爱怎么着怎么着,传智播客再也不管你了,要是这样,那就不是 做教育了,我们做教育的都有一个怎样的心,什么叫教育,什么叫做服务,这里面我们注重的是 教育理念,小学老师从来教你的东西没有说出了小学就没用了,后面还是有用的,这才是教育, 什么叫做服务呢,你处去饭馆吃饭,你在饭馆里面跟服务员吆五喝六的,你这个东西怎么这么 咸,他都跟你点头哈腰的,你一旦除了这个门,一旦走了出去,他就咱也不管了,你不消费你不 进我店门,在门口渴死了饿死了,跟我们饭店一点关系都没有,这个是别的行业,但教育不是这 样,所以我不希望后面,不管是半年以后还是什么时候,出去了以后你会发现,我已经工作两年 了,那些应届生怎么跟我的钱是一样的呢?这领导会不会办事呀,不行这领导是一坑比,我得跳 槽,你还是那个钱,是不会涨的,你要是想涨钱,你不要去像别的行业似的看着有什么套路,不 要研究那些东西,把你的技术提升上去,你就算这个人嘴笨,脑子木,太耿直,做事很作,但是 你的技术牛逼,到哪都能吃饭,这是我多年来的一个信念,这个方面我从来都没有说被谁鄙视 过,从来没有,但是这个事有时候我确实做的不是很好,特别是人际交往这方面,我可能就是太 过于耿直,经常得罪人。 我把这个图分享给你,目的就是为了你离开传智播客之后,还能有一个念想,而那个时候你往往 已经忘了今天坐在这跟你装逼的这个人是谁,这个是没有关系的,你只要把这个图还能存的住, 你把他上传到百度网盘,什么时候偶然间看见了,能够对你今后跳槽,你打开这张图看看,当时 是这张图里我会这些东西,后面我好像又多了一点东西,你心里面就已经有底气了,你就到项目 经理那边,“经理啊,我觉得咱们需要谈一下。”他如果要是有心留你,那就会给你涨钱,如果 说“你出去也是这个水平”你就走,你只要有技术底气,你扭头走了你就会涨钱,你不要相信什 么“在我们公司磨炼一下不是也挺好的吗”都是说辞,只有涨钱才是诚意要留你,不涨钱你就 走,但前提是你技术得牛逼呀,你天天就做这点东西,不但没学新的东西,老的东西还都忘了, 但这样的话一跳,你就失业了,这不是开玩笑,真的是这样的, 41:58开始 书单 我所推荐的书没有从入门到精通,但是也并不是每一本书都推荐,这个是我自己的书,有同学问 老师你为什么没有对象,我的回答就是看这,你看这就知道为什么我没有对象了 Java编程思想 这里面编程思想这个东西不适合入门,你要是找一些过来人,“我想学一个什么东西你帮我推荐 一点入门的书吧”,上来凡是给你推荐这本书的都是在怼你,你就可以啐他走人了,他是在跟你 装逼,如果要是说你没有任何的基础,我是说你真的没有基础,你买一本这个书,你是很难入门 的,我当年自学了JavaSE我在看这本书我都会觉得很困难,我工作有一段时间了,得一两年之后 在看它,“哦,这里面的意思我都能懂了”是这样的,你问的那个人他当初就是入门学这个,学 完了以后经验上来了,再看高端的书籍就能看得懂了,他能够融会贯通了,然后故意拿高端的书 籍来打压你,好显的他很牛逼,他会跟你说我就是靠这个入门的呀,确实你如果要对于有三五年 经验的人来说,这书确实没有什么,东西我都可以掌握,但是你零基础的话看这个,他是在怼 你,但是我现在仍然还是要推荐这本书,因为这种书他是常读常新的,你今年读跟明年读感觉就 不一样,当然你今天回去买一本,明天京东就能给你送过来,今天晚上11点之前下单明天就能给 你送到手,京东物流很牛B,背后有一个**(43:54)系统,这本书买完了以后,你明天看跟后天 看,感觉是一样的都不懂,但是呢你如果要是明年看跟后年看,那感觉就是不一样,会有醍醐灌 顶的感觉,这个Java编程思想它是基于JDK1.6的,但它不是介绍新特性,这里面真的有一些干货 的。 Java核心技术 我联系过他们出版社的责任编辑,然后编辑跟我说这个中文第十版只有卷一没有卷二,这个卷二 他们还没翻译完呢,现在还没有中文版面世,他们正在进行翻译,技术文档的翻译特别困难,这 个成本是比较高的,不是说会翻字典会个单词就能翻译了,你还需要有程序经验,你要没有程序 经验,没有真正代码开发经验的高级程序员,你翻译这个技术,语句都不通顺,你就不能恰好的 表达这个意思,这个是关于Java核心技术,这两本书摞起来真的比圣经还厚,圣经的新约旧约也 就那意思,你这两本书《编程思想》《核心技术卷一、卷二》,三本书摞在一起比那个还厚,我 之所以推荐给你不是让你回去买的,马上坦白说我现在不推荐你买,浪费那个钱没有用,你有这 个百八十块钱的干什么不好,等到以后你们工作一定要刷他,刷完以后这个东西它会帮你查漏补 缺,你才算是有一个固本修源,这些东西很有必要。 Java并发编程实战 Doug Lea这个人相当有名,JDK的作者之一,JDK里面的java.util.concurrent,JDK1.5引入的一 个并发工具包,基本上里面所有的类都是Doug Lea,这个人给你进行开发,而这个人参与写了这 本书,注意是参与写了这本书:Java并发编程实战,这是面向中高级开发工程师的,初级的人 看,他会觉得比较费劲,中高级在并发这一方面这就是必读经典,人手一份。 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》 我之前跟你说过,有一本国人难得的精品,就是《深入理解Java虚拟机》,虽然名字叫做深入理 解,但其实呢也不是特别深,但是确实在JVM这方面他是难得的国人原创的精品,而不是翻译过 来的,等到你后来有了工作经验,想了解一下JVM,这本书必读,不能说必读吧,反正我是非常 推荐的,你能看懂,而且看完了也真正有用,这才是好书。 非技术类(人月神话,人件等) 这里面也有一些书,他不是技术的,比方说人月神话,那你猜这说的是啥呢,登月是吧阿波罗计 划,不是,“人月”是一种软件工程当中的计算单位,一个人工作一个月,它的这个生产力单位 叫做“人月”,这个人交给你了,在你这干活一个月它能做多少活,这样的生产力度量单位叫 做“人月”,这个是关于软件工程的,包括“人件”和它也是一样,这不是骂人,这 叫“Peopleware”这里边呢“人月神话”是跟工程相关的,编程珠玑,大数据时代,这些东西基 本上它都不是技术,里边什么技术名词都没有,但是呢它是来增加你文化底蕴的,你出去找工作 啊在电梯里边,人家说“最近加班真是太要命了,本来觉得这个项目特别赶,结果给我们添加了 两个人以后反而比原来更慢了,唉呀人月神话说得真没错,真是没有“银弹””。什么叫银弹, 银质的子弹用来杀狼人的,西方的神话,这里面告诉你什么叫软件工程的焦油坑,怎么就没有银 弹了?明明你这个活干不完,给你加了两个人手以后怎么速度反而变慢了呢,这都有软件工程的 原理在里面,这个是关于一些非技术方面的。 官方类(Java虚拟机规范,Java EE 7权威指南等) 然后有一些是官方的,比方说这里面有这个Java虚拟机规范,这是规范性的东西,包括后边Java EE 7权威指南一、二,这可不是入门教程,它里面东西也比较入门,但它里面不会有什么练习 题,基本上可以认为是官方书写的,类似于白色书,当然最为权威的是他的在线文档,全都是英 文,那我现在这些书基本上都是中文。 其他类 这边也有一些入门书籍,没有从入门到精通,但这里有一个****(48:50),这本书我基本上不太 推荐,我当时初学,自学的时候就看过它,现在发现这里面就有一些东西错的,有些东西过时 的,所以说你尽信书则不如无书,所以说一定要用辩证的思想,里面的每个代码看完了,你要是 不敲,就发现不了他其实有地方写错了,所以说这里边是强调咱自己的一个敲代码的重要性。 这里面大象这本书讲的就是UML,国人经品,然后像这个书,这个书也是JavaWeb的一个比较入 门的书,李刚写的,大红书,这个是我的书单,对你呢只是起到一个参考的作用,不是说你回去 以后京东下单,这么多本书全都买回来,那你是成为不了大神的,你应该只买一本,随便哪一 本,非技术的不算,买了一本去啃,不然的话你买的书越多你会发现,顶多也就买书的时候你比 较兴奋,然后就一直在那放着了,然后发挥出的第二作用就是垫桌脚,那基本上就这样,垫桌脚 太厚了那就撕点,不够那就再垫点,基本上也就这点意思了,这个书单只是给你以后作为参考, 仅供参考,不是说这里边都是必读的,有些书确实都是精品,像这本《Effective Java》这个必读 经典,但是有些书其实是比较垃圾的,啊像是就是这个这玩意,《锋利的jQuery(第二版)》也 就是个入门,入门的小手册也就这个意思,这里面有些书还不错,代码整洁之道,一直到今天还 有同学的包名首字母大写,代码整洁之道,让人家马丁大师好好数落数落你,感受一下大师风 范,这个是书单。 (50:49后略) 附录书单: 书单较为片面,仅供参考。并非每一本都推荐。 1. 《Java编程思想》 2. 《Java核心技术:卷I(第10版)》 3. 《Effective Java(第2版)》 4. 《Java并发编程实战》 5. 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》 6. 《设计模式之禅(第2版)》 7. 《深入理解Java 7:核心技术与最佳实践》 8. 《深入理解OSGi:Equinox原理、应用与最佳实践》 9. 《深入理解ElasticSearch》 10. 《Java虚拟机规范(Java SE 8版)》 11. 《写给大忙人看的Java SE 8》 12. 《Java 8函数式编程》 13. 《Java 8实战》 14. 《正则表达式必知必会》 15. 《SQL必知必会》 16. 《人件》 17. 《人月神话》 18. 《编程珠玑》 19. 《编程珠玑(续)》 20. 《大数据时代》 21. 《高效程序员的45个习惯》 22. 《代码整洁之道》 23. 《代码整洁之道:程序员的职业素养》 24. 《重构:改善既有代码的设计》 25. 《Maven实战》 26. 《Redis实战》 27. 《Spring Boot实战》 28. 《MongoDB实战》 29. 《Hadoop实战》 30. 《Netty实战》 31. 《Netty权威指南》 32. 《实战Gradle》 33. 《Java EE 7权威指南:卷1》 34. 《Java EE 7权威指南:卷2》 36. 《轻量级Java EE企业应用实战》 37. 《基于Apache CXF构建SOA应用》 38. 《Java微服务》 39. 《大型分布式网站架构设计与实践》 40. 《Docker技术入门与实践》 41. 《大象Thinking in UML》 42. 《锋利的jQuery(第二版)》 43. 《Oracle WebLogic Server开发权威指南》 44. 《鸟哥的Linux私房菜:基础学习篇
标签:张欢,这个,Java,里面,东西,什么,路线图,程序员,java 来源: https://www.cnblogs.com/q1359720840/p/15848609.html