Offer来了:Java面试核心知识点精讲9787121435959
正版图书,可开发票,请放心购买。
¥
119.25
7.5折
¥
159
全新
库存14件
作者王磊
出版社电子工业出版社
ISBN9787121435959
出版时间2021-05
装帧平装
开本其他
定价159元
货号11627761
上书时间2024-12-24
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
2012年毕业于陕西师范大学。曾在中航工业计算机631研究所、东方网力、冠群信息工作。长期从事物联网大数据方向开发和架构设计。
目录
目 录 第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的写操作 539 14.1.7 Elasticsearch的读操作 540 14.1.8 Elasticsearch中的Translog 541 14.1.9 Elasticsearch的段合并 543 14.1.10 Elasticsearch的集群扩容 545 14.2 Elasticsearch的配置和性能调优 545 第15章 设计模式的概念及其Java 实现 547 15.1 设计模式简介 548 15.2 工厂模式 551 15.3 抽象工厂模式 553 15.4 单例模式 558 15.5 建造者模式 560 15.6 原型模式 564 15.7 适配器模式 567 15.8 装饰者模式 572 15.9 代理模式 574 15.10 外观模式 576 15.11 桥接模式 580 15.12 组合模式 583 15.13 享元模式 585 15.14 策略模式 588 15.15 模板方法模式 591 15.16 观察者模式 593 15.17 迭代器模式 596 15.18 责任链模式 600 15.19 命令模式 604 15.20 备忘录模式 606 15.21 状态模式 609 15.22 访问者模式 612 15.23 中介者模式 615 15.24 解释器模式 619
内容摘要
本书讲解Java面试中常被问及的核心知识点,涉及Java基础、Java并发编程、JVM、Java高并发网络编程、Spring基础、Netflix的原理及应用、Spring Cloud Alibaba的原理及应用、数据结构、Java中常用算法的原理及其Java实现、关系数据库及分布式事务、分布式缓存的原理及应用、ZooKeeper的原理及应用、Kafka的原理及应用、Elasticsearch的原理及应用、设计模式的概念及其Java实现。本书内容全面、细致,既可帮助读者迅速查找Java知识点,也可帮助读者完善其Java知识体系;不但可以作为Java面试知识速通手册,也可以作为Java程序员的案头手册。
主编推荐
"——1. 不仅是Java开发者的应试经典,更是面试官的参考题库—— 本书以Java技术为主,从Java基础、Java生态技术到设计模式等都做了详细介绍,章节架构由浅入深,内容讲解细致入微,对架构及知识点的梳理清晰明了。 ——2. 能帮助读者梳理Java面试知识脉络,总结和提升Java技能—— 本书从Java基础、Spring、缓存、分布式到NoSQL等多方面做了应用和原理方面的介绍,各知识点讲解力求精简,直击痛点,不拖泥带水。 ——3. 在第1版的基础上进行内容升级,对Java知识点重新梳理和补充—— 本书在第1版的基础上,对理论基础、常用算法、应用场景、大厂常用技术框架和数据处理框架等都重新做了知识点梳理和补充。这些内容在大规模、高并发、低延迟的场
— 没有更多了 —
以下为对购买帮助不大的评价