1.5.3局部内部类 21
1.5.4匿名内部类 21
1.6泛型 22
1.6.1泛型标记和泛型限定:E、T、K、V、N、? 23
1.6.2泛型方法 24
1.6.3泛型类 25
1.6.4泛型接口 25
1.6.5类型擦除 26
1.7序列化 27
1.7.1Java序列化API的应用 27
1.7.2Kryo序列化 29
1.7.3Avro序列化 31
1.7.4ProtoBuf序列化 33
1.8JavaI/O 35
1.8.1输入流和输出流 35
1.8.2字节流和字符流 36
1.8.3节点流和处理流 42
1.8.4内存映射文件技术 43
》》》第2章Java并发编程 46《《《
2.1常见的Java线程的创建方式 47
2.1.1继承Thread类 47
2.1.2实现Runnable接口 48
2.1.3通过ExecutorService和Callable<Class>接口实现有返回值的线程 49
2.1.4基于线程池 50
2.2Java线程池的原理 50
2.2.1线程复用 51
2.2.2线程池的核心组件和核心类 51
2.2.3Java线程池的工作流程 52
2.2.4线程池的拒绝策略 53
2.35种常用的线程池 56
2.3.1newCachedThreadPool 56
2.3.2newFixedThreadPool 57
2.3.3newScheduledThreadPool 57
2.3.4newSingleThreadExecutor 58
2.3.5newWorkStealingPool 58
2.4线程的生命周期 58
2.4.1新建状态:New 60
2.4.2就绪状态:Runnable 60
2.4.3阻塞状态:Blocked 60
2.4.4等待状态:Waiting 61
2.4.5超时等待状态:Timed_Waiting 61
2.4.6线程终止:Terminated 61
2.5线程的基本方法 61
2.5.1线程等待:wait方法 62
2.5.2线程睡眠:sleep方法 62
2.5.3线程让步:yield方法 62
2.5.4线程中断:interrupt方法 62
2.5.5线程加入:join方法 63
2.5.6线程唤醒:notify方法 64
2.5.7后台守护线程:setDaemon方法 64
2.5.8sleep方法和wait方法的区别 65
2.5.9start方法和run方法的区别 65
2.5.10终止线程的4种方式 65
2.6Java中的锁 67
2.6.1乐观锁 68
2.6.2悲观锁 68
2.6.3自旋锁 68
2.6.4synchronized 69
2.6.5ReentrantLock 77
2.6.6synchronized与ReentrantLock的对比 83
2.6.7Semaphore 83
2.6.8AtomicInteger 84
2.6.9可重入锁 85
2.6.10公平锁和非公平锁 85
2.6.11读写锁 86
2.6.12共享锁和独占锁 86
2.6.13重量级锁和轻量级锁 87
2.6.14偏向锁 87
2.6.15分段锁 88
2.6.16同步锁和死锁 88
2.6.17如何进行锁优化 88
2.7线程上下文切换 90
2.7.1线程上下文切换的流程 90
2.7.2导致线程上下文切换的原因 91
2.8Java中的阻塞队列 91
2.8.1阻塞队列的主要操作 92
2.8.2Java中阻塞队列的实现 96
2.9Java并发关键字 101
2.9.1CountDownLatch 101
2.9.2CyclicBarrier 103
2.9.3Semaphore 104
2.9.4volatile的作用 106
2.10多线程如何共享数据 108
2.10.1将数据抽象成一个类,将对这个数据的操作封装在类的方法中 108
2.10.2将Runnable对象作为一个类的内部类,将共享数据作为其成员变量 109
2.11Fork/Join并发框架 111
2.11.1工作窃取算法 111
2.11.2Fork/Join框架的应用 112
2.11.3Fork/Join的核心组件 116
2.11.4Fork/Join的任务调度流程 117
2.12Java中的线程调度 117
2.12.1抢占式调度 117
2.12.2协同式调度 118
2.12.3Java线程调度的实现:抢占式 119
2.12.4线程让出CPU的情况 119
2.13进程调度算法 119
2.13.1优先调度算法 119
2.13.2高优先权优先调度算法 120
2.13.3时间片的轮转调度算法 121
2.14CAS 122
2.14.1CAS的特性:乐观锁 123
2.14.2CAS自旋等待 123
2.15ABA问题 124
2.16AQS 124
2.16.1AQS的原理 125
2.16.2state:状态 125
2.16.3AQS共享资源的方式:独占式和共享式 126
2.17Java8中的流 127
2.17.1并行流和串行流的原理 128
2.17.2流的常用函数 130
2.17.3流的创建方式 131
2.17.4流和集合的区别 132
》》》第3章JVM 133《《《
3.1JVM结构规范(JavaSE8) 134
3.2多线程 135
3.3HotSpotJVM内存模型 136
3.3.1程序计数器:线程私有,无内存溢出问题 137
3.3.2Java虚拟机栈:线程私有,描述Java方法的执行过程 137
3.3.3本地方法栈:线程私有 138
3.3.4Java堆:线程共享 139
3.3.5元空间:方法区在HotSpotJVM中的实现,线程共享 139
3.3.6直接内存 139
3.4HotSpotJVM堆 140
3.4.1新生代:Eden区、SurvivorTo区和SurvivorFrom区 140
3.4.2老年代 141
3.5垃圾回收的原理与算法 142
3.5.1如何确定垃圾 142
3.5.2如何回收垃圾 143
3.6Java中的4种引用类型 147
3.7分代回收算法和分区回收算法 148
3.7.1分代回收算法 148
3.7.2分区回收算法 148
3.8垃圾回收器 149
3.8.1Serial垃圾回收器:单线程,复制算法 150
3.8.2ParNew垃圾回收器:多线程,复制算法 150
3.8.3ParallelScavenge垃圾回收器:多线程,复制算法 150
3.8.4SerialOld垃圾回收器:单线程,标记整理算法 150
3.8.5ParallelOld垃圾回收器:多线程,标记整理算法 151
3.8.6CMS垃圾回收器 152
3.8.7G1垃圾回收器 152
3.9JVM的参数配置 153
3.9.1JVM参数设置入门案例 153
3.9.2JVM参数设置实战 154
3.10JVM的类加载机制 156
3.10.1JVM的类加载阶段 156
3.10.2类加载器 158
3.10.3双亲委派机制 159
3.10.4OSGI 160
3.11JVM的性能监控与分析工具 161
3.11.1jps 161
3.11.2jinfo 162
3.11.3jstat 162
3.11.4jstack 163
3.11.5jmap 164
3.11.6GC日志分析 166
》》》第4章Java高并发网络编程 168《《《
4.1网络 169
4.1.1OSI七层网络模型 169
4.1.2TCP/IP四层网络模型 170
4.1.3TCP三次握手/四次挥手 171
4.1.4HTTP的原理 176
4.1.5CDN的原理 180
4.2负载均衡 182
4.2.1四层负载均衡与七层负载均衡的对比 182
4.2.2负载均衡算法 184
4.2.3LVS的原理及应用 186
4.2.4Nginx反向代理与负载均衡 193
4.3Java的网络编程模型 195
4.3.1阻塞I/O模型 195
4.3.2非阻塞I/O模型 195
4.3.3多路复用I/O模型 196
4.3.4信号驱动I/O模型 197
4.3.5异步I/O模型 197
4.3.6JavaI/O模型与JavaNIO模型 198
4.4Reactor线程模型 204
4.4.1Reactor单线程模型 204
4.4.2Reactor多线程模型 205
4.4.3Reactor主备多线程模型 206
4.5Netty的架构 207
4.5.1Netty的架构设计 207
4.5.2Netty的核心组件 210
4.5.3Netty的原理 211
4.5.4Netty的特性 214
4.5.5Netty实战 216
4.6租约机制 224
4.6.1租约机制的概念 224
4.6.2租约机制解决的问题 225
4.6.3租约机制的时钟同步问题 232
4.6.4租约机制在HDFS、HBase、Eureka及Ethd中的应用 233
4.6.5租约机制的特性 236
4.7流控算法:固定容器算法、漏桶算法和令牌桶算法 236
4.8gRPC简介 243
4.8.1RPC的原理 243
4.8.2gRPC的原理 245
4.9高并发知识 247
4.9.1高并发的核心指标 247
4.9.2高并发系统的设计原则 247
4.9.3高可用系统的设计原则 249
4.9.4Linux操作系统优化 250
》》》第5章Spring基础 252《《《
5.1Spring的原理 253
5.2Spring的特性 253
5.3Spring的核心JAR包 254
5.4Spring的注解 255
5.5SpringIoC的原理 257
5.5.1SpringIoC简介 257
5.5.2SpringBean的装配流程 258
5.5.3SpringBean的作用域 258
5.5.4SpringBean的生命周期 259
5.6SpringAOP的原理 261
5.6.1SpringAOP的核心概念 262
5.6.2SpringAOP的两种代理方式 262
5.6.3SpringAOP的5种通知类型 263
5.6.4SpringAOP的代码实现 263
5.7SpringMVC的原理 264
5.8MyBatis的缓存 265
5.8.1MyBatis的一级缓存原理 266
5.8.2MyBatis的二级缓存原理 266
》》》第6章Netflix的原理及应用 268《《《
6.1微服务架构的优缺点及组成 269
6.2Netflix技术栈 271
6.3SpringBoot 273
6.4Config 276
6.4.1Config的原理 276
6.4.2ConfigServer的定义及应用 277
6.4.3ConfigClient的定义及应用 279
6.5Eureka 280
6.5.1Eureka的原理 281
6.5.2Eureka的应用 283
6.6Consul 290
6.6.1Consul的原理 290
6.6.2Consul的应用 293
6.7Feign 298
6.7.1Feign的应用 299
6.7.2Feign的常用注解 301
6.8Hystrix 301
6.8.1Hystrix的特性 302
6.8.2Hystrix的服务降级流程 304
6.8.3Hystrix的应用 305
6.8.4异步请求 307
6.8.5Hystrix的常用配置 311
6.8.6HystrixDashboard 313
6.9Zuul 314
6.9.1Zuul的原理 315
6.9.2Zuul的应用 316
6.9.3PreRequestFilter的定义和注入 318
6.9.4FallbackProvider的服务容错 319
6.10SpringCloud的链路监控 321
6.10.1Sleuth+Zipkin 321
6.10.2Pinpoint 327
》》》第7章SpringCloudAlibaba的原理及应用 333《《《
7.1SpringCloudAlibaba概览 334
7.2Dubbo 334
7.2.1角色 335
7.2.2部署架构 336
7.2.3流量管理 337
7.2.4总体架构 338
7.2.5容错模式 339
7.2.6客户端的负载均衡策略 340
7.2.7服务降级 341
7.2.8Dubbo实战 342
7.3Nacos 345
7.3.1Nacos的基本架构 346
7.3.2Nacos的配置中心 346
7.3.3Nacos服务注册与发现实战 348
7.4Sentinel 352
7.4.1Sentinel的原理 353
7.4.2Sentinel的应用 357
》》》第8章数据结构 360《《《
8.1栈及其Java实现 361
8.2队列及其Java实现 364
8.3链表 366
8.3.1链表的特性 367
8.3.2单向链表及其Java实现 367
8.3.3双向链表及其Java实现 370
8.3.4循环链表及其Java实现 374
8.4跳跃表 374
8.5哈希表 376
8.5.1常用的构造哈希函数 377
8.5.2哈希表的应用 377
8.6二叉排序树 378
8.6.1插入操作 378
8.6.2删除操作 379
8.6.3查找操作 381
8.6.4用Java实现二叉排序树 381
8.7红黑树 385
8.7.1红黑树的特性 385
8.7.2红黑树的左旋 386
8.7.3红黑树的右旋 386
8.7.4红黑树的添加 387
8.7.5红黑树的删除 388
8.8图 389
8.8.1无向图和有向图 389
8.8.2图的存储结构:邻接矩阵 390
8.8.3图的存储结构:邻接表 392
8.8.4图的遍历 393
8.9位图 394
8.9.1位图的数据结构 394
8.9.2位图的Java实现 395
》》》第9章Java中常用算法的原理及其Java实现 398《《《
9.1二分查找算法 399
9.2冒泡排序算法 400
9.3插入排序算法 402
9.4快速排序算法 404
9.5希尔排序算法 406
9.6归并排序算法 408
9.7桶排序算法 411
9.8基数排序算法 412
9.9其他算法 415
9.9.1剪枝算法 415
9.9.2回溯算法 416
9.9.3最短路径算法 416
》》》第10章关系数据库及分布式事务 418《《《
10.1数据库基础 419
10.1.1存储引擎 419
10.1.2创建索引的原则 421
10.1.3数据库三范式 422
10.1.4存储过程 423
10.1.5触发器 424
10.2数据库的并发操作和锁 424
10.2.1数据库的并发策略 424
10.2.2数据库锁 425
10.2.3数据库分库分表 427
10.3事务 428
10.3.1本地事务 429
10.3.2分布式事务 430
10.3.3CAP 431
10.3.4两阶段提交 431
10.3.5三阶段提交 433
10.3.6柔性事务 434
10.4MySQL的高可用与高并发 436
10.4.1MySQL的主备复制 437
10.4.2MySQL双主模式的循环复制问题 440
10.4.3MySQL的索引 440
10.5大表水平拆分 442
10.5.1按照范围分表 442
10.5.2哈希取模 442
10.5.3一致性哈希算法 443
10.6NWR理论 446
》》》第11章分布式缓存的原理及应用 448《《《
11.1分布式缓存简介 449
11.2Ehcache的原理及应用 450
11.2.1Ehcache的原理 450
11.2.2Ehcache的应用 452
11.3Redis的原理及应用 454
11.3.1Redis的原理 454
11.3.2Redis的应用 467
11.4分布式缓存设计的核心问题 470
11.4.1缓存预热 470
11.4.2缓存更新 470
11.4.3缓存淘汰策略 471
11.4.4缓存雪崩 471
11.4.5缓存穿透 471
11.4.6缓存降级 472
11.5分布式缓存的应用场景 473
》》》第12章ZooKeeper、Kafka的原理及应用 475《《《
12.1ZooKeeper的原理 476
12.1.1ZooKeeper中的角色 476
12.1.2ZAB协议 477
12.1.3ZooKeeper的选举机制和流程 479
12.2ZooKeeper的应用 480
12.2.1ZooKeeper的数据模型 480
12.2.2ZooKeeper的应用场景 482
12.3Kafka的原理 484
12.3.1Kafka的组成 484
12.3.2Kafka的数据存储设计 486
12.3.3生产者并发设计 488
12.3.4消费者并发设计 490
12.3.5Kafka控制器选主 491
12.3.6Kafka分区Leader选主 492
12.3.7KafkaTopic的删除流程 493
12.3.8Kafka消息的幂等性 494
12.3.9Kafka服务端的核心参数 494
12.3.10Kafka生产者的核心参数 495
12.3.11Kafka消费者的核心参数 496
》》》第13章HBase的原理及应用 498《《《
13.1HBase的原理 499
13.1.1HBase的概念 499
13.1.2行式存储和列式存储 500
13.1.3LSM树 502
13.1.4布隆过滤器(BloomFilter) 505
13.1.5HBase列式存储的数据模型 506
13.1.6HBase的核心架构 507
13.1.7HBase的数据读写流程 511
13.1.8HBaseCompation 514
13.1.9HBaseRegion的分裂 515
13.1.10HBaseRegion的合并 517
13.1.11HBaseRegion的负载均衡 517
13.2HBase的高性能集群配置 518
13.2.1HBase的硬件配置选型 518
13.2.2HBase的配置优化 519
13.2.3HBase的日常运维 523
》》》第14章Elasticsearch的原理及应用 525《《《
14.1Elasticsearch的概念和原理 526
14.1.1Lucene简介 526
14.1.2Elasticsearch的特性 530
14.1.3Elasticsearch的应用场景 530
14.1.4Elasticsearch的数据模型 531
14.1.5Elasticsearch的分布式架构 533
14.1.6Elasticsearch的写操作 538
14.1.7Elasticsearch的读操作 540
14.1.8Elasticsearch中的Translog 541
14.1.9Elasticsearch的段合并 543
14.1.10Elasticsearch的集群扩容 544
14.2Elasticsearch的配置和性能调优 545
》》》第15章设计模式的概念及其Java实现 546《《《
15.1设计模式简介 547
15.2工厂模式 550
15.3抽象工厂模式 552
15.4单例模式 557
15.5建造者模式 559
15.6原型模式 563
15.7适配器模式 566
15.8装饰者模式 571
15.9代理模式 573
15.10外观模式 575
15.11桥接模式 579
15.12组合模式 582
15.13享元模式 584
15.14策略模式 587
15.15模板方法模式 590
15.16观察者模式 592
15.17迭代器模式 595
15.18责任链模式 599
15.19命令模式 602
15.20备忘录模式 605
15.21状态模式 608
15.22访问者模式 610
15.23中介者模式 614
15.24解释器模式 618