关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也不至于被“拍死”在沙滩上。

近日,经过一朋友的透露,Alibaba也首发了一份限量的“Java成长笔记”,里面记载的知识点非常齐全,看完之后才知道,差距真的不止一点点!

Java成长笔记主要是将Java程序员按照年限来进行分层,清晰的标注着Java程序员应该按照怎样的路线来提升自己,需要去学习哪些技术点。


Java成长笔记大致内容如下:

由于本篇内容过多,下面只展示一下大纲,完整版可看原文链接:为什么阿里巴巴的程序员成长速度这么快,看完他们的内部资料我明白了

0-1年入门:

        
  • Java基础复盘(面向对象+Java的超类+Java的反射机制+异常处理+集合+泛型+基础IO操作+多线程+网络编程+JDK新特性)     
  • Web编程初探(Servlet+MySQL数据库+商品管理系统实战)     
  • SSM从入门到精通(Spring+SpringMVC+Mybatis+商品管理系统实战-SSM版)     
  • SpringBoot快速上手(SpringBoot+基于SpringBoot的商品管理系统实战)     
  • 零距离互联网项目实战(Linux+Redis+双十一秒杀实战系统)

1-3年高工:

        
  • 并发编程进阶(并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化)     
  • JVM深度剖析(理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制等)     
  • MySQL深度进阶     
  • 深入Tomcat底层(线程模型+性能调优)

3-5年资深:

        
  • 数据库(调优+事务+锁+集群+主从+缓存等)     
  • Linux(命令+生产环境+日志等)     
  • 中间件&分布式(dubbo+MQ/kafka、ElasticSearch、SpringCloud等组件)

5-7年架构:

        
  • 开源框架(Spring5源码+SpringMVC源码+Mybatis源码)     
  • 分布式架构(Zk实战+RabbitMQ+RocketMQ+Kafka)     
  • 高效存储(Redis+mongoDB+MySQL高可用+Mycat+Sharing-Sphere)     
  • 微服务架构(RPC+SpringBoot+SpringCloud Netflix+SpringCloud Alibaba+docker+k8s)

10年以上送外卖:开个小玩笑



下面是个人总结的学习路线

Java学习路线

Java基础课程

Java基础课程内容涉及:Java开发介绍、Java数组、Java面向对象、常用基础类、集合、IO流、多线程、异常、反射。

一:Java开发介绍

        
  1. DOS常用命令     
  2. JVM、JRE、JDK之间的关系     
  3. Java开发环境的搭建:安装JDK,配置环境变量     
  4. Java入门程序(Java的开发流程)     
  5. Java的注释,标识符、标识符的命名规范     
  6. Java基本数据类型     
  7. 变量和常量的定义及初始化     
  8. Java的运算符     
  9. 运算符的优先级     
  10. Java分支语句之if…else     
  11. 循环的嵌套     
  12. 方法的定义     
  13. 方法的形参和实参     
  14. 方法的递归调用

二、Java数组

        
  1. Java 数组的定义     
  2. Java 数组的声明     
  3. 数组的优势与局限     
  4. 数组的遍历访问(普通循环,增强for循环)     
  5. 数组元素的顺序查找     
  6. 数组元素的冒泡法排序     
  7. Arrays工具类的使用     
  8. 二维数组

三、Java面向对象

        
  1. 面向对象设计思想     
  2. 面向对象的分析与设计     
  3. Java与面向对象     
  4. 类中成员变量的定义与意义     
  5. 构造方法的定义和调用     
  6. 面向对象的封装特性     
  7. 局部变量和成员变量的作用域问题     
  8. 静态属性、静态方法、静态代码块     
  9. 面向对象的继承特性     
  10. 继承中构造方法的细节     
  11. 面向对象的多态特性     
  12. 抽象方法与抽象类     
  13. 接口

四、异常

        
  1. 异常的概念     
  2. 异常的分类     
  3. 异常的理解     
  4. 常见异常介绍     
  5. 运行时异常     
  6. 编译时异常     
  7. 运行和编译异常区别     
  8. 异常的处理方式之捕获异常     
  9. 异常的处理方式之抛出异常     
  10. 异常的处理方式之断点调试     
  11. 断点调试之引导运行步骤     
  12. 自定义异常     
  13. 异常关键字处理     
  14. 关键字执行流程     
  15. 异常总结

五、集合

        
  1. 集合的概念和作用     
  2. 集合和数组的区别     
  3. 集合框架体系介绍     
  4. 集合框架之Collection接口     
  5. ArrayList和LinkedList的方法使用     
  6. ArrayList和LinkedList各自的工作原理分析原理分析     
  7. 使用多种方式遍历集合     
  8. HashSet和LinkedHashSet各自的工作原理分析     
  9. 集合框架之Map接口     
  10. 泛型的使用     
  11. Collections工具类的使用

六、IO流

        
  1. File类的作用     
  2. File类中常用方法的使用介绍     
  3. 使用File类操作文件和文件夹     
  4. 相对路径和绝对路径的介绍     
  5. IO流的概念和工作原理     
  6. IO流的分类     
  7. 文件流的使用     
  8. 转换流的使用     
  9. 缓冲流的使用     
  10. 对象流的使用     
  11. 内存流的使用     
  12. 使用不同的流实现文件内容的拷贝

七、多线程

        
  1. 进程和线程的介绍     
  2. 进程和线程之间的区别与联系     
  3. 线程实现方式之继承自Thread类     
  4. 线程实现方式之实现Runnable接口     
  5. 线程实现方式之线程池     
  6. 线程的生命周期     
  7. 线程中常用方法的使用

END

第二阶段:JavaWeb

JavaWeb课程内容涉及:HTML5课程、CSS3、JavaScript、MySQL使用、JDBC连接池、Servlet、JSP、AJAX、jQuery、Bootstrap。

一、HTML5

        
  1. html概述     
  2. html基本标签     
  3. 图片标签     
  4. 超链接标签     
  5. 表格标签     
  6. 无序列表标签     
  7. 有序列表标签     
  8. 定义列表标签     
  9. div标签     
  10. 语义化标签     
  11. 表单标签

二、CSS3

        
  1. CSS3简介和用途     
  2. CSS3书写规范     
  3. CSS3基本语法     
  4. CSS3三种使用方式     
  5. 标签选择器     
  6. Id选择器     
  7. Class选择器     
  8. 属性选择器     
  9. 层次选择器     
  10. 文字、文本属性     
  11. 背景、列表属性     
  12. 尺寸、显示、轮廓属性     
  13. 浮动、定位属性     
  14. 盒子模型     
  15. CSS3高级属性

三、JavaScript

        
  1. JavaScript概述     
  2. JavaScript发展史     
  3. JavaScript组成     
  4. 数据类型     
  5. 运算符     
  6. 分支语句     
  7. 循环语句     
  8. 系统函数、自定义函数、匿名函数     
  9. 常见事件     
  10. 数组、字符串、日期对象     
  11. 正则表达式     
  12. BOM对象:window、history、location     
  13. DOM概念     
  14. DOM操作:创建、修改内容、删除     
  15. Css样式操作

四、MySQL使用 或oracle数据库

        
  1.     
  2. 数据库简介     
  3. MySQL的安装与使用     
  4. MySQL客户端和服务器配置     
  5. 用户权限管理     
  6. DDL创建数据库和表     
  7. 约束与外键     
  8. DML实现添加、修改、删除数据     
  9. 聚合函数、日期函数等     
  10. DQL简单查询     
  11. 排序、分组、筛选     
  12. 多表查询     
  13. 子查询     
  14. in和exists关键字     
  15. 分页查询     
  16. Mysql SQL语句优化介绍

五、JDBC连接池

        
  1. JDBC概述     
  2. JDBC使用步骤     
  3. Connection、Statement、ResultSet接口     
  4. 使用JDBC 完成数据库DML操作     
  5. PreparedStatement对象     
  6. 大数据的操作     
  7. 批量处理与元数据     
  8. 事务处理     
  9. 隔离级别     
  10. 自定义连接池     
  11. DBCP、C3p0连接池     
  12. DBUtis工具类     
  13. QueryRunner     
  14. 自定义结果集处理     
  15. 连接池知识总结

六、Servlet

        
  1. Tomcat与Eclipse的集成开发     
  2. 什么是Servlet     
  3. Servlet的进化史     
  4. Servlet的优化过程     
  5. Servlet中应用的多线程概念     
  6. Servlet接收客户端请求信息     
  7. Servlet响应客户端信息     
  8. Servlet的生命周期     
  9. 重定向写法     
  10. 转发写法     
  11. 转发和重定向区别     
  12. HttpServletRequest获取中文乱码问题     
  13. HttpServletResponse响应中文乱码问题     
  14. Servlet路径映射问题     
  15. Servlet多路径映射

七、JSP

        
  1. 什么是JSP     
  2. JSP的内置对象     
  3. 透析JSP的本质     
  4. JSTL+EL     
  5. MVC介绍     
  6. 分层的重要性     
  7. Web工程中事务实现     
  8. Session的使用     
  9. Cookie的使用     
  10. web工程中连接池的使用     
  11. 实现用户的自动登录     
  12. 文件的上传、下载     
  13. 过滤器、 监听器     
  14. 反射、注解、泛型     
  15. 综合案例练习

八、AJAX

        
  1. Ajax技术背景     
  2. Ajax技术的理解     
  3. XMLHttpRequest使用步骤     
  4. XMLHttpRequest GET/POST的区别     
  5. 同步请求&异步请求     
  6. 同步请求&异步请求的区别     
  7. Ajax获取不同的返回值类型     
  8. Ajax使用原生JavaScript和Jquery的区别     
  9. Ajax响应状态处理     
  10. JSON语法     
  11. Java JSON 解析     
  12. Java JSON 生成     
  13. Java JSON 第三方工具快速解析     
  14. JavaScript JSON转换     
  15. Jquery JSON转换

END

Java框架

Java框架课程内容涉及:Spring、Spring MVC、MyBatis、SVN、Git、Maven、SpringBoot

一、Spring

        
  1. 框架原理介绍     
  2. 框架环境搭建     
  3. 快速入门     
  4. 创建Bean的方式及实现原理     
  5. Bean种类     
  6. Bean生命周期     
  7. Bean的作用域     
  8. Bean的注值方式     
  9. 整合Junit测试     
  10. 注解装配Bean     
  11. 注解装配Bean     
  12. AOP思想、原理解剖     
  13. AOP底层JDK动态代理     
  14. AOP编程     
  15. AspectJ介绍及实现AOP开发     
  16. 事务     
  17. Web项目集成Spring

二、Spring MVC

        
  1.     
  2. Spring MVC 概述     
  3. 使用 @RequestMapping映射请求     
  4. 请求处理方法签名概述     
  5. 处理方法签名详细说明     
  6. 使用 HttpMessageConverter     
  7. 处理模型数据     
  8. 数据绑定流程剖析     
  9. 数据格式化     
  10. 数据校验     
  11. 视图和视图解析器     
  12. 处理方法的数据绑定     
  13. 视图和视图解析器     
  14. 文件上传下载     
  15. JSON处理     
  16. 拦截器

三、MyBatis

        
  1. MyBatis数据框架介绍     
  2. MyBatis对比Hibernate框架     
  3. MyBatis配置、查询数据     
  4. MyBatis全局配置文件     
  5. MyBatis全局配置文件元素详细介绍     
  6. Mapper映射文件     
  7. MyBatis两种开发方式     
  8. MyBatis中别名配置     
  9. MyBatis # 和 $ 拼接参数区别     
  10. 关联查询,动态sql     
  11. MyBatis缓存机制、整合ehcache     
  12. MyBatis二级缓存处理     
  13. MyBatis、Spring、SpringMVC整合     
  14. 分页插件     
  15. MyBatis逆向工程

四、SVN 和git

        
  1. SVN简介     
  2. SVN和Git对比     
  3. SVN服务器搭建     
  4. SVN创建仓库     
  5. SVN创建用户以及分配权限     
  6. SVN签出、提交、更新     
  7. Eclipse整合svn插件     
  8. Idea整合svn插件     
  9. 使用SVN更新提交     
  10. SVN仓库分析     
  11. SVN协同修改&冲突解决     
  12. SVN代码整合注意事项     
  13. SVN权限管理     
  14. SVN数据回滚     
  15. TortoiseSVN

五、Maven

        
  1. Maven环境搭建     
  2. Maven构建项目     
  3. Maven本地仓库配置     
  4. Maven中央仓库配置     
  5. Maven基本概念     
  6. Maven基本命令介绍     
  7. Maven于Eclipse整合     
  8. Maven于Idea整合     
  9. Maven创建web工程     
  10. pom.xml、依赖管理     
  11. 坐标、依赖、生命周期等     
  12. Eclipse下的Maven使用     
  13. Maven中 继承、聚合     
  14. Maven构建SSH/SSM应用     
  15. 自动部署、持续集成、持续部署

六、项目开发实战
 



总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许以上这份Java成长笔记与学习路线你需要阅读阅读,希望能够对你的职业发展有所帮助。