[套装书]Spring Cloud、Nginx高并发核心编程+Java高并发编程详解:深入理解并发核心库(2册)

作者
尼恩 汪文君
丛书名
出版社
机械工业出版社
ISBN
9782011121431
简要
简介
内容简介书籍计算机书籍 ---------------------------Spring Cloud、Nginx高并发核心编程--------------------------- 本书从动态代理模式、Reactor模式、三大限流策略等知识入手,深入浅出地剖析Spring Cloud+Nginx系统架构的核心原理以及Web高并发开发。全书从基础设计模式和基础原理出发,理论与实战相结合,系统和详尽地介绍Spring Cloud + Nginx高并发核心编程。 本书共10章,前6章剖析Feign高并发RPC的底层原理,解析Hystrix高性能配置的核心选项,阐述Hystrix滑动窗口的核心原理。后4章介绍Nginx的核心原理及其配置,并结合秒杀场景实现Spring Cloud秒杀、Spring Cloud+Nginx Lua秒杀,为广大Java开发者提供一个全面学习高并发开发的实战案例。这些知识为广大的Java工程师解决日常在后台开发中遇到的高并发、高性能问题打下坚实的技术基础。 ---------------------------Java高并发编程详解:深入理解并发核心库--------------------------- 本书共包含四大部分,其中,第一部分(第1章)详细介绍了JMH(Java Micro benchmark Harness)基准测试工具的使用细节。该工具是由Oracle JVM开发团队相关成员开发的,借助它,开发者将能足够了解自己所编写的程序代码,以及程序在运行期的精确性能表现。在本书的其他章节对API之间的性能进行对比时,主要也是依赖于该工具,因此在学习本书的其他章节时,最好能够掌握该部分内容,强烈推荐开发者将JMH纳入自己日常的“兵器库”中,以便能够随时随地进行利用。 第二部分主要围绕Java并发包进行展开,涉及的内容包括Java的原子类型及其底层原理(第2章);Java的并发工具集(第3章),其中还穿插了Google Guava的部分内容;Java的并发容器(第4章),包括阻塞队列BlockingQueue和并发容器等内容;Java的ExecutorService(第5章),以及Future家族成员的详解。 第三部分(第6章),主要介绍自Java 8 引入的Stream,并且重点解释了具备高并发能力的并行流原理,以及如何自定义并行流等相关内容。 第四部分(第7章),深入讲解Metrics,它作为一个比较小巧的度量工具集,目前已经成为事实上的度量标准,在很多开源软件、框架和平台中都能看到对它的使用,比如Apache的Kafka、Spark、Storm、Spring Cloud等都是使用Metrics作为系统运行性能指标收集的手段。
目录



---------------------------Spring Cloud、Nginx高并发核心编程---------------------------


前言
第1章 Spring Cloud+Nginx 高并发核心编程的学习准备 ........................ 1
1.1 Spring Cloud+Nginx架构的主要组件 ........................................ 1
1.2 Spring Cloud和Spring Boot的版本选择 ........................................ 3
1.3 Spring Cloud微服务开发所涉及的中间件..................................... 4
1.4 Spring Cloud微服务开发和自验证环境 ........................................ 6
1.4.1 开发和自验证环境的系统选项和环境变量配置........................................ 6
1.4.2 使用Fiddler工具抓包和查看报文........................................ 7
1.5 crazy-springcloud微服务开发脚手........................................ 9
1.6 以秒杀作为Spring Cloud+Nginx的实战案例 ........................................ 10
第2章 Spring Cloud入门实战 ........................................ 12
2.1 Eureka服务注册与发现 ........................................ 13
2.1.1 什么是服务注册与发现 ........................................ 13
2.1.2 Eureka Server注册中心 ........................................ 14
2.1.3 服务提供者的创建和配置 ........................................ 19
2.1.4 服务提供者的续约(心跳) ........................................ 22
2.1.5 服务提供者的健康状态 ........................................ 24
2.1.6 Eureka自我保护模式与失效Provider的快速剔除 .................................... 28
2.2 Config配置中心 ........................................ 32
2.2.1 config-server服务端组件 ........................................ 32
2.2.2 config-client客户端组件 ........................................ 35
2.3 微服务的RPC远程调用 ........................................ 36
2.3.1 RESTful风格简介 ........................................ 36
2.3.2 RestTemplate远程调用 ........................................ 37
2.3.3 Feign远程调用 ........................................ 38
2.4 Feign+Ribbon实现客户端负载均衡 ........................................ 40
2.4.1 Spring Cloud Ribbon基础 ........................................ 41
2.4.2 Spring Cloud Ribbon的负载均衡策略 ........................................ 43
2.4.3 Spring Cloud Ribbon的常用配置 ........................................ 45
2.5 Feign+Hystrix实现RPC调用保护 ........................................ 50
2.5.1 Spring Cloud Hystrix失败回退 ........................................ 51
2.5.2 分布式系统面临的雪崩难题 ........................................ 55
2.5.3 Spring Cloud Hystrix熔断器 ........................................ 56
第3章 Spring Cloud RPC远程调用核心原理 ........................................ 61
3.1 代理模式与RPC客户端实现类 ........................................ 61
3.1.1 客户端RPC远程调用实现类的职责 ........................................ 61
3.1.2 简单的RPC客户端实现类 ........................................ 63
3.1.3 从基础原理讲起:代理模式与RPC客户端实现类 ........................................ 67
3.1.4 使用动态代理模式实现RPC客户端类 ........................................ 70
3.1.5 JDK动态代理机制的原理 ........................................ 74
3.2 模拟Feign RPC动态代理的实现 ........................................ 77
3.2.1 模拟Feign的方法处理器MethodHandler ........................................ 78
3.2.2 模拟Feign的调用处理器InvocationHandler ...................................... 80
3.2.3 模拟Feign的动态代理RPC的执行流程 ........................................ 83
3.2.4 模拟动态代理RPC远程调用的测试 ........................................ 83
3.2.5 Feign弹性RPC客户端实现类 ........................................ 85
3.3 Feign弹性RPC客户端的重要组件 ........................................ 86
3.3.1 演示用例说明 ........................................ 86
3.3.2 Feign的动态代理RPC客户端实例 ........................................ 88
3.3.3 Feign的调用处理器InvocationHandler ........................................ 89
3.3.4 Feign的方法处理器MethodHandler ........................................ 91
3.3.5 Feign的客户端组件 ........................................ 94
3.4 Feign的RPC动态代理实例的创建流程 ........................................ 97
3.4.1 Feign的整体运作流程 ........................................ 98
3.4.2 RPC动态代理容器实例的FactoryBean工厂类 ........................................ 99
3.4.3 Feign.Builder建造者容器实例 ........................................ 102
3.4.4 默认的RPC动态代理实例的创建流程 ........................................ 105
3.4.5 Contract远程调用协议规则类 ........................................ 108
3.5 Feign远程调用的执行流程 ........................................ 110
3.5.1 与FeignInvocationHandler相关的远程调用执行流程 ................................... 110
3.5.2 与HystrixInvocationHandler相关的远程调用执行流程 ................................. 111
3.5.3 Feign远程调用的完整流程及其特性 ........................................ 114
3.6 HystrixFeign动态代理实例的创建流程 ........................................ 115
3.6.1 HystrixFeign.Builder建造者容器实例 ........................................ 115
3.6.2 配置HystrixFeign.Builder建造者容器实例 ...................................... 116
3.7 feign.Client客户端容器实例 ........................................ 117
3.7.1 装配LoadBalancerFeignClient负载均衡容器实例 ................................ 117
3.7.2 装配ApacheHttpClient负载均衡容器实例 ........................................ 119
3.7.3 装配OkHttpClient负载均衡容器实例 ........................................ 121
3.7.4 装配Client.Default负载均衡容器实例 ................................ 122
第4章 RxJava响应式编程框架 ........................................ 124
4.1 从基础原理讲起:观察者模式 ........................................ 124
4.1.1 观察者模式的基础原理 ........................................ 124
4.1.2 观察者模式的经典实现 ........................................ 125
4.1.3 RxJava中的观察者模式 ........................................ 127
4.1.4 RxJava的不完整回调........................................ 130
4.1.5 RxJava的函数式编程........................................ 132
4.1.6 RxJava的操作符........................................ 134
4.2 创建型操作符 ........................................ 134
4.2.1 just操作符 ........................................ 135
4.2.2 from操作符 ........................................ 135
4.2.3 range操作符 ........................................ 136
4.2.4 interval操作符 ........................................ 137
4.2.5 defer操作符 ........................................ 138
4.3 过滤型操作符 ........................................ 139
4.3.1 filter操作符 ........................................ 139
4.3.2 distinct操作符 ........................................ 140
4.4 转换型操作符 ........................................ 141
4.4.1 map操作符 ........................................ 141
4.4.2 flatMap操作符 ........................................ 142
4.4.3 scan操作符 ........................................ 144
4.5 聚合操作符 ........................................146
4.5.1 count操作符 ........................................ 146
4.5.2 reduce操作符 ........................................ 147
4.6 其他操作符 ........................................ 149
4.6.1 take操作符 ........................................ 149
4.6.2 window操作符 ........................................ 150
4.7 RxJava的Scheduler调度器........................................ 153
4.8 背压 ........................................ 155
4.8.1 什么是背压问题 ........................................ 155
4.8.2 背压问题的几种应对模式 ........................................ 158
第5章 Hystrix RPC保护的原理 ........................................ 162
5.1 RPC保护的目标 ........................................ 162
5.2 HystrixCommand简介 ........................................ 162
5.2.1 HystrixCommand的使用 ........................................ 163
5.2.2 HystrixCommand的配置内容和方式 ........................................ 166
5.3 HystrixCommand命令的执行方法 ........................................ 168
5.3.1 execute()方法 ........................................ 168
5.3.2 queue()方法 ........................................ 170
5.3.3 observe()方法 ........................................ 172
5.3.4 toObservable()方法 ........................................ 173
5.3.5 HystrixCommand的执行方法之间的关系 ........................................ 175
5.4 RPC保护之舱壁模式 ........................................ 176
5.4.1 什么是舱壁模式 ........................................ 176
5.4.2 Hystrix线程池隔离 ........................................ 178
5.4.3 Hystrix线程池隔离配置 ........................................ 182
5.4.4 Hystrix信号量隔离 ........................................ 184
5.5 RPC保护之熔断器模式 ........................................ 188
5.5.1 熔断器状态变化的演示实例 ........................................ 189
5.5.2 熔断器和滑动窗口的配置属性 ........................................ 193
5.5.3 Hystrix命令的执行流程 ........................................ 198
5.6 RPC监控之滑动窗口的实现原理 ........................................ 199
5.6.1 Hystrix健康统计滑动窗口的模拟实现........................................ 200
5.6.2 Hystrix滑动窗口的核心实现原理 ........................................ 205
第6章 微服务网关与用户身份识别 ........................................ 210
6.1 Zuul的基础使用 ........................................ 211
6.2 创建Zuul网关服务 ........................................ 211
6.2.1 Zuul路由规则配置 ........................................ 212
6.2.2 过滤敏感请求头部 ........................................ 214
6.2.3 路径前缀的处理 ........................................ 215
6.3 Zuul过滤器 ........................................ 216
6.3.1 Zuul网关的过滤器类型 ........................................ 216
6.3.2 实战:用户的黑名单过滤 ........................................ 217
6.4 Spring Security原理和实战 ........................................ 221
6.4.1 Spring Security核心组件 ........................................ 221
6.4.2 Spring Security的请求认证处理流程 ........................................ 224
6.4.3 基于数据源的认证流程 ........................................ 231
6.5 JWT+Spring Security进行网关安全认证 ........................................ 237
6.5.1 JWT安全令牌规范详解 ........................................ 238
6.5.2 JWT+Spring Security认证处理流程 ........................................ 243
6.5.3 Zuul网关与UAA微服务的配合 ........................................ 250
6.5.4 使用Zuul过滤器添加代理请求的用户标识 ........................................ 254
6.6 服务提供者之间的会话共享关系 ........................................ 256
6.6.1 分布式Session的起源和实现方案 ........................................ 257
6.6.2 Spring Session的核心组件和存储细节 ........................................ 258
6.6.3 Spring Session的使用和定制........................................ 259
6.6.4 通过用户身份标识查找Session ID ..................................... 261
6.6.5 查找或创建分布式Session ........................................ 263
6.6.6 加载高速访问数据到分布式Session ........................................ 265
第7章 Nginx/OpenResty详解 ........................................ 268
7.1 Nginx简介 ........................................ 268
7.1.1 正向代理与反向代理 ........................................ 269
7.1.2 Nginx的启动与停止 ........................................ 270
7.1.3 Nginx的启动命令和参数详解 ........................................ 271
7.1.4 Linux下OpenResty的启动、停止脚本 ........................................ 271
7.1.5 Windows下OpenResty的启动、停止脚本 ........................................ 273
7.2 Nginx的核心原理 ........................................ 274
7.2.1 Reactor模型 ........................................ 274
7.2.2 Nginx的两类进程 ........................................ 275
7.2.3 Nginx的模块化设计 ........................................ 276
7.2.4 Nginx配置文件上下文结构 ........................................ 278
7.2.5 Nginx的请求处理流程 ........................................ 280
7.2.6 HTTP请求处理的11个阶段 ........................................ 281
7.3 Nginx的基础配置 ........................................ 286
7.3.1 events事件驱动配置 ........................................ 286
7.3.2 虚拟主机配置 ........................................ 287
7.3.3 错误页面配置 ........................................ 289
7.3.4 长连接相关配置 ........................................ 290
7.3.5 访问日志配置 ........................................ 290
7.3.6 Nginx核心模块内置变量 ........................................ 291
7.4 location路由规则配置详解 ........................................ 293
7.4.1 location语法详解 ........................................ 293
7.4.2 常用的location路由配置 ........................................ 296
7.5 Nginx的rewrite模块指令 ........................................ 297
7.5.1 set指令 ........................................ 298
7.5.2 rewrite指令 ........................................ 298
7.5.3 if条件指令 ........................................ 301
7.5.4 add_header指令 ........................................ 303
7.5.5 指令的执行顺序 ........................................ 304
7.6 反向代理与负载均衡配置 ........................................ 305
7.6.1 演示环境说明 ........................................ 305
7.6.2 proxy_pass反向代理指令 ........................................ 306
7.6.3 proxy_set_header请求头设置指令 ................................... 308
7.6.4 upstream上游服务器组 ........................................ 309
7.6.5 upstream的上游服务器配置 ........................................ 311
7.6.6 upstream的负载分配方式 ........................................ 313
第8章 Nginx Lua编程 ........................................ 315
8.1 Nginx Lua编程的主要应用场景 ........................................ 315
8.2 Nginx Lua编程简介 ........................................ 315
8.2.1 ngx_lua简介 ........................................ 315
8.2.2 Nginx Lua项目的创建 ........................................ 316
8.2.3 Lua项目的工程结构 ........................................ 317
8.2.4 Lua项目的启动 ........................................ 318
8.3 Lua开发基础 ........................................ 319
8.3.1 Lua模块的定义和使用 ........................................ 319
8.3.2 Lua模块的使用 ........................................ 320
8.3.3 Lua的数据类型 ........................................ 322
8.3.4 Lua的字符串 ........................................ 325
8.3.5 Lua的数组容器 ........................................ 326
8.3.6 Lua的控制结构 ........................................ 328
8.3.7 Lua的函数定义 ........................................ 331
8.3.8 Lua的面向对象编程 ........................................ 332
8.4 Nginx Lua编程基础 ........................................ 333
8.4.1 Nginx Lua的执行原理 ........................................ 334
8.4.2 Nginx Lua的配置指令 ........................................ 335
8.4.3 Nginx Lua的内置常量和变量 ........................................ 339
8.5 Nginx Lua编程实例 ........................................ 341
8.5.1 Lua脚本获取URL中的参数 ........................................ 341
8.5.2 Nginx Lua的内置方法 ........................................ 342
8.5.3 通过ngx.header设置HTTP响应头 ........................................ 344
8.5.4 Lua访问Nginx变量 ........................................ 347
8.5.5 Lua访问请求上下文变量 ........................................ 349
8.6 重定向与内部子请求 ........................................ 350
8.6.1 Nginx Lua内部重定向 ........................................ 350
8.6.2 Nginx Lua外部重定向 ........................................ 352
8.6.3 ngx.location.capture子请求 ........................................ 355
8.6.4 ngx.location.capture_multi并发子请求 .......................................359
8.7 Nginx Lua操作Redis ........................................ 361
8.7.1 Redis的CRUD基本操作 ........................................ 361
8.7.2 实战:封装一个操作Redis的基础类 ........................................ 364
8.7.3 在Lua中使用Redis连接池 ........................................ 367
8.8 Nginx Lua编程实战案例 ........................................ 369
8.8.1 Nginx+Redis进行分布式访问统计 ........................................ 369
8.8.2 Nginx+Redis+Java容器实现高并发访问 ........................................ 370
8.8.3 Nginx+Redis实现黑名单拦截 ........................................ 375
8.8.4 使用Nginx Lua共享内存 ........................................ 378
第9章 限流原理与实战 ........................................ 380
9.1 限流策略原理与参考实现 ........................................ 380
9.1.1 3种限流策略:计数器、漏桶和令牌桶 ........................................ 380
9.1.2 计数器限流原理和Java参考实现 ........................................ 381
9.1.3 漏桶限流原理和Java参考实现 ........................................ 384
9.1.4 令牌桶限流原理和Java参考实现 ........................................ 386
9.2 分布式计数器限流 ........................................ 390
9.2.1 实战:Nginx Lua分布式计数器限流 ........................................ 390
9.2.2 实战:Redis Lua分布式计数器限流 ........................................ 394
9.3 Nginx漏桶限流详解 ........................................ 397
9.4 实战:分布式令牌桶限流 ........................................ 399
9.4.1 分布式令牌桶限流Lua脚本 ........................................ 399
9.4.2 Java分布式令牌桶限流 ........................................ 402
9.4.3 Java分布式令牌桶限流的自验证 ........................................ 406
第10章 Spring Cloud+Nginx秒杀实战 ........................................ 409
10.1 秒杀系统的业务功能和技术难点 ........................................ 409
10.1.1 秒杀系统的业务功能 ........................................ 409
10.1.2 秒杀系统面临的技术难题 ........................................ 410
10.2 秒杀系统的系统架构 ........................................ 411
10.2.1 秒杀的分层架构 ........................................ 411
10.2.2 秒杀的限流架构 ........................................ 413
10.2.3 秒杀的分布式锁架构 ........................................ 414
10.2.4 秒杀的削峰架构 ........................................ 415
10.3 秒杀业务的参考实现 ........................................ 416
10.3.1 秒杀的功能模块和接口设计 ........................................ 416
10.3.2 数据表和PO实体类设计 ........................................ 420
10.3.3 使用分布式ID生成器 ........................................ 423
10.3.4 秒杀的控制层设计 ........................................ 424
10.3.5 service层逻辑:获取秒杀令牌 ........................................ 426
10.3.6 service层逻辑:执行秒杀下单 ........................................ 429
10.3.7 秒杀的Lua脚本设计 ........................................ 434
10.3.8 BusinessException定义 ........................................ 436
10.4 Zuul内部网关实现秒杀限流 ........................................ 439
10.5 Nginx高性能秒杀和限流 ...................................... 444
10.5.1 Lua脚本:获取秒杀令牌 ........................................ 445
10.5.2 Lua脚本:执行令牌桶限流 ........................................ 448



---------------------------Java高并发编程详解:深入理解并发核心库---------------------------


推荐序一
推荐序二
推荐序三
推荐序四
前  言
第1章 JMH 1
1.1 JMH简介 1
1.2 JMH快速入门 1
1.2.1 用main方法进行测试 1
1.2.2 用JMH进行微基准测试 3
1.3 JMH的基本用法 6
1.3.1 @Benchmark标记基准测试方法 7
1.3.2 Warmup以及Measurement 8
1.3.3 四大BenchmarkMode 10
1.3.4 OutputTimeUnit 14
1.3.5 三大State的使用 14
1.3.6 @Param的妙用 19
1.3.7 JMH的测试套件(Fixture) 23
1.3.8 CompilerControl 26
1.4 编写正确的微基准测试以及高级用法 27
1.4.1 编写正确的微基准测试用例 28
1.4.2 一些高级的用法 38
1.5 JMH的Profiler 45
1.5.1 StackProfiler 45
1.5.2 GcProfiler 47
1.5.3 ClassLoaderProfiler 51
1.5.4 CompilerProfiler 54
1.6 本章总结 56
第2章 Java并发包之原子类型详解 57
2.1 AtomicInteger详解 58
2.1.1 性能测试对比 58
2.1.2 AtomicInteger的基本用法 61
2.1.3 AtomicInteger内幕 66
2.1.4 AtomicInteger总结 68
2.2 AtomicBoolean详解 69
2.2.1 AtomicBoolean的基本用法 69
2.2.2 AtomicBoolean内幕 71
2.2.3 Try Lock显式锁的实现 71
2.2.4 AtomicBoolean总结 74
2.3 AtomicLong详解 74
2.4 AtomicReference详解 76
2.4.1 AtomicReference的应用场景 77
2.4.2 AtomicReference的基本用法 83
2.4.3 AtomicReference的内幕 84
2.4.4 AtomicReference总结 86
2.5 AtomicStampedReference详解 86
2.5.1 CAS算法ABA问题 86
2.5.2 AtomicStampedReference详解 87
2.5.3 AtomicStampedReference总结 89
2.6 AtomicArray详解 89
2.7 AtomicFieldUpdater详解 90
2.7.1 原子性更新对象属性 90
2.7.2 注意事项 91
2.7.3 AtomicFieldUpdater总结 93
2.8 sun.misc.Unsafe详解 93
2.8.1 如何获取Unsafe 94
2.8.2 JNI、Java和C/C++混合编程 95
2.8.3 危险的Unsafe 98
2.8.4 sun.misc.Unsafe总结 100
2.9 本章总结 100
第3章 Java并发包之工具类详解 102
3.1 CountDownLatch工具详解 102
3.1.1 等待所有子任务结束 103
3.1.2 CountDownLatch的其他方法及总结 106
3.2 CyclicBarrier工具详解 107
3.2.1 等待所有子任务结束 107
3.2.2 CyclicBarrier的循环特性 110
3.2.3 CyclicBarrier的其他方法以及总结 114
3.2.4 CyclicBarrier VS. CountDownLatch 116
3.3 Exchanger工具详解 116
3.3.1 一对线程间的数据交换 116
3.3.2 Exchanger的方法详解 121
3.3.3 Exchanger总结 123
3.4 Semaphore工具详解 124
3.4.1 Semaphore限制同时在线的用户数量 124
3.4.2 使用Semaphore定义try lock 127
3.4.3 Semaphore其他方法详解 129
3.4.4 扩展Semaphore增强release 135
3.4.5 Semaphore总结 138
3.5 Phaser工具详解 138
3.5.1 Phaser的基本用法 138
3.5.2 Phase(阶段)以及Phaser方法详解 144
3.5.3 Phaser层级关系 148
3.5.4 Phaser总结 149
3.6 Lock&ReentrantLock详解 150
3.6.1 Lock及ReentrantLock方法详解 150
3.6.2 正确使用显式锁Lock 152
3.6.3 ReentrantLock VS. Synchronized关键字 158
3.6.4 显式锁Lock总结 164
3.7 ReadWriteLock&ReentrantRead-WriteLock详解 165
3.7.1 读写锁的基本使用方法 165
3.7.2 读写锁的方法 167
3.7.3 基准测试性能对比 167
3.7.4 读写锁总结 170
3.8 Condition详解 171
3.8.1 初识Condition 171
3.8.2 Condition接口方法详解 174
3.8.3 使用Condition之生产者消费者 177
3.8.4 Condition总结 181
3.9 StampedLock详解 181
3.9.1 读写锁的饥饿写问题 182
3.9.2 StampedLock的使用 183
3.9.3 与其他锁的性能对比 185
3.9.4 StampedLock总结 191
3.10 Guava之Monitor详解 192
3.10.1 Monitor及Guard 192
3.10.2 Monitor的其他方法 194
3.10.3 Monitor总结 194
3.11 Guava之RateLimiter详解 194
3.11.1 RateLimiter的基本使用 195
3.11.2 RateLimiter的限流操作——漏桶算法 196
3.11.3 令牌环桶算法 201
3.11.4 RateLimiter总结 204
3.12 本章总结 204
第4章 Java并发包之并发容器详解 205
4.1 链表 206
4.1.1 基本的链表 206
4.1.2 优先级链表 210
4.1.3 跳表(SkipList) 213
4.1.4 链表总结 221
4.2 BlockingQueue(阻塞队列) 221
4.2.1 ArrayBlockingQueue 222
4.2.2 PriorityBlockingQueue 226
4.2.3 LinkedBlockingQueue 228
4.2.4 DelayQueue 228
4.2.5 SynchronousQueue 231
4.2.6 LinkedBlockingDeque 233
4.2.7 LinkedTransferQueue 234
4.2.8 BlockingQueue总结 236
4.3 ConcurrentQueue(并发队列) 237
4.3.1 并发队列的性能 239
4.3.2 并发队列在使用中需要注意的问题 241
4.3.3 并发队列总结 245
4.4 ConcurrentMap(并发映射) 245
4.4.1 ConcurrentHashMap简介 245
4.4.2 ConcurrentSkipListMap简介 247
4.4.3 并发映射总结 247
4.5 写时拷贝算法(Copy On Write) 248
4.5.1 CopyOnWrite读实现操作分析 249
4.5.2 CopyOnWrite写实现操作分析 249
4.5.3 CopyOnWrite总结 250
4.6 高并发无锁(Lock Free)数据结构的实现 250
4.6.1 高并发无锁链表的实现 250
4.6.2 Lock Free数据结构的测试 253
4.6.3 本节总结 255
4.7 本章总结 255
第5章 Java并发包之ExecutorService详解 256
5.1 Executor&ExecutorService详解 256
5.1.1 ThreadPoolExecutor详解 257
5.1.2 ScheduledExecutorService详解 265
5.1.3 关闭ExecutorService 271
5.1.4 Executors详解 273
5.1.5 ExecutorService总结 276
5.2 Future和Callback 277
5.2.1 Future详解 277
5.2.2 ExecutorService与Future 280
5.2.3 Future的不足之处 282
5.2.4 Google Guava的Future 282
5.2.5 Future总结 284
5.3 ForkJoinPool 详解 284
5.3.1 Fork/Join Framework介绍 284
5.3.2 ForkJoinTask详解 285
5.3.3 ForkJoinPool总结 289
5.4 CompletionService详解 289
5.4.1 ExecutorService执行批量任务的缺陷 289
5.4.2 CompletionService详解 291
5.4.3 CompletionService总结 294
5.5 CompletableFuture详解 294
5.5.1 CompletableFuture的基本用法 294
5.5.2 任务的异步运行 296
5.5.3 异步任务链 296
5.5.4 合并多个Future 298
5.5.5 多Future的并行计算 299
5.5.6 错误处理 299
5.5.7 JDK 9对CompletableFuture的进一步支持 300
5.5.8 CompletableFuture总结 300
5.6 本章总结 301
第6章 Java Streams详解 302
6.1 Stream介绍及其基本操作 302
6.1.1 如何创建Stream 303
6.1.2 Stream之Intermediate操作 306
6.1.3 Stream之Terminal操作 312
6.1.4 NumericStream详解 317
6.1.5 Stream总结 320
6.2 Collector在Stream中的使用 320
6.2.1 初识Collector 321
6.2.2 Collectors用法详解 324
6.2.3 自定义Collector 335
6.2.4 Collector总结 336
6.3 Parallel Stream详解 337
6.3.1 并行流Parallel Stream 337
6.3.2 Spliterator 详解 340
6.3.3 Spliterator总结 343
6.4 本章总结 344
第7章 Metrics(Powerful Toolkit For Measure) 345
7.1 Metrics快速入门 345
7.1.1 如何监控度量应用程序 345
7.1.2 Metrics环境搭建 346
7.2 五大Metric详解 346
7.2.1 Meter 347
7.2.2 Gauge 349
7.2.3 Counter 360
7.2.4 Histogram 362
7.2.5 Timer 370
7.3 Reporter详解 372
7.3.1 ConsoleReporter 373
7.3.2 LogReporter 376
7.3.3 JMXReporter 378
7.3.4 CsvReporter 379
7.4 Metrics Plugins 380
7.4.1 Health Check 381
7.4.2 JVM Instrumentation 386
7.5 深入Metrics源码 387
7.5.1 MetricRegistry如何工作 388
7.5.2 Reporter如何工作 392
7.5.3 拾遗补漏 394
7.6 本章总结 396

推荐

车牌查询
桂ICP备20004708号-3