FunTester 写了本书,准备连载

FunTester · 2024年11月21日 · 502 次阅读

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 原创精华
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册