关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也不至于被“拍死”在沙滩上。
近日,经过一朋友的透露,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开发介绍
- DOS常用命令
- JVM、JRE、JDK之间的关系
- Java开发环境的搭建:安装JDK,配置环境变量
- Java入门程序(Java的开发流程)
- Java的注释,标识符、标识符的命名规范
- Java基本数据类型
- 变量和常量的定义及初始化
- Java的运算符
- 运算符的优先级
- Java分支语句之if…else
- 循环的嵌套
- 方法的定义
- 方法的形参和实参
- 方法的递归调用
二、Java数组
- Java 数组的定义
- Java 数组的声明
- 数组的优势与局限
- 数组的遍历访问(普通循环,增强for循环)
- 数组元素的顺序查找
- 数组元素的冒泡法排序
- Arrays工具类的使用
- 二维数组
三、Java面向对象
- 面向对象设计思想
- 面向对象的分析与设计
- Java与面向对象
- 类中成员变量的定义与意义
- 构造方法的定义和调用
- 面向对象的封装特性
- 局部变量和成员变量的作用域问题
- 静态属性、静态方法、静态代码块
- 面向对象的继承特性
- 继承中构造方法的细节
- 面向对象的多态特性
- 抽象方法与抽象类
- 接口
四、异常
- 异常的概念
- 异常的分类
- 异常的理解
- 常见异常介绍
- 运行时异常
- 编译时异常
- 运行和编译异常区别
- 异常的处理方式之捕获异常
- 异常的处理方式之抛出异常
- 异常的处理方式之断点调试
- 断点调试之引导运行步骤
- 自定义异常
- 异常关键字处理
- 关键字执行流程
- 异常总结
五、集合
- 集合的概念和作用
- 集合和数组的区别
- 集合框架体系介绍
- 集合框架之Collection接口
- ArrayList和LinkedList的方法使用
- ArrayList和LinkedList各自的工作原理分析原理分析
- 使用多种方式遍历集合
- HashSet和LinkedHashSet各自的工作原理分析
- 集合框架之Map接口
- 泛型的使用
- Collections工具类的使用
六、IO流
- File类的作用
- File类中常用方法的使用介绍
- 使用File类操作文件和文件夹
- 相对路径和绝对路径的介绍
- IO流的概念和工作原理
- IO流的分类
- 文件流的使用
- 转换流的使用
- 缓冲流的使用
- 对象流的使用
- 内存流的使用
- 使用不同的流实现文件内容的拷贝
七、多线程
- 进程和线程的介绍
- 进程和线程之间的区别与联系
- 线程实现方式之继承自Thread类
- 线程实现方式之实现Runnable接口
- 线程实现方式之线程池
- 线程的生命周期
- 线程中常用方法的使用
END
第二阶段:JavaWeb
JavaWeb课程内容涉及:HTML5课程、CSS3、JavaScript、MySQL使用、JDBC连接池、Servlet、JSP、AJAX、jQuery、Bootstrap。
一、HTML5
- html概述
- html基本标签
- 图片标签
- 超链接标签
- 表格标签
- 无序列表标签
- 有序列表标签
- 定义列表标签
- div标签
- 语义化标签
- 表单标签
二、CSS3
- CSS3简介和用途
- CSS3书写规范
- CSS3基本语法
- CSS3三种使用方式
- 标签选择器
- Id选择器
- Class选择器
- 属性选择器
- 层次选择器
- 文字、文本属性
- 背景、列表属性
- 尺寸、显示、轮廓属性
- 浮动、定位属性
- 盒子模型
- CSS3高级属性
三、JavaScript
- JavaScript概述
- JavaScript发展史
- JavaScript组成
- 数据类型
- 运算符
- 分支语句
- 循环语句
- 系统函数、自定义函数、匿名函数
- 常见事件
- 数组、字符串、日期对象
- 正则表达式
- BOM对象:window、history、location
- DOM概念
- DOM操作:创建、修改内容、删除
- Css样式操作
四、MySQL使用 或oracle数据库
- 数据库简介
- MySQL的安装与使用
- MySQL客户端和服务器配置
- 用户权限管理
- DDL创建数据库和表
- 约束与外键
- DML实现添加、修改、删除数据
- 聚合函数、日期函数等
- DQL简单查询
- 排序、分组、筛选
- 多表查询
- 子查询
- in和exists关键字
- 分页查询
- Mysql SQL语句优化介绍
五、JDBC连接池
- JDBC概述
- JDBC使用步骤
- Connection、Statement、ResultSet接口
- 使用JDBC 完成数据库DML操作
- PreparedStatement对象
- 大数据的操作
- 批量处理与元数据
- 事务处理
- 隔离级别
- 自定义连接池
- DBCP、C3p0连接池
- DBUtis工具类
- QueryRunner
- 自定义结果集处理
- 连接池知识总结
六、Servlet
- Tomcat与Eclipse的集成开发
- 什么是Servlet
- Servlet的进化史
- Servlet的优化过程
- Servlet中应用的多线程概念
- Servlet接收客户端请求信息
- Servlet响应客户端信息
- Servlet的生命周期
- 重定向写法
- 转发写法
- 转发和重定向区别
- HttpServletRequest获取中文乱码问题
- HttpServletResponse响应中文乱码问题
- Servlet路径映射问题
- Servlet多路径映射
七、JSP
- 什么是JSP
- JSP的内置对象
- 透析JSP的本质
- JSTL+EL
- MVC介绍
- 分层的重要性
- Web工程中事务实现
- Session的使用
- Cookie的使用
- web工程中连接池的使用
- 实现用户的自动登录
- 文件的上传、下载
- 过滤器、 监听器
- 反射、注解、泛型
- 综合案例练习
八、AJAX
- Ajax技术背景
- Ajax技术的理解
- XMLHttpRequest使用步骤
- XMLHttpRequest GET/POST的区别
- 同步请求&异步请求
- 同步请求&异步请求的区别
- Ajax获取不同的返回值类型
- Ajax使用原生JavaScript和Jquery的区别
- Ajax响应状态处理
- JSON语法
- Java JSON 解析
- Java JSON 生成
- Java JSON 第三方工具快速解析
- JavaScript JSON转换
- Jquery JSON转换
END
Java框架
Java框架课程内容涉及:Spring、Spring MVC、MyBatis、SVN、Git、Maven、SpringBoot
一、Spring
- 框架原理介绍
- 框架环境搭建
- 快速入门
- 创建Bean的方式及实现原理
- Bean种类
- Bean生命周期
- Bean的作用域
- Bean的注值方式
- 整合Junit测试
- 注解装配Bean
- 注解装配Bean
- AOP思想、原理解剖
- AOP底层JDK动态代理
- AOP编程
- AspectJ介绍及实现AOP开发
- 事务
- Web项目集成Spring
二、Spring MVC
- Spring MVC 概述
- 使用 @RequestMapping映射请求
- 请求处理方法签名概述
- 处理方法签名详细说明
- 使用 HttpMessageConverter
- 处理模型数据
- 数据绑定流程剖析
- 数据格式化
- 数据校验
- 视图和视图解析器
- 处理方法的数据绑定
- 视图和视图解析器
- 文件上传下载
- JSON处理
- 拦截器
三、MyBatis
- MyBatis数据框架介绍
- MyBatis对比Hibernate框架
- MyBatis配置、查询数据
- MyBatis全局配置文件
- MyBatis全局配置文件元素详细介绍
- Mapper映射文件
- MyBatis两种开发方式
- MyBatis中别名配置
- MyBatis # 和 $ 拼接参数区别
- 关联查询,动态sql
- MyBatis缓存机制、整合ehcache
- MyBatis二级缓存处理
- MyBatis、Spring、SpringMVC整合
- 分页插件
- MyBatis逆向工程
四、SVN 和git
- SVN简介
- SVN和Git对比
- SVN服务器搭建
- SVN创建仓库
- SVN创建用户以及分配权限
- SVN签出、提交、更新
- Eclipse整合svn插件
- Idea整合svn插件
- 使用SVN更新提交
- SVN仓库分析
- SVN协同修改&冲突解决
- SVN代码整合注意事项
- SVN权限管理
- SVN数据回滚
- TortoiseSVN
五、Maven
- Maven环境搭建
- Maven构建项目
- Maven本地仓库配置
- Maven中央仓库配置
- Maven基本概念
- Maven基本命令介绍
- Maven于Eclipse整合
- Maven于Idea整合
- Maven创建web工程
- pom.xml、依赖管理
- 坐标、依赖、生命周期等
- Eclipse下的Maven使用
- Maven中 继承、聚合
- Maven构建SSH/SSM应用
- 自动部署、持续集成、持续部署
六、项目开发实战
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许以上这份Java成长笔记与学习路线你需要阅读阅读,希望能够对你的职业发展有所帮助。