Java学习路线

【友情提示】
有条件的话直接去培训吧,自学坑多,费时间。
由于知乎现在限制发链接,部分资料就隐藏了,各大机构官网都有,大家自己去找就可以了。不是很推荐本身学习能力不强,就想捞一笔的朋友入行。你会过得很辛苦,然后抱怨为什么别人可以月薪10+k,你却只有这么点。
另外,希望这是我最后一次回答“零基础学习Java”的话题,因为答了一年多,炒冷饭实在没意思,关注我的朋友大概都看烦了。专栏会继续更新,和我一样转行并且渴望进步的朋友,以后专栏见。谢谢各位关注者近一年的关注,你们是我这一年来不断更新、不断成长的动力。
写最外行的技术文章,做最闷骚的程序员。
Java学习路线 - 图1

【开始学习之前】
1.我的学习工具和方法
https://www.bilibili.com/video/av19575190/…
2.回答零基础小白的常见疑问
https://www.bilibili.com/video/av19575265/…
3.如何理解ssh框架
https://www.bilibili.com/video/av19634515/…
知乎用户:如何理解 ssh 三大框架?
4.正式学习前开发环境的准备
零基础如何搭建Java开发环境
https://www.bilibili.com/video/av19943936/…

【日后安装过程中,常见失败的原因】
1.craker.jar打不开。原因:没装JDK就直接装MyEclipse。正确安装顺序是 JDK→Tomcat→MyEclipse/Eclipse
2.MyEclipse破解不了。原因:安装MyEclipse时,没有以管理员身份安装。很多人电脑设了开机密码,是自己独立账户。解决办法:卸载后,右键安装包选择“以管理员身份运行”。
3.视频只有声音,没有画面。原因:不要在网盘直接播放,建议下载后本地播放。另外有些播放器对avi支持也不好,建议用potPlayer播放器,最好的播放器。

【学习路线】

————-热身(会for循环即可跳过)————-

如果你目前连for循环都不知道是什么,请先快速过一遍郝斌老师的C语言教程:
知乎用户:零基础学计算机?
https://www.bilibili.com/video/av8074534/?from=search&seid=6209617726442108025…
https://www.bilibili.com/video/av16334915?from=search&seid=8850884909841364205…

时间安排:
每天3~4小时,2倍速播放,最慢两星期学完。
达标条件:
留一个周末,动手在dev C++上独立敲出99乘法表,即算达标。
备注:
关于结构体、内存分配的具体代码,不用记。只要通过本教程学会for循环/while循环,了解基本的计算机基础知识即可。已经会for循环和while的,就不要学了,浪费时间。

————-JavaSE————-

我的笔记(根据刘意和崔希凡视频)
链接:https://pan.baidu.com/s/1wFZGpXlw-YaDIGi4Sl8nww… 密码:5hqz

刘意Javase
毕向东30天 (部分知识点不懂时,挑毕老师的看看)

JavaSE学习到以下内容时,请参考下方博客进行增强:
对象内存解析:
JavaWeb(1):对象初始化与this
集合解析:
bravo1988:JavaWeb(3):浅谈集合(上)
bravo1988:JavaWeb(3):浅谈集合(上)
反射解析:
JavaWeb(2):初识反射

学完JavaSE,可能会迷茫学了有什么用,后面JavaWeb又学了是干嘛的。所以先看下面的介绍,看完就不迷茫了。
链接:https://pan.baidu.com/s/1deR4ZG 密码:olcb

JavaSE很重要,一定要好好学。但同时,实际使用只有学的10%。比如集合,基本只用ArrayList、HashMap,而且只是简单的add get。尽力搞懂即可。

最重要的是,先往后学。到时你想回头复习,也可以复习。但切忌后面还没学,就在前面耗费苦心,希望一次性弄懂是不现实的。

反正,你现在搞得再通透,过阵子还是忘。

时间安排:
每天4~5小时,2倍速播放,最慢一个半月学完。
达标条件:
1.面向对象很重要,是根基。但是后面根本用不到判断到底是父类方法还是子类方法,父类成员变量还是子类成员变量等一大堆乱七八糟的。面向对象,后面只会用到多态和继承最基本的概念。
比如: Person p = new Student(); Class Student extends Person 仅此而已。总之你担心的,不会发生。但不可掉以轻心,十分的努力才能换回三分的理解。
2.从day12开始,持续根据当天内容画出思维导图,整理知识点。(之所以从day12才开始,是因为面向对象知识点太杂了,不好做思维导图。如果你想做也可以自行做些笔记)

  • • 熟练掌握集合
  • • 熟悉IO和String,很重要,但后面不如集合常用,做好思维导图,方便复习即可
  • • 掌握反射底层原理
  • • 了解多线程、网络编程(这两个后面会补充,尤其多线程,会特别加强)
  • • 正则表达式过一遍即可
  • • GUI跳过,学了没用

备注:
虽然集合和IO内容很多,尤其集合,各种去重,各种重写,但是实际都不怎么用得到。但是要花十分的力气去学,你最后才能掌握3分功力。

如果你还是不知道各个章节要掌握到什么程度,就去看看我专栏吧。如果我写的你都知道,就说明掌握得不错。

如果你不知道如何安排练习,请参考必敲代码列表:零基础Java自学指导

————JavaWeb————

崔希凡Javaweb
随便找一个就业班视频,了解下JQuery和Bootstrap即可,AJAX参见黑马32期JavaWeb day22-ajax。
参考文章:
JavaWeb(5):AJAX与JSON
JavaWeb(6):浅谈JSP
JavaWeb(7):Cookie与Session
Tomcat加强:
https://pan.baidu.com/s/1gCWs7Jsr2qtABXQN7HHegw… 密码:35se
不懂socket的话,先去复习JavaSE的网络编程

jQuery部分先快速过一遍,有个印象。后期觉得掌握不够,再回来学习。目前最低要求是jQuery取值和设置值:$(“#test”)、$(“.class”)之类的操作。

另外,方法不必强记,看完视频有概念后,实际开发时,用到jQuery的话,去w3school之类的网站,关于jQuery的教材都有方法列表的。最直接的办法是【百度】,比如:搜索“Jquery 根据id获取元素”。

JavaWeb基础很重要,我个人也很重视。但是算漏了一个,导致后期吃了一些亏。那就是AJAX和JSON。

问各位一个问题:

  1. $.ajax({
  2. url : "localhost:8080/xx/xx",
  3. type : "post",
  4. data : {name:"hst",age:18},
  5. dataType : "json",
  6. success : function(data){
  7. $("#test").val(data.address);
  8. }
  9. });

到现在是否还有人对AJAX/JSON感到陌生,不明白为什么$.ajax()这个方法的参数是{xxxx},而且里面还有乱七八糟的冒号、引号,{name:”hst”, age:18},甚至还有function()函数?

如果到现在还有疑问的话,就是不合格的。建议把黑马前端36期的JS基础看一遍(就6天,而且知识密度很低,过一遍也就一个周末),对你后面的学习有很大的好处。

JavaWeb阶段如果你不知道如何安排练习,还是参考必敲代码列表:零基础Java自学指导

《闷骚的程序员》专栏中的很多文章,其实都是我自己学习时的心得体会(我看的视频远不止路线里的),多看看,衡量一下自己有没有掌握到我这个程度。

其他机构的视频都大同小异,不要为了那1%的出彩点,去花99%的努力。后期我会在专栏挑一些重点难点作为专题写出来,作为补充。

再强调一遍,先往后学。

时间安排:
每天4~5小时,2倍速播放,最慢一个半月学完。
达标条件:
几乎每一天都要根据当天内容画出思维导图,整理知识点(至少到day19)。熟练掌握JS/JQuery的dom操作、Tomcat目录结构、HTTP、Servlet、Cookie/Session、JSP、四大域对象、EL表达式、基础SQL语句增删改查、JDBC、AJAX,了解分页、过滤器、监听器。完成day14和day24~26练习。
备注:
前端暂时只关注JS,不要求会写页面。后面会安排。什么dtd schema只要知道是什么就好,xml才是重点。稍微关注一下dom4j,自己能跟着视频封装一下小工具即可。自定义标签库什么的随便看看就行,没啥卵用。jdbcUtils小工具的演化要跟上(参考我的思维导图),不然就看不懂这一整块知识点。

————SSH框架(Struts2、hibernate不用了)————

Struts2和Hibernate了解思想即可,完全不用记(尤其配置,不要记,听完就忘掉)。因为记多了会和后面的springmvc、mybatis弄混:

  • • 崔希凡struts2

(衔接视频,前两天看一下。目的是消除你对框架的陌生感)

  • • 刘悦东ssh(和毕姥爷一样,强大而幽默)

(快速过一遍SSH,有个印象,重点学Spring)

  • • SSH2016的Spring部分

学完SSH,先回头看崔希凡javaweb day-17-18-19 day-27-28

手写山寨版Spring IoC容器
链接:https://pan.baidu.com/s/1bqw1kKn… 密码:5h4s

SSH部分的学习要以轻松的心态,快速过一遍,感受一下“配置式开发”的神奇。重点学习Spring。

实在着急的同学,Struts2和Hibernate想跳就跳吧,后期不懂再来。但我觉得就是简单流水般过一遍,又不要求你记住什么,其实花不了几天时间。

Spring很重要,但其实就是个存对象的大容器,我倒并不担心。Hibernate和后面的MyBatis都是Dao层的东西,一般也就是会用就行。

我最担心的是Web层框架。很多人初期抓不住重点。

我们想想,Web层框架的作用在于什么?以前用Servlet就能解决的问题,用框架好处在哪?其实Web层框架无非就是一个比较大的Servlet。但是替我们自动做了很多工作。

比如编解码工作,不然我们还要设置utf-8。

比如自动封装【重点】。我们以前用Servlet,都是request.getParameter()。一个两个参数没问题,但是参数一多,很烦人。而且还需要把get到的参数一个个set进JavaBean(虽然有beanUtils),麻烦!

所以在我看来,Web层框架,非常突出的一个功能就是【自动封装请求参数】。所以希望大家学习时,特别注意框架是怎样封装请求参数的,以什么形式?很重要。尤其后面的SpringMVC,用到的几个注解,切记,切记。

再比如我们之前要通过继承BaseServlet才能实现一个Servlet处理多个请求。而用了框架,本身就可以一个类下面写多个方法,处理多个不同请求。

还有方法处理后,要转发到各个视图(JSP)。框架也可以实现类似BaseServlet的转发功能。

总之,对照着之前Servlet的功能去学。

当然,重点是SSM,不是SSH。【这个阶段,抱着长见识的心态围观即可】

看完上面安排的视频,可以直接去看SSM了。

当然,如果上面刘悦东老师的SSH有不明白的地方,也可对照看看SSH2016。但不要花太多时间。

我知道很多人看完Struts2和Hibernate觉得稀里糊涂,没事,先忘了它吧。记住Spring就行了。

时间安排:
每天4~5小时,2倍速播放,最慢两个星期学完
达标条件:
知道Spring是个容器,能实例化并管理对象,知道Struts2是web层框架,接收并响应请求(着重体会封装参数和转发到视图的好处),理解Hibernate作为ORM框架,可以实现操作对象来操作表记录。体会配置文件对程序的影响。
备注:
除了Spring,其他的都不要去记。尤其Struts2和Hibernate的配置文件,不要记,看完就转身离开。还有引入什么dtd来自动提示xml标签的,不用记,根本用不到…重点是感受和体验。

————SSM框架(重中之重)————

SSM框架:

  • • 黑马32期 李旭 mybatis+springmvc

看完后参考资料
如何理解 ssh 三大框架?
JavaWeb(5):AJAX与JSON

  • • 由浅入深springmvc+mybatis

链接:https://pan.baidu.com/s/1i4DQOZF… 密码:cuaa
(选看,Mybatis不错,层层推进。Springmvc讲复杂了,初学者会晕,暂可不看)

  • • MyBatis源码级讲解

链接:https://pan.baidu.com/s/1htKD5xM… 密码:59yi
(选看,比较详细,挺不错的)

  • • SVN

链接:https://pan.baidu.com/s/1mkf4q84… 密码:hgoq

  • • Maven(打头阵)

链接:https://pan.baidu.com/s/16dZnZyh9U5KnTjnJHISqFg… 密码:uhaa

  • • Linux/Redis快速入门

链接:https://pan.baidu.com/s/1XSAN3bqY-qcDvNTIqZcHAQ… 密码:4y0w
(IDEA和Git只是工作上用用的话,最多三天就熟悉了,不用担心。本质上用法Eclipse、SVN没太大差别)
Lucene待更新,可以暂时看32期的,快速过一遍。虽然后面大项目用到了,但是老实说,一般工作中不做电商项目的话,也不怎么用。即使用了,也不一定你负责。所以我就淡化处理了

注1:
上面的Maven只是打头阵,为了解决新手疑惑。后期还是建议结合黑马32期(或28期,下文有)的Maven视频。因为上面的maven教材虽然接地气,但是内容太散。学习Maven时,记得跟着配一遍。不然记不住。就跟你学习JavaWeb的Tomcat一样,只看视频晕的一比。其实看习惯了也就这样吧。淡定。
建议学完尚硅谷封捷老师的Maven后,先去看一下电商项目day1(比如黑马32期或者黑马19期的电商项目)感受下Maven在项目中的应用,这样你才会真的知道:原来Maven这么重要!然后再回头看完黑马就业班的Maven。
注意区分dependencyManagement和dependencies的区别,前者不引入依赖jar包,只是管理版本;后者会引入依赖jar包。
一般来讲,parent父工程的pom里只做版本的约束,而不引入具体的jar,否则这些jar都会被下面的子工程传递过去,而有些子工程并不需要这么多的jar依赖。
一般打包方式为pom的(其他的还有jar和war),有两种目的,一个是作为parent父工程,统一管理版本号;另一个则是做聚合工程,下面创建一个个module子工程。聚合工程也受parent父工程的版本控制。

Redis学习也结合32期的Redis,但不必全部看,只需看04~05的jedis内容。

注2:
不论是SSH还是SSM,初学者刚开始记不住所有配置是很正常的。通常在公司,是项目经理搭好框架,普通员工只是码代码。所以,不要给自己太大压力。
但是,一定要理解配置的含义。当然,能自己搭,是最好的。对后面看大项目有很大帮助。不然看项目搭环境会懵逼。
到这里,很多同学可能承受不住了,觉得SSH SSM在脑子里已经成了浆糊。这时候,舍弃Struts2和Hibernate,多看几遍SSM。

可以通过下一个阶段的【SSM CRUD实战项目】,以战带练,动手会理解更快些。

请特别注意SpringMVC封装入参、MyBatis中mapper.java接口的入参、mapper.xml的sql语句如何得到参数(${},#{})

请务必熟练手写MyBatis中mapper.xml的sql语句,把最基础的增删改查写熟练。

如果觉得一下子上手下面的【SSM CURD实战项目】有难度,可以先试着花一天时间,专心把崔老师JavaWeb小项目改成SSM,并实现登录注册,相信大有帮助

时间安排:
每天4~5小时,2倍速播放,最慢三个星期学完
达标条件:
理解SpringIoC和AOP,会整合(或者能看懂)SSM。理解web.xml中配置的内容:
1.配置监听器,启动时读取Spring配置文件,目的是项目启动时就要初始化对象放入Spring容器中,不然容器里没有对象,怎么注入Controller、Service等Java对象?
2.配置DispatcherServlet处理请求,配置utf-8解决post中文乱码(get请求乱码要通过更改Tomcat配置文件)。
3.在DispacherServlet下配置SpringMVC配置文件路径。最好设置1,让项目启动时就读取SpringMVC配置文件初始化Controller对象,而不是第一次请求到来时才初始化容器,太慢了。另外,由于通常Spring配置文件会exclude掉Controller包下的文件扫描,所以Spring容器中没有Controller对象,要SpringMVC自己配置扫描,SpringMVC也有自己的容器,和Spring的容器互为父子容器。关于父子容器,后面宜立方/淘淘商城项目中会提到,不是特别重要。了解即可。

专栏预计在12月会更新SSM整合的帖子,帮助大家理解SSM整合时各项配置的含义

熟练理解SpringMVC封装入参和Mybatis的Mapper文件中入参取值和resultType/ResultMap。掌握常见注解、会手写SQL。

常见注解(明白以下注解的含义和使用场景):

  • • SpringMVC:

@RequestMapping、@ResponseBody、@RequestBody、@RequestParam、@PathVariable的含义,熟悉JSON传值和返回值。

  • • Mybatis:

@Param、@Select,了解${}和#{}的异同点(这一点,李旭和尚硅谷Mybatis讲得挺好)

会使用SVN更新和提交,会在Eclipse中配置Maven和本地仓库,了解Redis和Linux,会用Jedis。

备注:
对框架整体有较好的把握(比如我那张MyBatis图),懂配置,知道常用注解。其他的比如异常处理、校验啥的,实在掌握不了就先过一遍。但以后你肯定要用到。尚硅谷的MyBatis讲得很细致,可以看看。由浅入深那个MyBatis也非常不错,格局挺大的。但是SpringMVC前面讲得有点乱,初学者会晕。【遇到逆向工程不要发怵,其实就是配置文件改改的事,就可以根据数据库表生成pojo和xml了】

上面是我路线里的一部分(3/5左右),到SSM过。学到SSM基本也就知道怎么走了。
学完SSM先做个SSM整合小练习,各个培训机构官网都有的。然后去网上找个分布式的项目(大部分是电商)看看,了解一下分布式项目用到技术。
看完以后,了解下SpringBoot/SpringCloud/Dubbo/消息队列,知道有这个东西就行,能深入原理最佳。
然后去看一下微服务项目(微服务项目和分布式项目还是不同的)。
写简历和求职请看这一篇:
Java学习路线 - 图2
推荐一下路线2.0版。简略介绍后期路线安排。
Java学习路线 - 图3
上面是我自学时路线的一部分,还是觉得很迷糊的朋友,可以找我,提供路线指导,能帮你少走两个月弯路。
也可以多翻翻专栏,然后网上自己找找,多花点时间便是。文章都是用心写的,应该对新手挺有帮助的。学习时一定要以自己的感受为准,大V说看书好,你就不顾一切硬着头皮看,最终浪费了时间,那就是自己的损失。适合自己的就是最好的。
祝好。