当前位置:主页 > 书籍配套资源 > 软件架构配套资源
《软件架构:Python语言实现》配书资源

《软件架构:Python语言实现》配书资源

  • 更新:2022-02-10
  • 大小:64.3 MB
  • 类别:软件架构
  • 作者:阿南德·巴拉钱德拉·皮莱
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书首先解释如何利用Python语言实现应用软件架构,让您逐步理解什么是架构级的需求以及如何确定这些需求;然后,您可以获得对架构不同质量需求的完整理解,这些质量需求包括可维护性、可重用性、可测试性、可扩展性、性能、可用性和安全性等,进一步会帮助架构师构建满足业务需求的架构产品。

封面图

目录

  • 译者序
  • 关于作者
  • 关于评审人
  • 前言
  • 第1章软件架构原理 …… 1
  • 1.1软件架构定义 …… 2
  • 1.1.1软件架构与设计 …… 2
  • 1.1.2软件架构相关的几个方面 …… 3
  • 1.2软件架构的特征 …… 3
  • 1.2.1用架构来定义一种结构 …… 3
  • 1.2.2由架构来挑选一组核心元素 …… 4
  • 1.2.3由架构来捕获早期的设计决策 …… 4
  • 1.2.4由架构来管理利益相关者的需求 …… 5
  • 1.2.5架构影响着组织结构 …… 5
  • 1.2.6架构受到环境的影响 …… 6
  • 1.2.7架构是对系统的文档化 …… 6
  • 1.2.8架构通常会遵循某个模式 …… 7
  • 1.3软件架构的重要性 …… 7
  • 1.4系统架构与企业架构 …… 8
  • 1.5架构的质量属性 …… 10
  • 1.5.1可修改性 …… 11
  • 1.5.2可测试性 …… 13
  • 1.5.3可扩展性 …… 14
  • 1.5.4性能 …… 15
  • 1.5.5可用性 …… 16
  • 1.5.6安全性 …… 17
  • 1.5.7可部署性 …… 18
  • 1.6本章小结 …… 19
  • 第2章编写可修改可读的代码 …… 20
  • 2.1什么是可修改性 …… 20
  • 2.2与可修改性相关的几个方面 …… 20
  • 2.3理解可读性 …… 21
  • 2.3.1Python和可读性 …… 21
  • 2.3.2可读性–反模式 …… 22
  • 2.4增强可读性的各种技术 …… 24
  • 2.4.1文档化代码 …… 24
  • 2.4.2遵守编码和风格规范 …… 30
  • 2.4.3审查和重构代码 …… 31
  • 2.4.4注释代码 …… 31
  • 2.5可修改性的基础——内聚和耦合 …… 32
  • 2.5.1测量内聚性和耦合性 …… 33
  • 2.5.2字符串和文本处理 …… 35
  • 2.6探索提高可修改性的策略 …… 37
  • 2.6.1提供显式接口 …… 37
  • 2.6.2减少双向依赖 …… 37
  • 2.6.3抽象出公共服务 …… 38
  • 2.6.4使用继承技术 …… 38
  • 2.6.5使用延迟绑定技术 …… 42
  • 2.7度量——静态分析工具 …… 43
  • 2.7.1什么是代码坏味道 …… 43
  • 2.7.2圈复杂度——McCabe度量 …… 44
  • 2.7.3度量结果测试 …… 45
  • 2.7.4运行静态检查器 …… 47
  • 2.8重构代码 …… 53
  • 2.8.1降低复杂度 …… 53
  • 2.8.2改善代码坏味道 …… 55
  • 2.8.3改善风格上和编码上的问题 …… 57
  • 2.9本章小结 …… 57
  • 第3章可测试性——编写可测试的代码 …… 58
  • 3.1理解可测试性 …… 58
  • 3.1.1软件可测试性及相关属性 …… 58
  • 3.1.2架构级的方方面面 …… 59
  • 3.1.3策略 …… 60
  • 3.2白盒测试原理 …… 65
  • 3.2.1单元测试 …… 65
  • 3.2.2操作中的单元测试 …… 66
  • 3.2.3单元测试模块nose2 …… 69
  • 3.2.4用py.test进行测试 …… 70
  • 3.2.5代码覆盖 …… 72
  • 3.2.6仿制一些东西 …… 74
  • 3.2.7文档中的内联测试——doctest …… 78
  • 3.2.8集成测试 …… 81
  • 3.2.9测试自动化 …… 83
  • 3.3测试驱动开发 …… 84
  • 3.4有回文的TDD …… 85
  • 3.5本章小结 …… 90
  • 第4章好的性能就是回报 …… 92
  • 4.1什么是性能 …… 93
  • 4.2软件性能工程 …… 93
  • 4.3性能测试和度量工具 …… 94
  • 4.4性能复杂度 …… 95
  • 4.5度量性能 …… 96
  • 4.5.1使用上下文管理器度量时间 …… 97
  • 4.5.2使用timeit模块来计时代码 …… 99
  • 4.5.3使用timeit度量代码的性能 …… 100
  • 4.5.4揭示时间复杂度——各种图 …… 102
  • 4.5.5使用timeit度量CPU时间 …… 106
  • 4.6剖析 …… 107
  • 4.6.1确定性剖析 …… 107
  • 4.6.2使用cProfile和profile进行剖析 …… 108
  • 4.6.3收集和报告统计数据 …… 111
  • 4.6.4第三方剖析器 …… 113
  • 4.7其他工具 …… 119
  • 4.7.1objgraph …… 120
  • 4.7.2pympler …… 121
  • 4.8程序设计性能——数据结构 …… 123
  • 4.8.1可变容器——链表、字典和集合 …… 123
  • 4.8.2不可变容器——元组 …… 124
  • 4.8.3高性能容器——集合模块 …… 125
  • 4.8.4概率数据结构——布隆过滤器 …… 131
  • 4.9本章小结 …… 134
  • 第5章开发可扩展的应用 …… 136
  • 5.1可扩展性和性能 …… 137
  • 5.2并发性 …… 139
  • 5.2.1并发性与并行性 …… 140
  • 5.2.2Python中的并发性——多线程机制 …… 141
  • 5.3缩略图产生器 …… 141
  • 5.3.1缩略图产生器——生产者/消费者架构 …… 143
  • 5.3.2缩略图产生器——使用锁的资源约束 …… 147
  • 5.3.3缩略图产生器——使用信号量的资源约束 …… 150
  • 5.3.4资源约束——信号量和锁比较 …… 153
  • 5.3.5缩略图产生器——使用条件的URL速率控制器 …… 153
  • 5.4多线程机制——Python和GIL …… 160
  • 5.4.1Python中的并发性——多进程机制 …… 160
  • 5.4.2质数检查器 …… 161
  • 5.4.3排序磁盘文件 …… 163
  • 5.5多线程与多进程比较 …… 168
  • 5.6先入为主的与合作的多任务处理 …… 170
  • 5.7Python中的asyncio模块 …… 173
  • 5.8等待future对象——async和await …… 175
  • 5.9concurrent.future——高级并发处理 …… 178
  • 5.9.1磁盘缩略图产生器 …… 179
  • 5.9.2并发选项——如何选择? …… 181
  • 5.10并行处理库 …… 182
  • 5.10.1joblib …… 182
  • 5.10.2PyMP …… 183
  • 5.10.3fractals —— Mandelbrot集 …… 184
  • 5.11Web扩展 …… 189
  • 5.11.1扩展工作流——消息队列和任务队列 …… 189
  • 5.11.2Celery —— 一种分布式任务队列 …… 190
  • 5.11.3在Web上使用Python服务——WSGI …… 194
  • 5.12可扩展架构 …… 197
  • 5.12.1垂直可扩展架构 …… 197
  • 5.12.2水平扩展架构 …… 198
  • 5.13本章小结 …… 201
  • 第6章安全性——编写安全代码 …… 202
  • 6.1信息安全架构 …… 202
  • 6.2安全编码 …… 203
  • 6.3常见的安全漏洞 …… 204
  • 6.4Python安全吗? …… 208
  • 6.4.1读取输入 …… 209
  • 6.4.2任意输入求值 …… 211
  • 6.4.3溢出错误 …… 214
  • 6.4.4序列化对象 …… 216
  • 6.5Web应用的安全问题 …… 219
  • 6.5.1服务器端模板注入 …… 220
  • 6.5.2服务器端模板注入——回避 …… 222
  • 6.5.3服务拒绝 …… 223
  • 6.5.4跨站脚本攻击 …… 226
  • 6.5.5回避——DoS和XSS …… 227
  • 6.6Python中的安全策略 …… 228
  • 6.7安全编码策略 …… 234
  • 6.8本章小结 …… 234
  • 第7章Python设计模式 …… 236
  • 7.1设计模式——元素 …… 237
  • 7.2设计模式分类 …… 237
  • 7.2.1可插拔的散列算法 …… 238
  • 7.2.2可插拔的散列算法总结 …… 242
  • 7.3Python模式——创建模式 …… 242
  • 7.3.1单例模式 …… 242
  • 7.3.2工厂模式 …… 248
  • 7.3.3原型模式 …… 250
  • 7.3.4建造者模式 …… 256
  • 7.4Python模式——结构化模式 …… 261
  • 7.4.1适配器模式 …… 261
  • 7.4.2外观模式 …… 269
  • 7.4.3代理模式 …… 275
  • 7.5Python模式——行为模式 …… 279
  • 7.5.1迭代器模式 …… 279
  • 7.5.2观察者模式 …… 282
  • 7.5.3状态模式 …… 288
  • 7.6本章小结 …… 293
  • 第8章Python架构模式 …… 295
  • 8.1MVC概述 …… 296
  • 8.1.1模型模板视图——Django …… 297
  • 8.1.2Django管理——自动的以模型为中心的视图 …… 297
  • 8.1.3灵活的微框架——Flask …… 299
  • 8.2事件驱动编程 …… 300
  • 8.2.1采用I/O多路复用select模块的聊天服务器和客户端 …… 300
  • 8.2.2事件驱动与并发编程 …… 306
  • 8.2.3Twisted …… 306
  • 8.2.4Eventlet …… 313
  • 8.2.5Greenlet和Gevent …… 314
  • 8.3微服务架构 …… 316
  • 8.3.1Python中的微服务框架 …… 317
  • 8.3.2微服务实例——餐馆预订 …… 317
  • 8.3.3微服务的优点 …… 320
  • 8.4管道和过滤器架构 …… 320
  • 8.5本章小结 …… 325
  • 第9章部署Python应用程序 …… 326
  • 9.1可部署性 …… 327
  • 9.1.1影响可部署性的因素 …… 327
  • 9.1.2软件部署架构的层次 …… 328
  • 9.2Python软件部署 …… 329
  • 9.2.1给Python代码打包 …… 329
  • 9.2.2使用Fabric进行远程部署 …… 340
  • 9.2.3使用Ansible进行远程部署 …… 341
  • 9.2.4使用Supervisor管理远程守护进程 …… 342
  • 9.3部署——模式和最佳实践 …… 343
  • 9.4本章小结 …… 344
  • 第10章各种用于调试的技术 …… 346
  • 10.1最大子阵列问题 …… 347
  • 10.1.1“print”的力量 …… 348
  • 10.1.2分析和重写 …… 349
  • 10.1.3代码计时和代码优化 …… 351
  • 10.2简单的调试技巧和技术 …… 353
  • 10.2.1词搜索器程序 …… 353
  • 10.2.2词搜索器程序——调试步骤1 …… 354
  • 10.2.3词搜索器程序——调试步骤2 …… 355
  • 10.2.4词搜索器程序——最终代码 …… 356
  • 10.2.5跳过代码块 …… 357
  • 10.2.6停止执行 …… 357
  • 10.2.7使用wrapper来控制外部依赖 …… 358
  • 10.2.8用函数的返回值或数据来替换函数(模拟) …… 359
  • 10.3作为一种调试技术的日志记录 …… 367
  • 10.3.1简单的应用程序日志记录 …… 368
  • 10.3.2高级日志记录——日志记录器对象 …… 369
  • 10.4调试工具——使用各种调试器 …… 374
  • 10.4.1一个使用pdb的调试会话 …… 375
  • 10.4.2pdb——两个相似的工具 …… 377
  • 10.5高级调试——跟踪 …… 379
  • 10.5.1trace模块 …… 379
  • 10.5.2lptrace程序 …… 379
  • 10.5.3使用strace的系统调用跟踪 …… 380
  • 10.6本章小结 …… 381

资源下载

资源下载地址1:https://pan.baidu.com/s/1yntYwv2DE5Tdc4sDX-SLDA

相关资源

网友留言