大家好,我是张讨嫌。现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了。大部分的博主推荐资源,也就是把播放量高的视频说一遍,水一期视频,没有一条很清晰的学习路线。
所以今天我的这个 Java 学习路线就做做减法,给大家来个一条龙服务,Java 要学的知识点、对应的最佳学习资源和预计要花费的时间,都安排的明明白白的,不用选了,有计划了,也别再迷茫和纠结了,就无脑跟着学就行了。
我还在文档中整理了链接,也不用自己搜了,还有思维导图。
实在太长了,没办法全部展开,只能放个大纲了。。。
首先呢,我们要了解 Java 的应用场景和就业方向,看看和自己的学习目的是否一致,目前,Java 的岗位需求多,是后台开发的主流编程语言,功能强大,还是很值得学习的。
那大家可以看我的视频了解:https://www.bilibili.com/video/BV1y3411r7pX/
培养兴趣、快速上手
一定要持续学习,不能断!
跟着书上的例子敲代码后,自主编写代码,并完成课后练习。
学完了 Java 基础后,有些同学会感到迷茫了啊,感觉好像啥也做不出来,不知道下一步做什么,我这一身的本领该如何施展啊?
不要慌,也不要急着去学新技术,接下来我们要多用 Java 来写代码了,巩固基础,但是写什么呢?
当然是数据结构和算法!
想学好编程,计算机基础知识要学好。
比如算法,是程序员的灵魂。学好算法有助于我们理解程序、开拓思路,因此也是很多公司面试时考察的关键,在找工作前,还是要刷个上百道算法题目的。
我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 的基础。
那直接用 Java 来写算法题目,一举两得,岂不美哉?
建议大家去阅读 《Java 核心技术卷 1》,这本书堪称经典,是帮助你复习巩固 Java 的不二之选,其中图形界面章节可以选择不看。
之后可以刷牛客的 Java 练习题,检验自己的水平,我当时刷了两遍。
学算法一定要多思考、多练习!!!
在复习 Java、巩固基础的过程中,每天可以坚持用 Java 做 2 - 3 道算法题目。
不用担心看不懂,直接进入 LeetCode 学习板块 LeetBook,提供了免费的教程,文字、图解、动画讲算法、在线练习应有尽有,从 0 开始,跟着学习基础知识、跟着教程刷一些同类题目,培养算法思路。
之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。
有条件的朋友也可以试着参与竞赛,没什么门槛,可以帮助你集中精神,而且周赛的题目还是挺友好的~
在巩固基础期间,我建议大家多去了解计算机基础知识,比如操作系统、计算机网络。
但这一块知识说实话挺枯燥的,对吧,你说说我现在项目都不会做,你又让我看这些理论,是不是想让我头秃。
我的建议是,可以先看有趣的课外书,比如《图解 HTTP》等等,对基础知识先有个大致的印象,等后面有时间了再系统学习。
比如还在校园就跟着学校的进度学习就成,自学的话可以看下 《计算机网络微课堂》、 《清华操作系统原理》视频,有实力的小伙伴,能看懂大黑书就更好了。
巩固基础要花至少 1 个月的时间,当你读完《Java 核心技术卷1》并且不用查询文档也能熟练地用 Java 做题时,就可以接着往下了。
面向薪资编程,学习实际工作要用的技术,并能 独立 做出一个具有完整功能的 Java Web 项目。
企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 MySQL 数据库是目前的主流,也是面试时的重点。
其中,SQL 语句编写 和 设计数据库表 这两个能力一定要有!
比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字段类型。
这就要求大家多写 SQL、多根据实际的业务场景去练习设计能力。
Java 之所以能成为主流的企业开发语言,很大一部分原因是它完善的框架生态,用好框架,不仅能够大大提升开发效率,还能提高项目的稳定性、减少维护成本。
开发框架是后台开发工作中不可或缺的,也是面试考察的重点,一定要好好学!
不知道 Java 能做什么的朋友们,学完开发框架,就会有答案啦。
下面给大家推荐的都是企业中应用最多的主流开发框架,知识点比较零碎,就放在一起讲了。
由于技术较多,且框架之间存在一定的联系,因此建议大家看同一系列的视频教程(尚硅谷、狂神说等等都可以),以保证学习内容的连续以及体验上的一致。
学这些技术的时候,千万不能懒 !一定要多记笔记,并且跟着老师写代码。原理部分不要太过纠结,先以能跟着敲出代码、写出可运行的项目为主,有些东西做出来也能帮助你更好地理解理论。
学习顺序挺重要的,建议按我推荐的顺序学,不要一上手就学 SpringBoot。只有先学习下自己整合框架的方法,才能帮你理解 SpringBoot 解决的问题,感受到它的方便和高效。
Maven / Gradle 当工具用就好,面试基本不问,跟着框架教程去用就行了,先不用花太多时间去深入学。
开发不规范,同事两行泪。
开发规范是团队开发中必须遵守的,有利于提高项目的开发效率、降低维护成本。
简单过一遍大厂团队的规范手册就好了,以后做项目的时候能想起来的话就去使用,或者从书中、网上查规范,再去遵守。
项目做得多了,自然会养成好的习惯,不用刻意去记(毕竟每个团队规范也不完全相同,背了也没用)。
此前大家可能听说过 GitHub,一流的代码开源托管平台。
Git 和它可不一样,是一个版本控制工具,可以更好地管理和共享项目代码,比如把自己的代码传到 GitHub 上、或者从远程下载。
无论自己做项目、还是团队开发,Git 都是现在不可或缺的神器。
每个命令跟着敲一遍,有个大致的印象,会用即可,用的多了自然熟悉了。
企业中的很多前后台项目都是部署在 Linux 服务器上的,因此很有必要熟悉 Linux 的操作和脚本的编写。
后面学微服务、学架构都是在多台服务器操作,如果你不熟悉 Linux,会有点吃力。
多动手实践,建议自己购买一台云服务器,并且在本地搭建 Linux 虚拟机环境。
一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。
每个命令至少要跟着敲一遍,了解它们的作用,并通过自然地练习,熟悉常用的 Linux 命令。
记不住没关系,用文档查就行了。
先会用,再理解。
虽然 Java 程序员面试时基本不会出现前端相关问题,但是在企业中,往往需要前后端程序员配合完成工作。会一些前端,不仅可以提高你们的协作效率,还能提高自己对整个项目的了解和掌控力,甚至能独立开发出一个完整项目!这点也是能给面试加分的。
不需要学习太多的前端技术,熟悉下基础的前端三件套,了解前端是如何向后端发送请求来做数据交互的一般就够了。有时间的话可以学下 Vue ,是比较容易上手的主流前端开发框架,Vue + SpringBoot 还是很香的。
参见鱼皮原创的前端学习路线:https://mp.weixin.qq.com/s/HbzLEt6NOP9Is9F3GOnbUQ
学习更多企业级开发技术和编程思想,能够结合多种技术,独立开发出架构合理的完整系统,解决实际问题 。
要了解为什么需要这个技术?什么时候用哪些技术?
设计模式是软件开发中解决一类问题的通用方法。
使用设计模式能让你写出更优雅、可维护的代码,也正因如此,很多框架源码都用到了设计模式,你不学很难看懂。
先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。
除了框架外,企业项目开发也会用到大量独立的中间件,以解决某些实际问题,比如提高项目的性能、提高项目的稳定性和可靠性等。
下面分享几个最常用的主流中间件。
学会如何使用中间件并不难,先能够独立使用,了解他们的应用场景;再用 Java 来操作中间件,和项目相结合。
跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。
开源的 Java 网络编程框架,用于开发高性能(事件驱动、异步非阻塞)、高可靠的网络服务器和客户端程序。
很多网络框架和服务器程序都用到了 Netty 作为底层,学好 Netty 不仅可以让我们自己实现高性能服务器,也能更好地理解其他的框架应用、阅读源码。
不同于之前学的 SSM 框架,Netty 还是需要一定学习成本的,一方面是国内资源太缺乏,另一方面很多重要的概念(比如 NIO)还是要多动手写代码调试才能理解。
还是建议先从视频入门,并且不建议在 Netty 上花太多时间,面试的时候一般也就考察一些 Netty 思想。
随着互联网的发展,项目越来越复杂,单机且庞大的巨石项目已无法满足开发、运维、并发、可靠性等需求。
因此,后台架构不断演进,可以将庞大的项目拆分成一个个职责明确、功能独立的细小模块,模块可以部署在多台服务器上,相互配合协作,提供完整的系统能力。
换言之,想做大型项目,这块儿一定要好好学!
时间不急的话,建议先从 Dubbo 学起,对分布式、RPC、微服务有些基本的了解,再去食用 Spring Cloud 全家桶会更香。
这部分内容的学习,原理 + 实践都很重要,也不要被各种高大上的词汇唬住了,都是上层(应用层)的东西,基本没有什么算法,跟着视频教程学,其实还是很好理解的。
分布式相关知识非常多,但这里不用刻意去背,先通过视频教程实战使用一些微服务框架,也能对其中的概念有基本的了解。
将应用和环境进行封装,相互隔离、独立部署、便于移植,提高安全性、提高开发和维护效率。
便于实现微服务、持续集成和交付。
会用 Docker / K8S 部署项目和服务就行,企业一般都有现成的平台直接用,面试考察不多,不用花太多时间。
持续集成 / 持续交付,贯穿整个研发到项目上线的过程,提高效率。
大公司一般都有自己的 CI / CD 平台。
了解它是什么,并且实战使用任一 CI / CD 平台,感受它和传统开发运维到底有什么不同,就足够了。其实很简单,不要花太多时间。
真正要自己去搭建的时候,跟着官方文档来就行。
综合所学技术从 0 到 1 开发和上线一个全面、有特色的、可以写进简历的个人项目。
其实在之前的框架学习视频中应该就做过几个项目了,但相对不够完整和体系化。
有想法的同学可以做任何自己想做的项目,推荐参加一些作品类竞赛,练手、拿奖、收获项目经历一举三得。
暂时没想法的朋友,建议先跟着专门带做项目的视频教程做 1 - 2 套 Java 完整项目,一定要从 0 到 1 自己手写!
有能力的朋友也可以试着用 GitHub 上的源码来学习啦~
做一个完整的项目的确很不容易,建议大家根据自己的 时间、兴趣 选择 较新的、有配套源码的 教程,保持耐心。
如何选择编程学习资源,可以看下我的原创文章:https://mp.weixin.qq.com/s/mlMql9RJCd7THt6rpGb8UA
下面推荐一些优质的、较新的项目实战视频教程 + 50 套项目源码。
不满足于能做,而是通过更 深入 和 广泛 的学习,实现高质量的代码和更优秀的架构,培养解决问题的能力。
对 Java 后端开发程序员来说,懂得如何利用有限的系统资源来提高系统的性能是很重要的,也是大厂面试考察的重点,因此并发编程(尤其是 Java 并发包的使用)这块的知识很重要。
把它放到高级,是因为在学并发编程前,需要有一定的编程经验、了解一定的操作系统知识。
并发编程入门不难,依然是 先学会使用 基础的 Java 并发包, 再通过大量地实践和测试,了解一些原理,才能真正掌握何时使用、如何更合理地使用并发编程。
想要深入理解 Java,探秘 Java 跨平台的奥秘,一定要了解 Java 底层的虚拟机技术。
了解虚拟机、掌握虚拟机性能调优方法,有助于你写出更高性能、资源占用更小的优质程序。
在学习 JVM 的过程中,也能学到很多精妙的设计,开拓思路。
JVM 的知识略显枯燥,建议先看视频,有实操的地方一定要实操!自己多去分析。
第一遍不理解没有关系,可以再看书来巩固,想要真正学好,《深入理解 Java 虚拟机(第三版)》一定要读。
如果只是为了通过面试可以直接看更精简的视频,比如狂神的。
多看文章多思考
找到好工作
持续追求技术的深度和广度,培养自己的 核心竞争力 和 不可替代性 ,学无止境!
自主学习,自主搜索教程,多看书,多阅读技术博客,多实践。