深入分析Java Web技術(shù)內(nèi)幕這本書可以為java學(xué)習(xí)者提供一個很好的技術(shù)學(xué)習(xí)方向。該書作者從最基本的java web的http協(xié)議講起,隨后講解了在java web開發(fā)過程中比較影響應(yīng)用性能的I/O等問題,盡管這本書不乏好評,但還是有讀者指出“總體來說可讀性不大,如果你都理解,讀這個比較浪費(fèi)時間,如果你都不清楚,這本書也不可能給你講清楚……”,本節(jié)內(nèi)容小編為大家整理帶來的是一份pdf格式完整修訂版深入分析java web技術(shù)內(nèi)幕電子書,需要查閱的朋友點(diǎn)擊本文相應(yīng)的下載地址即可進(jìn)行下載查閱!
深入分析java web技術(shù)內(nèi)幕電子書目錄
第1章 深入Web請求過程 1
1.1 B/S網(wǎng)絡(luò)架構(gòu)概述 2
1.2 如何發(fā)起一個請求 4
1.3 HTTP協(xié)議解析 6
1.3.1 查看HTTP信息的工具 8
1.3.2 瀏覽器緩存機(jī)制 9
1.4 DNS域名解析 12
1.4.1 DNS域名解析過程 12
1.4.2 跟蹤域名解析過程 15
1.4.3 清除緩存的域名 18
1.4.4 幾種域名解析方式 19
1.5 CDN工作機(jī)制 20
1.5.1 CDN架構(gòu) 20
1.5.2 負(fù)載均衡 21
1.6 總結(jié) 24
第2章 深入分析Java I/O的工作機(jī)制 25
2.1 Java的I/O類庫的基本架構(gòu) 25
2.1.1 基于字節(jié)的I/O操作接口 26
2.1.2 基于字符的I/O操作接口 27
2.1.3 字節(jié)與字符的轉(zhuǎn)化接口 28
2.2 磁盤I/O工作機(jī)制 29
2.2.1 幾種訪問文件的方式 29
2.2.2 Java訪問磁盤文件 33
2.2.3 Java序列化技術(shù) 34
2.3 網(wǎng)絡(luò)I/O工作機(jī)制 36
2.3.1 TCP狀態(tài)轉(zhuǎn)化 37
2.3.2 影響網(wǎng)絡(luò)傳輸?shù)囊蛩?span id="maut0oh" class="Apple-tab-span" style="white-space:pre"> 39
2.3.3 Java Socket的工作機(jī)制 39
2.3.4 建立通信鏈路 40
2.3.5 數(shù)據(jù)傳輸 41
2.4 NIO的工作方式 41
2.4.1 BIO帶來的挑戰(zhàn) 41
2.4.2 NIO的工作機(jī)制 42
2.4.3 Buffer的工作方式 45
2.4.4 NIO的數(shù)據(jù)訪問方式 47
2.5 I/O調(diào)優(yōu) 49
2.5.1 磁盤I/O優(yōu)化 49
2.5.2 TCP網(wǎng)絡(luò)參數(shù)調(diào)優(yōu) 50
2.5.3 網(wǎng)絡(luò)I/O優(yōu)化 52
2.6 設(shè)計模式解析之適配器模式 56
2.6.1 適配器模式的結(jié)構(gòu) 56
2.6.2 Java I/O中的適配器模式 57
2.7 設(shè)計模式解析之裝飾器模式 57
2.7.1 裝飾器模式的結(jié)構(gòu) 58
2.7.2 Java I/O中的裝飾器模式 58
2.8 適配器模式與裝飾器模式的區(qū)別 59
2.9 總結(jié) 59
第3章 深入分析Java Web中的中文編碼問題 60
3.1 幾種常見的編碼格式 60
3.1.1 為什么要編碼 60
3.1.2 如何“翻譯” 61
3.2 Java中需要編碼的場景 63
3.2.1 I/O操作中存在的編碼 63
3.2.2 內(nèi)存操作中的編碼 65
3.3 Java中如何編解碼 66
3.3.1 按照ISO-8859-1編碼 68
3.3.2 按照GB2312編碼 69
3.3.3 按照GBK編碼 70
3.3.4 按照UTF-16編碼 70
3.3.5 按照UTF-8編碼 71
3.3.6 UTF-8編碼代碼片段 71
3.3.7 幾種編碼格式的比較 73
3.4 Java Web中涉及的編解碼 73
3.4.1 URL的編解碼 75
3.4.2 HTTP Header的編解碼 78
3.4.3 POST表單的編解碼 78
3.4.4 HTTP BODY的編解碼 79
3.5 JS中的編碼問題 80
3.5.1 外部引入JS文件 80
3.5.2 JS的URL編碼 81
3.5.3 其他需要編碼的地方 83
3.6 常見問題分析 83
3.6.1 中文變成了看不懂的字符 83
3.6.2 一個漢字變成一個問號 84
3.6.3 一個漢字變成兩個問號 84
3.6.4 一種不正常的正確編碼 85
3.7 總結(jié) 86
第4章 Javac編譯原理 87
4.1 Javac是什么 88
4.2 Javac編譯器的基本結(jié)構(gòu) 88
4.3 Javac工作原理分析 90
4.3.1 詞法分析器 91
4.3.2 語法分析器 98
4.3.3 語義分析器 103
4.3.4 代碼生成器 113
4.4 設(shè)計模式解析之訪問者模式 116
4.4.1 訪問者模式的結(jié)構(gòu) 117
4.4.2 Javac中訪問者模式的實(shí)現(xiàn) 118
4.5 總結(jié) 119
第5章 深入class文件結(jié)構(gòu) 120
5.1 JVM指令集簡介 120
5.1.1 類相關(guān)的指令 122
5.1.2 方法的定義 123
5.1.3 屬性的定義 124
5.1.4 其他指令集 125
5.2 class文件頭的表示形式 133
5.3 常量池 137
5.3.1 UTF8常量類型 140
5.3.2 Fieldref、Methodref常量類型 141
5.3.3 Class常量類型 141
5.3.4 NameAndType常量類型 142
5.4 類信息 142
5.5 Fields和Methods定義 143
5.6 類屬性描述 147
5.7 Javap生成的class文件結(jié)構(gòu) 148
5.7.1 LineNumberTable 150
5.7.2 LocalVariableTable 151
5.8 總結(jié) 153
第6章 深入分析ClassLoader 工作機(jī)制 154
6.1 ClassLoader類結(jié)構(gòu)分析 155
6.2 ClassLoader的等級加載機(jī)制 156
6.3 如何加載class文件 159
6.3.1 加載字節(jié)碼到內(nèi)存 159
6.3.2 驗證與解析 161
6.3.3 初始化Class對象 161
6.4 常見加載類錯誤分析 161
6.4.1 ClassNotFoundException 161
6.4.2 NoClassDefFoundError 162
6.4.3 UnsatisfiedLinkError 163
6.4.4 ClassCastException 164
6.4.5 ExceptionInInitializerError 165
6.5 常用的ClassLoader分析 166
6.6 如何實(shí)現(xiàn)自己的ClassLoader 170
6.6.1 加載自定義路徑下的class文件 170
6.6.2 加載自定義格式的class文件 172
6.7 實(shí)現(xiàn)類的熱部署 174
6.8 Java應(yīng)不應(yīng)該動態(tài)加載類 176
6.9 總結(jié) 177
第7章 JVM體系結(jié)構(gòu)與工作方式 178
7.1 JVM體系結(jié)構(gòu) 178
7.1.1 何謂JVM 178
7.1.2 JVM體系結(jié)構(gòu)詳解 181
7.2 JVM工作機(jī)制 183
7.2.1 機(jī)器如何執(zhí)行代碼 183
7.2.2 JVM為何選擇基于棧的架構(gòu) 184
7.2.3 執(zhí)行引擎的架構(gòu)設(shè)計 185
7.2.4 執(zhí)行引擎的執(zhí)行過程 186
7.2.5 JVM方法調(diào)用棧 191
7.3 總結(jié) 195
第8章 JVM內(nèi)存管理 196
8.1 物理內(nèi)存與虛擬內(nèi)存 197
8.2 內(nèi)核空間與用戶空間 198
8.3 Java中哪些組件需要使用內(nèi)存 199
8.3.1 Java堆 199
8.3.2 線程 199
8.3.3 類和類加載器 200
8.3.4 NIO 200
8.3.5 JNI 201
8.4 JVM內(nèi)存結(jié)構(gòu) 201
8.4.1 PC寄存器 202
8.4.2 Java棧 202
8.4.3 堆 203
8.4.4 方法區(qū) 203
8.4.5 運(yùn)行時常量池 204
8.4.6 本地方法棧 204
8.5 JVM內(nèi)存分配策略 204
8.5.1 通常的內(nèi)存分配策略 205
8.5.2 Java中內(nèi)存分配詳解 205
8.6 JVM內(nèi)存回收策略 210
8.6.1 靜態(tài)內(nèi)存分配和回收 210
8.6.2 動態(tài)內(nèi)存分配和回收 211
8.6.3 如何檢測垃圾 211
8.6.4 基于分代的垃圾收集算法 213
8.7 內(nèi)存問題分析 222
8.7.1 GC日志分析 222
8.7.2 堆快照文件分析 225
8.7.3 JVM Crash日志分析 225
8.8 實(shí)例1 231
8.9 實(shí)例2 233
8.10 實(shí)例3 235
8.11 總結(jié) 240
第9章 Servlet工作原理解析 241
9.1 從Servlet容器說起 241
9.1.1 Servlet容器的啟動過程 242
9.1.2 Web應(yīng)用的初始化工作 245
9.2 創(chuàng)建Servlet實(shí)例 247
9.2.1 創(chuàng)建Servlet對象 248
9.2.2 初始化Servlet 248
9.3 Servlet體系結(jié)構(gòu) 250
9.4 Servlet如何工作 253
9.5 Servlet中的Listener 255
9.6 Filter如何工作 257
9.7 Servlet中的url-pattern 259
9.8 總結(jié) 260
第10章 深入理解Session與Cookie 261
10.1 理解Cookie 262
10.1.1 Cookie屬性項 262
10.1.2 Cookie如何工作 263
10.1.3 使用Cookie的限制 266
10.2 理解Session 267
10.2.1 Session與Cookie 267
10.2.2 Session如何工作 268
10.3 Cookie安全問題 271
10.4 分布式Session框架 272
10.4.1 存在哪些問題 272
10.4.2 可以解決哪些問題 273
10.4.3 總體實(shí)現(xiàn)思路 273
10.5 Cookie壓縮 278
10.6 表單重復(fù)提交問題 280
10.7 總結(jié) 281
第11章 Tomcat的系統(tǒng)架構(gòu)與 設(shè)計模式 282
11.1 Tomcat總體設(shè)計 282
11.1.1 Tomcat總體結(jié)構(gòu) 283
11.1.2 Connector組件 289
11.1.3 Servlet容器Container 294
11.1.4 Tomcat中的其他組件 305
11.2 Tomcat中的設(shè)計模式 305
11.2.1 門面設(shè)計模式 305
11.2.2 觀察者設(shè)計模式 307
11.2.3 命令設(shè)計模式 309
11.2.4 責(zé)任鏈設(shè)計模式 310
11.3 總結(jié) 312
第12章 Jetty的工作原理解析 313
12.1 Jetty的基本架構(gòu) 313
12.1.1 Jetty的基本架構(gòu)簡介 313
12.1.2 Handler的體系結(jié)構(gòu) 315
12.2 Jetty的啟動過程 316
12.3 接受請求 317
12.3.1 基于HTTP協(xié)議工作 317
12.3.2 基于AJP工作 319
12.3.3 基于NIO方式工作 322
12.4 處理請求 323
12.5 與Jboss集成 326
12.6 與Tomcat的比較 327
12.6.1 架構(gòu)比較 327
12.6.2 性能比較 328
12.6.3 特性比較 328
12.7 總結(jié) 329
第13章 Spring框架的設(shè)計理念與 設(shè)計模式分析 330
13.1 Spring的骨骼架構(gòu) 330
13.1.1 Spring的設(shè)計理念 331
13.1.2 核心組件如何協(xié)同工作 332
13.2 核心組件詳解 333
13.2.1 Bean組件 333
13.2.2 Context組件 335
13.2.3 Core組件 336
13.2.4 Ioc容器如何工作 338
13.3 Spring中AOP特性詳解 348
13.3.1 動態(tài)代理的實(shí)現(xiàn)原理 348
13.3.2 Spring AOP如何實(shí)現(xiàn) 351
13.4 設(shè)計模式解析之代理模式 354
13.4.1 代理模式原理 354
13.4.2 Spring中代理模式的實(shí)現(xiàn) 354
13.5 設(shè)計模式解析之策略模式 357
13.5.1 策略模式原理 357
13.5.2 Spring中策略模式的實(shí)現(xiàn) 358
13.6 總結(jié) 358
第14章 Spring MVC工作機(jī)制與 設(shè)計模式 360
14.1 Spring MVC的總體設(shè)計 360
14.2 Control設(shè)計 365
14.2.1 HandlerMapping初始化 366
14.2.2 HandlerAdapter初始化 368
14.2.3 Control的調(diào)用邏輯 369
14.3 Model設(shè)計 370
14.4 View設(shè)計 371
14.5 框架設(shè)計的思考 373
14.5.1 為什么需要框架 373
14.5.2 需要什么樣的框架 373
14.5.3 框架設(shè)計的原則 374
14.5.4 “指航燈” 374
14.5.5 最基本的原則 374
14.6 設(shè)計模式解析之模板模式 375
14.6.1 模板模式的結(jié)構(gòu) 375
14.6.2 Spring MVC中的模板模式示例 376
14.7 總結(jié) 377
第15章 深入分析Ibatis框架之系統(tǒng) 架構(gòu)與映射原理 378
15.1 Ibatis框架主要的類層次結(jié)構(gòu) 378
15.2 Ibatis框架的設(shè)計策略 379
15.3 Ibatis框架的運(yùn)行原理 381
15.4 示例 383
15.5 Ibatis對SQL語句的解析 385
15.6 數(shù)據(jù)庫字段映射到Java對象 386
15.7 示例運(yùn)行的結(jié)果 388
15.8 設(shè)計模式解析之簡單工廠模式 388
15.8.1 簡單工廠模式的實(shí)現(xiàn)原理 388
15.8.2 Ibatis中的簡單工廠模式示例 389
15.9 設(shè)計模式解析之工廠模式 390
15.9.1 工廠模式的實(shí)現(xiàn)原理 390
15.9.2 Ibatis中的工廠模式示例 391
15.10 總結(jié) 392
第16章 Velocity工作原理解析 394
16.1 Velocity總體架構(gòu) 395
16.2 JJTree渲染過程解析 398
16.2.1 #set語法 402
16.2.2 Velocity的方法調(diào)用 403
16.2.3 #if、#elseif和#else語法 406
16.2.4 #foreach語法 407
16.2.5 #parse語法 409
16.3 事件處理機(jī)制 410
16.4 常用優(yōu)化技巧 413
16.4.1 減少樹的總節(jié)點(diǎn)數(shù)量 413
16.4.2 減少渲染耗時的節(jié)點(diǎn)數(shù)量 413
16.5 與JSP比較 414
16.5.1 JSP渲染機(jī)制 414
16.5.2 Velocity與JSP 420
16.6 設(shè)計模式解析之合成模式 420
16.6.1 合成模式的結(jié)構(gòu) 420
16.6.2 Velocity中合成模式的實(shí)現(xiàn) 421
16.7 設(shè)計模式解析之解釋器模式 422
16.7.1 解釋器模式的結(jié)構(gòu) 422
16.7.2 Velocity中解釋器模式的實(shí)現(xiàn) 423
16.8 總結(jié) 423
第17章 Velocity優(yōu)化實(shí)踐 424
17.1 現(xiàn)實(shí)存在的問題 424
17.2 優(yōu)化的理論基礎(chǔ) 425
17.2.1 程序語言的三角形結(jié)構(gòu) 425
17.2.2 數(shù)據(jù)結(jié)構(gòu)減少抽象化 426
17.2.3 簡單的程序復(fù)雜化 426
17.2.4 減少翻譯的代價 427
17.2.5 變的轉(zhuǎn)化為不變 427
17.3 一個高效的模板引擎的實(shí)現(xiàn)思路 427
17.3.1 vm模板如何被編譯 429
17.3.2 方法調(diào)用的無反射優(yōu)化 436
17.3.3 字符輸出改成字節(jié)輸出 439
17.4 優(yōu)化的成果 440
17.4.1 char轉(zhuǎn)成byte 440
17.4.2 無反射執(zhí)行 441
17.5 其他優(yōu)化手段 442
17.6 總結(jié) 442
深入分析java web技術(shù)內(nèi)幕作者簡介
許令波,畢業(yè)于合肥工業(yè)大學(xué),獲計算機(jī)碩士學(xué)位。熱愛Java Web技術(shù),關(guān)注服務(wù)端性能優(yōu)化,熱衷開源技術(shù)的研究和分享,曾獲developerWorks最佳作者稱號。2009年進(jìn)入淘寶工作,目前從事模板渲染框架與MVC框架的開發(fā)與應(yīng)用、Java Web的性能優(yōu)化、高訪問量系統(tǒng)靜態(tài)化和商品詳情系統(tǒng)的業(yè)務(wù)改造等工作。
深入分析java web技術(shù)內(nèi)幕內(nèi)容簡介
該書圍繞JavaWeb相關(guān)技術(shù)從三方面全面深入地進(jìn)行闡述。首先介紹前端知識,主要介紹JavaWeb開發(fā)中涉及的一些基本知識,包括Web請求過程、HTTP協(xié)議、DNS技術(shù)和CDN技術(shù)。其次深入介紹Java技術(shù),包括I/O技術(shù)、中文編碼問題、Javac編譯原理、class文件結(jié)構(gòu)解析、ClassLoader工作機(jī)制及JVM的內(nèi)存管理等。最后介紹Java服務(wù)端技術(shù),主要包括Servlet、Session與Cookie、Tomcat與Jetty服務(wù)器、Spring容器、Ibatis框架和Velocity框架等原理介紹。
深入分析java web技術(shù)內(nèi)幕電子書內(nèi)容截圖
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版