新書推薦:
《
笔记启蒙 : 英国皇家学会与科学革命
》
售價:NT$
390.0
《
汉语副词研究论集(第六辑)
》
售價:NT$
490.0
《
镶嵌之美:古希腊罗马的马赛克艺术
》
售價:NT$
1390.0
《
后希腊化哲学:从斯多亚学派到奥利金的发展研究
》
售價:NT$
349.0
《
别纠结啦:不被情绪牵着走的通透生活指南(“当代一休”小池龙之介治愈新作!附赠精美书签!)
》
售價:NT$
295.0
《
第二人生:找到重新定义人生的智慧
》
售價:NT$
440.0
《
唐朝三百年
》
售價:NT$
490.0
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:NT$
249.0
|
內容簡介: |
本书讲解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面试核心知识点精讲(框架篇)》
|
目錄:
|
》》》第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<Class>接口实现有返回值的线程 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的定6
|
|