java技术学习路线(自用)
一:常见模式与工具
1.常用设计模式:
1.1.Proxy代理模式:指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。详见https://www.cnblogs.com/qifengshi/p/6566752.html
1.2.Factory工厂模式:这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。详见https://www.cnblogs.com/cxxjohnson/p/6403938.html
1.3Singleton单例模式:这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。详见https://www.cnblogs.com/edisonchou/p/6618503.html
1.4.Delegate委派模式:有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理,详见https://blog.csdn.net/shb2058/article/details/53895024
1.5.Strategy策略模式: 属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。详见https://www.cnblogs.com/whoislcj/p/5554541.html
1.6.Prototype原型模式:是一种创建型设计模式,它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。详见https://www.cnblogs.com/kid-li/archive/2006/05/18/403559.html
1.7.Template模板模式:完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。详见https://www.cnblogs.com/qq-361807535/p/6854191.html
2.Spring5做应用必不可少的最新框架:
2.1.IOC容器设计原理及高级特性
2.2.AOP原理设计
2.3.FactoryBean和BeanFactory
2.4.Sring事务处理机制
2.5.基于SringJDBC手写ORM框架
2.6.SringMVC九大组件
2.7.手写实现SringMVC框架
2.8.SringMVC与Struts2对比分析
2.9.Sring5新特性
3.MyBatis玩数据库必不可少的插件:
3.1.代码自动生成器
3.2.MyBatis关联查询、嵌套查询
3.3.缓存使用场景及选择策略
3.4.Spring集成下的SqlSession
3.5.Mapper MyBatis的事务
3.6.分析MyBatis的动态代理的真正实现
3.7.手写实现Mini版的MyBatis
二:工程化与工具:Maven:项目管理
Jenkins:持续集成
Sonar:代码质量管理
Git:版本管理
三:分布式架构:
1.分布式架构原理:
1.1.什么是Git以及Git的工作原理
1.2.Git常用命令Beat Practise
1.3.Git冲突怎么引起的、如何解决
1.4.架构师职责:Git Flow规范团队Git使用规程
2.分布式架构策略:
2.1.分布式架构网络通信原理剖析
2.2.通信协议中的序列化和反序列化
2.3.基于框架的RPC技术 WebService / RMI / Hession
2.4.深入分析Zookeeper再disconf配置中心的应用
2.5.基于Zookeeper实现分布式服务器动态上下线感知
2.6.深入分析Zookeeper Zab协议以及选机制源码解读
2.7.Dubbo管理中心及监控平台安装部署
2.8.基于Dubbo的分布式系统架构实践
2.9.Dubbo容错机制及高扩展性分析
3.分布式架构中间件:
3.1.分布式消息通信 ActiveMQ / Kafka / RabbitMQ
3.2.Redis主从复制原理及无磁盘复制分析
3.3.图解Redis中AOF和RDB持久化策略的原理
3.4.MongoDB企业级集群解决方法
3.5.MongoDB数据分片、转存及恢复策略
3.6.基于OpenResty部署应用层Nginx以及Nginx+lua实践
3.7.Nginx反向代理服务器及负载均衡服务配置实战
3.8.基于Netty实现高性能M聊天
3.9.基于Netty实现Dubbo多协议通信支持
3.10.Netty无锁串行设计及高并发处理机制
4.分布式架构实战:
4.1.分布式全局ID生成方案
4.2.Session跨域共享及企业级单位单点登录解决方案实战
4.3.分布式事务解决方案实战
4.4.高并发下的服务器降级、限流实战
4.5.基于分布式架构下分布式锁的解决方案实战
4.6.分布式架构下实现分布式定时调整
四:Docker虚拟化:
1.Docker的镜像、仓库、容器
2.Docker Flie构建LNVP环境部署个人博客Wordpress
3.Docker Compose构建LNVP环境部署个人博客Wordpress
4.Docker网络组成、路由互联、Openvswitch
五:性能优化:
1.理解性能基准:
1.1.性能基准
1.2.衡量维度
2.JVM调优:
2.1.什么是jvm调优,如何实现
2.2.详解什么是jvm运行时数据
2.3.详解什么是jvm内存模式JMM
2.4.详解GC可达
2.5.详解各垃圾回收器使用场景(Throughput \ CMS )
2.6.详解GC日志,从日志看端倪
2.7.实战MAT分析dump文件
3.Tomcat调优:
3.1.Tomcat工作机制
3.2.分析tomcat线程模式
3.3.tomcat系统参数认识调优
3.4.基准测试
4.Mysql调优篇:
4.1.理解Mysql底层B+Tree机制
4.2.SQL执行计划详解
4.3.索引优化详解
4.4.sql语句优化
六:底层知识:
1.Java内存模型JMM
2.内存模型
3.Synchronized
4.Volatile
5.Dcl
6.并发基础
7.锁
8.并发工具类
9.并发集合
10.原子操作
11.引用类型
12.线程池
本文参考微信公众号”Java知音“的文章–《Java体系化高级学习路线图》