如果只想看学习路线的话,往下翻到学习路线部分即可,大部分视频都有推荐的学习期限。不过还是建议从头开始阅读,会有收获的。
前提
学习java之前不用先学别的语言(如果学过其他语言,那么上手java会更快),满足下面几点,学会之后基本上都能找到工作。
逻辑思维,写代码主要是为了解决现实生活中的一些问题,将这些问题用代码写出来需要有一定的逻辑思维能力。上学的时候学习不是特别差的,基本都可以。
英语,这个不是主要影响学习的因素,只不过当你想要更进一步提升自己的技术水平的话,就体现出英语的重要性,因为代码都是英文的,并且很多文档也是英文的,所以英语不好就会有些头痛了。
学历,将来就业打算去一线或强二线城市发展,学历最好是本科以上,在弱二线以下的城市中,大专会有一些机会,大厂比较重视学历,部分中小厂只要技术过关,学历会放宽。其他学历劝退,也有例外情况,如果你特别有兴趣可以试一试,但是不好找到工作,除非你的技术特别突出。
年龄,初学者超过30岁且之前的工作跟IT不相关的,就很难入行了,倘若你能承受自学失败的结果,可以一试。
兴趣,兴趣是最好的老师,如果你能看到这里,大多数是对java有兴趣的。
学习方法
记笔记,java知识点太多了,不能全都记住,养成记笔记的习惯,方便将来复习。通过记笔记也能检验自己是否理解了这个知识点,当然,也能锻炼你的打字速度。
动手操作,把学到的代码用自己理解的方式动手敲一敲,不要觉着自己看懂了就不敲了,一定要实践,看懂了不代表你会了,好比看别人打篮球投篮的时候,刷刷的进,当自己上场时,投篮duang duang的铁。
不要抄代码,只有学习第一个代码HelloWorld的时候可以照着抄,其他代码用自己理解的方式来写,写错了也没事,出错之后解决问题的过程无形之中就增加了你的经验。
如何解决问题,程序出了问题之后,如果有报错信息,可以从搜索引擎中搜索该报错信息,然后参考搜索结果来解决。如果没有报错信息,只是运行结果不符合预期,可以通过debug(不会的话用打印也行)来定位问题,定位到问题之后就好解决了。倘若遇到了棘手问题,可以私信我,我有空的话可以帮你解答,私信时请详细的描述你的问题并贴上代码。
温故而知新,当学完后面的阶段再会过来复习之前知识的时候,会有豁然开朗的感觉。
编程的思想,学习的时候多思考为什么,然后把自己的想法用代码写出来,这样有利于培养自己的编程思想,其实我们在学习的时候主要就是软件的编程思想,万变不离其宗,掌握编程思想之后,再学习其他的技术相对就比较容易上手了。语法是次要的,千万不要背代码,你背不完的。
坚持,成功的路上并不拥挤,因为坚持下来的人并不多,自学最大的敌人就是自己了,只要你能坚持下来基本就没有问题。
技术很多且更新的较快,不可能全部学会,因此在平时学习的时候一定要培养自己的学习习惯,这样在实际工作中学习新技术的时候上手比较快。
学习路线
网上资源有很多,这里我做了一个筛选,筛选条件是评价和播放量,除了项目之外每个阶段只列出了1个视频,避免你出现选择困难症。为了保证知识点的连贯性,前6个阶段的视频我都有浏览过,虽然不是同一个老师讲的,但是知识点是能连上的。视频的时间大部分是近两年的,有过时内容的话我在视频链接前面有说明。
如果你想要视频中的文档或代码等资料的话,可以从视频的评论区里面找一找。
Java 基础
Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的。此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在自学 Java 后端之前,不妨先打好这些基础,另外还有 Java8 的一些新特性,也要重点关注,比如 Lambda 表达式、集合的 Stream 流操作、全新的 Date API 等等。
Java300集零基础适合初学者视频教程_Java300集零基础教程
数据库
关于 sql 方面,我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。我建议学 sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的 sql 是非常重要的。在这里我说下我在项目一直秉承着 sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
MySQL数据库零基础入门到精通全套教程_Mysql基础_最常用的数据库
Web 基础
掌握前端技术只能做静态网站,但它页面数据一成不变,而动态网站可以根据数据库中变更的数据实现不同的内容展示,应用更广泛,因此程序员必须要学会做动态网站。使用Java做动态网站,我们需要学习Servlet、Filter、Session、Cookie、JSP、EL表达式、JSTL等做动态网站的完整知识体系,学完可研发出OA系统、内容网站、BBS等。
WEB前端零基础入门web前端线下班级实战视频教程全套_Web前端开发学习教程HTML&CSS3零基础入门全套完整版
Web 主流框架
Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车,我只想说,那是很久远的事情了,我严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。
但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
Web 框架进阶
使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:
- 可读取用户自定义配置文件,并以此来初始化框架;
- 具备 Bean 容器,管理项目的类的对象生命周期;
- 具备依赖注入,降低类之间的耦合性;
- 具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
- 具备 MVC 框架模式。
其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBoot 和 SpringCloud。
Java微服务架构阶段SpringBoot实战视频教程springboot框架_SpringBoot入门学习课程
Java微服务架构阶段SpringCloud实战视频教程springcolud框架学习_springcolud入门学习课程
其它技术
Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。
Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!
Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。
Docker:简直是项目部署神器啊,来不及解释了,推荐书籍「Docker 技术入门与实战」,中国首部 Docker 著作!