Offer来了:Java面试核心知识点精讲(第2版)

Offer来了:Java面试核心知识点精讲(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-07
版次: 1
ISBN: 9787121435959
定价: 159.00
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 636页
  • 本书讲解Java面试中常被问及的核心知识点,涉及Java基础、Java并发编程、JVM、Java高并发网络编程、Spring基础、Netflix的原理及应用、Spring Cloud Alibaba的原理及应用、数据结构、Java中常用算法的原理及其Java实现、关系数据库及分布式事务、分布式缓存的原理及应用、ZooKeeper的原理及应用、Kafka的原理及应用、Elasticsearch的原理及应用、设计模式的概念及其Java实现。
      本书内容全面、细致,既可帮助读者迅速查找Java知识点,也可帮助读者完善其Java知识体系;不但可以作为Java面试知识速通手册,也可以作为Java程序员的案头手册。 王磊

    飞轮数据(Apache Doris商业化公司)大数据架构师、阿里云MVP、极客时间“每日一课”专栏作者。对分布式架构、DevOps、Serverless、PB级数据处理等有丰富的实战经验,深入理解数据治理、数据湖和实时数仓技术。热爱技术,喜欢创新,关注社区的技术发展状态。

    已出版的图书有:

    -《Offer来了:Java面试核心知识点精讲(原理篇)》

    -《Offer来了:Java面试核心知识点精讲(框架篇)》

    -《图解Spark:大数据快速分析实战》 》》》第1章  Java基础    1《《《

    1.1  集合    2

    1.1.1  List:可重复    2

    1.1.2  Queue  3

    1.1.3  Set:不可重复    4

    1.1.4  Map  5

    1.2  异常的分类及处理    8

    1.2.1  异常的概念    8

    1.2.2  异常的分类    9

    1.2.3  处理异常的方式    10

    1.3  反射机制    12

    1.3.1  动态语言的概念    12

    1.3.2  反射机制的概念    12

    1.3.3  反射的应用    12

    1.3.4  Java的反射API 13

    1.3.5  反射的过程    13

    1.3.6  创建对象的两种方式    14

    1.3.7  Method的invoke方法    15

    1.4  注解    16

    1.4.1  注解的概念    16

    1.4.2  标准元注解:@Target、@Retention、@Documented、@Inherited  16

    1.4.3  注解处理器    17

    1.5  内部类    19

    1.5.1  静态内部类    19

    1.5.2  成员内部类    20

    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.1  Java序列化API的应用    27

    1.7.2  Kryo序列化    29

    1.7.3  Avro序列化    31

    1.7.4  ProtoBuf序列化    33

    1.8  Java I/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接口实现有返回值的线程    49

    2.1.4  基于线程池    50

    2.2  Java线程池的原理    50

    2.2.1  线程复用    51

    2.2.2  线程池的核心组件和核心类    51

    2.2.3  Java线程池的工作流程    52

    2.2.4  线程池的拒绝策略    53

    2.3  5种常用的线程池    56

    2.3.1  newCachedThreadPool 56

    2.3.2  newFixedThreadPool 57

    2.3.3  newScheduledThreadPool 57

    2.3.4  newSingleThreadExecutor 58

    2.3.5  newWorkStealingPool 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.8  sleep方法和wait方法的区别    65

    2.5.9  start方法和run方法的区别    65

    2.5.10  终止线程的4种方式    65

    2.6  Java中的锁    67

    2.6.1  乐观锁    68

    2.6.2  悲观锁    68

    2.6.3  自旋锁    68

    2.6.4  synchronized  69

    2.6.5  ReentrantLock  77

    2.6.6  synchronized与ReentrantLock的对比    83

    2.6.7  Semaphore  83

    2.6.8  AtomicInteger 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.8  Java中的阻塞队列    91

    2.8.1  阻塞队列的主要操作    92

    2.8.2  Java中阻塞队列的实现    96

    2.9  Java并发关键字    101

    2.9.1  CountDownLatch  101

    2.9.2  CyclicBarrier 103

    2.9.3  Semaphore  104

    2.9.4  volatile的作用    106

    2.10  多线程如何共享数据    108

    2.10.1  将数据抽象成一个类,将对这个数据的操作封装在类的方法中    108

    2.10.2  将Runnable对象作为一个类的内部类,将共享数据作为其成员变量    109

    2.11  Fork/Join并发框架    111

    2.11.1  工作窃取算法    111

    2.11.2  Fork/Join框架的应用    112

    2.11.3  Fork/Join的核心组件    116

    2.11.4  Fork/Join的任务调度流程    117

    2.12  Java中的线程调度    117

    2.12.1  抢占式调度    117

    2.12.2  协同式调度    118

    2.12.3  Java线程调度的实现:抢占式    119

    2.12.4  线程让出CPU的情况    119

    2.13  进程调度算法    119

    2.13.1  优先调度算法    119

    2.13.2  高优先权优先调度算法    120

    2.13.3  时间片的轮转调度算法    121

    2.14  CAS  122

    2.14.1  CAS的特性:乐观锁    123

    2.14.2  CAS自旋等待    123

    2.15  ABA问题    124

    2.16  AQS  124

    2.16.1  AQS的原理    125

    2.16.2  state:状态    125

    2.16.3  AQS共享资源的方式:独占式和共享式    126

    2.17  Java 8中的流    127

    2.17.1  并行流和串行流的原理    128

    2.17.2  流的常用函数    130

    2.17.3  流的创建方式    131

    2.17.4  流和集合的区别    132

     

    》》》第3章  JVM    133《《《

    3.1  JVM结构规范(Java SE 8)    134

    3.2  多线程    135

    3.3  HotSpot JVM内存模型    136

    3.3.1  程序计数器:线程私有,无内存溢出问题    137

    3.3.2  Java虚拟机栈:线程私有,描述Java方法的执行过程    137

    3.3.3  本地方法栈:线程私有    138

    3.3.4  Java堆:线程共享    139

    3.3.5  元空间:方法区在HotSpot JVM中的实现,线程共享    139

    3.3.6  直接内存    139

    3.4  HotSpot JVM堆    140

    3.4.1  新生代:Eden区、SurvivorTo区和SurvivorFrom区    140

    3.4.2  老年代    141

    3.5  垃圾回收的原理与算法    142

    3.5.1  如何确定垃圾    142

    3.5.2  如何回收垃圾    143

    3.6  Java中的4种引用类型    147

    3.7  分代回收算法和分区回收算法    148

    3.7.1  分代回收算法     148

    3.7.2  分区回收算法    148

    3.8  垃圾回收器    149

    3.8.1  Serial垃圾回收器:单线程,复制算法    150

    3.8.2  ParNew垃圾回收器:多线程,复制算法    150

    3.8.3  Parallel Scavenge垃圾回收器:多线程,复制算法    150

    3.8.4  Serial Old垃圾回收器:单线程,标记整理算法    150

    3.8.5  Parallel Old垃圾回收器:多线程,标记整理算法    151

    3.8.6  CMS垃圾回收器    152

    3.8.7  G1垃圾回收器    152

    3.9  JVM的参数配置    153

    3.9.1  JVM参数设置入门案例    153

    3.9.2  JVM参数设置实战    154

    3.10  JVM的类加载机制    156

    3.10.1  JVM的类加载阶段    156

    3.10.2  类加载器    158

    3.10.3  双亲委派机制    159

    3.10.4  OSGI 160

    3.11  JVM的性能监控与分析工具    161

    3.11.1  jps  161

    3.11.2  jinfo  162

    3.11.3  jstat 162

    3.11.4  jstack  163

    3.11.5  jmap  164

    3.11.6  GC日志分析    166

     

    》》》第4章  Java高并发网络编程    168《《《

    4.1  网络    169

    4.1.1  OSI七层网络模型    169

    4.1.2  TCP/IP四层网络模型    170

    4.1.3  TCP三次握手/四次挥手    171

    4.1.4  HTTP的原理    176

    4.1.5  CDN的原理    180

    4.2  负载均衡    182

    4.2.1  四层负载均衡与七层负载均衡的对比    182

    4.2.2  负载均衡算法    184

    4.2.3  LVS的原理及应用    186

    4.2.4  Nginx反向代理与负载均衡    193

    4.3  Java的网络编程模型    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.6  Java I/O模型与Java NIO模型    198

    4.4  Reactor线程模型    204

    4.4.1  Reactor单线程模型    204

    4.4.2  Reactor多线程模型    205

    4.4.3  Reactor主备多线程模型    206

    4.5  Netty的架构    207

    4.5.1  Netty的架构设计    207

    4.5.2  Netty的核心组件    210

    4.5.3  Netty的原理    211

    4.5.4  Netty的特性    214

    4.5.5  Netty实战    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.8  gRPC简介    243

    4.8.1  RPC的原理    243

    4.8.2  gRPC的原理    245

    4.9  高并发知识    247

    4.9.1  高并发的核心指标    247

    4.9.2  高并发系统的设计原则    247

    4.9.3  高可用系统的设计原则    249

    4.9.4  Linux操作系统优化    250

     

    》》》第5章  Spring基础    252《《《

    5.1  Spring的原理    253

    5.2  Spring的特性    253

    5.3  Spring的核心JAR包    254

    5.4  Spring的注解    255

    5.5  Spring IoC的原理    257

    5.5.1  Spring IoC简介    257

    5.5.2  Spring Bean的装配流程    258

    5.5.3  Spring Bean的作用域    258

    5.5.4  Spring Bean的生命周期    259

    5.6  Spring AOP的原理    261

    5.6.1  Spring AOP的核心概念    262

    5.6.2  Spring AOP的两种代理方式    262

    5.6.3  Spring AOP的5种通知类型    263

    5.6.4  Spring AOP的代码实现    263

    5.7  Spring MVC的原理    264

    5.8  MyBatis的缓存    265

    5.8.1  MyBatis的一级缓存原理    266

    5.8.2  MyBatis的二级缓存原理    266

     

    》》》第6章  Netflix的原理及应用    268《《《

    6.1  微服务架构的优缺点及组成     269

    6.2  Netflix技术栈    271

    6.3  Spring Boot 273

    6.4  Config  276

    6.4.1  Config的原理    276

    6.4.2  Config Server的定义及应用    277

    6.4.3  Config Client的定义及应用    279

    6.5  Eureka  280

    6.5.1  Eureka的原理    281

    6.5.2  Eureka的应用    283

    6.6  Consul 290

    6.6.1  Consul的原理    290

    6.6.2  Consul的应用    293

    6.7  Feign  298

    6.7.1  Feign的应用    299

    6.7.2  Feign的常用注解    301

    6.8  Hystrix  301

    6.8.1  Hystrix的特性    302

    6.8.2  Hystrix的服务降级流程    304

    6.8.3  Hystrix的应用    305

    6.8.4  异步请求    307

    6.8.5  Hystrix的常用配置    311

    6.8.6  Hystrix Dashboard  313

    6.9  Zuul 314

    6.9.1  Zuul的原理    315

    6.9.2  Zuul的应用    316

    6.9.3  PreRequestFilter的定义和注入    318

    6.9.4  Fallback Provider的服务容错    319

    6.10  Spring Cloud的链路监控    321

    6.10.1  Sleuth Zipkin  321

    6.10.2  Pinpoint 327

     

    》》》第7章  Spring Cloud Alibaba的原理及应用    333《《《

    7.1  Spring Cloud Alibaba概览    334

    7.2  Dubbo  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.8  Dubbo实战    342

    7.3  Nacos  345

    7.3.1  Nacos的基本架构    346

    7.3.2  Nacos的配置中心    346

    7.3.3  Nacos服务注册与发现实战    348

    7.4  Sentinel 352

    7.4.1  Sentinel的原理    353

    7.4.2  Sentinel的应用    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.3  CAP  431

    10.3.4  两阶段提交    431

    10.3.5  三阶段提交    433

    10.3.6  柔性事务    434

    10.4  MySQL的高可用与高并发    436

    10.4.1  MySQL的主备复制    437

    10.4.2  MySQL双主模式的循环复制问题    440

    10.4.3  MySQL的索引    440

    10.5  大表水平拆分    442

    10.5.1  按照范围分表    442

    10.5.2  哈希取模    442

    10.5.3  一致性哈希算法    443

    10.6  NWR理论    446

     

    》》》第11章  分布式缓存的原理及应用    448《《《

    11.1  分布式缓存简介    449

    11.2  Ehcache的原理及应用    450

    11.2.1  Ehcache的原理    450

    11.2.2  Ehcache的应用    452

    11.3  Redis的原理及应用    454

    11.3.1  Redis的原理    454

    11.3.2  Redis的应用    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.1  ZooKeeper的原理    476

    12.1.1  ZooKeeper中的角色    476

    12.1.2  ZAB协议    477

    12.1.3  ZooKeeper的选举机制和流程    479

    12.2  ZooKeeper的应用    480

    12.2.1  ZooKeeper的数据模型    480

    12.2.2  ZooKeeper的应用场景    482

    12.3  Kafka的原理    484

    12.3.1  Kafka的组成    484

    12.3.2  Kafka的数据存储设计    486

    12.3.3  生产者并发设计    488

    12.3.4  消费者并发设计    490

    12.3.5  Kafka控制器选主    491

    12.3.6  Kafka分区Leader选主    492

    12.3.7  Kafka Topic的删除流程    493

    12.3.8  Kafka消息的幂等性    494

    12.3.9  Kafka服务端的核心参数    494

    12.3.10  Kafka生产者的核心参数    495

    12.3.11  Kafka消费者的核心参数    496

     

    》》》第13章  HBase的原理及应用    498《《《

    13.1  HBase的原理    499

    13.1.1  HBase的概念    499

    13.1.2  行式存储和列式存储    500

    13.1.3  LSM树    502

    13.1.4  布隆过滤器(Bloom Filter)    505

    13.1.5  HBase列式存储的数据模型    506

    13.1.6  HBase的核心架构    507

    13.1.7  HBase的数据读写流程    511

    13.1.8  HBase Compation  514

    13.1.9  HBase Region的分裂    515

    13.1.10  HBase Region的合并    517

    13.1.11  HBase Region的负载均衡    517

    13.2  HBase的高性能集群配置    518

    13.2.1  HBase的硬件配置选型    518

    13.2.2  HBase的配置优化    519

    13.2.3  HBase的日常运维    523

     

    》》》第14章  Elasticsearch的原理及应用    525《《《

    14.1  Elasticsearch的概念和原理    526

    14.1.1  Lucene简介    526

    14.1.2  Elasticsearch的特性    530

    14.1.3  Elasticsearch的应用场景    530

    14.1.4  Elasticsearch的数据模型    531

    14.1.5  Elasticsearch的分布式架构    533

    14.1.6  Elasticsearch的写操作    538

    14.1.7  Elasticsearch的读操作    540

    14.1.8  Elasticsearch中的Translog  541

    14.1.9  Elasticsearch的段合并    543

    14.1.10  Elasticsearch的集群扩容    544

    14.2  Elasticsearch的配置和性能调优    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
  • 内容简介:
    本书讲解Java面试中常被问及的核心知识点,涉及Java基础、Java并发编程、JVM、Java高并发网络编程、Spring基础、Netflix的原理及应用、Spring Cloud Alibaba的原理及应用、数据结构、Java中常用算法的原理及其Java实现、关系数据库及分布式事务、分布式缓存的原理及应用、ZooKeeper的原理及应用、Kafka的原理及应用、Elasticsearch的原理及应用、设计模式的概念及其Java实现。
      本书内容全面、细致,既可帮助读者迅速查找Java知识点,也可帮助读者完善其Java知识体系;不但可以作为Java面试知识速通手册,也可以作为Java程序员的案头手册。
  • 作者简介:
    王磊

    飞轮数据(Apache Doris商业化公司)大数据架构师、阿里云MVP、极客时间“每日一课”专栏作者。对分布式架构、DevOps、Serverless、PB级数据处理等有丰富的实战经验,深入理解数据治理、数据湖和实时数仓技术。热爱技术,喜欢创新,关注社区的技术发展状态。

    已出版的图书有:

    -《Offer来了:Java面试核心知识点精讲(原理篇)》

    -《Offer来了:Java面试核心知识点精讲(框架篇)》

    -《图解Spark:大数据快速分析实战》
  • 目录:
    》》》第1章  Java基础    1《《《

    1.1  集合    2

    1.1.1  List:可重复    2

    1.1.2  Queue  3

    1.1.3  Set:不可重复    4

    1.1.4  Map  5

    1.2  异常的分类及处理    8

    1.2.1  异常的概念    8

    1.2.2  异常的分类    9

    1.2.3  处理异常的方式    10

    1.3  反射机制    12

    1.3.1  动态语言的概念    12

    1.3.2  反射机制的概念    12

    1.3.3  反射的应用    12

    1.3.4  Java的反射API 13

    1.3.5  反射的过程    13

    1.3.6  创建对象的两种方式    14

    1.3.7  Method的invoke方法    15

    1.4  注解    16

    1.4.1  注解的概念    16

    1.4.2  标准元注解:@Target、@Retention、@Documented、@Inherited  16

    1.4.3  注解处理器    17

    1.5  内部类    19

    1.5.1  静态内部类    19

    1.5.2  成员内部类    20

    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.1  Java序列化API的应用    27

    1.7.2  Kryo序列化    29

    1.7.3  Avro序列化    31

    1.7.4  ProtoBuf序列化    33

    1.8  Java I/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接口实现有返回值的线程    49

    2.1.4  基于线程池    50

    2.2  Java线程池的原理    50

    2.2.1  线程复用    51

    2.2.2  线程池的核心组件和核心类    51

    2.2.3  Java线程池的工作流程    52

    2.2.4  线程池的拒绝策略    53

    2.3  5种常用的线程池    56

    2.3.1  newCachedThreadPool 56

    2.3.2  newFixedThreadPool 57

    2.3.3  newScheduledThreadPool 57

    2.3.4  newSingleThreadExecutor 58

    2.3.5  newWorkStealingPool 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.8  sleep方法和wait方法的区别    65

    2.5.9  start方法和run方法的区别    65

    2.5.10  终止线程的4种方式    65

    2.6  Java中的锁    67

    2.6.1  乐观锁    68

    2.6.2  悲观锁    68

    2.6.3  自旋锁    68

    2.6.4  synchronized  69

    2.6.5  ReentrantLock  77

    2.6.6  synchronized与ReentrantLock的对比    83

    2.6.7  Semaphore  83

    2.6.8  AtomicInteger 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.8  Java中的阻塞队列    91

    2.8.1  阻塞队列的主要操作    92

    2.8.2  Java中阻塞队列的实现    96

    2.9  Java并发关键字    101

    2.9.1  CountDownLatch  101

    2.9.2  CyclicBarrier 103

    2.9.3  Semaphore  104

    2.9.4  volatile的作用    106

    2.10  多线程如何共享数据    108

    2.10.1  将数据抽象成一个类,将对这个数据的操作封装在类的方法中    108

    2.10.2  将Runnable对象作为一个类的内部类,将共享数据作为其成员变量    109

    2.11  Fork/Join并发框架    111

    2.11.1  工作窃取算法    111

    2.11.2  Fork/Join框架的应用    112

    2.11.3  Fork/Join的核心组件    116

    2.11.4  Fork/Join的任务调度流程    117

    2.12  Java中的线程调度    117

    2.12.1  抢占式调度    117

    2.12.2  协同式调度    118

    2.12.3  Java线程调度的实现:抢占式    119

    2.12.4  线程让出CPU的情况    119

    2.13  进程调度算法    119

    2.13.1  优先调度算法    119

    2.13.2  高优先权优先调度算法    120

    2.13.3  时间片的轮转调度算法    121

    2.14  CAS  122

    2.14.1  CAS的特性:乐观锁    123

    2.14.2  CAS自旋等待    123

    2.15  ABA问题    124

    2.16  AQS  124

    2.16.1  AQS的原理    125

    2.16.2  state:状态    125

    2.16.3  AQS共享资源的方式:独占式和共享式    126

    2.17  Java 8中的流    127

    2.17.1  并行流和串行流的原理    128

    2.17.2  流的常用函数    130

    2.17.3  流的创建方式    131

    2.17.4  流和集合的区别    132

     

    》》》第3章  JVM    133《《《

    3.1  JVM结构规范(Java SE 8)    134

    3.2  多线程    135

    3.3  HotSpot JVM内存模型    136

    3.3.1  程序计数器:线程私有,无内存溢出问题    137

    3.3.2  Java虚拟机栈:线程私有,描述Java方法的执行过程    137

    3.3.3  本地方法栈:线程私有    138

    3.3.4  Java堆:线程共享    139

    3.3.5  元空间:方法区在HotSpot JVM中的实现,线程共享    139

    3.3.6  直接内存    139

    3.4  HotSpot JVM堆    140

    3.4.1  新生代:Eden区、SurvivorTo区和SurvivorFrom区    140

    3.4.2  老年代    141

    3.5  垃圾回收的原理与算法    142

    3.5.1  如何确定垃圾    142

    3.5.2  如何回收垃圾    143

    3.6  Java中的4种引用类型    147

    3.7  分代回收算法和分区回收算法    148

    3.7.1  分代回收算法     148

    3.7.2  分区回收算法    148

    3.8  垃圾回收器    149

    3.8.1  Serial垃圾回收器:单线程,复制算法    150

    3.8.2  ParNew垃圾回收器:多线程,复制算法    150

    3.8.3  Parallel Scavenge垃圾回收器:多线程,复制算法    150

    3.8.4  Serial Old垃圾回收器:单线程,标记整理算法    150

    3.8.5  Parallel Old垃圾回收器:多线程,标记整理算法    151

    3.8.6  CMS垃圾回收器    152

    3.8.7  G1垃圾回收器    152

    3.9  JVM的参数配置    153

    3.9.1  JVM参数设置入门案例    153

    3.9.2  JVM参数设置实战    154

    3.10  JVM的类加载机制    156

    3.10.1  JVM的类加载阶段    156

    3.10.2  类加载器    158

    3.10.3  双亲委派机制    159

    3.10.4  OSGI 160

    3.11  JVM的性能监控与分析工具    161

    3.11.1  jps  161

    3.11.2  jinfo  162

    3.11.3  jstat 162

    3.11.4  jstack  163

    3.11.5  jmap  164

    3.11.6  GC日志分析    166

     

    》》》第4章  Java高并发网络编程    168《《《

    4.1  网络    169

    4.1.1  OSI七层网络模型    169

    4.1.2  TCP/IP四层网络模型    170

    4.1.3  TCP三次握手/四次挥手    171

    4.1.4  HTTP的原理    176

    4.1.5  CDN的原理    180

    4.2  负载均衡    182

    4.2.1  四层负载均衡与七层负载均衡的对比    182

    4.2.2  负载均衡算法    184

    4.2.3  LVS的原理及应用    186

    4.2.4  Nginx反向代理与负载均衡    193

    4.3  Java的网络编程模型    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.6  Java I/O模型与Java NIO模型    198

    4.4  Reactor线程模型    204

    4.4.1  Reactor单线程模型    204

    4.4.2  Reactor多线程模型    205

    4.4.3  Reactor主备多线程模型    206

    4.5  Netty的架构    207

    4.5.1  Netty的架构设计    207

    4.5.2  Netty的核心组件    210

    4.5.3  Netty的原理    211

    4.5.4  Netty的特性    214

    4.5.5  Netty实战    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.8  gRPC简介    243

    4.8.1  RPC的原理    243

    4.8.2  gRPC的原理    245

    4.9  高并发知识    247

    4.9.1  高并发的核心指标    247

    4.9.2  高并发系统的设计原则    247

    4.9.3  高可用系统的设计原则    249

    4.9.4  Linux操作系统优化    250

     

    》》》第5章  Spring基础    252《《《

    5.1  Spring的原理    253

    5.2  Spring的特性    253

    5.3  Spring的核心JAR包    254

    5.4  Spring的注解    255

    5.5  Spring IoC的原理    257

    5.5.1  Spring IoC简介    257

    5.5.2  Spring Bean的装配流程    258

    5.5.3  Spring Bean的作用域    258

    5.5.4  Spring Bean的生命周期    259

    5.6  Spring AOP的原理    261

    5.6.1  Spring AOP的核心概念    262

    5.6.2  Spring AOP的两种代理方式    262

    5.6.3  Spring AOP的5种通知类型    263

    5.6.4  Spring AOP的代码实现    263

    5.7  Spring MVC的原理    264

    5.8  MyBatis的缓存    265

    5.8.1  MyBatis的一级缓存原理    266

    5.8.2  MyBatis的二级缓存原理    266

     

    》》》第6章  Netflix的原理及应用    268《《《

    6.1  微服务架构的优缺点及组成     269

    6.2  Netflix技术栈    271

    6.3  Spring Boot 273

    6.4  Config  276

    6.4.1  Config的原理    276

    6.4.2  Config Server的定义及应用    277

    6.4.3  Config Client的定义及应用    279

    6.5  Eureka  280

    6.5.1  Eureka的原理    281

    6.5.2  Eureka的应用    283

    6.6  Consul 290

    6.6.1  Consul的原理    290

    6.6.2  Consul的应用    293

    6.7  Feign  298

    6.7.1  Feign的应用    299

    6.7.2  Feign的常用注解    301

    6.8  Hystrix  301

    6.8.1  Hystrix的特性    302

    6.8.2  Hystrix的服务降级流程    304

    6.8.3  Hystrix的应用    305

    6.8.4  异步请求    307

    6.8.5  Hystrix的常用配置    311

    6.8.6  Hystrix Dashboard  313

    6.9  Zuul 314

    6.9.1  Zuul的原理    315

    6.9.2  Zuul的应用    316

    6.9.3  PreRequestFilter的定义和注入    318

    6.9.4  Fallback Provider的服务容错    319

    6.10  Spring Cloud的链路监控    321

    6.10.1  Sleuth Zipkin  321

    6.10.2  Pinpoint 327

     

    》》》第7章  Spring Cloud Alibaba的原理及应用    333《《《

    7.1  Spring Cloud Alibaba概览    334

    7.2  Dubbo  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.8  Dubbo实战    342

    7.3  Nacos  345

    7.3.1  Nacos的基本架构    346

    7.3.2  Nacos的配置中心    346

    7.3.3  Nacos服务注册与发现实战    348

    7.4  Sentinel 352

    7.4.1  Sentinel的原理    353

    7.4.2  Sentinel的应用    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.3  CAP  431

    10.3.4  两阶段提交    431

    10.3.5  三阶段提交    433

    10.3.6  柔性事务    434

    10.4  MySQL的高可用与高并发    436

    10.4.1  MySQL的主备复制    437

    10.4.2  MySQL双主模式的循环复制问题    440

    10.4.3  MySQL的索引    440

    10.5  大表水平拆分    442

    10.5.1  按照范围分表    442

    10.5.2  哈希取模    442

    10.5.3  一致性哈希算法    443

    10.6  NWR理论    446

     

    》》》第11章  分布式缓存的原理及应用    448《《《

    11.1  分布式缓存简介    449

    11.2  Ehcache的原理及应用    450

    11.2.1  Ehcache的原理    450

    11.2.2  Ehcache的应用    452

    11.3  Redis的原理及应用    454

    11.3.1  Redis的原理    454

    11.3.2  Redis的应用    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.1  ZooKeeper的原理    476

    12.1.1  ZooKeeper中的角色    476

    12.1.2  ZAB协议    477

    12.1.3  ZooKeeper的选举机制和流程    479

    12.2  ZooKeeper的应用    480

    12.2.1  ZooKeeper的数据模型    480

    12.2.2  ZooKeeper的应用场景    482

    12.3  Kafka的原理    484

    12.3.1  Kafka的组成    484

    12.3.2  Kafka的数据存储设计    486

    12.3.3  生产者并发设计    488

    12.3.4  消费者并发设计    490

    12.3.5  Kafka控制器选主    491

    12.3.6  Kafka分区Leader选主    492

    12.3.7  Kafka Topic的删除流程    493

    12.3.8  Kafka消息的幂等性    494

    12.3.9  Kafka服务端的核心参数    494

    12.3.10  Kafka生产者的核心参数    495

    12.3.11  Kafka消费者的核心参数    496

     

    》》》第13章  HBase的原理及应用    498《《《

    13.1  HBase的原理    499

    13.1.1  HBase的概念    499

    13.1.2  行式存储和列式存储    500

    13.1.3  LSM树    502

    13.1.4  布隆过滤器(Bloom Filter)    505

    13.1.5  HBase列式存储的数据模型    506

    13.1.6  HBase的核心架构    507

    13.1.7  HBase的数据读写流程    511

    13.1.8  HBase Compation  514

    13.1.9  HBase Region的分裂    515

    13.1.10  HBase Region的合并    517

    13.1.11  HBase Region的负载均衡    517

    13.2  HBase的高性能集群配置    518

    13.2.1  HBase的硬件配置选型    518

    13.2.2  HBase的配置优化    519

    13.2.3  HBase的日常运维    523

     

    》》》第14章  Elasticsearch的原理及应用    525《《《

    14.1  Elasticsearch的概念和原理    526

    14.1.1  Lucene简介    526

    14.1.2  Elasticsearch的特性    530

    14.1.3  Elasticsearch的应用场景    530

    14.1.4  Elasticsearch的数据模型    531

    14.1.5  Elasticsearch的分布式架构    533

    14.1.6  Elasticsearch的写操作    538

    14.1.7  Elasticsearch的读操作    540

    14.1.8  Elasticsearch中的Translog  541

    14.1.9  Elasticsearch的段合并    543

    14.1.10  Elasticsearch的集群扩容    544

    14.2  Elasticsearch的配置和性能调优    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
查看详情
相关图书 / 更多
Offer来了:Java面试核心知识点精讲(第2版)
Office 2016办公软件应用(微课版)
侯德林 徐鉴
Offer来了:Java面试核心知识点精讲(第2版)
Office高级办公应用教程
罗冬梅;林颖;张玲
Offer来了:Java面试核心知识点精讲(第2版)
Office办公软件实例教程
周雪莲 著;周雪莲、马文君 编
Offer来了:Java面试核心知识点精讲(第2版)
Office 2016办公软件案例教程(微课版)
赖利君
Offer来了:Java面试核心知识点精讲(第2版)
Office办公软件应用高级教程(中等职业教育精品教材)
李明锐
Offer来了:Java面试核心知识点精讲(第2版)
Office 2016办公软件高级应用案例教程(第2版)
刘万辉 季大雷
Offer来了:Java面试核心知识点精讲(第2版)
Office 2019高效办公应用实战
束开俊;徐虹;宋惠茹
Offer来了:Java面试核心知识点精讲(第2版)
Office 2019办公软件高级应用案例化教程
裴佳利
Offer来了:Java面试核心知识点精讲(第2版)
Office软件应用
车志明;吴光文;张琴
Offer来了:Java面试核心知识点精讲(第2版)
Office 2016高级应用案例教程(第3版)
陈遵德 张全中
Offer来了:Java面试核心知识点精讲(第2版)
Office 2016办公软件高级应用(微课版)
邓青 冀松
Offer来了:Java面试核心知识点精讲(第2版)
Office高手是怎样炼成的(共4册)
何灿 著