想要成为架构师,对技术的深度和广度都有很高的要求,本文列举出成为一个架构师必备的技能和学习路线。
对于学习途径有疑惑或苦恼,或者有优秀资料可以提供的同学,可加微信,共同交流学习1. 阅读源码
说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;即便找到入口点,又会觉得源码中好绕,看着看着把自己都看晕了。其实,阅读源码是需要基础的。开源框架的源码中都使用了大量的设计模式,所以在阅读源码之前,我们首先要熟悉常见的设计模式
1.1 常用设计模式
- Proxy 代理模式
- Factory 工厂模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- Singleton 单例模式
- Delegate 委派模式
- Strategy 策略模式
- Prototype 原型模式
- Template 模板模式
推荐书籍
《大话设计模式》 程杰 著1.2 Spring源码走读
Spring 源码主要又分为一下几大块:
1.2.1 spring-beans包
- 接口示例化
- 代理Bean操作
1.2.2 spring-context包
- IOC容器设计原理及高级特性
- AOP设计原理
- FactoryBean与BeanFactory
1.2.3 spring-tx包
- 声明式事务底层原理
- Spring事务处理机制
- 事务的传播与监控
- 基于SpringJDBC手写ORM框架
1.2.4 spring-webmvc
- MVC原理介绍
- 与IOC容器整合原理
- HandlerMapping实现原理
- HandlerAdapter实现原理
- ViewResolver实现原理
- Controller实现原理
- 动态参数匹配原理
- SpringMVC与Struts2对比分析
- 手写实现SpringMVC框架
1.2.5 Spring5新特性
- Spring 5.x的兼容性
- 分析自带通用日志框架
- 多序列化数据格式绑定API
- 函数式风格的ApplicationContext
- Kotlin表达式的支持
- WebFlux模块介绍
- Testing改进
1.3 MyBatis
- 代码自动生成器:Generator
- MyBatis下1对多,多对多嵌套结果、嵌套查询
- 一级缓存、二级缓存使用场景及选择策略
- MyBatis与Spring集成spring-mybatis.jar分析
- Spring集成下的SqlSession与Mapper
- MyBatis的事务
- 分析MyBatis的动态代理的真正实现
- 一步一步手写实现MyBatis 1.0到2.0
2. 分布式架构
2.1 漫谈分布式架构
- 初识分布式架构及意义
- 如何把应用从单机扩展分布式
- 大型分布式架构演进过程
- 构建分布式架构最重要因素
- CDN加速静态文件访问
- 分布式存储
- 分布式搜索引擎
- 应用发布与监控
- 应用容灾及机房规划
- 系统动态扩容
- 分布式架构设计
- 主流架构模型-SOA架构和微服务架构
- 领域驱动设计及业务驱动划分
- 分布式架构的基本理论CAP、BASE以及其应用
- 什么是分布式架构下的高可用设计
- 分布式架构下的可伸缩设计
- 构建高性能的分布式架构
2.2 分布式架构策略-分而治之
- 从简到难,从网络通信探究分布式通信的原理
- 基于消息方式的系统间通信
- 理解通信协议传输过程中的序列化和反序列化机制
- 基于框架的RPC通信技术
- WebService/Apache CXF
- RMI/Spring RMI
- Hessian
- 传统RPC技术在大型分布式架构下面临的问题
- 分布式架构下的RPC解决方案
- 分布式系统的基石-Zookeeper、
- 从0开始搭建3个节点的zookeeper集群
- 深入分析Zookeeper在disconf配置中心的应用
- 基于Zookeeper的分布式锁解决方案
- Zookeeper Watcher 核心机制深入源码分析
- Zookeeper集群升级、迁移
- 基于Zookeeper实现分布式服务器动态上下线感知
- 深入分析Zookeeper Zab协议及选举机制源码解读
- 使用dubbo对单一应用服务化改造
- dubbo管理中心及监控平台安装部署
- dubbo分布式服务模块划分(领域驱动)
- 基于dubbo分布式系统架构实践
- dubbo负载均衡策略分析
- dubbo服务调试之服务只订阅及服务只注册配置
- dubbo服务接口的设计原则(实战经验分享)
- dubbo设计原理及源码分析
- 基于dubbo构建大型分布式电商平台实战雏形
- dubbo容错机制及高扩展性分析
2.3 分布式架构-中间件
2.3.1 消息中间件(分布式消息通信)
2.3.1.1 消息中间件在分布式框架中的应用
2.3.1.2 消息中间件ActiveMQ
- ActiveMQ高可用集群企业级部署方案
- ActiveMQ P2P及PUB/SUB模型详解
- ActiveMQ消息确认及重发策略
- ActiveMQ基于Spring完成分布式消息队列实战
2.3.1.3 消息中间件Kafka
- Kafka基于Zookeeper搭建高可用集群实践
- Kafka消息处理过程剖析
- Java客户端实现Kafka生产者与消费者实例
- Kafka的副本机制及选举原理剖析
- 基于Kafka实现应用日志实时上报统计分析
2.3.1.4 消息中间件RabbitMQ
- 初步认识RabbitMQ及高可用集群部署
- 详解RabbitMQ消息分发机制及主题消息分发
- RabbitMQ消息路由机制分析
- RabbitMQ消息确认机制
2.3.2 分布式缓存(Redis)
- 从入门到精通,Redis的数据结构分析
- Redis主从复制原理及无磁盘复制分析
- Redis管道模式详解
- Redis缓存与数据库一致性问题解决方案
- 基于Redis实现分布式锁
- 图解Redis中的AOF和RDB持久化策略的原理
- Redis读写分离架构实践
- Redis烧饼架构及数据丢失问题分析
- Redis Cluster 数据分布算法之Hash slot
- 使用Redis常见问题及性能优化思路
- Redis高可用及高伸缩架构实战
- 缓存击穿、缓存雪崩预防策略
- Redis批量查询优化
- Redis高性能集群之twemproxy or codis
2.3.3 数据存储
2.3.3.1 非结构化数据NoSQL
- NoSQL简介及MongoDB基本概念
- MongoDB支持的数据类型分析
- MongoDB可视化客户端及Java API实践
- 手写基于MongoDB的ORM框架
- MongoDB企业级集群解决方案
- MongoDB聚合、索引及基本执行命令
- MongoDB数据分析 、转存及恢复策略
2.3.3.2 mysql数据库
- MySQL主从符合及读写分离实战
- MySQL + keepalived实现双主高可用方案实践
- MySQL 高性能解决方案之分库分表
2.3.3.3 分库分表中间件(Mycat)
- 初识数据库中间件Mycat
- 基于Mycat实现mysql数据库读写分离
- 基于Mycat实战之数据库切分策略剖析
- Mycat全局表、ER表、分片策略分析
2.3.4 后台服务
- 基于OpenResty部署应用层Nginx以及Nginx+lua实践
- Nginx反向代理服务器及负载均衡服务配置实战
- 利用keepalived + Nginx实践Nginx高可用方案
- 基于Nginx实现访问控制、连接限制
- Nginx动静分离实战
- Nginx Location、Rewrite等语法配置及原理分析
- Nginx提供https服务
- 基于Nginx+lua完成访问流量实时上报kafka的实战
2.3.5 高性能的NIO框架(Netty)
- IO的基本概念、NIO、AIO、BIO深入分析
- NIO的核心设计思想
- Netty产生的背景及应用场景分析
- 基于Netty实现高性能IM聊天工具
- 基于Netty实现Dubbo多协议通信支持
- Netty无锁化串行设计及高并发处理机制
- 手写实现多协议RPC框架
2.4 分布式解决方案
- 分布式全局ID生成方案
- session跨域共享及企业级单点登录解决方案实战
- 分布式事务解决方案实战
- 高并发下的服务降级、限流
- 基于分布式架构下分布式锁的解决方案
- 分布式架构下实现分布式定时调度
推荐书籍
《大型网站系统与Java中间件实践》曾宪杰 著
《分布式服务框架原理与实践》 李林峰 著3. 微服务架构
3.1 微框架(Spring Boot)
- Spring Boot与微服务之间的关系
- Spring Boot热部署实战
- 核心组件之starter、actuator、auto-configuration、cli
- Spring Boot集成MyBatis实现多数据源路由实战
- Spring Boot集成Dubbo实战
- Spring Boot 集成Redis实战
- Spring Boot集成Swagger2 构建API管理及测试体系
- Spring Boot实现多环境配置动态解析
3.2 Spring Cloud
- Eureka注册中心
- Ribbon集成REST实现负载均衡
- Fegion声明式服务调用
- Hystrix服务熔断降级方式
- Zuul实现微服务网关
- Config分布式统一配置中心
- Sleuth调用链路跟踪
- BUS消息总线
- 基于Hystrix实现接口降级实战
- Spring Boot集成Spring Cloud实现统一整合分离
3.3 Docker虚拟化
- 了解Docker的镜像、仓库、容器
- Dockerfile构建LNMP环境部署个人博客wordpress
- Docker Compose构建LNMP环境部署个人博客wordpress
- Docker网络组成、路由互联、openvswitch
- 基于swarm构建Docker集群实战
- Kubernetes简介
3.4 漫谈微服务架构
- SOA架构和微服务架构之间的区别与联系
- 如何设计微服务及其设计原则
- 解惑Spring Boot流行因素及能够解决什么问题
- 什么是Spring Cloud,为何要选择Spring Cloud
- 基于全局分析Spring Cloud各个组件所解决的问题
推荐书籍
《Spring Cloud与Docker微服务架构实战》周立 著4. 并发编程
4.1 Java 内存模型(JMM)
- 线程通信
- 消息传递
4.2 内存模型
- 指令重排序
- 顺序一致性
- happens-before
- as-if-serial
4.3 synchronized
- 同步、重量级锁
- synchronized原理
- 锁优化
- 自旋锁
- 轻量级锁
- 重量级锁
- 偏向锁
4.4 volatile
- volatile 实现机制
- 内存语义
- 内存模型
4.5 DCL(Double Check Lock)
- 单例模式
- DCL(双检锁)
- 解决方案
4.6 并发基础
- AQS
- AbstractQueuedSynchronizer同步器
- CLH同步队列
- 同步状态的获取和释放
- 线程阻塞和唤醒
- CAS
- Compare And Swap
- 缺陷
4.7 锁
- ReentrantLoak 可重入锁
- ReentrantLockReadWriteLock 可重入读写锁
- Condition
4.8 并发工具类
- CyclicBarrier
- CountDownLatch
- Semphore
4.9 并发集合
- ConcurrentHashMap
- ConcurrentLinkedQueue
4.10 原子操作
- 基本类型
- AtomicBoolean
- AtomicInteger
- AtomicLong
- 数组
- AtomicIntegerArray
- AtomicLongArray
- AtomicReferenceArray
- 引用类型
- AtomicReference
- AtomicReferenceFieldUpdater
4.11 线程池
- Executor
- ThreadPoolExecutor
- CallableFuture
- ScheduledExecutorService
4.12 其他
- TheadLocal
- Fork/Join
推荐书籍
《深入理解Java虚拟机》周志明 著
《实战Java高并发程序设计》 葛一鸣 郭超 编著 墙裂推荐
《Java并发编程实战》Brian Goetz/ Tim Peierls/ Joshua Bloch/ Joseph Bowbeer/ David Holmes/ Doug Lea 著 董云兰等译5. 性能优化
5.1 理解性能优化
- 性能基准
- 性能优化到底是什么
- 衡量维度
5.2 JVM调优
- 知其然,知其所以然
- 什么是JVM运行时数据区
- 什么是JVM内存模型JMM
- 各种垃圾回收器使用场景(throughput\CMS)
- 理解GC日志,从日志看端倪
- 实战MAT分析dump文件
5.3 Tomcat调优篇
- 分析Tomcat线程模型
- Tomcat系统参数认识及调优
- 基准测试
5.4 MySQL调优
- 理解MySQL低层B+Tree机制
- SQL执行计划详解
- 索引优化详解
- SQL语句优化
6. 团队协作效率
6.1 Maven
- 生成可执行jar、理解Scope生产呢过最精确的jar
- 解决类冲突、包依赖 NoClassDefFoundError问题定位及解决
- 全面理解Maven的Lifecycle\Phase\Goal
- 架构师必备之Maven生成Archetype
- Maven流行插件实战、手写自己的插件
- Nexus使用、上传、配置
- 对比Gradle
6.2 Jenkins
持续集成,一次build解决所有手动工作
6.3 Sonar
减少人为疏漏,静态代码检查,让你的代码更健壮
6.4 Git
- 什么是git以及git的工作原理
- git常用命令best practise(避坑教学)
- git冲突怎么引起的,如何解决
- 架构师职责:git flow规范团队git使用规程
- 团队案例分享(买不到才是最贵的)
7. 项目实战
未完待续...
其他书籍推荐:
《深入分析Java Web技术内幕》
《Java编程思想》
《Effective Java》
《重构 改善既有代码结构》
《高性能MySQL》
发表评论
-
分布式锁原理及实现
2018-08-10 00:11 1179什么是分布式锁? 控制分布式架构中多个模块访问的优先级 ... -
JDK1.5-9各个版本特性
2018-06-05 19:16 0引言 对于很多刚接触java语言的初学者来说, ... -
maven打包中文乱码
2018-04-19 11:36 2417va项目为第三方提供类库的时候,打好的jar包中,第三方调 ... -
Java代码性能优化总结
2015-11-18 15:27 506前言 代码优化,一个很重要的课题。可能有些人觉 ... -
利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务
2011-09-26 11:11 16461.首先建立一个Web services EndPoint: ... -
跨应用程序的session共享
2011-09-19 11:13 1914常常有这样的情况,一个大项目被分割成若干小项目开发,为了能够互 ... -
HttpSession常见问题
2011-09-19 10:58 8601、session在何时被创建 一个常见的误解是以 ... -
session的超时管理(三种方案)
2011-09-19 10:28 937* 方案一 * 在tomcat服务器的conf/web.xm ... -
Java集群之session共享解决方案
2011-09-17 02:00 709转自:http://blog.csdn.net/crskyp/ ... -
java.util.NoSuchElementException错误一则
2011-08-22 18:55 2714<%@ page language="j ... -
JXL获取Excel单元格的日期(DateCell.getDate)与实际填写日期相差8小时的解决方法(转)
2011-05-31 10:19 2140用JXL获取的时间总是比Excel单元格实际填写的时间早八小 ... -
Caught exception while loading file struts-default.xml 的错误
2010-06-02 16:01 1302MyEclipse 6开发JDK6和Struts 2冲突的问题 ...
相关推荐
开课吧孙玄百万年薪架构师成长之路,自己在网上淘的现在分享给大家
《架构师成长之路》这本书是为那些志在成为优秀架构师的IT专业人士量身打造的指南。它深入探讨了架构师的角色、职责以及如何在职业生涯中逐步提升自己的技能和视野,以适应快速变化的IT环境。 一、架构师的角色与...
### 软件架构师成长之路的关键知识点 #### 一、软件架构师的角色与价值 - **定义**:软件架构师通常被视为一个组织中的技术领袖,他们负责制定软件产品的技术路线和技术框架,确保产品的可扩展性和高效性。 - **...
"架构师成长之路+学习教程"旨在帮助那些渴望成为架构师或者正在这个道路上探索的人们,提供必要的知识和技能。下面将详细探讨架构师的职责、成长路径以及如何通过学习来提升自己的能力。 一、架构师的角色与职责 1....
《IT架构师成长之路》这本书主要探讨了IT架构师如何从初学者逐步成长为专业人士的历程,其中涵盖了多种关键技术和解决方案。书中的内容涉及到数据库技术、分布式系统、数据存储以及架构设计等多个方面,对于想要深入...
根据给定的信息,本文将详细解析“软件测试架构师成长之路”,从四个阶段:打酱油篇、自动化篇、测试分析篇和技术改进篇,探讨一位测试人员如何成长为一名专业的软件测试架构师。 ### 打酱油篇 #### 背景与挑战 在...
### JAVA软件架构师成长之路知识点解析 #### 一、Java编程入门阶段 ##### 1. 快速掌握Java基础 - **目标**:对于没有Java编程经验的新手来说,首要任务是快速熟悉Java的基本语法和常用功能。此阶段强调的是速度而...
《设计规约架构师成长之路》是一篇关于软件设计和架构的文章,主要涵盖了工程结构、异常处理、领域模型以及库依赖管理等方面的知识。对于架构师的成长而言,理解这些规约和最佳实践至关重要。 首先,文章强调了工程...
### 企业级IT架构分享与云计算架构师成长之路 #### 一、移动互联网的发展趋势与产品设计 在《企业级IT架构分享 云计算架构师成长之路 移动互联网的未来和云计算 共33页.pdf》这份资料中,首先探讨了移动互联网的...
架构师有优秀的编码能力,解决开发人员无法解决的难题 架构师对系统的大数据容量高性能高并发高容错的网站有架构设计和开发经验。 架构师对操作系统、数据库、服务器各种软件使用的配置比较了解,比如Linux、Web负载...
Redis进阶,架构师成长之路
### 企业级IT架构分享——云计算架构师成长之路与Hadoop开发者第四期解析 #### 一、概述 本文档“企业级IT架构分享 云计算架构师成长之路 Hadoop开发者第四期 共97页.pdf”主要围绕云计算架构设计以及Hadoop技术的...
### 企业级IT架构分享——云计算架构师成长之路与Hadoop平台的大数据整合 #### 一、引言 随着信息技术的飞速发展,企业对于高效、稳定、灵活的IT架构需求日益增长。在这个背景下,云计算架构师的角色变得尤为重要...
### 企业级IT架构分享:云计算架构师成长之路——在Windows上安装Hadoop教程 #### 知识点一:理解企业级IT架构与云计算架构师角色 - **企业级IT架构**:指的是支撑大型企业业务运作的信息技术架构体系。它不仅涵盖...