Offer來了:Java面試核心知識點精講(框架篇)( 簡體 字) | |
作者:王磊 | 類別:1. -> 程式設計 -> 面試指南 2. -> 程式設計 -> JAVA -> Java |
出版社:電子工業出版社 | 3dWoo書號: 52804 詢問書籍請說出此書號! 有庫存 NT售價: 495 元 |
出版日:5/1/2020 | |
頁數:396 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121386671 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 Spring原理及應用 1
1.1 Spring的特性 1 1.1.1 輕量 2 1.1.2 控制反轉 2 1.1.3 面向容器 2 1.1.4 面向切面 2 1.1.5 框架靈活 3 1.2 Spring的模塊 3 1.2.1 核心容器層 3 1.Spring-Beans 4 2.Spring-Core 4 3.Spring-Context 4 4.SpEL 4 1.2.2 數據訪問層 4 1.JDBC 5 2.ORM 5 3.OXM 5 4.JMS 5 5.事務處理 5 1.2.3 Web應用層 6 1.Web 6 2.Web-MVC 6 3.Web-Socket 6 4.Web-Portlet 6 1.2.4 其他重要模塊 6 1.AOP 6 2.Aspects 7 3.Instrumentation 7 4.Messaging 7 5.Test 7 1.3 Spring的核心JAR包 7 1.4 Spring的注解 8 1.4.1 Spring注解的使用 9 1.導入命名空間及規范 9 2.配置掃描包 9 3.使用注解 10 1.4.2 Spring的常用注解 10 1.5 Spring IoC的原理 12 1.5.1 Spring IoC簡介 12 1.5.2 Spring Bean的裝配流程 12 1.5.3 Spring Bean的作用域 13 1.Singleton 13 2.Prototype 13 3.Request 14 4.Session 14 5.Global Session 14 1.5.4 Spring Bean的生命周期 14 1.5.5 Spring 的4種依賴注入 16 1.構造器注入 16 2.set方法注入 16 3.靜態工廠注入 17 4.實例工廠注入 18 1.5.6 自動裝配的5種方式 18 1.6 Spring AOP的原理 19 1.6.1 Spring AOP簡介 19 1.6.2 AOP的核心概念 20 1.6.3 AOP的2種代理方式 20 1.6.4 AOP的5種通知類型 21 1.6.5 AOP的代碼實現 22 1.7 Spring MVC的原理 22 1.8 事務 23 1.8.1 本地事務 24 1.8.2 分布式事務 25 1.8.3 兩階段提交協議 26 1.準備階段 26 2.提交階段 26 1.9 MyBatis的緩存 27 1.9.1 MyBatis的一級緩存原理 28 1.9.2 MyBatis的二級緩存原理 28 1.10 Spring的生態 28 1.10.1 Spring Data 29 1.Spring Data的特性 29 2.Spring Data的主項目 29 3.Spring Data的社區項目 30 1.10.2 Spring的其他服務 31 第2章 Spring Cloud原理及應用 33 2.1 Spring Boot 35 2.1.1 Spring Boot的使用 35 2.1.2 Spring Boot Application Starters 38 2.1.3 Spring Boot的常用組件及其使用 40 1.Spring Boot使用MySQL 40 2.Spring Boot使用Redis 41 3.Spring Boot使用MongoDB 42 4.Spring Boot使用Neo4j 43 5.Spring Boot使用Solr 43 6.Spring Boot使用ElasticSearch 44 7.Spring Boot使用Cassandra 44 8.Spring Boot使用RabbitMQ 45 9.Spring Boot使用Kafka 46 2.2 Spring Cloud Config 47 2.2.1 Spring Cloud Config的原理 48 2.2.2 Config Server的定義和使用 48 2.2.3 Config Client 51 2.3 Spring Cloud Eureka 52 2.3.1 Spring Cloud Eureka的原理 52 1.服務注冊 53 2.服務同步 53 3.服務續約 54 4.服務啟動 54 5.服務下線 54 6.服務發現 54 7.失效剔除 54 2.3.2 Spring Cloud Eureka的使用 55 1.注冊中心的定義 55 2.服務提供者的定義 57 3.服務消費者的定義 59 2.4 Spring Cloud Consul 62 2.4.1 Spring Cloud Consul的原理 62 1.Consul的特性 62 2.Consul的角色 63 3.Consul的服務注冊與發現流程 64 2.4.2 Spring Cloud Consul的使用 65 1.Consul的服務啟動 65 2.Consul服務提供者的定義 68 3.Consul服務消費者的定義 70 2.5 Spring Cloud Feign 71 2.5.1 Feign的應用 72 2.5.2 Feign的常用注解 74 2.6 Spring Cloud Hystrix 74 2.6.1 Hystrix的特性 75 1.服務熔斷 75 2.服務降級 75 3.依賴隔離 76 4.請求緩存 76 5.請求合并 76 2.6.2 Hystrix的服務降級流程 77 2.6.3 Hystrix的使用 78 2.6.4 異步請求 80 1.Future 80 2.Callable 82 2.6.5 Hystrix的常用配置 85 1.熔斷的配置參數 85 2.執行的配置參數 85 2.6.7 Hystrix Dashboard 87 2.7 Spring Cloud Zuul 87 2.7.1 Zuul的概念和特點 87 2.7.2 Zuul的原理 88 2.7.3 Zuul的使用 89 2.7.4 PreRequestFilter的定義和注入 91 2.7.5 Fallback Provider的服務容錯 92 2.8 Spring Cloud的鏈路監控 94 2.8.1 Sleuth+Zipkin 94 1.Sleuth的介紹 94 2.Sleuth+Zipkin實現分布式鏈路追蹤 95 2.8.2 Pinpoint 101 1.Pinpoint的介紹 101 2.Pinpoint的組件 104 3.Pinpoint的數據結構 104 4.Pinpoint的字節碼增強技術 104 5.Pinpoint的使用 105 第3章 Netty網絡編程原理及應用 107 3.1 Reactor線程模型 107 3.1.1 Java NIO 107 1.Channel 108 2.Buffer 108 3.Selector 108 3.1.2 Reactor單線程模型 109 3.1.3 Reactor多線程模型 110 3.1.4 Reactor主從多線程模型 110 3.2 Netty的架構 111 3.2.1 Netty簡介 111 3.2.2 Netty的架構設計 111 1.Transport Services 112 2.Protocol Support 112 3.Core 114 3.2.3 Netty的核心組件 114 3.2.4 Netty的原理 115 1.Netty Server的初始化步驟 115 2.BossGroup的職責 116 3.WorkerGroup的職責 117 3.3 Netty的特性 118 3.3.1 I/O多路復用模型 118 3.3.2 數據零拷貝 118 3.3.3 內存重用機制 119 3.3.4 無鎖化設計 120 3.3.5 高性能的序列化框架 120 3.4 Netty的使用 121 第4章 ZooKeeper原理及應用 128 4.1 ZooKeeper的原理 128 4.1.1 ZooKeeper的角色 128 1.Leader 129 2.Follower 129 3.Observer 129 4.1.2 ZAB協議 129 1.ZAB協議的4個階段 130 2.ZAB協議的Java實現 131 4.1.3 ZooKeeper的選舉機制和流程 131 4.2 ZooKeeper的應用 133 4.2.1 ZooKeeper的數據模型 133 1.Znode的數據模型 133 2.Znode的控制訪問 134 3.Znode的節點類型 134 4.Znode的節點Watch 134 4.2.2 ZooKeeper的安裝 134 4.2.3 ZooKeeper的應用場景 136 1.統一命名服務 136 2.配置管理 136 3.集群管理 136 4.分布式通知協調 136 5.分布式鎖 137 4.2.4 ZooKeeper節點的操作 137 第5章 Kafka原理及應用 143 5.1 Kafka的原理 143 5.1.1 Kafka的組成 143 5.1.2 Kafka的數據存儲設計 145 1.Partition數據文件 145 2.Segment數據文件 146 3.數據文件索引 146 5.1.3 生產者并發設計 147 1.多個Producer并發生產消息 147 2.批量發送消息 148 3.壓縮消息 148 5.1.4 消費者并發設計 148 1.多個Consumer并發消費消息 148 2.Consumer Group的概念和特性 149 5.2 Kafka的應用 150 5.2.1 Kafka的安裝 150 5.2.2 基于Spring Boot的Kafka應用 152 第6章 Hadoop原理及應用 156 6.1 HDFS 156 6.1.1 Client 156 6.1.2 NameNode 157 6.1.3 Secondary NameNode 157 6.1.4 DataNode 157 1.HDFS文件的寫入流程 157 2.HDFS文件的讀取流程 158 3.HDFS數據副本 159 6.2 MapReduce 159 6.2.1 Job Client 160 6.2.2 JobTracker 160 6.2.3 TaskTracker 160 6.2.4 Task 161 6.2.5 Reduce Task的執行過程 161 6.2.6 Hadoop MapReduce的作業生命周期 162 6.3 YARN 163 6.3.1 ResourceManager 164 6.3.2 NodeManager 164 6.3.3 ApplicationMaster 165 6.3.4 Container 165 6.3.5 YARN的任務提交和運行流程 165 6.4 Hadoop的安裝和應用 167 6.4.1 Hadoop的安裝 167 6.4.2 Hadoop的應用 172 1.MapReduce應用程序概述 172 2.MapReduce應用程序的輸入與輸出模型 173 3.在IDEA下運行MapReduce WordCount程序 173 第7章 HBase原理及應用 177 7.1 HBase的原理 177 7.1.1 HBase的概念 177 7.1.2 行式存儲和列式存儲 178 1.行式存儲的原理和特點 178 2.列式存儲的原理和特點 179 7.1.3 HBase列式存儲的數據模型 180 1.Column Family 180 2.RowKey 180 3.Region 180 4.TimeStamp 181 7.1.4 HBase的架構組成 181 1.HBase Client 182 2.ZooKeeper 182 3.HMaster 182 4.Region Server 182 7.1.5 HBase的數據讀寫流程 184 1.HBase的數據寫入流程 184 2.HBase MemStore的刷盤邏輯 185 3.HBase的數據讀取流程 186 4.HBase的數據刪除 186 5.HBase的數據更新 187 7.2 HBase的使用 187 7.2.1 HBase的安裝 187 7.2.2 基于Spring Boot的HBase應用 190 第8章 Cassandra原理及應用 197 8.1 Cassandra的原理 197 8.1.1 Cassandra的特點 197 8.1.2 Cassandra的數據模型 198 1.Key Space 198 2.Key 199 3.Column 199 4.Super Column 199 5.Column Family 199 6.Standard Column Family 200 7.Super Column Family 200 8.1.3 Gossip協議 201 1.Gossip節點的通信方式 201 2.Gossip協議的收斂性 202 3.Cassandra中的Gossip協議 202 8.1.4 NWR理論 203 8.1.5 一致性Hash 204 1.一致性Hash的原理 204 2.一致性Hash的節點變動 206 3.虛擬節點 208 4.Cassandra虛擬節點設計 208 5.一致性Hash的特點 210 8.1.6 Cassandra的數據副本策略 210 1.SimpleStrategy 210 2.NetworkTopologyStrategy 211 8.1.7 Cassandra數據存儲 211 1.Storage Model 211 2.MemTable的刷盤策略 212 3.SSTable的數據結構 212 4.Commit Log 213 5.Compaction 213 8.1.8 Cassandra的數據寫入 214 1.Cassandra的數據寫入機制:Log Structured 214 2.Cassandra的數據寫入流程 214 8.1.9 Cassandra的數據讀取 216 1.數據讀取和后臺修復 216 2.數據讀取流程 217 8.1.10 Cassandra的數據刪除機制 220 8.1.11 Cassandra和HBase的核心差別 220 8.2 Cassandra的應用 221 8.2.1 Cassandra的安裝 221 8.2.2 基于Spring Boot的Cassandra應用 223 第9章 ElasticSearch原理及應用 228 9.1 ElasticSearch的概念和原理 228 9.1.1 Lucene的介紹 228 1.Lucene簡介 228 2.倒排索引 228 3.Lucene的架構 229 4.Lucene的全文檢索流程 229 5.Lucene的使用 232 9.1.2 ElasticSearch的特點 236 9.1.3 ElasticSearch的應用場景 237 9.1.4 ElasticSearch的數據模型 237 1.Index 238 2.Type 238 3.Document 239 4.Field 239 5.Mapping 239 6.Shard 239 9.1.5 ElasticSearch分布式架構 240 1.集群節點角色 240 2.集群選舉原理 242 3.集群狀態 243 4.數據路由規則 243 5.文檔分片和副本策略 244 9.1.6 ElasticSearch的寫操作流程 245 1.ElasticSearch的寫操作 245 2.數據寫入一致性:Consistency 246 9.1.7 ElasticSearch的讀操作流程 247 9.1.8 ElasticSearch中的Translog 248 1.ElasticSearch Translog的介紹 248 2.ElasticSearch的數據更新和Translog操作流程 248 9.1.9 ElasticSearch段合并 249 1.段合并的介紹 249 2.段合并的流程 250 9.1.10 ElasticSearch的集群擴容 251 9.2 ElasticSearch的應用 252 9.2.1 ElasticSearch的安裝 252 9.2.2 ElasticSearch的配置和性能調優 254 1.JVM性能調優 254 2.操作系統的性能調優 254 9.2.3 ElasticSearch API的使用 255 第10章 Spark原理及應用 263 10.1 Spark的原理 263 10.1.1 Spark的特點 264 1.計算速度快 264 2.易于使用 264 3.通用大數據框架 264 4.支持多種資源管理器 264 5.Spark生態圈豐富 264 10.1.2 Spark的模塊 265 1.Spark Core 265 2.Spark SQL 266 3.Spark Streaming 266 4.GraphX 267 5.Spark MLlib 267 6.SparkR 267 10.1.3 Spark的運行原理 267 1.Spark的運行模式 267 2.Spark的集群架構 268 3.Spark的運行流程 269 10.2 Spark的使用 270 10.2.1 Spark的安裝 270 10.2.2 Spark RDD的使用 274 1.RDD的介紹 274 2.RDD的核心結構及概念 275 3.創建一個RDD應用 277 4.利用外部數據集生成RDD 279 5.RDD的轉換和操作 280 6.RDD持久化的概念、級別和原則 281 7.Spark函數的定義 283 8.鍵值對RDD的概念和使用 284 9.RDD的常用轉換 285 10.RDD的常用操作 285 11.Spark廣播變量的概念和使用 286 10.2.3 Spark Streaming的使用 287 1.Spark Streaming的介紹 287 2.創建一個Spark Streaming應用 288 3.DStream和RDD的關系 291 4.Spark Streaming的數據源 292 5.DStream的操作 293 6.DStream的數據持久化 295 7.Spark Streaming的性能優化 296 10.2.4 Spark SQL、DataFrame、DataSet的使用 297 1.Spark SQL簡介 297 2.Spark SQL查詢語句 297 3.DataFrame 297 4.DataSet 297 5.創建一個Spark SQL應用 298 6.Spark SQL的視圖操作 300 7.創建DataSet 301 8.DataSet與RDD相互轉換 302 9.DataFrame數據的加載 304 10.DataFrame數據的保存 305 10.2.5 Spark Structured Streaming的使用 305 1.Spark Structured Streaming簡介 305 2.Spark Structured Streaming的數據模型 306 3.創建一個Spark Structured Streaming應用 307 第11章 Flink原理及應用 311 11.1 Flink的原理 311 11.1.1 Flink的特點 312 11.1.2 Flink的核心概念 314 1.Flink Cluster 314 2.Flink Master 314 3.Flink Job Manager 314 4.Flink Task Manager 314 5.Job 314 6.Flink Graph 314 7.Flink Operator和Operator Chain 315 8.Flink Task和SubTask 315 9.Event 315 10.Function 315 11.Flink Record 315 12.Flink State Backend 315 11.1.3 Flink架構介紹 316 1.Job Manager的職責 316 2.Task Manager的職責 316 3.客戶端 316 4.Flink應用程序的運行流程 317 5.Flink Task Slot資源分配 318 6.Flink任務和算子 319 7.Flink狀態存儲 319 8.Flink運行模式 321 11.1.4 Flink的事件驅動模型 321 1.什么是事件驅動模型 321 2.事件驅動模型的特點 322 3.Flink的事件驅動模型的特點 322 11.1.5 Flink的數據分析應用 322 1.批量數據分析 323 2.流式數據分析 323 3.Flink中的流式數據分析 324 11.1.6 Flink的數據清洗和數據管道 324 1.數據清洗:定時處理 324 2.數據管道:實時處理 325 3.數據管道優勢:實時性高 325 4.Flink數據管道 325 11.1.7 Flink數據流處理基本概念 326 1.數據流 326 2.狀態 326 3.時間 327 11.1.8 API分類 328 1.Process Function 329 2.DataStream API 330 3.SQL和Table API 331 11.1.9 Flink基于狀態的內存計算 331 11.1.10 Flink的編程模型 332 1.數據流 332 2.并行度 333 11.1.11 Flink窗口計算 334 1.翻滾窗口 334 2.滑動窗口 335 3.會話窗口 335 4.全局窗口 336 11.1.12 Flink故障恢復 337 1.重啟策略 337 2.故障恢復策略 339 11.2 Flink的應用 339 11.2.1 Flink的安裝 339 1.Flink的獨立集群模式安裝 340 2.Flink的高可用模式安裝 343 11.2.2 Flink實戰案例 345 1.構建一個基于Java的Flink應用 345 2.Flink DataStream API 350 3.Flink DataSet API 367 4.Flink Table API和SQL 370 本書是對Java程序員面試中常見的微服務、網絡編程、分布式存儲和分布式計算等必備知識點的總結,具體包括:Spring Web編程、Spring Cloud微服務開發、Netty網絡編程、ZooKeeper分布式協調器、Kafka分布式消息系統、Hadoop大數據存儲和計算、HBase大數據存儲、Cassandra大數據存儲、ElasticSearch大數據存儲、Spark大數據分析和Flink大數據分析。本書共11章,第1章講解Spring原理及應用,涉及Spring IoC原理、Spring AOP原理、Spring MVC原理、事務、MyBatis緩存等內容;第2章講解Spring Cloud原理及應用,涉及Spring Boot、Spring Cloud Config、Eureka、Consul、Hystrix、Zuul和Spring Cloud鏈路監控等服務組件;第3章講解Netty網絡編程原理及應用;第4章講解ZooKeeper原理及應用,涉及ZooKeeper選舉機制、ZooKeeper數據模型和ZooKeeper應用場景等內容;第5章講解Kafka原理及應用,涉及Kafka組成、Kafka數據存儲設計、Kafka生產者并發設計、Kafka消費者并發設計,以及Kafka安裝和應用;第6章講解Hadoop原理及應用,涉及HDFS、MapReduce、YARN等內容;第7章講解HBase原理及應用,涉及HBase列式存儲數據模型、HBase架構組成和HBase數據讀寫流程等內容;第8章講解Cassandra原理及應用,涉及Cassandra數據模型、Gossip協議、NWR理論、一致性Hash、Cassandra數據副本策略和讀寫機制等內容;第9章講解ElasticSearch原理及應用,涉及ElasticSearch數據模型、ElasticSearch分布式架構、Elasticsearch數據讀寫原理和段合并等內容;第10章講解Spark原理及應用,涉及Spark特點、Spark模塊組成、Spark運行機制和Spark RDD、Spark Streaming、Spark SQL、DataFrame、DataSet、Spark Structured Streaming等原理和使用;第11章講解Flink原理及應用,涉及Flink核心概念、Flink架構介紹、Flink事件驅動模型、Flink數據分析應用和Flink基于狀態的內存計算等內容。
本書是對Java程序員面試中常見的微服務、網絡編程、分布式存儲和分布式計算等必備知識點的總結,包括Spring原理及應用、Spring Cloud原理及應用、Netty網絡編程原理及應用、ZooKeeper原理及應用、Kafka原理及應用、Hadoop原理及應用、HBase原理及應用、Cassandra原理及應用、ElasticSearch原理及應用、Spark原理及應用、Flink原理及應用。希望讀者能通過閱讀本書對微服務、網絡編程和分布式系統有更深入、系統和全面的理解。
面試官通常會在短短兩小時內對面試者的知識結構進行全面了解,面試者在回答問題時如果拖泥帶水且不能直擊問題的本質,則很難充分表現自己,最終影響面試結果。針對這種情況,本書對Java分布式架構中常用的技術做了梳理和總結,在介紹知識點時重點介紹原理,同時輔以示例。本書在講解知識點時不拖泥帶水,力求精簡,用115張原理圖和流程圖以非常直觀的方式對Java程序員面試時常被問及的分布式架構核心知識點進行介紹。 章節架構 本書共11章,各章所講內容如下。 第1章講解Spring原理及應用,涉及Spring原理、Spring注解、Spring IoC原理、 Spring AOP原理、Spring MVC原理、事務、MyBatis緩存等內容。 第2章講解Spring Cloud原理及應用,涉及Spring Boot、Spring Cloud Config、Eureka、Consul、Hystrix、Zuul和Spring Cloud鏈路監控等內容。 第3章講解Netty網絡編程原理及應用,涉及Reactor線程模型、Netty架構、Netty特性和Netty使用等內容。 第4章講解ZooKeeper原理及應用,涉及ZooKeeper原理、ZooKeeper選舉機制、ZooKeeper數據模型和ZooKeeper應用場景等內容。 第5章講解Kafka原理及應用,涉及Kafka原理、Kafka組成、Kafka數據存儲設計、Kafka生產者并發設計、Kafka消費者并發設計,以及Kafka安裝和應用等內容。 第6章講解Hadoop原理及應用,涉及HDFS、MapReduce、YARN等內容。 第7章講解HBase原理及應用,涉及列式存儲、HBase列式存儲數據模型、HBase架構組成和HBase數據讀寫流程等內容。 第8章講解Cassandra原理及應用,涉及Cassandra數據模型、Gossip協議、NWR理論、一致性Hash、Cassandra數據副本策略和讀寫機制等內容。 第9章講解ElasticSearch原理及應用,涉及ElasticSearch數據模型、ElasticSearch分布式架構、ElasticSearch數據讀寫原理和段合并等內容。 第10章講解Spark原理及應用,涉及Spark特點、Spark模塊組成、Spark運行機制,以及Spark RDD、Spark Streaming、Spark SQL、DataFrame、DataSet、Spark Structured Streaming的原理和使用等內容。 第11章講解Flink原理及應用,涉及Flink核心概念、Flink架構、Flink事件驅動模型、Flink數據分析應用和Flink基于狀態的內存計算等內容。 閱讀建議 本書目錄細致,建議讀者在閱讀本書后以原理圖和流程圖為依據、以目錄為參考溫故而知新,達到融會貫通的目的。建議讀者花4周進行細讀,詳細理解書中的知識點、代碼和架構圖,在每個章節閱讀完成后都手繪原理圖和流程圖;在細讀完成后再花5天進行復習,對照手繪的原理圖回憶知識點,針對想不起來的知識點及時查漏補缺;在面試前再花3小時進行復習,以充分掌握本書知識點。這樣,讀者對書中每個知識點的廣度和深度的理解就會更充分,在面試時可以胸有成竹、百戰不殆。 致謝 感謝電子工業出版社博文視點的張國霞編輯,她的鼓勵和引導對本書的寫作和出版有很大的幫助,同時感謝李秀梅編輯對本書的細致編輯;感謝王曉東,是他關注并向編輯提出了本書的出版價值。 寫技術書籍是很耗費精力的,筆者常常因為一行代碼或者一張圖能否準確表達含義而思考再三。出于工作的原因,筆者只能在晚上和周末寫作,寫作難度很大,所以十分感謝妻子張艷嬌女士,沒有她的鼓勵和支持,本書很難順利出版;也十分感謝家人和朋友在工作和生活中對筆者的關心和幫助。在這里,衷心地祝愿大家身體健康,萬事如意。 王磊 |