笔者于2016年入Java,先后从事开发和教育行业,现就职于某供应链公司担任后端开发工程师。
Java从1995年诞生到如今,体系成熟,运行稳定,成为大型后端系统的首选语言,也是各培训机构宠儿,笔者结合近几年行业的发展和变化以及个人经历总结一下适合于现在的Java学习路线。
前言
我们需要有一个前提共识是,并不是将所有的技术学完之后才可以去就业,也不要给自己太大的心理压力,核心在于【基础的掌握】、【框架应用】、【项目实战】三块掌握就业基本没有问题,剩下的就看自己的职业规划或企业需求来计划下一步的前进方向
● 初学者建立正确且高效知识体系
● 中高级工程师查漏补缺,更上一层
● 资深开发和专业研究员可以当`少儿读物`
下边以思维导图方式罗列出大概的体系,后续会陆续更新每一个点的技术文档和视频,喜欢的记得加关注~~~
JavaSE
这是Java的基础部分,也是入门第一步,非常重要,时间不紧张的话可以多花点时间,多做点练习题
JavaSE 基础:环境搭建和配置、变量、数据类型、流程控制语句、数组、面向对象编程
JavaSE 进阶:常用API、异常体系、集合体系、IO流、多线程、网络编程、泛型、反射、注解、枚举
Java 高级特性:Lambda表达式、函数式接口、Stream、JUC包、Lock、新日期API、设计模式、ConcurrentHashMap、LinkedBlockingDeque......
JavaWeb
这块利用Java开发Web应用,诸如HTML、CSS、JavaScript这些简单学习一下即可,甚至有些教程基本不会有这三块的体现。
现在开发项目也不会使用Servlet和JSP,其中的基础概念比较重要,之前也一度想略过Servlet和JSP,直接介绍SpringMVC和模板引擎等开发项目,但是后边的框架也是对基础的封装,学习了解对理解框架,用好框架有很好的铺垫作用。
HTML:介绍、基本标签、实体符号、表格、表单
CSS:CSS介绍和引入方式、边框、字体、效果、盒子模型、布局、定位
JavaScript:JavaScript概述、基础语法、事件、BOM操作、DOM操作
Tomcat:安装与启动、Tomcat体系结构、Tomcat配置、部署项目
Servlet:Servlet作用和生命周期、Servlet常用接口和类、配置Servlet、监听器、过滤器、Cookie和Session、转发和重定向、注解开发
JSP:JSP动作指令、JSP九大内置对象、EL和JSTL、自定义标签、JSP分页、JSP文件上传
Ajax:了解Ajax概念、XMLHttpRequest对象、使用jQuery实现Ajax、ajax获取JSON数据、JSON语法格式、JavaScript中的JSON、Java中JSON与对象转换
MySQL
记得在培训学校的时候,学生追着问【数据库啥时候学?我们学习Sql Server吗?听说Oracle很厉害啊】。感觉数据库非常神秘,我在工作过程中有些单位使用国产数据库的也遇到过,不过我还只遇到过一家,所有产品都是国产的,原因你能猜到吗?
不过一般企业都在使用MySQL,我们以MySQL为数据库的入口是非常不错的选择!
MySQL基础:MySQL数据类型、DDL、DML、DCL、锁机制、事务、MVCC(多版本并发控制)、存储引擎(Innodb、MyISAM)、MySQL语句性能分析、索引、索引数据结构、优化SQL、第三范式
MySQL高级特性:视图、游标、字符集、全文索引、分区表、分布式事务、缓存
MySQL实战:JDBC、数据库连接池、备份与恢复、负载均衡、数据分布、故障切换、主从复制、监控、分库分表
数据库学习完,使用Servlet+JSP+MySQL+Tomcat去开发两个以上项目,最好类型不一样
框架
框架这块先学会使用,再学会怎么用好,再研究源码原理即可,掌握好Spring、SpringMVC、MyBatis、SpringBoot、会用Redis,学习一下Linux部署项目,基本可以找一个实习工作试试。
早些年使用Spring+Struts2+Hibernate开发,后来演变为Spring+SpringMVC+MyBatis,现如今要求掌握SpringBoot,【不得不感慨,唯一不变的就是变化】
MyBatis:ORM概念、配置和使用、执行流程、别名机制、动态SQL、缓存、连接池、插件使用、源码分析
Spring:Spring核心配置和使用、IOC、AOP、执行流程和Bean声明周期、常用注解、循环依赖、事务、源码解析、集成MyBatis
SpringMVC:SpringMVC执行流程、Tomcat的SPI机制加载SpringMVC容器、RequestMappingInfo和HandlerMethod映射关系、
HandlerMapping和HandlerAdapter关系、HandlerInterceptor的前置、中置、后置过滤器原理、HandlerAdapter参数解析原理、
响应式编程-WebFlux
SpringBoot:SpringBoot环境搭建、配置文件、SpringBoot实现前后端分离、SpringBoot全局异常处理、SpringBoot实现RestFul、热部署、SpringBoot启动器原理、核心源码、自动配置
SpringSecurity:执行流程、SpringSecurity常用接口和类、SpringSecurity配置、RBAC权限模型
SpringCloud Netflix:微服务架构、分布式架构、分布式系统问题和解决方案、Eureka注册中心、Ribbon负载均衡原理、Feign声明式服务调用、Zuul网关、Config配置中心并集成Git和SVN、Hystrix服务熔断和降级、Bus/Sleuth/Stream、微服务日志、自定义分布式配置中心
SpringCloud Alibaba:Nacos-Discovery服务发现、Nacos-Config配置中心、Sky Walking链路跟踪、Assembly Plugin、Sentinel限流、熔断器、Seata分布式事务
Dubbo:Dubbo架构原理和内核、Dubbo SPI原理、Dubbo IOC和AOP原理、Dubbo动态编译、服务发布原理、服务引用原理、集群容错设计、服务降级设计、网络通信架构、网络通信编码解码
中间件
中间件这块,主要掌握Redis、消息队列、Nginx、Tomcat刚需技术点,剩下的可以当做加薪选项,小白可以先不关注!
Redis:Redis命令和数据类型、SpringBoot集成Redis、Redis缓存雪崩、缓存击穿、缓存预热、热点Key、缓存降级、短链接、分布式锁、秒杀、堆外缓存、动态刷新、Redis和DB双写一致、删除策略、数据倾斜、核心原理、源码解读
RabbitMQ:系统架构、消息发布和消费权衡、消息拒绝、应用解耦、集群化和镜像队列
RocketMQ:消息存储机制、多种消息模式、高可用机制、provider与consumer负载均衡机制、消息过滤TAG/SQL及类过滤模式
Kafka:Kafka生产者和消费者、高级特性、集群
消息队列实战:消息重试(顺序/无序/死信队列)、消费幂等问题、可靠数据传递、集群搭建、与Spring整合、镜像队列、削峰填谷
Zookeeper:Zookeeper指令、zookeeper节点类型、zkclient、集群选举原理、分布式锁
Nginx:Nginx架构模型和配置、location配置、rewrite解析、动静分离、代理和反向代理、跨域
Tomcat:Tomcat体系结构、HTTP请求解析和处理流程、Tomcat核心组件、Tomcat集群与会话复制方案、BIO/NIO源码、类加载机制及源码解析
mycat:实现MySQL读写分离、数据库切分、全局表、ER表、分片机制解析
sharding-jdbc:引擎原理和数据分片、读写分离、编排分治、分布式事务、数据脱敏
Elasticsearch:存储结构、分布式CRUD、索引管理、分片、搜索优化
Logstash:架构、数据采集、数据输出、过滤器
Docker:基础操作、Docker File、网络存储、DockerCompose、微服务与Docker集成实现动态扩容
Netty:HTTP/TCP/UDP网络协议详情、原生JDK网络编程、服务器推送技术实战、WebSocket通信实战、Netty粘包/半包问题、Netty源码
工具
重点掌握哦,开发必备技能!Jenkins用了都说香
Linux:安装、基础命令、用户与用户组系列操作、文件与权限系列操作
Jenkins:自动化部署、持续部署、远程测试
Maven:安装、配置和使用、坐标和依赖、聚合和继承、生命周期与插件、仓库及版本管理、私服
Git:Git操作命令、基本运行流程、常见问题、GitHub、Gitee
JVM
加薪必备技能点,基础也要了解内存划分和垃圾回收机制。面试也会问到一些虚拟机参数问题!
运行时数据区:程序计数器、JVM栈、本地方法栈、堆、方法区、运行时常量池、直接内存、OOM(OutOfMemoryEror)、StackOverflowError
类加载、链接、初始化、创建对象的过程、HotSpot内核、HotSpot启动、HotSpot系统初始化、HotSpot Oops模块、Klass框架、对象标识机制、对象内存布局、垃圾回收器、垃圾回收算法、指令集、解释器、JIT、字节码指令集、字节码执行引擎
虚拟机监控工具:Attach、Heap Dump、jhat、jstack
Java内存模型:JMM、线程实现、线程调度、状态转换、线程安全、锁优化
数据结构和算法
基本概念:时间复杂度、空间复杂度、分治法、动态规划法、贪心算法、回溯法、分支界限法
线性结构:线性表(数组、链表)、字符串、栈、队列、hash表、位图bitmap
树形结构:二叉树、平衡查找树、多路查找树、堆、字典树、并查集
图形结构:遍历、最短路径、最小生成树、拓扑排序
查找算法:顺序表查询、二分查询、差值查找、斐波那契查找、精密索引、分块索引、倒排索引、二叉查找树、平衡查找树(平衡二叉树AVL、红黑树)、多路查找树(B树、B+树)、散列表查找树(散列函数、冲突处理)
排序算法:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序、基数排序、桶排序
其他技能
成为架构师必经之路,转变管理岗的必备技能!
高可用、高并发、高性能
高伸缩、高安全:数据一致性、幂等性、限流保护、熔断降级、微服务过载、分布式问题、系统监控、可伸缩性
三方服务:支付、地图、OSS对象存储、图像识别、短信服务、视频点播等
需求沟通、需求撰写、技术文档撰写、架构文档撰写、工作汇报、面向上级编程、PPT汇编、相关管理证书
最后如果就业的话,当然还需要:
- 准备简历
- 刷面试题
- 项目当然也不能少哦,即使没有工作经验,也一定要做三个以上企业级项目
总结
学好编程,做好程序员,最终有个好归宿,核心在于以下四点:
- 【基础】:树无根也就无叶,底层原理是不变的,打好基础非常重要,想不明白的时候就想想基础
- 【编码】:宝剑锋从磨砺出,多做项目,多刷题,边做边思考,想象其中的奥妙
- 【吸收】:经验包涵着珍贵的学问,多看看Github优质开源项目和技术文档或书本,往往记录很多宝贵的经验,运用到做过的项目中进行优化,是非常不错的
- 【坚持】:有志者事竟成,要走的远就要有非凡的意志,刚开始很难,我也曾想过放弃,做其他“副业”搞钱,为将来铺路,这很滑稽, `【不要焦虑,十年磨一剑】`,坚持下来,提升自己,未来在行业内转型更安全,更稳定
收藏等于学会,行动起来吧吗!
上一篇:成都IT培训为什么选择培训机构