万字Java学习路线肝完,按这条线学完,不信还找不到工作!

2023年 10月 8日 68.8k 0

文编|JavaBuild

大家好呀,我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,厚积薄发!

前言

双节8天的假期结束啦,堵了12个小时之后,回到了杭州,倒头就睡,一觉睡了10个小时,这段时间陆陆续续的将Java后端开发工程师的学习路线整理完了,今天抽个时间做一下汇总,鸟哥的这份Java学习路线基本上包含了必学且工作中必用的技术栈,并以大学四年作为贯穿的主线路进行分阶段学习,当然,这套学习路线包括但不限于大学生,只要愿意按照这个路线肝下去,进大厂拿高薪是100%没有问题的。毕竟,对比了网络上十几篇的Java推荐学习路线,弥补了很多缺失的重要知识点。

最近,和很多业内的朋友聊天,在网上也看了不少博客,有这样一个辩题:“当下Java学习的人很多,市场已经饱和,很难在找到好工作,并且随着技术的不断更新,大量的程序语言被应用于各行各业,学习Java的时间成本太高。”鸟哥虽然也使用其他的诸如C++、python、javascript等语言,但相比较之下,个人还是更喜欢Java,Java需要学习的内容确实比较多,但作为一个代码逻辑性强,生态强大的编程语言,它能够提供强大的技术框架,是实现企业级web项目最好的技术语言,随着学习Java的人越来越多,对于从业者的专业性要求也更高了,所以扎实的技术功底就显得尤为重要,这也无形中鞭策着我们不断去深入学习!

高薪程序员必须的Java路线

阶段一:Java基础篇

第一章:JavaSE

1.1 基础语法

每一门技术语言都是在处理数据,整个互联网也都是数据的支撑,对于同样的数据,每一门语言都有其特有的定义方式,整数是什么类型、中英文是什么类型、小数又是什么类型、是与否又是什么类型,这就是Java的数据类型的定义,同时,在基本语法中我们还要学习Java中的运算、逻辑处理等。

1.2 面向对象

Java是一门面向对象的语言,面向对象如何理解?类又是什么?它的三大特性又是什么?这章节学完你就有答案了。

1.3 容器

容器,见名知意!用来存储数据的器皿,不同类型的容器存储不同类型的数据,如同碗里装饭,杯里盛水一样的道理。

1.4 异常

若所有的程序都成功运行,那么异常就毫无作用,但这是不可能的,所以异常就是用来定义程序非正常运行下的状态表现,可以说异常是对程序的一种保护,对用户的友好交互,对程序员查找问题的绳索!

1.5 泛型

这个词有点专业了,初学者可能听到“泛型”会很懵逼,其实也很好理解,Java1.5被引入后泛型就被广泛延用至今,所谓泛型就是参数化类型,在创建一个对象时不指定它具体的类型,当别人使用它时,再去定义它具体属于什么类型,就像一个铁块,它被生产出来之后就是一个铁块,铁匠把它打造成刀它就是刀,打造成斧头它就是斧头。

1.6 注解

注解也是Java1.5被引入的,说白了就是给你的对象打一个标签,让它拥有特定的作用和特点,它的诞生节省了程序员不少的工作。

1.7 枚举

枚举,也是见名知意的一个知识点,将一些属性进行分类归档,作为一个枚举,供所有需要用到这些属性的对象使用。

1.8 I/O

I/O是Input和Out的缩写,进出之类,同样针对的是数据,往一个系统里写数据,导出为一个word或txt这就是I/O来干的活。

第二章:Java并发多线程

2.1 多线程

何为线程?线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。通俗点说如果你打开微信看作打开一个进程的话,在微信里聊天、语音、刷朋友圈就是每一个进程,每个进程独立但又全归属与微信这个进程。所谓的多线程,就是多个线程之前来回的切换,运行,以满足业务的需要。

2.2 锁

不同的线程之前的切换,必定会涉及到资源占用的冲突问题,这就是锁的含义,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。

2.3 线程安全

多个线程之间的切换,也必定会带来数据的不安全性,这时候锁的作用就得以发挥了,合理的运用好锁,可以让线程变安全,如同你家门上有把锁,可以有效安全的保证财务安全。

2.4 JUC工具类

同样时Java1.5诞生的东西,全称java.util.concurrent,是一个工具包,里面提供者很多处理并发问题的类,或者说工具,合理的使用可以事半功倍!

第三章:Java虚拟机

3.1 类加载机制

类加载的步骤为,加载 -> 验证 -> 准备 -> 解析 -> 初始化,又是一个五步走战略,将你写的Java类或者说对象也行,编译成JVM可以识别的东西后,通过JVM的类加载机器,加载到内存中,进而在解析运行在计算机上。

3.2 字节码

编译成什么东西呢,这个东西就是字节码,字节码文件,JVM再将其解释成计算机可以识别的机器码。

3.3 运行时数据区域

在JVM运行时所划分出来的区域,用以存储运行时所需要的各种数据

3.4 垃圾收集

在一个系统长时间运行时,必定会带来很多废弃的对象,我们称之为垃圾,那么良好的垃圾收集有利于系统的稳定运行。

3.5 内存的分配与回收

在JVM运行需要使用到内存,合理的分配内存以及回收内存,是性能调优的重要点

3.6 性能监控和调优

JVM的性能调优是一个优秀的Java工程师的必备技能

阶段二:Java扩展篇

第四章:操作系统

4.1 操作系统基础知识

那么什么是操作系统?章一的开始已经提到了,操作系统的功能有哪些?常见的操作系统有哪些?各自优缺点,什么是用户态?什么又是内核态?这些问题都是在这个小节中大家需要搞清楚的。

4.2 进程和线程

在大一路线中Java多线程部分也提到了线程与进程的概念,这里就不重复了,搞清楚线程与进程的区别,各自作用即可,不过在这里要注意的是进程的生命周期,进程间的通信方式(这个面试八股文中挺喜欢被问到)?还有一个就是进程间的调度算法,操作系统层面我们更关注于进程,Java层面我们更关注于线程。

4.3 并发/锁

在操作系统中同样存在着并发问题,有并发自然就有安全问题,有安全问题,自然就有“锁”这个概念,如果在大一已经熟练的掌握了Java多线程部分知识的同学,对于这部分内容的掌握,可谓是轻车熟路咯。

4.4 内存管理

所谓内存管理,就是合理的分配系统中多个进程在运行时的空间资源,其主要包含下图中这些内容,内存的分配与回收、虚地址与物理地址之间的转换、通过虚拟内存基础,从逻辑上实现内存的扩充,通过内存分配策略和回收算法来提高内存使用率,内存安全主要是保证进程间在使用内存时的互不干扰!

4.5 文件系统

文件系统,顾名思义就是对于操作系统内文件管理的这么一个模块,包括文件的增删改查、访问权限控制、目录管理、文件数据的存储。

第五章:Linux

5.1 Linux内核

Linux本质上其实指的是Linux内核,而内核的作用是:内存管理、硬件设备管理、文件系统管理,应用程序管理,这并非是我们在工作中使用的Linux,我们在工作中所用到的均为发行版,由一些组织或厂商通过将Linux内核与其他软件包装起来,并提供系统的安装配置、设定与管理工具,从而进行发布供我们使用。

常见的Linux发行版主要为下面两大类:

  • RedHat(小红帽)公司维护的商业发行版本RHEL

  • 基于RHEL开发的社区发行版CentOS、基于Debian的Ubuntu

  • 5.2 Linux文件系统

    Linux的文件系统,总体上的作用和章一的文件系统相似,不再展开,不过对于Linux的文件系统,大家要记住一句颇有哲学意义的名言:“一切皆文件”,这句话源于unix。

    5.3 Linux常用命令

    学习Linux最头大的其实就是记住这繁多的各种操作命令,与windos这些桌面系统不同的是,我们在工作中所使用的Linux都要通过命令来进行各种操作,后面对于这些常用的命令,鸟哥会单独整理出一篇文章分享给大家,这里只做路线介绍,以及各个章节知识点的简介。

    5.4 Linux环境变量

    安装过技术软件的小伙伴们,对于环境变量这个词应该不陌生,而在Linux中同样需要环境变量,用来定义系统运行环境的一些参数。

    第六章:Shell编程

    shell是当下最流行的Linux环境下的运维自动化语言,另外一个是python,能够熟练的使用shell可以提高我们在工作中的效率,因为,学习并掌握shell语言,会让大家在找工作时更有底气。

    6.1 shell变量

    6.2 shell基本运算符

    6.3 shell流程控制

    6.4 shell函数

    shell技术鸟哥准备在后面找个时间,单独给大家分享一下它的语法逻辑,以及常见的通过shell脚本来实现的执行脚本,请持续关注哈。这部分内容,大家除了在网上找视频学习之外,最好买写图书看一下,毕竟有很多需要记忆的东西,图书看完之后可以当作字典使用,推荐《Linux命令行与shell脚本编程大全(第3版》。

    第七章:计算机网络/网络编程

    7.1 OSI七层模型

    一张图说清楚OSI七层模型,每一层都有其相应的作用。

    7.2 TCP/IP五层模型

    同样一张图来搞定TCP/IP五层模型,也有人说是四层模型,这个看自己,无所谓,主要是要理解这个流程。

    7.3 网络设备

    网络设备中我们主要需要知道的是交换机和路由器,这个我想大家都很熟悉了,自己可以网上看看他们详细的作用和功能哈

    7.4 HTTP与HTTPS

    我们在浏览器中输入网址时常常可以看到前缀带有http或者https,http是一种超文本传输协议,属于应用层传输协议,基于tcp/ip协议进行数据传输,简单来说,它的作用就是限定客户端与服务端数据传输的一种规则。目前版本已经到达http3.0

    而https是在http的基础之上进行了升级,加上了一层SSL证书的校验,可以进行加密传输、身份认证,安全行更高。

    这里推荐大家看一本《图解HTTP》,内容还不错。

    7.5 IP与ARP

    IP(Internet Protocol,网际协议) 是 TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。

    在理解ARP(地址解析协议)之前,大家需要去搞清楚什么是Mac地址哈,搞清楚Mac地址之后,就很容易理解ARP的作用了,主要是用来解决IP地址转像Mac地址的,这里我们可以把IP地址看成家庭住址,而Mac地址为身份证号,通过家庭住址跳转到身份证号,才能准确的定位到最终目标。

    7.6 TCP与UDP

    这部分内容很多,并且非常重要!可以说面试中被问到的概率至少80%,所以大家一定要认真学,搞明白TCP与UDP的区别,以及他们的作用,使用场景。

    TCP的三次握手与四次挥手

    三次握手

    四次挥手

    7.7 DNS域名系统

    这部分我们可以这样理解,所谓的DNS域名系统,主要用来解决域名和IP地址之间的映射问题,比如我们在浏览器上输入一个www.baidu.com,这是百度公司的官方域名,但实际上我们要请求的是他们的服务器内容,这时候就需要DNS出来工作啦。

    7.8 加密算法

    数据在网络传输的过程中,最重要的就是安全性,为了万无一失,便出现了加密算法,目前主流的算法分为对称加密和非对称加密两种,每种算法都有很多实现,大家可以选一些常见的学习。

    7.9 网络攻击

    在网络的世界里,很多不法分子都会利用技术,找到我们网站的漏洞,从而进行网络攻击,获取不法利益,常见的网络攻击有:CSRF、XSS、DOS,甚至于SQL注入也是。

    第八章:数据结构和算法

    手撕编程题是很多大厂的必考项目,数据结构与算法,考察的是应聘者对于程序逻辑的理解,同时也考验着大家处理问题的能力与变通情况,因此,请大家狂刷算法题,如下是鸟哥整理的学习路线。

    推荐书籍《剑指offer》,推荐刷题应用:LeetCode

    第九章:数据存储

    9.1 数据库基础

    什么是数据库三范式?事务的四大特性?事务的隔离级别都有哪些?

    9.2 Mysql

    MySQL的学习主要包含如下这些部分

    9.3 Redis

    作为经典的非关系型数据库,redis可以说在日后的工作中,百分百会用到,所以必须要学!

    9.4 Oracle

    Oracle这里没有整理,因为目前国内都在倡导去O化,鸟哥很犹豫,因为Oracle确实好用,且性能比MySQL好太多了,后面找时间再专门整理这部分知识点吧。

    阶段三:Java提升篇

    第十章:JavaWeb

    10.1 servlet

    虽然servlet已经过时了,很是作为JavaWeb容器的基石,SpringMVC的底层,快速的学一下也是可以的,学习之前先搞清楚两个名词,客户端/用户端,服务器端/程序端

    客户端:发出请求的地方,一般是浏览器的网页端

    服务器端:接收并处理请求的地方,多为后台程序

    而servlet要干的活就是接受由客户端发来的请求,调用其他Java程序处理请求,并将处理结果返回给客户端。

    10.2 JSP

    JSP(Java server pages):Java服务器界面,一种动态的网页开发结束,可以将Java代码嵌入到html中,并由JSP引擎编译执行生成页面,再返回给客户端,一度十分强大,但随着现在前后端分离开发的盛行,它的热度也在持续走低。

    10.3 Tomcat

    Tomcat是一个servlet容器,也是一个web服务器,我们编写的JavaWeb程序要想运行起来,必须部署到Servlet容器上,而Tomcat就是其中之前,其他的有jetty,Jboss等。

    10.4 JDBC

    在之前的大一与大二学习路线中,鸟哥都提到过“万物皆为数据”,所有的后端语言做的事情就是处理数据,那么如何通过应用程序处理数据?这就不得不提JDBC,作为一个较为底层的JavaAPI,它主要的作用就是执行Sql语句,链接数据库与Java应用程序。

    10.5 Spring全家桶

    目前最主流,也是学习Java最核心的技术栈来了,那就是Spring的全家桶,包括Spring、SpringBoot、SpringData、SpringCloud、SpringSecurity。不过现在大部分的技术人员已经用mybatis替代了springdata去操作数据。

    这里推荐两本学习书籍《Spring实战》、《SpringBoot实战》

    10.6 Mybatis

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录

    10.7 Mybatis-plus

    看名字就知道是Mybatis的增强版,在Mybatis的框架基础之上进行的开发,同时增加了很多便捷功能,诸如代码生成器、条件构造器、分页插件等。

    10.8 MQ

    对于很多高并发的项目,MQ是必不可少的,MQ是MessageQueue的缩写,中文称之“消息队列”,是一种先进先出的数据结构,常见的消息中间件有ActiveMQ、RabbitMQ、RocketMQ,Kafka等。

    10.9 XML

    xml是一种可扩展标记性语言,主要用于保存数据、项目的配置文件等,结合Mybatis进行sql的处理,功能挺强大。

    10.10 Swagger

    Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,可以代替postman等调试工具,进行后端接口的测试。

    10.11 Driud

    Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池!

    10.12 Lombok

    官方介绍 Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

    第十一章:前端

    11.1 HTML基础

    11.2 CSS基础

    11.3 JavaScript

    11.4 jQuery

    11.5 easyUI

    11.6 主流前端框架

    • Vue是一套用于构建用户界面的渐进式框架,采用自底向上增量开发的设计,核心库只关注视图层,不仅易上手,还方便与第三方库或项目整合。

    • React是用于构建用户界面的JavaScript库,主要用于构建UI。你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTML DOM元素、也可以传递动态变量,甚至是可交互的应用组件。

    • Angular拥有很好的应用程序,是一个以JavaSpript编写的库,模板功能也异常强大,本身就带有丰富的Angular指令。一方面可以通过指令扩宽HTML,一方面可以通过表达式绑定数据到HTML。

    第十二章:实战项目

    12.1 个人博客项目

    12.2 员工管理系统

    第十三章:技术升级

    这部分内容,属于技术的增强内容,也是一个初中级程序员,迈向高级程序员的蜕变之路,在这份学习路线里只列举清单,具体的学习内容,鸟哥会在接下来的时间里,分模块的详细整理成册,分享给大家!

    13.1 设计模式

    13.2 JDK源码解读

    13.3 Java新特性

    13.4 Java定时任务

    13.5 Web实时消息推送

    13.6 Maven

    13.7 Git

    阶段四:Java工作篇

    第十四章:分布式或高并发实战项目

    14.1 秒杀商城项目

    秒杀商城项目,几乎是这里面的必选项目,大家在筛选商城项目的时候,可以通过CSDN、B站,最好找那种有视频讲解,有源码的项目,这种会节省很多麻烦事。

    到了这个阶段再敲项目,建议不要再按部就班的跟着视频课老师一行行的抄代码了,要学会独立思考,独立设计,同样一个功能,其实会有多种实现方式,老师的方案不一定最优,并且,在敲这种项目的时候,会遇到很多麻烦与困难,比如说不同版本的maven、idea,不同版本的mysql数据库,都会代码很多坑,或者说自己写的代码逻辑,有很多潜在bug,导致无法实现预期功能等,这些问题都要整理起来,并且形成一套完整的话术,面试的时候,面试官几乎都会问,你在做这个项目的时候,遇到的困难是什么?

    14.2 Git上开源项目

    1.2这个部分,是给那些学有余力的同学提供的,在github上有很多的开源好项目,或者大家自己也可以将自己的代码放上去,进行开源共享,如果效果不错的话,完全就成了你拿高薪的一个资本!

    第十五章:手撕算法

    15.1 LeetCode100题

    算法是考验一个程序员逻辑思维的良好渠道,也是互联网企业最喜欢考的内容,而LeetCode是一个非常非常好的算法练习平台,鸟哥自己也整理了一部分自己之前刷的题目,感兴趣的可以私聊哈

    15.2 剑指offer

    这本书的名气非常之大,里面有着很多经典题目,不过它的答案解答是C++的,网上也看到过不少博主自己整理了Java版、python版等等,其实主要学的是这里的思路,什么语言差别不大,而且最好买一本纸质版的,个人觉得看电子版没什么感觉,纸质版可以写写画画,记忆更深刻。

    第十六章:Java面试大全

    大一至大四的全部路线学完之后,还需要通过一系列的面试题,进行学习巩固,网上有很多的博主进行了汇总整理,但看了几个之后,觉得不够全量,总是有漏掉的内容,所以后面鸟哥准备自己肝一个相对全一点的面试大全出来!

    第十七章:面经

    所谓面经,就是过往的面试者,在面试过程中被问到的问题,这个挺有用的,多刷一刷面经,可以把握不同公司对于技术的方向点,再针对性准备时有帮助,这里推荐“牛客网”、“GitHub”等网站刷面经。

    第十八章:简历

    最后一步就是制作简历,投递简历了,制作简历的要义是:以实为主,美化措辞,扬长避短

    以下是整理的一些比较靠谱的简历模板网站

    • 木及简历(推荐,部分免费) : www.mujicv.com/open in new…

    • 简单简历(推荐,部分免费):easycv.cn/open in new…

    • 极简简历(免费): www.polebrief.com/indexopen i…

    • Markdown 简历排版工具(开源免费):resume.mdnice.com/open in new…

    • typora+markdown+css 自定义简历模板 :github.com/Snailclimb/…

    • 超级简历(部分收费) : 超级简历WonderCV - HR推荐简历模板,智能简历制作工具,专业中英文简历模板免费下载

    写在结尾

    以上是Java学习路线的全部内容,那么具体该怎么学习呢?这里还想多和大家聊一聊,主要还是三步走,视频、看书、刷博客。

    视频的话,优选B站,里面有大量的Java学习视频,其中浙江大学翁恺老师的《Java程序设计》挺不错,简洁易懂,此外《尚学堂高淇Java300集》,《尚硅谷Java基础全套教程》也都还行,根据自己喜好选择,好的学习者是懂得如何优胜劣汰的。

    看书的话,这里推荐几本《Java核心技术卷1》、《Java编程思想》、《阿里巴巴Java开发手册》前两本很厚,并且读起来无趣,所以一开始可以配合着视频,当作字典书籍看,等后面学透了再回头看,就会发现惊喜,最后一本一定要好好读读,想要电子版的可以私聊,有最新电子版。

    刷博客的话,国内有很多技术站点,诸如CSDN、掘金、简书、菜鸟教程、博客园、开源中国、知乎、GitHub、知识星球、微信公众号等等,可以自己选择,不过博客学的东西太零散琐碎,不够系统,建议当作日常积累和阅读的习惯即可。

    图书推荐:

    《Java并发编程艺术》、《深入浅出Java多线程》、《Java并发编程之美》,哦,对了,B站上黑马的《Java并发编程》视频也可以看看。

    JVM是面试八股文必考的,所以这部分还是要多花点时间的,如果能够把周志明老师的《深入理解Java虚拟机》读明白,这部分你算学成了

    《Linux命令行与shell脚本编程大全(第3版》、《Spring实战》、《SpringBoot实战》。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论