「原创声明:保留所有权利,禁止转载」
2024 年是一个不太友好的年份。
年初跟一家出版社的编辑沟通,确定了一个选题,然后我就开始了写这本书。后来一波三折,最终折戟。
但是书已经写了,而且投入了不少精力,不能就此埋没了。所以打算在公众号上进行连载,总计 11 章 13 万字,估计连载完够一阵子了。
对了,书的名字:从 Java 开始做性能测试 。
如果本书内容对你有所帮助,希望各位多多赞赏,让我可以贴补家用。赞赏两位数可以提前阅读未公开章节。我也会尝试制作本书的视频教程,包括必要的答疑。
书的内容
本书总计包含 11 章,分为 3 大部分,第一部分(1-3 章)侧重于 Java 并发编程技术学习以及开发简单性能测试框架;第二部分(4-9 章)会针对常见的测试对象、通信协议进行逐个讲解,并在预设的测试场景中使用性能测试框架进行实战;第三部分(10-11 章)则是性能测试技术拓展,讲解高性能池化框架和 Java 微基准测试框架实战。
详细章节内容如下:
- 第 1 章:讲解 Java 多线程编程基础。Java 并发是性能测试底座,通过学习 Java 并发常用的实现方式,不同线程池的选择和适用场景,特别是对线程池创建参数进行详细的讲解和拓展,让读者了解掌握并发编程基础能力。
- 第 2 章:在掌握并发编程基础后,本章讲解在性能测试中,Java 多线程编程常用的功能类、API,并在实际场景中演示常其使用方式,在性能测试中的最佳实践,并针对使用场景,讲解讲解不同并发安全实现类的优缺点。
- 第 3 章:有了前两章铺垫,本章演示通过 Java 多线程编程技术开发一个简单的性能测试框架。从选择自定义线程池和并发模型选择开始,一点点完成预设功能,最后性能测试场景中探寻拓展需求并且开发实现,给测试框架增砖添瓦。
- 第 4 章:本章讲解如何测试 HTTP 协议接口。首先简单介绍 HTTP 协议基础知识,然后重点讲解 Java Client 的 API,进行实际 HTTP 接口的请求,使用第 4 章写好的性能测试框架进行 HTTP 接口的模拟性能测试。最后介绍了 HTTP 接口性能测试流量回放框架应用场景,同时利用学过的并发知识,开发了自定义流量回放引擎。
- 第 5 章:本章以 WebSocket 协议为例,讲解如何测试长连接协议接口。首先介绍 WebSocket 协议基础知识,然后进行 2 种 WebSocket Client 实现,再进行 WebSocket 发起请求,最终使用写好的性能测试框架进行 WebSocket 接口的模拟性能测试,以及 WebSocket 连接数性能测试。
- 第 6 章:接下来进入数据库领域。MySQL 当仁不让是关系型数据库的代表。本章讲解 MySQL 协议接口。首先介绍 MySQL 协议的基础知识,通过 JDBC 演示 MySQL API 的使用,最后进行常见使用场景的性能测试实现。通过 MySQL 数据库批量插入锻炼了 JDBC 在并发编程实践中,讲解了如何提升写入 TPS 的 3 种方式。
- 第 7 章:对于非关系型数据库,Redis 也是明星选手。本章讲解如何对 Redis 接口。首先介绍 Redis 协议的基本知识,使用 Redis Client 实现库 jedis 进行 Redis API 的讲解和使用演示,最后进行常见场景的性能测试。
- 第 8 章:本章讲解 RPC 协议测试方法,以 gRPC 协议为例,讲解如何测试 RPC 协议接口。首先介绍 gRPC 接口基本概念和知识,通过 3 种 gRPC Client 讲解与代码实现,完成 gRPC API 的请求调用,最终使用性能测试框架进行性能测试。
- 第 9 章:本章进入消息中间件领域,讲解 Kafka 协议接口测试。首先讲解 Kafka 协议的基础知识,演示 Kafka Client 的 API,对工作中常用的常用的 Kafka 测试场景进行实现。
- 第 10 章:作为补充,本章学习绝大多数高性能设计都会涉及的池化技术。本章讲解 Java 高性能池化框架:Apache-pool2。这样当我们需要自己编写高性能对象池时,就可以立足于此,大展拳脚。实践环节中,我们首先对 MySQL 进行了对象池改造,然后针对轻量级应用场景,我们利用池化技术完成了自定义对象池功能开发实践。
- 第 11 章:本章内容围绕微基准测试、Java 微基准测试工具 JMH。讲解和演示基础功能,之后再对常见集合类的遍历、添加删除进行微基准测试,一方面锻炼了对 JMH 工具的实战能力,一方面也对这些集合类的性能有所了解。最后以性能测试中生成唯一标识符为专题,不仅从实现方式进行讲解,而且通过 JMH 微基准测试验证其方案的性能。
书的目录
第 1 章 Java 多线程编程 1
- 1.1 并发与并行 1
- 1.2 Java 多线程实现 2
- 1.3 Java 线程池 6
- 1.4 自定义线程池 20
- 1.5 总结 36
第 2 章 多线程编程常用功能类 38
- 2.1 线程安全 38
- 2.2 synchronized 关键字 39
- 2.3 lock 锁 47
- 2.4 atomic 包原子类 53
- 2.5 CountDownLatch 55
- 2.6 Phaser 59
- 2.7 线程安全的集合类 67
- 2.8 ThreadLocal 74
- 2.9 总结 90
第 3 章 开发性能测试引擎 78
- 3.1 性能测试模型 78
- 3.2 线程池选择 81
- 3.3 多线程任务类 85
- 3.4 多线程执行类 90
- 3.5 Rump-Up 功能 103
- 3.6 测试中信息实时展示 107
- 3.7 性能测试实战 112
- 3.8 锦囊妙计 121
- 3.9 总结 132
第 4 章 HTTP 协议性能测试 133
- 4.1 HTTP 基础 133
- 4.2 HttpClient 详解 137
- 4.3 HTTP 协议接口测试实战 157
- 4.4 流量回放 175
- 4.5 总结 186
第 5 章 WebSocket 协议性能测试 187
- 5.1 WebSocket 基础 187
- 5.2 Java-WebSocket 详解 188
- 5.3 Netty-WebSocket 详解 196
- 5.4WebSocket 接口测试实战 205
- 5.5 总结 215
第 6 章 MySQL 协议性能测试 216
- 6.1 MySQL 协议基础 216
- 6.2 JDBC 详解 217
- 6.3 MySQL 性能测试实战 224
- 6.4 总结 237
第 7 章 Redis 协议性能测试 238
- 7.1 Redis 基础 238
- 7.2 Jedis 详解 239
- 7.3 Redis 性能测试实战 248
- 7.4 总结 257
第 8 章 gRPC 协议性能测试 258
- 8.1 gRPC 协议基础 258
- 8.2 常用 3 种 gRPC 客户端 259
- 8.3 gRPC 协议接口性能测试实战 263
- 8.4 总结 267
第 9 章 Kafka 协议性能测试 268
- 9.1 Kafka 协议基础 268
- 9.2 生产者和消费者 269
- 9.3 Kafka 性能测试实战 272
- 9.4 总结 278
第 10 章 通用池化框架 280
- 10.1 Apache Commons Pool 基础 280
- 10.2 Apache Commons Pool 详解 281
- 10.3 池化框架实战 283
- 10.4 总结 295
第 11 章 微基准测试与实战 296
- 11.1 Java 微基准测试工具 JMH 296
- 11.2 JMH 实战——集合遍历 303
- 11.3 JMH 实战——集合添加和删除 307
- 11.4 JMH 实战——唯一标识 311
- 11.5 总结 323
FunTester 原创精华
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!