软件架构师是每个程序员职业生涯中内功心法修炼的终极目标。要达到这个目标需要具备“十八般武艺,八十种技巧”,本书正是继《Java代码与架构之完美优化——实战经典》《软件品质之完美管理——实战经典》之后,优秀软件架构师又一本必读书,也是“软件架构师成长之路”系列教程的第三部作品,亦是本系列的收官之作。本书总结了JavaEE软件架构师应该具备的架构设计相关技能体系,希望可以成为程序员朋友们架构师成长之路上的铺路石。从形上看,架构是系统结构的骨架,支撑和连接各个部分;从身上看,架构是系统设计的灵魂,深刻体现了业务技术实现的本质。从纵向架构上看,架构涉及由客户端发送请求到服务器处理,再从服务器返回给客户端的各个主要步骤的具体处理细节;从横向架构上看,架构又关联到实现这种客户端-服务器端的架构模式。本书把与此横纵体系相关的技术进行了系统的总结与对比。另外,要成为一名优秀的软件架构师,还需要攻克以下三个难关:
1)需要掌握各种技术的优缺点与特性,才能知道如何使用。
2)站在架构设计者的角度,思考一款优秀的系统架构应该具备哪些要素。
3)如何用“组合拳”来巧妙解决复杂问题。
本书是作者多年Java软件架构实践与研究的经验总结,包含架构设计的8项原则,21种设计技巧,25个温馨提示,39个实战经典案例,架构测试以及开源软件设计、开发、发布等知识,同时还包括架构自动化代码工具的设计与开发技能。其内容详实、条理清晰、图文并茂、实战性强——一切都围绕提高读者软件架构实战技能。本书是培养具有高级软件架构设计与开发技能的优秀架构师所必备的武器之一。
架构师成长之路
一名优秀的软件架构师至少需要5~10年的一线实践。需练就一身本领,且能在项目中胜任架构师角色。如果想要成为一名优秀的架构师,就需要进一步精雕细琢自己的技能,且能培养架构师人才。虽然这条路充满艰辛,但是当一步一步攀登到峰顶时,那种收获的喜悦只有自己才可以体会得到……
本书所面向的读者
本书以提高读者的综合技能、启发读者的创新能力为目标,吸收国外架构设计思想并结合国内实际情况,从架构设计者的角度系统地介绍了Java领域架构设计思想与开发技术。如图2所示。
本书共15章,分为架构基本理论、架构高级技能、架构综合技能以及架构创新思维四部分,如图3所示。
第一部分包括第1、2章,介绍了架构模式、架构思维、架构编程思想、架构设计原则等,为软件架构设计的基本理论;第二部分包括第3~5章,介绍了架构师必备的工具体系、Java机制技能要点专题、Java后台技术栈技能要点专题以及Java八大核心架构设计体系,为软件架构设计的高级技能体系;第三部分包括第6~13章,以Spring 技术为脉络,介绍了JavaWeb、SpringMVC、SpringIntegration、Spring Boot、SOAPWebService、RESTWebService以及框架测试等架构设计相关的核心技术,为软件架构设计与实现相关的综合技能体系;第四部分包括第14、15章,以开源框架以及自动化代码生成工具开发为中心,启发读者的创新思维并起到抛砖引玉的作用,为软件架构的创新技能体系。在整体内容的编排上,随着章节的展开,难度也逐步增加,如图4所示。
需要获取这份文档的小伙伴可以直接转发 关注后私信(学习)即可免费获取1
目录展示
第1章架构概述
在阅读本章内容之前,首先思考以下问题:
1.什么是软件架构?
2.架构设计的目标是什么?
3.什么是架构的单位?
4.常见架构错误认识有哪些?
5.架构能带来哪些利益?
6.应用架构的发展大致经过了哪些过程?
7.架构师分为哪些类别?
8.架构师的素质要求有哪些?
第2章架构基本理论
在阅读本章内容之前,首先思考以下问题:
1.架构的流程包含哪些内容?
2.架构设计与开发中的成果有哪些?
3.迭代开发与敏捷开发有哪些区别?
4.面向对象的四大特征是什么?
5,如何实现多态?
6. Scrum的会议有哪些?
7.构件图与部署图之间的区别是什么?
8.外观模式与适配器模式之间的区别是什么?
9.模板方法模式与建造者模式之间的区别是什么?
10.常用架构模式有哪些?
11.架构思维之间的关系如何?
12.架构编程思想之间的关系如何?
13.架构设计原则有哪些?
14.重构技巧包含哪些内容?
第3章构建开发工具体系
在阅读本章内容之前,首先思考以下问题:
1. DevOps能力图中的开发工具有哪些类别?
2.常用代码管理工具有哪些?
3.常用项目构建工具有哪些?
4.Eclipse插件安装方式有哪些?
5. Eelipse启动方式有哪些?
6.Eclipse 里“Ctrl Shift R”与“Ctrl Shift T”快捷键的区别是什么?
第4章Java机制技能专题
在阅读本章内容之前,首先思考以下问题:
1.JavaBean的规范有哪些?
2.系统间的通信方式有哪些?
3.内存回收算法有哪些?
4.XML与注解各自的优缺点有哪些?
5. Servlet的工作原理是什么?
6.监听器、过滤器与拦截器的使用场景是什么?
7.Cookie与Session机制的目的是什么?
8. Socket建立连接的三次处理是什么?
第5章Java后台技术栈专题
在阅读本章内容之前,首先思考以下问题:
1. HTTP 消息的结构构成如何?
2.XML解析技术有哪些?
3.XML与Properties区别是什么?
4.JDBC重要接口有哪些?
5.为什么要使用AOP技术?
6.字符集与字符编码的关系如何?
7.JDK1.8提供了哪些新的常用日期处理API?
8.页面上如果检索出大量数据时应该如何处理?
9,如何对属性文件进行国际化处理?
10.重复提交的类别有哪些?
11.排他解决方案有哪些?
12.调试时的问题定位点有哪些技巧?
第6章Java核心架构体系
在阅读本章内容之前,首先思考以下问题:
1.常用日志框架有哪些?
2.安全注册的方式有哪些?
3.角色与权限之间的关系是什么?
4.单项目验证与相关项目验证应该如何处理?
5.架构师关注的异常种类有哪些?
6.什么是阻塞架构?
7.数据字典的数据处理方式应该如何设计?
第7章JavaWeb
在阅读本章内容之前,首先思考以下问题:
1.Tomcat初始化过程是什么?
2.Tomcat架构是什么?
3. Tomcat核心结构由哪两个组件组成?
4.常用JavaWeb服务器有哪些?
5. Struts1与Struts2的区别有哪些?
6. SpringMVC与Struts2的区别有哪些?
7. Hibernate与MyBatis的区别有哪些?
8.为什么要集成各种框架?
第8章SpringMVc
在阅读本章内容之前,首先思考以下问题:
1. Spring 的核心容器有哪些?
2. SpringMVC5的新特性有哪些?
3. SpringMVC 5中取消支持的框架有哪些?
4.SpringMVC的URL匹配风格有哪些?
5. SpringMVC映射时所支持的参数类别有哪些?
6. SpringMVC的控制器所支持的返回类型有哪些?
7.如何自定义SpringMVC类型转换器?
8. SpringBatch 的使用场景有哪些?
第9章Spring Integration
在阅读本章内容之前,首先思考以下问题:
1. Spring Integration的核心组件有哪些?
2. Spring Integration 的消息体包含几部分?
3.Spring Integration适用于什么场景?
4.Spring Integration的架构模式是什么?
第10章Spring Boot
在阅读本章内容之前,首先思考以下问题:
1.为什么要用Spring Boot?
2.Starter的类别有哪些?
3.如何方便地构建Spring Boot工程?
4. Spring Boot与Spring Cloud有什么关系?
5.微服务设计原则有哪些?
第11章SoAP WebService
在阅读本章内容之前,首先思考以下问题:
1.什么是WebService?
2.什么是富客户端?
3.为什么要使用WebService?
4.RPC与WebService的区别与联系是什么?
5. WSDL包含哪些重要元素?
6.在Java领域实现SOAP的常用技术有哪些?
第12章REST WebService
在阅读本章内容之前,首先思考以下问题:
1. REST与RESTful 的关系是什么?
2.什么是WADL?
3.REST架构特性有哪些?
4.如何选择REST与SOAP?
5.URI的设计技巧有哪些?
6.HTTP方法有哪些?
7.如果网站使用了Cookie技术,那么系统还是REST框架吗?
8.常用接口测试工具有哪些?
第13章框架测试
在阅读本章内容之前,首先思考以下问题:
1.自动化测试目标有哪些?
2.什么情况下需要自动化测试?
3.常用自动化工具有哪些?
4.常用性能测试工具有哪些?
5.性能优化原则有哪些?
6.数据库优化方法有哪些?
7.框架优化方法有哪些?
8.如何优化JVM?
第14章开源框架
在阅读本章内容之前,首先思考以下问题:
1.选择开源框架的技巧有哪些?
2.使用开源框架时有哪些注意事项?
3.应该如何对开源框架进行再开发?
4.开发新的开源框架时有哪些注意事项?
5,如何设定软件版本号?
6.软件的版本一般有哪些?
7.开源软件发布的流程是什么?
第15章自动化代码生成工具
在阅读本章内容之前,首先思考以下问题:
1.自动化代码生成工具的设计原则是什么?
2.自动化代码生成工具的分类有哪些?
3.自动化代码生成工具的设计技巧有哪些?
4.设计SSM框架自动化代码生成工具时需要考虑哪些要素?