猜你喜欢
Java架构之完美设计

Java架构之完美设计

书籍作者:颜廷吉 ISBN:9787111635123
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6431
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
本书内容分为软件架构理论、软件架构高级技能、软件架构综合技能以及软件架构创新四大部分。第壹部分是第1、2章,介绍了软件架构师练就的方法、软件架构设计模式、软件架构开发模型、软件架构模式、软件架构思维、软件架构编程思想以及软件架构设计原则等,为软件架构设计的基本理论;第二部分是第3~5章,介绍了软件架构师必备的工具体系、Java机制技能要点专题、Java后台技术栈技能要点专题以及日志架构设计、安全架构设计、权限架构设计、验证架构设计、异常架构设计、消息架构设计、阻塞架构设计、数据字典架构设计Java八大核心架构设计体系,为软件架构设计的高级技能体系;第三部分是第6~13章,以Spring技术为脉络,介绍了JavaWeb、SpringMVC、Spring Integration、Spring Boot、SOAP WebService、REST WebService以及框架测试等架构设计相关的核心技术,为软件架构设计与实现相关的综合技能体系;第四部分是第14、15章,以开源框架以及自动化代码生成工具开发为中心,启发读者的创新思维,为软件架构的创新技能体系。
本书是“软件架构师成长之路”丛书的高级篇,适合软件工程师、架构师以及软件项目经理使用;还适合那些有志于成为软件架构师的其他软件从业人员自学使用;也可以作为高等院校相关专业师生参考教材;培训机构也可将本书作为软件架构等方面的培训教材。
作者简介
颜廷吉,山东临沂人,毕业于北京大学软件与微电子学院,获硕士学位,365IT学院创始人兼首席讲师。“软件架构师成长之路”三部曲《Java代码与架构之完美优化——实战经典》《软件品质之完美管理——实战经典》《Java架构之完美设计——实战经典》作者。现就职于日本e-Technology公司,从事软件架构方面的研究、咨询与教学工作,有十余年的一线软件设计与研发经验。
编辑推荐
适读人群 :软件工程师、架构师以及软件项目经理
1.作者:作者在国外软件公司任职,有十余年的软件设计与研发经验。
2.配套丰富:28个视频+285分钟视频讲解+PPT电子课件+案例源代码,使读者学习起来事半功倍。
前言
软件架构师是每个程序员职业生涯中内功心法修炼的终极目标。要达到这个目标需要具备“十八般武艺,八十种技巧”,本书正是继《Java代码与架构之完美优化——实战经典》《软件品质之完美管理——实战经典》之后,优秀软件架构师又一本必读书,也是“软件架构师成长之路”系列教程的第三部作品,亦是本系列的收官之作。本书总结了JavaEE软件架构师应该具备的架构设计相关技能体系,希望可以成为程序员朋友们架构师成长之路上的铺路石。
从形上看,架构是系统结构的骨架,支撑和链接各个部分;从神上看,架构是系统设计的灵魂,深刻体现了业务技术实现的本质。从纵向架构上看,架构涉及由客户端发送请求到服务器处理,再从服务器返回给客户端的各个主要步骤的具体处理细节;从横向架构上看,架构又关联到实现这种客户端-服务器端的架构模式。本书把与此横纵体系相关的技术进行了系统的总结与对比。另外,要成为一名优秀的软件架构师,还需要攻克以下三个难关:
1)需要掌握各种技术的优缺点与特性,才能知道如何使用。
2)站在架构设计者的角度,思考一款优秀的系统架构应该具备哪些要素。
3)如何用“组合拳”来巧妙解决复杂问题。
本书尝试引导读者朋友来逐一攻破。
任何技术的学习都需要先调查研究,再模仿,最后再进行优化升级(也就是创新),架构设计亦是如此。本书首先介绍了架构设计理论与必备高级专题技能,然后介绍了各种常用架构模式以及对常用框架的模拟,最后介绍了开源框架设计以及自动化代码生成工具的相关技巧。其中重点介绍的部分配备了课后习题,也是对核心技能的进一步巩固与补充;也有点到为止的部分,目的是扩大大家的知识面,形成软件架构理论的必备知识。架构设计绝不是不着边际的假想,而应接地气,因此需要用一种具体的技术来实现其设计思想,所以本书以Java技术以及其最重要的开源框架Spring为核心,进行重点技术代码的演示。书中涉及架构实现代码部分,短的几十上百行,长的几百上千行,其中有些代码比较复杂,希望读者朋友能够静下心来慢慢体会。
“软件架构师成长之路”系列教程历时十年才陆续问世,之所以花费这么长的时间,一是因为涉及的知识与技巧非常多,二是体现了创作过程的“工匠精神”——作者除了倾尽自己的全力,本着务实严谨、精益求精的态度来创作,同时也时时思考:应该写哪些?不应该写哪些?系列教材内容广度与深度如何?应该以怎样的形式进行编排?如何贯穿前后知识点?如何体现综合技能?如何由点到线,由线到面,再由面到体,从而形成系统的知识与技巧体系?还有哪些部分可以优化?能否给读者带来实质性的帮助?有没有创新?如何启发读者朋友进行创新?有时候思考良久都迟迟不能下笔。
人们对软件架构的逐渐重视也是本书写作的一个契机,希望本系列教程能成为国内第一套软件架构师培训相关的原创系列图书,借此跟大家分享对架构的浅薄理解,同时亦介绍自己“刻意训练”的成长经历,权作抛砖引玉,希望读者朋友多来信交流。
一名优秀的软件架构师至少需要5~10年的一线实践。需练就一身本领,且能在项目中胜任架构师角色。如果想要成为一名优秀的架构师,就需要进一步精雕细琢自己的技能,且能培养架构师人才。虽然这条路充满艰辛,但是当一步一步攀登到峰顶时,那种收获的喜悦只有自己才可以体会得到……

本书与软件架构师

本书是作者多年Java软件架构实践与研究的经验总结,包含架构设计的8项原则,21种设计技巧,25个温馨提示,39个实战经典案例,架构测试以及开源软件设计、开发、发布等知识,同时还包括架构自动化代码工具的设计与开发技能。其内容详实、条理清晰、图文并茂、实战性强——一切都围绕提高读者软件架构实战技能。本书是培养具有高级软件架构设计与开发技能的优秀架构师所必备的武器之一。
365IT学院规划的整个“软件架构师成长之路”系列教程分为初、中、高三部曲,如图1 所示。第一部《Java代码与架构之完美优化——实战经典》为品质管理“开发篇”,总结了代码品质与架构优化的相关技能;其姊妹篇《软件品质之完美管理——实战经典》为品质管理“管理篇”,总结了软件品质管理相关技能;第三部即本书,是这个培训系列教材的高级读本,总结了架构设计与实现的相关技能。三本书并不是孤立的,而是相辅相成的。例如,利用第三本书的架构设计技术进行系统设计之后,还需要借助第一本书的架构优化技巧进行优化,这样就形成一个由垂直整合的闭环生态链和一个横向扩展的开放生态链共同构成的架构技能生态体系。卓越的软件架构设计技能是程序员通往架构师神圣殿堂的必经之路,本书将是这条路上的一盏明灯,帮助读者早日实现软件架构师之梦。

本书与翻转课堂模式

本书采用翻转课堂模式(The Flipped Classroom)。在内容安排上,首先抛出本章的关键问题,让读者进行思考;之后进行解释说明;章节最后根据内容深浅,适当加入练习题,以巩固核心内容的理解。这样在阅读技巧上进行了革新,可以让读者更好地吸收与理解本书内容。在阅读过程中有任何疑问都可以和作者沟通,作者会给予及时的帮助与反馈。

本书配套教学视频与代码

本书配套教学视频与教程将同步出炉。配套视频可以在官网(www.365itedu.com)免费下载,也可以在机械工业出版社计算机分社官方微信订阅号“IT有得聊”上进行下载。在作者的引读下,希望读者朋友可以更好、更轻松地学好本书所阐述的技能。
另外,本书配套代码也会放在GIT网(https://github.com/yantingji/java-architecture-book),以便随时更新。

本书特色

1)授人以鱼,授之以渔:本书给出了架构设计技能要点、开源框架设计思想、自动化代码工具设计技巧等最基本的设计理念,希望读者能掌握并在未来架构设计中灵活运用。
2)图解技术,形象生动:避免了乏味难懂的文字描述,使繁冗复杂的事物一目了然。
3)综合能力,综合技巧:本书一部分内容是对Java EE领域技能的总结,因此给出的案例大部分具有一定的难度,希望以工程案例的形式,来引领读者领悟如何提高综合能力。
4)设实分离,开源创新:本书主要论述的是设计思想以及架构相关技术,而关于架构设计的实现部分在本书的辅助代码资料中,也就是设计与实现进行分离。辅助代码将以开源的形式公开,不但会根据需求进行相应的升级,读者朋友亦可以进行优化。这种写作方式的大胆尝试,也是一种创新。本书不单独讲理论,而是以案例驱动的形式进行实战解析,这不仅是经验与理论的总结,更重要的是希望用最佳项目案例来说明技术应用。开源精神是软件领域的一大特色,作者希望能尽到一点绵薄之力。另外,本书介绍的各种案例也给读者留下了更大的创新与扩展空间。

本书所面向的读者

本书以提高读者的综合技能、启发读者的创新能力为目标,吸收国外架构设计思想并结合国内实际情况,从架构设计者的角度系统地介绍了Java领域架构设计思想与开发技术。
本书以实用为核心,所面向的读者主要是志在成为优秀软件架构师的程序员,也适用于以下读者朋友:
1)走在架构师之路上的工程师。
2)软件项目经理。
3)对计算机技术感兴趣的在校学生。

如何最佳阅读本书

本书共15章,分为架构基本理论、架构高级技能、架构综合技能以及架构创新思维四部分。
第一部分包括第1、2章,介绍了架构模式、架构思维、架构编程思想、架构设计原则等,为软件架构设计的基本理论;第二部分包括第3~5章,介绍了架构师必备的工具体系、Java机制技能要点专题、Java后台技术栈技能要点专题以及Java八大核心架构设计体系,为软件架构设计的高级技能体系;第三部分包括第6~13章,以Spring技术为脉络,介绍了JavaWeb、SpringMVC、SpringIntegration、Spring Boot、SOAPWebService、RESTWebService以及框架测试等架构设计相关的核心技术,为软件架构设计与实现相关的综合技能体系;第四部分包括第14、15章,以开源框架以及自动化代码生成工具开发为中心,启发读者的创新思维并起到抛砖引玉的作用,为软件架构的创新技能体系。在整体内容的编排上,随着章节的展开,难度也逐步增加 。
阅读时,希望读者朋友能够自己先思考并解决书中提出的问题。因为无法展示从零到最终完成的代码编写过程,读者朋友可以先运行这些代码,在Debug状态下进行跟踪执行流程,理解后再从零开始写。也可以利用逆向思维进行学习,也就是一部分一部分地删除案例中的辅助代码(先把宽度变窄,再把深度变浅),直到精简到几个一眼就可以看明白的类为止。在做好驱动测试的情况下,一步一步把代码输入一遍,直到自己完全理解。
成为软件架构师必须掌握的知识与技能非常多,但是为了在有限的篇幅内展示最重要的核心内容,本书把大部分代码全部以辅助教材的形式进行编排,希望读者朋友能够利用好这些代码示例。本书只是重点展示了架构设计思想以及最核心的部分代码。另外,架构相关技能与架构设计的实现案例一部分安排在正文,另外一部分放在课后习题里,课后习题也是本书的重要组成部分,切莫忽视!图4Java架构技能体系
书中对一些正文外的重要知识点用温馨提示(NOTE)的形式作了补充,内容安排亦分布在各个章节的最佳位置,以便读者学习。

致谢

首先,感谢NCIT集团技术大咖杨小虎、庄茂为在百忙之中抽出宝贵时间参与技术内容的讨论与审核。
其次,感谢好友周伟鹏、尹勋成。十年来,他们和作者一起探讨了本系列教程的规划,还审核了从初级到高级所有版本的初稿。同样亦真心感谢若为投资执行董事吴冰,同事陈钢、杨晗和关宝林,以及山东老家的闫晓峰老师与兰霞老师细致耐心的审核。
再次,在作者调查研究整理的过程中,经常会把优秀的案例与文句进行记录,所以本书中的部分案例内容也参考了51CTO、博客园、CSDN、ITEYE等平台上的技术大咖博主的内容,这些作者的智慧同样为本书的写作带来了帮助,在此一并感谢。
最后,感谢爱人兰宁的大力支持。虽第三次身怀六甲,还为本书的完成给予了最大限度的支持。本系列教程的规划与完
目录

前言
第1章 架构概述
1.1 架构来源
1.1.1 软件架构
1.1.2 架构单位
1.1.3 常见架构错误概念
1.2 架构的价值
1.3 架构发展历史
1.4 架构师
1.4.1 架构师分类
1.4.2 软件架构师职责
1.4.3 软件架构师素质要求
1.4.4 架构师练就方法
小结
习题

第2章 架构基本理论
2.1 架构品质
2.2 架构过程
2.2.1 架构流程
2.2.2 架构成果
2.2.3 架构团队
2.3 架构开发模型
2.3.1 开发模型概述
2.3.2 边做边改模型
2.3.3 迭代开发模型
2.3.4 Scrum开发模型
2.4 架构设计常用UML
2.4.1 概述
2.4.2 类图
2.4.3 序列图
2.4.4 构件图
2.4.5 部署图
2.5 架构常用设计模式
2.5.1 模式概述
2.5.2 设计模式概述
2.5.3 设计模式与框架
2.5.4 单例模式
2.5.5 工厂方法模式
2.5.6 建造者模式
2.5.7 适配器模式
2.5.8 外观模式
2.5.9 代理模式
2.5.10 模板方法模式
2.5.11 策略模式
2.5.12 责任链模式
2.6 架构模式
2.6.1 Java EE规格与框架
2.6.2 模式与架构
2.6.3 MVC架构模式
2.6.4 分层架构模式
2.6.5 管道-过滤器架构模式
2.7 架构思维
2.7.1 抽象思维
2.7.2 分层思维
2.7.3 分治思维
2.7.4 演化思维
2.7.5 架构思维之间的关系
2.8 架构编程思想
2.8.1 面向过程编程
2.8.2 面向对象编程
2.8.3 面向服务架构
2.8.4 架构思想之间的关系
2.9 架构设计原则
2.9.1 简单原则
2.9.2 合适原则
2.9.3 演化原则
2.10 架构优化利器
2.10.1 重构带来的利益
2.10.2 重构技巧
2.10.3 重构工具
小结
习题

第3章 构建开发工具体系
3.1 DevOps
3.1.1 代码管理工具
3.1.2 项目构建工具
3.1.3 持续集成工具
3.2 智能开发平台
3.2.1 搭建智能开发平台
3.2.2 Eclipse对比IntelliJ
3.2.3 Eclipse启动方式
3.2.4 Eclipse程序启动参数
3.2.5 Eclipse插件安装方式
3.3 工具快捷键
3.3.1 快捷键的好处
3.3.2 快速键盘操作
3.3.3 优化快捷键
3.4 工具优化与保养
小结
习题

第4章Java机制技能专题
4.1通用处理方式
4.1.1串行与并行
4.1.2同步与异步机制
4.1.3在线处理与批处理
4.1.4系统间通信方式
4.2核心机制
4.2.1虚拟机机制
4.2.2内存管理机制
4.3反射与内省
4.3.1反射机制
4.3.2内省机制
4.4注解
4.4.1注解机制
4.4.2注解分类
4.4.3自定义注解
4.4.4注解解析
4.4.5适用场景
4.5Servlet
4.5.1Servlet机制
4.5.2Servlet与CGI
4.5.3Servlet与JSP
4.5.4Servlet与普通Java类
4.5.5自定义标签
4.6监听器、过滤器与拦截器
4.6.1技术要点
4.6.2三者对比
4.7Cookie与Session
4.7.1Cookie机制
4.7.2Session机制
4.8Socket
4.8.1Socket通信机制
4.8.2三次握手建立连接
4.8.3四次挥手释放连接
小结
练习题

第5章 Java后台技术栈专题
5.1 XML
5.1.1 概述
5.1.2 DTD
5.1.3 XSD
5.1.4 XML解析
5.2 HTTP
5.2.1 概述
5.2.2 URL
5.2.3 HTTP消息结构
5.3 JDBC
5.3.1 概述
5.3.2 JDBC开发方法
5.3.3 事务机制
5.4 AOP
5.4.1 概述
5.4.2 SpringAOP
5.5 字符集与乱码
5.5.1 字符集
5.5.2 乱码
5.6 日期处理
5.6.1 概述
5.6.2 日期使用技巧
5.7 翻页控件
5.7.1 问题
5.7.2 解决方案
5.8 属性文件
5.8.1 问题
5.8.2 解决方案
5.9 重复提交
5.9.1 问题
5.9.2 解决方案
5.10 排他
5.10.1 问题
5.10.2 解决方案
5.10.3 防止数据死锁
小结
练习题

第6章 Java核心架构体系
6.1 日志架构设计
6.1.1 概述
6.1.2 日志设计技巧
6.1.3 日志框架
6.2 安全架构设计
6.2.1 安全设计原则
6.2.2 安全注册
6.2.3 认证
6.2.4 SSL与HTTPS
6.2.5 CSRF
6.2.6 XSS
6.3 权限架构设计
6.3.1 概述
6.3.2 设计技巧
6.4 验证架构设计
6.4.1 概述
6.4.2 设计技巧
6.5 异常架构设计
6.5.1 概述
6.5.2 异常分类
6.5.3 异常处理方式
6.5.4 异常处理目的
6.5.5 异常处理流程
6.6 消息架构设计
6.6.1 概述
6.6.2 设计范例
6.7 阻塞架构设计
6.7.1 概述
6.7.2 设计技巧
6.8 数据字典架构设计
6.8.1 概述
6.8.2 设计技巧
6.9 体系架构之间的关系
小结
练习题

第7章 JavaWeb
7.1 Web服务器
7.1.1 服务器种类
7.1.2 Tomcat
7.1.3 服务器集群
7.2 框架对比
7.2.1 Struts1对比Struts2
7.2.2 SpringMVC对比Struts2
7.2.3 Hibernate对比MyBatis
7.3 框架集成
7.3.1
产品特色