高性能Java架构:核心原理与案例实战(博文视点出品)

高性能Java架构:核心原理与案例实战(博文视点出品)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2021-08
ISBN: 9787121376221
定价: 89.00
9人买过
  • 本书是按照程序设计与架构的顺序编写的,共13章。第1章介绍学习高性能Java应了解的核心知识,为前置内容。第2章和第3章讲解在编写代码之前,如何高效地为MySQL填充亿级数据,并对MySQL进行基准测试,以便在之后编程时有所比较。第4章讲解在编写代码的过程中如何优化代码,使代码更高效。第5章和第6章讲解在写好代码之后如何测试并优化场景响应速度。第7章和第8章讲解在程序上线执行一段时间之后如何对MySQL进行主从复制、分库分表。第9章讲解如何通过Prometheus和Grafana监控MySQL节点。第10章和第11章讲解如何通过堆内缓存、堆外缓存(MapDB)和磁盘缓存解决MySQL数据库性能不佳的问题。第12章讲解如何使用分布式锁Redisson解决实际应用中常见的数据一致性问题。第13章简要介绍Java中的常见架构与工具。本书不仅适合Java初学者、刚入行的编程人员,也适合对高性能、高并发感兴趣的程序员。 张方兴,多年从事Java编程工作,参与多个项目研发,曾编著《微服务分布式基础架构与实战DD基于Spring Boot+Spring Cloud》一书。 第1 章 高性能Java 核心知识概述  1
    1.1 高性能  1
    1.2 高并发  2
    1.3 高可用  2
    1.4 算法、GC 与诊断工具 . 3
    1.4.1 算法 . 3
    1.4.2 GC . 4
    1.4.3 jvmtop  4
    1.4.4 jstat  5
    1.4.5 Arthas  6
    1.5 分离术  8
    1.6 基准测试 . 8
    1.6.1 基准测试的概念 . 8
    1.6.2 基准测试的实际用途 . 9
    1.6.3 基准测试与一般性能测试的区别 . 9
    1.7 性能测试 . 9
    1.7.1 性能测试的目的 . 9
    1.7.2 性能测试着重观察的指标 . 9
    1.7.3 性能测试存在的误区 . 10
    1.7.4 性能测试应涵盖的内容 . 11
    1.8 业务测试 . 12
    1.9 单元测试 . 12
    1.9.1 等价类划分 . 13
    1.9.2 边界值分析 . 14
    1.9.3 错误推测法 . 15
    1.10 数据库概述 . 15
    1.10.1 数据库分类 . 16
    1.10.2 数据库测试的具体内容 . 21
    1.11 缓存的核心知识 . 22
    1.11.1 缓存的命中率 . 23
    1.11.2 缓存回收方式 . 23
    1.11.3 缓存回收策略 . 23
    1.11.4 缓存的设计模式 . 23
    1.11.5 缓存测试应涵盖的内容 . 24
    1.11.6 实战:秒杀系统设计方案 24
    1.12 总结DD业务、性能、编程、架构相辅相成  25

    第2 章 为MySQL 填充亿级数据  27
    2.1 问题描述 . 27
    2.2 问题分析与解决方案 . 27
    2.3 为MySQL 填充亿级数据实战  28
    2.3.1 INSERT INTO SELECT 方案 . 28
    2.3.2 存储过程方案 . 32
    2.3.3 Loadfile 方案 . 33
    2.3.4 第三方解决方案 . 34
    2.4 最终结果 . 35

    第3 章 MySQL 基准测试:sysbench 与mysqlslap  36
    3.1 问题描述 . 36
    3.2 问题分析与解决方案 . 36
    3.2.1 解决方案:sysbench . 37
    3.2.2 sysbench 的命令与参数  38
    3.2.3 解决方案:mysqlslap . 40
    3.2.4 mysqlslap 的命令与参数  41
    3.3 sysbench 实战  42
    3.3.1 使用sysbench 压测CPU、内存和磁盘I/O  42
    3.3.2 初次使用sysbench 压测MySQL . 46
    3.3.3 深度使用sysbench 压测MySQL . 49
    3.4 mysqlslap 实战  51
    3.5 其他基准压测工具 . 56

    第4 章 代码单元的性能测试与优化  57
    4.1 问题描述 . 57
    4.2 问题分析与解决方案 . 57
    4.3 JMH 实战  58
    4.3.1 测试JMH 基准性能 . 58
    4.3.2 测试i++基准性能 . 60
    4.3.3 用JMH 执行多个函数的结果  62

    第5 章 Web 性能测试解决方案:JMeter  67
    5.1 问题描述 . 67
    5.2 问题分析与解决方案 . 67
    5.3 JMeter 的特点 . 68
    5.4 深入理解JMeter . 68
    5.4.1 JMeter 中的部分配置元件 . 68
    5.4.2 JMeter 参数化的实现方式 . 69
    5.4.3 JMeter 函数 . 70
    5.4.4 通过JMeter 读取外部文件  72
    5.4.5 通过JMeter 提取上一个接口返回值 . 73
    5.5 JMeter 实战 . 74
    5.5.1 初次使用JMeter 测试REST 接口 . 74
    5.5.2 录制性能测试脚本 . 80

    第6 章 SQL 优化与索引优化  83
    6.1 问题描述 . 83
    6.2 问题分析与解决方案 . 83
    6.3 SQL 执行计划 . 84
    6.4 SQL 优化与索引优化实战 . 91
    6.4.1 SQL 索引优化 . 91
    6.4.2 分页查询优化 . 95
    6.4.3 慢SQL 日志分析工具mysqldumpslow . 96

    第7 章 MySQL 主从复制  101
    7.1 问题描述 . 101
    7.2 问题分析与解决方案 . 101
    7.3 MySQL 主从复制原理 . 101
    7.4 深入理解MySQL 中的二进制日志. 103
    7.4.1 查看MySQL 二进制日志状态  103
    7.4.2 log_bin 和sql_log_bin 的区别  104
    7.4.3 开启二进制日志 . 104
    7.4.4 查看二进制日志文件的名称、大小和状态  108
    7.4.5 删除某个日志之前的所有二进制日志文件  109
    7.4.6 删除某个时间点以前的二进制日志文件  110
    7.4.7 删除所有的二进制日志文件 . 111
    7.4.8 查看二进制日志文件内容 . 111
    7.4.9 通过二进制日志文件恢复MySQL . 116
    7.5 MySQL 主从复制实战 . 117
    7.5.1 构建MySQL 主从复制架构  117
    7.5.2 使用Spring Boot 整合MySQL 主从复制架构 . 126

    第8 章 MySQL 分库分表:MyCAT . 129
    8.1 问题描述 . 129
    8.2 问题分析与解决方案 . 129
    8.3 MyCAT 实战 . 130
    8.3.1 构建MyCAT 一主多从架构  130
    8.3.2 构建MyCAT 双主多从环境  140
    8.3.3 MyCAT 分库DD垂直拆分  142
    8.3.4 MyCAT 分表DD水平拆分  144
    8.3.5 构建HAProxy + MyCAT + MySQL 高可用架构  146

    第9 章 MySQL 性能监控解决方案:Prometheus+Grafana  152
    9.1 问题描述 . 152
    9.2 问题分析与解决方案 . 152
    9.3 Prometheus 概述与适用场景  152
    9.4 时序数据库概述与适用场景 . 153
    9.5 Grafana 概述与适用场景  154
    9.6 构建Prometheus + Grafana 监控实战  154

    第10 章 堆内缓存解决方案:Java 堆内缓存与Guava Cache  171
    10.1 问题描述 . 171
    10.2 问题分析与解决方案 . 171
    10.3 Java 堆内缓存 . 172
    10.3.1 Java 堆内缓存原理 . 172
    10.3.2 Java 堆内缓存中的常见算法及实战  173
    10.4 Guava Cache 实战 . 190
    10.4.1 创建Google 的容器工厂  190
    10.4.2 屏蔽NULL 值 . 191
    10.4.3 管理字符串 . 192
    10.4.4 操作Google 的Multiset 容器 . 192
    10.4.5 操作Google 的Multimap 容器  193
    10.4.6 操作Google 的BiMap 容器 . 194
    10.4.7 操作Google 的Table 容器 . 194
    10.4.8 操作Google 的classToInstanceMap 容器  196
    10.4.9 操作Google 的RangeSet 容器 . 196
    10.4.10 操作Google 的RangeMap 容器. 198
    10.4.11 操作Google 的Guava Cache  198

    第11 章 堆外缓存与磁盘缓存解决方案:MapDB  203
    11.1 问题描述 . 203
    11.2 问题分析与解决方案 . 203
    11.2.1 堆外缓存 . 203
    11.2.2 MapDB  204
    11.2.3 实战:初次使用MapDB  205
    11.3 MapDB 的构造原理  206
    11.4 MapDB 的使用方法  208
    11.5 MapDB 实战  210
    11.5.1 MapDB 的序列化  210
    11.5.2 MapDB 的事务  211
    11.5.3 MapDB 的监听器与多级缓存  212

    第12 章 基于Redis 的分布式锁解决方案:Redisson . 214
    12.1 分布式锁与Redisson 原理 . 214
    12.2 单机版超买或超卖问题描述及解决方案  216
    12.3 分布式版超买或超卖问题描述及解决方案  218
    12.4 多线程死锁问题描述及解决方案 . 219
    12.5 Redisson 实战  223
    12.5.1 Redisson 的可重入锁  223
    12.5.2 Redisson 的公平锁  223
    12.5.3 Redisson 的联锁  225
    12.5.4 Redisson 的红锁  226
    12.5.5 Redisson 的读写锁  227
    12.5.6 Redisson 的信号量  229
    12.5.7 Redisson 的分布式闭锁  230

    第13 章 Java 中的常见架构与工具 . 233
    13.1 自动化测试架构 . 233
    13.2 自动化持续集成部署架构 . 233
    13.3 高并发架构 . 234
    13.4 响应式编程架构 . 236
    13.5 负载均衡架构 . 238
    13.6 监控工具与监控架构 . 239
    13.7 其他工具与架构 . 241
  • 内容简介:
    本书是按照程序设计与架构的顺序编写的,共13章。第1章介绍学习高性能Java应了解的核心知识,为前置内容。第2章和第3章讲解在编写代码之前,如何高效地为MySQL填充亿级数据,并对MySQL进行基准测试,以便在之后编程时有所比较。第4章讲解在编写代码的过程中如何优化代码,使代码更高效。第5章和第6章讲解在写好代码之后如何测试并优化场景响应速度。第7章和第8章讲解在程序上线执行一段时间之后如何对MySQL进行主从复制、分库分表。第9章讲解如何通过Prometheus和Grafana监控MySQL节点。第10章和第11章讲解如何通过堆内缓存、堆外缓存(MapDB)和磁盘缓存解决MySQL数据库性能不佳的问题。第12章讲解如何使用分布式锁Redisson解决实际应用中常见的数据一致性问题。第13章简要介绍Java中的常见架构与工具。本书不仅适合Java初学者、刚入行的编程人员,也适合对高性能、高并发感兴趣的程序员。
  • 作者简介:
    张方兴,多年从事Java编程工作,参与多个项目研发,曾编著《微服务分布式基础架构与实战DD基于Spring Boot+Spring Cloud》一书。
  • 目录:
    第1 章 高性能Java 核心知识概述  1
    1.1 高性能  1
    1.2 高并发  2
    1.3 高可用  2
    1.4 算法、GC 与诊断工具 . 3
    1.4.1 算法 . 3
    1.4.2 GC . 4
    1.4.3 jvmtop  4
    1.4.4 jstat  5
    1.4.5 Arthas  6
    1.5 分离术  8
    1.6 基准测试 . 8
    1.6.1 基准测试的概念 . 8
    1.6.2 基准测试的实际用途 . 9
    1.6.3 基准测试与一般性能测试的区别 . 9
    1.7 性能测试 . 9
    1.7.1 性能测试的目的 . 9
    1.7.2 性能测试着重观察的指标 . 9
    1.7.3 性能测试存在的误区 . 10
    1.7.4 性能测试应涵盖的内容 . 11
    1.8 业务测试 . 12
    1.9 单元测试 . 12
    1.9.1 等价类划分 . 13
    1.9.2 边界值分析 . 14
    1.9.3 错误推测法 . 15
    1.10 数据库概述 . 15
    1.10.1 数据库分类 . 16
    1.10.2 数据库测试的具体内容 . 21
    1.11 缓存的核心知识 . 22
    1.11.1 缓存的命中率 . 23
    1.11.2 缓存回收方式 . 23
    1.11.3 缓存回收策略 . 23
    1.11.4 缓存的设计模式 . 23
    1.11.5 缓存测试应涵盖的内容 . 24
    1.11.6 实战:秒杀系统设计方案 24
    1.12 总结DD业务、性能、编程、架构相辅相成  25

    第2 章 为MySQL 填充亿级数据  27
    2.1 问题描述 . 27
    2.2 问题分析与解决方案 . 27
    2.3 为MySQL 填充亿级数据实战  28
    2.3.1 INSERT INTO SELECT 方案 . 28
    2.3.2 存储过程方案 . 32
    2.3.3 Loadfile 方案 . 33
    2.3.4 第三方解决方案 . 34
    2.4 最终结果 . 35

    第3 章 MySQL 基准测试:sysbench 与mysqlslap  36
    3.1 问题描述 . 36
    3.2 问题分析与解决方案 . 36
    3.2.1 解决方案:sysbench . 37
    3.2.2 sysbench 的命令与参数  38
    3.2.3 解决方案:mysqlslap . 40
    3.2.4 mysqlslap 的命令与参数  41
    3.3 sysbench 实战  42
    3.3.1 使用sysbench 压测CPU、内存和磁盘I/O  42
    3.3.2 初次使用sysbench 压测MySQL . 46
    3.3.3 深度使用sysbench 压测MySQL . 49
    3.4 mysqlslap 实战  51
    3.5 其他基准压测工具 . 56

    第4 章 代码单元的性能测试与优化  57
    4.1 问题描述 . 57
    4.2 问题分析与解决方案 . 57
    4.3 JMH 实战  58
    4.3.1 测试JMH 基准性能 . 58
    4.3.2 测试i++基准性能 . 60
    4.3.3 用JMH 执行多个函数的结果  62

    第5 章 Web 性能测试解决方案:JMeter  67
    5.1 问题描述 . 67
    5.2 问题分析与解决方案 . 67
    5.3 JMeter 的特点 . 68
    5.4 深入理解JMeter . 68
    5.4.1 JMeter 中的部分配置元件 . 68
    5.4.2 JMeter 参数化的实现方式 . 69
    5.4.3 JMeter 函数 . 70
    5.4.4 通过JMeter 读取外部文件  72
    5.4.5 通过JMeter 提取上一个接口返回值 . 73
    5.5 JMeter 实战 . 74
    5.5.1 初次使用JMeter 测试REST 接口 . 74
    5.5.2 录制性能测试脚本 . 80

    第6 章 SQL 优化与索引优化  83
    6.1 问题描述 . 83
    6.2 问题分析与解决方案 . 83
    6.3 SQL 执行计划 . 84
    6.4 SQL 优化与索引优化实战 . 91
    6.4.1 SQL 索引优化 . 91
    6.4.2 分页查询优化 . 95
    6.4.3 慢SQL 日志分析工具mysqldumpslow . 96

    第7 章 MySQL 主从复制  101
    7.1 问题描述 . 101
    7.2 问题分析与解决方案 . 101
    7.3 MySQL 主从复制原理 . 101
    7.4 深入理解MySQL 中的二进制日志. 103
    7.4.1 查看MySQL 二进制日志状态  103
    7.4.2 log_bin 和sql_log_bin 的区别  104
    7.4.3 开启二进制日志 . 104
    7.4.4 查看二进制日志文件的名称、大小和状态  108
    7.4.5 删除某个日志之前的所有二进制日志文件  109
    7.4.6 删除某个时间点以前的二进制日志文件  110
    7.4.7 删除所有的二进制日志文件 . 111
    7.4.8 查看二进制日志文件内容 . 111
    7.4.9 通过二进制日志文件恢复MySQL . 116
    7.5 MySQL 主从复制实战 . 117
    7.5.1 构建MySQL 主从复制架构  117
    7.5.2 使用Spring Boot 整合MySQL 主从复制架构 . 126

    第8 章 MySQL 分库分表:MyCAT . 129
    8.1 问题描述 . 129
    8.2 问题分析与解决方案 . 129
    8.3 MyCAT 实战 . 130
    8.3.1 构建MyCAT 一主多从架构  130
    8.3.2 构建MyCAT 双主多从环境  140
    8.3.3 MyCAT 分库DD垂直拆分  142
    8.3.4 MyCAT 分表DD水平拆分  144
    8.3.5 构建HAProxy + MyCAT + MySQL 高可用架构  146

    第9 章 MySQL 性能监控解决方案:Prometheus+Grafana  152
    9.1 问题描述 . 152
    9.2 问题分析与解决方案 . 152
    9.3 Prometheus 概述与适用场景  152
    9.4 时序数据库概述与适用场景 . 153
    9.5 Grafana 概述与适用场景  154
    9.6 构建Prometheus + Grafana 监控实战  154

    第10 章 堆内缓存解决方案:Java 堆内缓存与Guava Cache  171
    10.1 问题描述 . 171
    10.2 问题分析与解决方案 . 171
    10.3 Java 堆内缓存 . 172
    10.3.1 Java 堆内缓存原理 . 172
    10.3.2 Java 堆内缓存中的常见算法及实战  173
    10.4 Guava Cache 实战 . 190
    10.4.1 创建Google 的容器工厂  190
    10.4.2 屏蔽NULL 值 . 191
    10.4.3 管理字符串 . 192
    10.4.4 操作Google 的Multiset 容器 . 192
    10.4.5 操作Google 的Multimap 容器  193
    10.4.6 操作Google 的BiMap 容器 . 194
    10.4.7 操作Google 的Table 容器 . 194
    10.4.8 操作Google 的classToInstanceMap 容器  196
    10.4.9 操作Google 的RangeSet 容器 . 196
    10.4.10 操作Google 的RangeMap 容器. 198
    10.4.11 操作Google 的Guava Cache  198

    第11 章 堆外缓存与磁盘缓存解决方案:MapDB  203
    11.1 问题描述 . 203
    11.2 问题分析与解决方案 . 203
    11.2.1 堆外缓存 . 203
    11.2.2 MapDB  204
    11.2.3 实战:初次使用MapDB  205
    11.3 MapDB 的构造原理  206
    11.4 MapDB 的使用方法  208
    11.5 MapDB 实战  210
    11.5.1 MapDB 的序列化  210
    11.5.2 MapDB 的事务  211
    11.5.3 MapDB 的监听器与多级缓存  212

    第12 章 基于Redis 的分布式锁解决方案:Redisson . 214
    12.1 分布式锁与Redisson 原理 . 214
    12.2 单机版超买或超卖问题描述及解决方案  216
    12.3 分布式版超买或超卖问题描述及解决方案  218
    12.4 多线程死锁问题描述及解决方案 . 219
    12.5 Redisson 实战  223
    12.5.1 Redisson 的可重入锁  223
    12.5.2 Redisson 的公平锁  223
    12.5.3 Redisson 的联锁  225
    12.5.4 Redisson 的红锁  226
    12.5.5 Redisson 的读写锁  227
    12.5.6 Redisson 的信号量  229
    12.5.7 Redisson 的分布式闭锁  230

    第13 章 Java 中的常见架构与工具 . 233
    13.1 自动化测试架构 . 233
    13.2 自动化持续集成部署架构 . 233
    13.3 高并发架构 . 234
    13.4 响应式编程架构 . 236
    13.5 负载均衡架构 . 238
    13.6 监控工具与监控架构 . 239
    13.7 其他工具与架构 . 241
查看详情
相关图书 / 更多
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能高分子材料
韦本辉
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能之道: SRE视角下的运维架构实践
王力
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能MySQL(第4版)
[美]Silvia Botros(西尔维亚·博特罗斯;Jeremy Tinley(杰里米·廷利
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能齿轮精密数控加工理论与技术
王时龙;李国龙;曹华军
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能精量排种理论与技术
王金武;唐汉
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能Linux网络编程核心技术揭秘
朱文伟 李建英
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能超标量CPU:微架构剖析与设计
李东声 编著
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能磷酸锰铁锂电池材料——制备、表征与应用
梁广川 主编;王丽 副主编;张克强
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能计算机体系结构
吴迪;卢宇彤;杜云飞;陈志广;胡淼
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能并行运行时系统:设计与实现 [美]迈克尔·克莱姆
[美]迈克尔·克莱姆;[美]吉姆·考尼
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能复合纤维材料混凝土结构设计与施工
江世永;周建庭;飞渭;李炳宏
高性能Java架构:核心原理与案例实战(博文视点出品)
高性能Java系统权威指南
李家智