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 原创精华