Java技术栈学习路线

✏️写作:个人博客InfoQ掘金知乎优快云

📧公众号:进击的Matrix

🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。

开发环境

Java开发工具 :Intellij idea,简称IDEA, 最智能的Java开发工具,Java程序员大部分都使用这个工具进行开发,因为真的是太好用了。

JDK:JDK开发版本最好使用最新版本。

Java基础

书名内容
《Java核心编程 卷I》 [美] 凯.S.霍斯特曼(Cay S. Horstmann)(最新版)基础语法: Java变量,常量,数据类型,运算符,方法,数组,流程控制语句,面向对象: 类,对象,继承,多态,接口,抽象类,内部类,集合,线程
《Java核心编程 卷II》 [美] 凯.S.霍斯特曼(Cay S. Horstmann)(最新版)基础功能:流和文件,XML, 网络编程,数据库编程,国际化,图形化界面编程,Java Beans组组件,Java安全,注解,分布式对象、Native方法

Java基础进阶

内容技术要点
常用APIDate, DateFormat, Calendar, System, String, StringBuilder
集合Collection, 泛型, List, Set, Collections, Map, HashMap等常用集合
异常异常体系, 异常分类,异常处理, 自定义异常
多线程线程概念,线程同步, 锁, 线程生命周期, 线程池, Java线程池框架
Lambda表达式函数式编程思想,Lambda标准格式,Lambada语法与注意事项
IO流文件, 字节流, 字符流,字符编码
网络编程网络编程要素,Socket原理机制, TCP/UDP传输
Java个版本的新特性1.5/1.6/1.7/1.8/1.9 等版本新增的各个特性

Java Web基础

书名内容
《深入分析Java技术内幕》 作者:许令波介绍JavaWeb开发中涉及的一些基本知识,包括Web请求过程、HTTP协议、DNS技术和CDN技术。其次深入介绍Java技术,包括I/O技术、中文编码问题、Javac编译原理、Class文件结构解析、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、Spring容器、MyBatis框架和Velocity框架等原理介绍
内容技术要点
JDBCMySQL数据库基本知识,JDBC, 数据库连接池, JdbcTemplate
前端基础知识HTML/CSS, JavaScript,Bootstrap
基础加强Java的反射技术, BeanUtils, 注解
XMLXML基本语法, 约束
ServletTomcat,request, response, cookie, session,Filter,HTML,CSS,JavaScript
Web异步开发jquery, ajax,json
MavenMaven概念与作用, Maven常用命令,依赖管理

Java Web进阶

Java Web进阶的内容大多是Java后端开发中的框架学习,需要学习的框架有Spring,Spring MVC,Mybatis以及项目管理工具Maven,如果有足够精力学习,可以学习Spring Boot, Spring Cloud, 但是对于找工作学会Spring,SpringMVC, MyBatis,Maven就足够了,因为重要的是基础,基础不懂,学习其他的也只是蜻蜓点水,理解不深的。后面的框架学习可以在自己工作中,或有其余精力的时候进行学习,当然如果掌握后面的SpringBoot, SpringCloud对找工作肯定是锦上添花,有加分的。

如何学习好框架呢?最好的学习文档为框架的官方文档。

例如: MyBatis框架的官方文档为:http://www.mybatis.org/mybatis-3/zh/index.html

官方文档的使用说明,能够更清晰的说明框架的使用,但是大部分的框架为国外的,所以文档为英文,较少框架有中文翻译,所以一定要具备良好英文阅读能力(学习计算机的好处就是:顺带学好了英语阅读,顺带把四六级给过了),如果对于阅读英文档比较吃力,绝对不用强求,利用百度(谷歌):可以在网上寻找是否有翻译的文档,或者是相关技术点的博客,或者下面的相关书籍。

书名内容
《深入浅出MyBatis技术原理与实战》 作者:杨开振MyBatis 的基础应用、原理及插件开发、实践应用
《Spring实战》 作者: 沃尔斯 (Craig Walls)Spring框架的核心知识,Spring构建Web应用程序,应用程序的后端使用Spring,Spring与其他的应用和服务进行集成
《Sring源码深度解析》 作者:郝佳Spring的设计理念和整体架构、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP、数据库连接JDBC、整合MyBatis、事务、SpringMVC、远程服务、Spring消息服务等内容
内容技术要点
MyBatisMyBatis入门,架构分析,常用API,配置与事务管理,mapper代理,数据封装,动态SQL,关联查询,性能优化,查询缓存
SpringSprin体系结构,Spring配置,bean管理,Spring IOC/DI,Spring AOP, 事务管理,Spring5新特性
Spring MVCSpring MVC 概述,控制器,常用注解,参数绑定,json数据交换, resutful, 拦截器,文件上传,异常处理,SSM整合
MavenMaven分模块构建, 本地仓库,私服
MQ消息队列(消息中间件),异步解耦,削峰填谷作用,开源消息中间件有:RocketMQ,QMQ,Kafka等等
RPC远程过程调用中间件,微服务,开源RPC:Dubbo,gRPC,Thrift,Spring Cloud等等
Redis(NoSQL,缓存)NoSQL基本特性, Redis数据类型,常用命令, Jedis

Java必读书

Java虚拟机是Java程序员必须学习的,还有Java中的多线程编程是重点,设计模式学习了后对于自己软件开发过程怎么写好代码是有非常有帮助的。

书名作者说明
《深入理解Java虚拟机:JVM高级特性与最佳实践》周志华熟悉Java虚拟机必读
《Java多线程编程核心编程》高洪岩熟悉Java中多线程的使用,对象及变量的并发访问,线程将通信,锁的使用,定时器等
《Java并发编程的艺术》方腾飞/魏鹏/程晓明是Java程序员必看书,并发实战之路上的利器
《Head First 设计模式(中文版)》(或者《大话设计模式》)弗里曼(Freeman,E.)(美)设计模式最通俗易懂,是看过最有趣的计算机丛书
《大型网站系统与Java中间件实现》曾宪杰Java中间件
《大型分布式网站架构设计与实践》陈康贤分布式网站架构设计
《微服务架构与实践》王磊微服务设计

计算机网络

计算机网络主要是学习TCP/IP相关知识,其实我们的课本谢希仁的《计算机网络》知识就已经足够了,只是大多的人没有好好重视学习,对于基本的网络知识没有理解透彻。学习知识不求多,只求能够理解透彻,学懂。学懂了基础知识,后面学习其他的内容将会变得容易。如果看网络看不懂可以看:《图解TCP/IP》或《图解HTTP》,“图解”系列相关书籍对于技术的理解会更加容易一点,初期可以阅读。

书名作者
《计算机网络》谢希仁
《TCP/IP协议族》福罗赞
《TCP/IP详解 卷1:协议》[美] W·Richard Stevens

数据库知识

软件开发会使用到数据相关知识,首先学习数据库知识必须会SQL, SQL的学习可以通过W3CSchool或W3CSchool菜鸟教程:https://www.w3cschool.cn/,SQL比较简单, W3School里面有很多计算机基础知识,里面有HTML/CSS, JavaScript, 数据库,XML, 开发工具等等,可以作为一个知识的查询手册,学习快速上手,非常方便。

书名作者内容
《高性能MySQL》瓦茨 (Baron Schwartz) / 扎伊采夫 (Peter Zaitsev) / 特卡琴科 (Vadim Tkachenko)了解数据的基本知识,以及MySQL数据的特性, 性能优化
《MySQL技术内幕:InnoDB存储引擎》姜承尧MySQL的数据库特点,InnoDB 存储引擎特性,实现原理、工作机制,索引与算法,文件,锁,事务,备份与恢复。

数据结构与算法

数据结构与算法的学习,首先得了基本的数据结构例如: 栈,堆,链表,图,树等等,基本的算法知识: 二分查找,基本排序算法,分析算法的时间复杂度和空间复杂度等等,最重要的还是动手实践,多写写数据结构和算法。对于数据结构与算法练习可以多去github上开源的例子去进行学习,先看看别人是如何实现,然后自己再想想如何实现,会采用怎么做,把它写出来。 面试的时候经常是手写基本排序算法以及一些经典的算法题。
算法的练习还可以上LeetCode: https://leetcode.com/problemset/algorithms/
上进行训练,里面每周都会更新算法题,也有很多解题思路,还有就是多去牛客网上刷算法题。

书名作者
《大话数据结构》程杰
《剑指offer》何海涛
《算法》第4版塞奇威克 (Robert Sedgewick) / 韦恩 (Kevin Wayne)

软件开发使用工具

软件开发中有许多工具需要掌握,尤其是Git,公司开发中肯定会使用到Git的,平常的开发中也需要养成代码版本管理的好习惯,经常提交代码到自己Github仓库上进行管理。

工具工具使用
Git使用git作为项目版本控制工具,会向开源网站例如github建立仓库,提交代码,管理代码
Postman会使用postman工具模拟各种网络请求,在项目调试开发的时候特别方便的一个工具
Nacicat可视化数据库管理工具(可视化数据库管理工具对数据库管理方便,开发效率高),其他可视化数据库管理工具都行
Mobaxterm远程连接工具,SSH连接远程终端设备,还有其他远程连接工具例如:Xshell,Putty,SecureCRT,自己觉得哪个好用用哪个

关于找工作

对于找计算机相关工作中,主要考察的还是的计算机基础知识,还有看一个人的学习能力是否足够强,是否具有潜力,基础知识的考察无非是:数据结构与算法,编程的基础知识(例如Java,选择一门自己最擅长的语言即可),计算机网络,操作系统等等。对于某一技术方向的考察,会再进行深入的考察,这个就是针对你投递的岗位了,例如: 投递的是Java开发工程师,那么就会问Java相关知识,而不会问你C++的相关知识了,

现在的互联网公司招聘,一般会有提前批的内部推荐,内推可以优先筛选简历,简历筛选通过就有面试机会,所以能够拿到的面试机会,能内推一定要找内推,内推相当于多一次机会。对于招聘投递简历,简历一定要写好,简历在整个招聘的时候非常非常非常重要!

如果内推没有成功,那么可以走正常的校园招聘,先笔试,笔试通过才有面试机会了,所以笔试无论如何都要通过,否则任何的面试准备都是空谈,当然没有通过笔试也绝对不要灰心,看该公司的面试地点在哪里,去面试现场进行霸面,如果面试人员会给霸面的机会就可以进行霸面。

面试环节,一般根据和你的投递的岗位和遇到的面试情况而不同,如果你面试的是前端工程师,面试官大概率也会是做前端开发的工程师,有的面试官可能就直接问前端相关的知识,相关技术点,有的喜欢问项目经历,大部分都是基础知识技术和项目都会问,所以对于简历一定要写好;如果是一个非前端的面试官,那么他肯定主要会考察你计算基础知识了,看你基础扎不扎实,算法怎么样,编程能力怎么样,了解的深度怎么样,广度怎么样,学习能力怎么样,沟通交流能力怎么样。

面试般有好几面: 技术面试至少有2面,一般是越往后越难(当然还是看公司,有的公司可能不太一样),当有的公司的几轮面试中,会有一轮压力面,所谓压力面,就是各种刁难,问到你不会,既是考核你的技术深度,也是考核你的承压能力,心理素质。如果遇到压力面,还是机灵应对较好,不必太过纠结。技术面试通过之后,最后的面试一般是HR,HR面一般来说通过的概率是就比较大了,当然也不要掉以轻心,一般在HR中也有根据HR面试情况筛选人的考核,不要自己作死和表达自己极端的性格和行为就好,HR面试正常的进行OK。


最后欢迎大家点赞、收藏、评论,转发!

欢迎大家关注我的微信公众号!微信搜索:进击的Matrix

欢迎大家关注我的知乎!可乐

关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——编码规范 日志规范 异常规范 网络 协议 TCP/IP HTTP hession file HTTPS 负载均衡 容器 JBOSS tomcat resin jetty 容灾 日志框架 开源框架 slf4j 框架实现 log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm sublime text 版本控制 svn git 项目管理 maven Nexus Jenkins 工作软件 反编译软件 office系列 下载器 adobe系列 记录软件 思维导图 office--Note 邮件管理 性能优化 分层优化 系统级别 中间件级别 JVM级别 代码级别 分段优化 前端 web应用 服务应用 资源池 数据库 大数据与nosql zookeeper hadoop hbase mongodb strom spark java语言 语言语法基础 异常 泛型 内部类 反射 序列化 nIo 匿名类 包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 流 字符流 字节流 语言特性 继承 封装 多态 JVM 多线程与并发 GC机制 GC收集器类型 串行 CMS 并行 G1 算法 复制 标记清理 标记整理 分区 新生代 eden survivor 老年代(old区) 永久代(perm区) 版本变化 1.5 1.6 1.7 1.8 1.9 IO/NIO IO类型 同步阻塞 同步非阻塞 基于信号 多路复用 异步IO 类加载机制 双亲委派 OSGI 算法 搜索 二分 排序 选择 冒泡 插入 快速 归并 堆 桶 基数 常用算法 贪婪 回溯 剪枝 动态规划 数据挖掘算法 KMP算法 GZZ算法 HASH分桶 关联规则算法 APRORIVE算法 分布式 负载均衡 水平伸缩 集群 分片 Key-hash 异步 一致性hash 消峰 分库分表 锁 悲观锁 乐观锁 行级锁 分布式锁 分区排队 一致性 一致性算法 paxos zab nwr raft gossip 柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle db2 缓存 redis 数据结构 持久 复制 cas 单线程 memcache eacache Tair 消息队列 jms Queue Topic kafka 持久 复制 Stream Partition rocketMQ RabbitMQ ActiveMQ 常用开源框架 Spring Spring MVC Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 解决问题能力 经历 技术攻关案例 程序开发案例 程序设计案例 设计 设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒转原则 接口隔离原则 迪米特原则 设计模式 结构模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 创建模式 抽象工厂模式 工厂方法模式 建造这模式 原型模式 单例模式 行为模式 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 设计案例 UML 架构 系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 协议设计 二进制协议 文本协议 接入层架构设计 DNS轮询 动静态分离 静态化 反向代理 LVS F5 CDN 逻辑层架构设计 连接池 串行化技术 影子Master架构 批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 copy on write 内联优化 系统优化 cache 延迟计算 数据预读 异步 轮询与通知 内存池 模块化 工程架构能力 开发语言 运维与监控 监控 系统监控 日志监控 流量监控 接口监控 数据库监控 业务监控 性能监控 告警 日志 设计模式 数据结构与算法 各种工具
### Java 后端开发技术栈学习路径 #### 一、构建基础技能 掌握Java编程语言的基础语法和特性是成为合格的Java后端开发者的第一步。这不仅限于理解面向对象的概念,还包括熟悉多线程处理、异常管理等内容。 对于Web应用层面的理解也至关重要,包括但不限于Servlet的工作机制及其上下文环境(ServletContext),HTTP请求响应模型(Request/Response),会话管理和状态跟踪(Cookie, Session)[^2]。 #### 二、深入框架与设计模式 随着基础知识的确立,下一步应转向更高级的主题如Spring框架家族(Spring Core, Spring MVC, Spring Boot)的学习。这些工具极大地简化了企业级应用程序的创建过程,并提供了强大的依赖注入功能和支持RESTful服务的能力。同时,了解常用的设计模式有助于编写更加灵活高效的代码结构。 此外,在这个阶段还应该接触过滤器(Filter)和监听器(Listener)等概念,这些都是实现跨切面关注点分离的有效手段;而JSP页面描述符则可以作为视图层的一种解决方案来呈现动态网页内容。 #### 三、实战项目经验积累 理论联系实际的最佳方式莫过于参与真实世界的软件工程项目。通过完成诸如谷粒商城这样的综合性案例研究,不仅可以巩固之前所学的知识要点——比如如何利用微服务体系架构下的各个组件(Spring Cloud),还能接触到生产环境中常用的各类中间件(Docker容器化部署平台, Elasticsearch搜索引擎, Message Queue消息队列等等)[^3]。 ```java // 示例:简单的Spring Boot Hello World程序 @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args) { SpringApplication.run(HelloWorldApplication.class, args); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值