观点1:目前大部分的业务都是通过web提供服务给到用户,如果你指的学完java web指的是学习了servlet,mybatic ,spring 等. 那么可以学习一下spring的源码, tomcat源码,了解一下spring核心框架的源码. 在这个基础之上,学习一下linux , netty. 微服务dubbo, rocketmq ,redis,zookeeper等分布式环境下离不开的中间件,知道怎么使用,核心模块的原理,大概的工作流程等, 有了这些之后开发后台会得心应手很多,如果再来看,如果你想走大数据方向,接触一下Hadoop,hbase,blink等框架,如果你想做搜索,那么了解一下es,如果你想上手AI,学习一下高数,线性代数,然后用weka实践一下.
观点2:研究一下Java的分布式、微服务、大数据、技术、。也可以学习一下MongoDB等NoSQL数据库技术。
看看java Spring Cloud很好的技术,含金量很高。
观点3:
知识清单
-
常见模式与框架
- 设计模式
- 开发框架,比如 spring, springMVC, mybatis
-
工程化与工具
- 软件开发流程&规范
-
分布式架构
- 负载均衡,高可用
- rpc,消息队列
- 分布式存储
- 微服务架构
-
性能优化
- 应用层:JVM 结构 & 调优
- web 服务器层:tomcat 等服务器结构 & 调优
- 存储层:MySQL 结构 & sql 优化,搜索引擎结构 & 查询优化
-
底层知识
- 对 JDK 的包结构,模块深入学习功能&使用场景
- 围绕数据结构&性能优化学习组织
- 对于 Java 开发来讲,JDK 几乎就是最底层和基础的知识了。对 JVM, MySQL等非 Java 程序了解结构,原理,调优基本就差不多了。但是 JDK 是要深入了解掌握的,这是你自己开发,学习 Java 程序的基础
从开发到架构师
我理解,1, 2, 5, 6 是高级开发就需要掌握的知识,到架构师级别 3, 4 要理解得比较深入,5, 6 的要求也更高。
技术上是从单体技术 -> 分布式,微服务
局部 -> 整体
简单 -> 深入
因为架构师是一个更宏观的角色,单体系统的时候,单体系统划分、设计功能模块的也是架构师。随着分布式的兴起,架构师需要从分布式角度看整体系统,而到了微服务时代,架构师又要关注微服务,docker 等技术。