[套装书]分布式中间件技术实战(Java版)+Python Flask Web开发入门与项目实战(2册)

作者
钟林森钱游
丛书名
出版社
机械工业出版社
ISBN
9781912241048
简要
简介
内容简介书籍计算机书籍 ---------------------------分布式中间件技术实战(Java版)--------------------------- 《分布式中间件技术实战(Java版)》站在初学者的角度,介绍了几款比较流行的分布式中间件,带领读者从零开始一步一个脚印地学习Java企业级应用开发。书中在讲解必要的理论知识和应用场景后都给出了实际项目案例,可以提高读者的开发水平和项目实战能力。 《分布式中间件技术实战(Java版)》共10章,分为3篇。第1篇开发工具准备,介绍了分布式系统架构的相关知识要点,包括其功能、作用及演进历程,并由此引出了分布式中间件的相关介绍。第2篇开发实战,全面介绍了目前在实际开发中应用比较广泛的几款Java中间件,包括缓存中间件Redis、消息中间件RabbitMQ、统一协调管理中间件ZooKeeper和综合中间件Redisson等,重点介绍了这几款中间件的基本概念、典型应用场景及相应的功能组件等。第3篇总结,对相关内容做了重点回顾与总结。值得一提的是,《分布式中间件技术实战(Java版)》在介绍几款中间件的理论知识时,还以Spring Boot微服务框架作为奠基,整合了相关中间件之间的依赖,并结合作者的实际项目经验进行了代码实战。 《分布式中间件技术实战(Java版)》特别适合中间件实践经验为零的开发者阅读;对于有一定Java应用开发经验的工程师而言,通过阅读《分布式中间件技术实战(Java版)》可以了解中间件在构建企业级应用过程中所提供的思路和解决方案;IT培训机构的学员,也可以通过《分布式中间件技术实战(Java版)》系统地学习中间件技术。 ---------------------------Python Flask Web开发入门与项目实战--------------------------- 本书从Flask框架的基础知识讲起,逐步深入到使用Flask进行Web应用开发实战。其中,重点介绍了使用Flask+SQLAlchemy进行服务端开发,以及使用Jinja 2模板引擎和Bootstrap进行前端页面开发的方法,不但可以让读者系统地学习用Python微型框架开发Web应用的相关知识,而且还能对Web开发中基于角色访问权限控制的方法等相关知识有更为深入的理解。本书提供了大量的实战案例引导读者由浅入深地学习Flask Web应用开发,可以让读者的开发水平有质的提升。 本书共16章,分为3篇。第1篇为Flask基础知识,介绍了Flask开发的环境部署及入门知识,内容涵盖了Flask程序的基本结构、Jinja 2模板、Web表单、SQLAlchemy管理数据库、装饰器的定义和使用、Memcached缓存技术等;第2篇为CMS新闻系统开发,介绍了数据库设计、数据库迁移、无限级分类的实现、登录日志、角色的访问权限控制等内容;第3篇为网站上线准备及部署,介绍了Web程序上线部署前必须要进行的单元测试、性能优化和环境部署等内容。 本书内容通俗易懂,案例丰富,实用性强,特别适合Python Web开发的入门读者和进阶读者学习,也适合PHP程序员和Java程序员等其他Web开发爱好者阅读。另外,本书可以作为相关培训机构的教材用书。
目录



---------------------------分布式中间件技术实战(Java版)---------------------------


第1篇 开发工具准备
第1章 走进分布式中间件 2
1.1 分布式系统概述 2
1.1.1 白话分布式系统 3
1.1.2 分布式系统发展历程 3
1.1.3 分布式系统特性 6
1.1.4 分布式系统常见问题 7
1.2 分布式中间件概述 7
1.2.1 白话分布式中间件 7
1.2.2 常见中间件介绍 8
1.3 本书核心知识要点 9
1.4 本书实战要求与建议 10
第2章 搭建微服务项目 11
2.1 Spring Boot概述 11
2.1.1 什么是Spring Boot 11
2.1.2 Spring Boot的优势 12
2.1.3 Spring Boot的几大特性 13
2.2 搭建规范与搭建流程 13
2.2.1 Spring Boot项目搭建规范 14
2.2.2 Spring Boot项目搭建流程 14
2.2.3 写个Hello World吧 26
2.3 总结 28
第2篇 开发实战
第3章 缓存中间件Redis 30
3.1 Redis概述与典型应用场景介绍 30
3.2 Redis的使用 32
3.2.1 快速安装Redis 32
3.2.2 在Windows环境下使用Redis 34
3.2.3 Spring Boot项目整合Redis 37
3.2.4 Redis自定义注入Bean组件配置 38
3.2.5 RedisTemplate实战 39
3.2.6 StringRedisTemplate实战 43
3.3 Redis常见数据结构实战 45
3.3.1 字符串 45
3.3.2 列表 47
3.3.3 集合 48
3.3.4 有序集合 50
3.3.5 哈希Hash存储 52
3.3.6 Key失效与判断是否存在 54
3.4 Redis实战场景之缓存穿透 56
3.4.1 什么是缓存穿透 57
3.4.2 缓存穿透的解决方案 58
3.4.3 实战过程 58
3.4.4 其他典型问题介绍 65
3.5 总结 66
第4章 Redis典型应用场景实战之抢红包系统 67
4.1 整体业务流程介绍 67
4.1.1 抢红包系统业务流程 68
4.1.2 业务流程分析 68
4.1.3 业务模块划分 70
4.2 数据库表设计与环境搭建 71
4.2.1 数据库表设计 71
4.2.2 开发环境搭建 73
4.2.3 开发流程介绍 83
4.3 红包金额”随机生成算法实战 85
4.3.1 随机数算法 86
4.3.2 红包随机金额生成算法要求 86
4.3.3 二倍均值法简介 87
4.3.4 红包随机金额生成算法实战 88
4.3.5 红包随机金额生成算法自测 90
4.4 发红包”模块实战 91
4.4.1 业务模块分析 92
4.4.2 整体流程实战 93
4.4.3 业务模块自测 99
4.5 抢红包”模块实战 101
4.5.1 业务模块分析 101
4.5.2 整体流程 102
4.5.3 业务模块自测 105
4.5.4 总结 109
4.6 Jmeter压力测试高并发抢红包 110
4.7 问题分析与优化方案 116
4.7.1 问题分析 117
4.7.2 优化方案介绍 118
4.7.3 优化方案之Redis分布式锁实战 118
4.7.4 不足之处 122
4.8 总结 122
第5章 消息中间件RabbitMQ 124
5.1 RabbitMQ简介 124
5.1.1 认识RabbitMQ 125
5.1.2 典型应用场景介绍 126
5.1.3 RabbitMQ后端控制台介绍 132
5.1.4 基于Spring的事件驱动模型实战 133
5.2 Spring Boot项目整合RabbitMQ 137
5.2.1 RabbitMQ相关词汇介绍 138
5.2.2 Spring Boot项目整合RabbitMQ 139
5.2.3 自定义注入配置Bean相关组件 140
5.2.4 RabbitMQ发送、接收消息实战 142
5.2.5 其他发送接收消息方式实战 147
5.3 RabbitMQ多种消息模型实战 152
5.3.1 基于FanoutExchange的消息模型实战 152
5.3.2 基于DirectExchange的消息模型实战 160
5.3.3 基于TopicExchange的消息模型实战 165
5.4 RabbitMQ确认消费机制 171
5.4.1 消息高可用和确认消费 172
5.4.2 常见的确认消费模式介绍 174
5.4.3 基于自动确认消费模式实战 176
5.4.4 基于手动确认消费模式实战 182
5.5 典型应用场景实战之用户登录成功写日志 188
5.5.1 整体业务流程介绍与分析 188
5.5.2 数据库表设计 189
5.5.3 开发环境搭建 197
5.5.4 基于TopicExchange构建日志消息模型 200
5.5.5 异步发送接收登录日志消息实战 201
5.5.6 整体业务模块自测实战 205
5.6 总结 208
第6章 死信队列/延迟队列实战 209
6.1 死信队列概述 209
6.1.1 死信队列简介与作用 209
6.1.2 典型应用场景介绍 212
6.2 RabbitMQ死信队列实战 213
6.2.1 死信队列专有词汇介绍 214
6.2.2 死信队列消息模型实战 215
6.2.3 死信队列延迟发送消息实战 221
6.3 典型应用场景实战之商城平台订单支付超时 226
6.3.1 整体业务场景介绍 227
6.3.2 整体业务流程分析 228
6.3.3 数据库设计 229
6.3.4 构建RabbitMQ死信队列消息模型 236
6.3.5 Controller层开发用户下单及订单失效功能 240
6.3.6 用户下单支付超时”延迟发送接收实战 246
6.3.7 用户下单支付超时”整体功能自测 250
6.4 总结 254
第7章 分布式锁实战 256
7.1 分布式锁概述 256
7.1.1 锁机制 257
7.1.2 分布式锁登场 263
7.1.3 典型应用场景介绍 265
7.1.4 小结 268
7.2 基于数据库实现分布式锁 268
7.2.1 乐观锁简介 268
7.2.2 乐观锁实战 269
7.2.3 Jmeter高并发测试乐观锁 280
7.2.4 悲观锁简介 286
7.2.5 悲观锁实战 288
7.2.6 Jmeter高并发测试悲观锁 290
7.2.7 小结 291
7.3 基于Redis实现分布式锁 292
7.3.1 Redis温故而知新 292
7.3.2 分布式锁的实现流程与原理分析 294
7.3.3 基于Redis实战实现分布式锁 295
7.3.4 Jmeter高并发测试 303
7.3.5 小结 307
7.4 基于ZooKeeper实现分布式锁 308
7.4.1 ZooKeeper简介与作用 308
7.4.2 分布式锁的实现流程与原理分析 310
7.4.3 Spring Boot整合ZooKeeper 312
7.4.4 基于ZooKeeper实现分布式锁 315
7.4.5 Jmeter高并发测试 317
7.4.6 小结 319
7.5 典型应用场景之书籍抢购模块设计与实战 319
7.5.1 整体业务流程介绍与分析 319
7.5.2 数据库表设计与用例设计 321
7.5.3 书籍抢购核心业务逻辑开发实战 324
7.5.4 Jmeter重现库存超卖”的问题 328
7.5.5 采用分布式锁解决问题 330
7.5.6 小结 334
7.6 总结 334
第8章 综合中间件Redisson 336
8.1 Redisson概述 336
8.1.1 Redisson简介与作用 337
8.1.2 Redisson的功能特性 339
8.1.3 典型应用场景之布隆过滤器与主题 340
8.1.4 典型应用场景之延迟队列与分布式锁 345
8.1.5 Spring Boot整合Redisson 348
8.2 Redisson常见功能组件实战 352
8.2.1 布隆过滤器 352
8.2.2 发布-订阅式主题 355
8.2.3 数据结构之映射Map 361
8.2.4 数据结构之集合Set 366
8.2.5 队列Queue实战 370
8.2.6 延迟队列Delayed Queue实战1 374
8.2.7 延迟队列Delayed Queue实战2 381
8.3 分布式锁实战 385
8.3.1 重温分布式锁 385
8.3.2 分布式锁之一次性锁实战 387
8.3.3 分布式锁之可重入锁实战 392
8.4 总结 398
第9章 Redisson典型应用场景实战之高性能点赞 399
9.1 整体业务流程介绍与分析 399
9.1.1 业务背景介绍 400
9.1.2 业务流程介绍与分析 401
9.1.3 业务模块划分与数据库设计 404
9.2 点赞与取消点赞”操作模块实战 409
9.2.1 点赞与取消点赞”业务流程分析 409
9.2.2 Controller层接收请求信息 412
9.2.3 Service层插入、更新并缓存记录信息 415
9.2.4 业务模块自测 421
9.3 排行榜”业务模块实战 424
9.3.1 排行榜”业务流程分析 425
9.3.2 接收前端请求并触发缓存排行榜 426
9.3.3 业务模块自测 428
9.4 总结 432
第3篇 总结
第10章 总结与回顾 434


---------------------------Python Flask Web开发入门与项目实战---------------------------


前言
本书内容导图
第1篇 Flask基础知识
第1章 开发环境部署 2
1.1 Python的安装及配置 2
1.1.1 Python的安装 2
1.1.2 测试Python是否安装成功 7
1.2 虚拟环境的配置 8
1.3 PyCharm的安装及使用 11
1.3.1 PyCharm的下载及安装 11
1.3.2 在PyCharm中新建工程 14
1.3.3 在PyCharm中设置UTF-8编码自动创建 15
1.3.4 在PyCharm中使用已经设置好的虚拟环境 17
1.4 温故知新 20
1.5 习题 20
第2章 Flask快速上手 21
2.1 Web基础知识 21
2.2 第一个Flask Web程序 22
2.2.1 安装Flask框架 23
2.2.2 在Flask中输出Hello World 25
2.3 URL传递参数 28
2.4 URL反转 29
2.5 页面跳转和重定向 30
2.6 温故知新 31
2.7 习题 31
第3章 Jinja 2模板引擎 33
3.1 模板引擎概述及简单使用 33
3.2 向模板中传递参数 35
3.3 模板中的控制语句之if语句 38
3.4 模板中的控制语句之for语句 40
3.5 Flask的过滤器 42
3.5.1 常见过滤器 42
3.5.2 自定义过滤器 44
3.6 宏的定义及使用 46
3.6.1 宏的定义 46
3.6.2 宏的导入 47
3.6.3 include的使用 49
3.7 set和with语句的使用 50
3.8 静态文件的加载 52
3.9 模板的继承 54
3.10 温故知新 57
3.11 习题 57
第4章 Flask视图高级技术 58
4.1 app.route与add_url_rule简介 58
4.1.1 app.route的使用 58
4.1.2 add_url_rule的使用 59
4.2 Flask类视图 61
4.2.1 标准类视图 61
4.2.2 基于方法的类视图 63
4.3 Flask装饰器 66
4.3.1 装饰器的定义和基本使用 66
4.3.2 对带参数的函数使用装饰器 68
4.4 蓝图 71
4.5 温故知新 72
4.6 习题 73
第5章 Flask数据交互 74
5.1 使用Flask处理表单 74
5.1.1 使用Flask处理通用表单 74
5.1.2 使用Flask-WTF处理表单 76
5.2 使用Flask上传文件 80
5.2.1 使用Flask上传文件的简单实现 81
5.2.2 改进上传功能 84
5.3 Cookie的使用 86
5.3.1 Cookie的基本概念 86
5.3.2 Cookie的基本使用 87
5.3.3 设置Cookie的作用域 90
5.4 Session的使用 92
5.4.1 Session的基本配置 92
5.4.2 Session的基本使用 93
5.5 钩子函数的使用 95
5.6 温故知新 97
5.7 习题 97
第6章 访问数据库 98
6.1 MySQL数据库安装 98
6.1.1 下载及安装MySQL 98
6.1.2 测试MySQL是否安装成功 99
6.2 Python数据库框架MySQL-Python 100
6.2.1 MySQL-Python安装 100
6.2.2 通过Python操作数据库对象 101
6.3 通过MySQL-Python进行更新数据操作 105
6.3.1 增加数据 105
6.3.2 修改数据 106
6.3.3 删除数据 107
6.4 初识Flask-SQLAlchemy 108
6.4.1 SQLAlchemy的安装 108
6.4.2 对象-关系映射实质 110
6.4.3 为什么使用ORM 111
6.5 Flask-SQLAlchemy初始化 112
6.6 Flask-SQLAlchemy模型与表映射方法1 114
6.7 Flask-SQLAlchemy模型与表映射方法2 118
6.8 数据的增、删、改、查 119
6.8.1 数据添加 119
6.8.2 数据查询 121
6.8.3 数据修改 122
6.8.4 数据删除 123
6.9 使用Flask-SQLAlchemy创建一对一的关系表 124
6.10 使用Flask-SQLAlchemy创建一对多的关系表 126
6.11 使用Flask-SQLAlchemy创建多对多的关系表 128
6.12 Flask-Script工具的使用 130
6.12.1 安装Flask-Script并初始化 130
6.12.2 Command子类创建命令 131
6.12.3 使用Command实例的@command修饰符 132
6.12.4 使用Command实例的@option修饰符创建命令 132
6.13 Flask循环引用 133
6.14 使用Flask-Migrate实现数据库迁移 136
6.14.1 安装Flask-Migrate插件 136
6.14.2 使用Flask-Migrate的步骤 136
6.15 温故知新 139
6.16 习题 139
第7章 Memcached缓存系统 140
7.1 Memcached的安装 140
7.1.1 Memcached的基本概念 140
7.1.2 Memcached的安装 141
7.2 Memcached的基本使用 143
7.2.1 set和set_multi命令的使用 143
7.2.2 get和get_multi命令的使用 144
7.2.3 add命令的使用 145
7.2.4 replace命令的使用 146
7.2.5 append和prepend命令的使用 147
7.2.6 delete和delete_multi命令的使用 148
7.2.7 decr和incr命令的使用 149
7.3 Memcached的安全机制 150
7.4 温故知新 151
7.5 习题 151
第8章 Bootstrap的基本使用 152
8.1 Bootstrap简介 152
8.2 全局CSS样式 154
8.3 栅格系统 156
8.4 Bootstrap CSS代码 162
8.5 Bootstrap表格 165
8.5.1 基础表格 165
8.5.2 条纹状表格 167
8.5.3 带边框的表格 168
8.5.4 紧凑的表格和响应式表格 170
8.5.5 状态类 172
8.6 Bootstrap表单 173
8.6.1 垂直表单 174
8.6.2 内联表单 175
8.6.3 水平表单 180
8.6.4 支持的表单控件 181
8.7 Bootstrap按钮 182
8.8 温故知新 185
8.9 习题 186
第2篇 CMS新闻系统开发
第9章 CMS后台管理员登录实现 188
9.1 CMS系统基本蓝图 188
9.2 用户模型定义 190
9.2.1 建立数据库连接并创建用户模型 190
9.2.2 用户登录密码明文变密文的处理 193
9.3 管理员登录 194
9.3.1 登录页的渲染 194
9.3.2 初步实现用户的登录 196
9.3.3 优化登录-对表单进行过滤验证 199
9.3.4 优化登录-启用登录验证码 200
9.3.5 优化登录-记住我功能实现 205
9.4 限制用户访问 206
9.5 用户名注销功能实现 207
9.6 温故知新 209
9.7 习题 210
第10章 CMS后台文章模块基本功能实现 211
10.1 管理员信息展示 211
10.1.1 管理员个人详情页搭建 211
10.1.2 管理员个人详情页实现 214
10.1.3 管理员密码修改 215
10.2 文章栏目页的实现 220
10.2.1 栏目无限级分类添加进数据库 221
10.2.2 栏目的编辑功能 224
10.2.3 栏目的删除功能 233
10.3 文章的添加、修改、删除功能的实现 235
10.3.1 文章添加功能的基本实现 235
10.3.2 文章的列表显示 244
10.3.3 文章的编辑修改 247
10.3.4 文章的删除 252
10.4 温故知新 256
10.5 习题 256
第11章 CMS后台基本评论及登录日志等功能的实现 258
11.1 评论信息管理 258
11.1.1 评论信息管理页面搭建 258
11.1.2 评论的下架和发布功能实现 267
11.1.3 评论的删除功能实现 271
11.2 登录日志、操作日志等功能实现 273
11.2.1 登录日志功能的实现 273
11.2.2 登录日志批量删除功能的实现 280
11.3 温故知新 282
11.4 习题 283
第12章 基于角色的访问控制功能实现 284
12.1 权限、角色、用户的数据库设计 284
12.2 权限管理 286
12.2.1 添加权限 286
12.2.2 权限的列表显示 290
12.2.3 权限的编辑 294
12.2.4 权限的删除 295
12.3 角色管理 297
12.3.1 角色的添加 297
12.3.2 角色的列表显示 301
12.3.3 角色的编辑功能实现 303
12.3.4 角色的删除功能实现 305
12.4 基于角色的访问控制思想及实现 307
12.5 温故知新 310
12.6 习题 310
第13章 CMS网站前台功能实现 311
13.1 用户的注册和登录功能 311
13.1.1 用户注册页面的设计 311
13.1.2 用户注册功能的实现 315
13.1.3 用户登录功能的实现 318
13.2 网站首页的基本实现 324
13.3 文章详情页功能实现 326
13.4 网站404页面功能实现 329
13.5 温故知新 330
13.6 习题 331
第14章 CMS系统代码优化 332
14.1 CSRF攻击与防御 332
14.2 视图函数的一些优化 334
14.3 将验证码保存到Memcached中 336
14.4 温故知新 337
14.5 习题 337
第3篇 网站上线准备及部署
第15章 CMS系统性能测试与单元测试 340
15.1 慢查询SQL的检测与记录 340
15.2 Flask单元测试 342
15.3 温故知新 348
15.4 习题 348
第16章 网站部署 349
16.1 服务器部署 349
16.1.1 Gunicorn的安装配置及使用 350
16.1.2 Nginx的安装及使用 352
16.1.3 安装MySQL 354
16.2 网站部署 354
16.3 温故知新 356
16.4 习题 356



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4