深入分析Java Web技術內幕(修訂版)
  • 推薦0
  • 收藏3
  • 瀏覽421

深入分析Java Web技術內幕(修訂版)

許令波 , 許令波 (作者) 

  • 叢  書:阿里巴巴集團技術叢書
  • 書  號:978-7-121-23293-0
  • 出版日期:2014-08-11
  • 頁  數:464
  • 開  本:16(185*230)
  • 出版狀態:上市銷售
  • 維護人:劉皎
《深入分析Java Web技術內幕(修訂版)》主要圍繞Java Web 相關技術從三方面全面、深入地進行了闡述。首先介紹前端知識,即在JavaWeb 開發中涉及的一些基本知識,包括Web 請求過程、HTTP、DNS 技術和CDN 技術。其次深入介紹了Java 技術,包括I/O 技術、中文編碼問題、Javac 編譯原理、class 文件結構解析、ClassLoader 工作機制及JVM 的內存管理等。最后介紹了Java 服務端技術,主要包括Servlet、Session 與Cookie、Tomcat 與Jetty服務器、Spring 容器、iBatis 框架和Velocity 框架等原理介紹,并介紹了服務端的一些優化技術。
本書不僅介紹這些技術和框架的工作原理,而且結合示例來講解,通過通俗易懂的文字和豐富、生動的配圖,讓讀者充分并深入理解它們的內部工作原理,同時還結合了設計模式來介紹這些技術背后的架構思維。
阿里巴巴集團技術叢書重磅問世。大型互聯網公司Java Web開發應用實踐經驗結晶,深入學習無線端應用開發實例。技術大牛范禹、玉伯、畢玄聯合推薦!
從1億到10億,如何突破技術瓶頸?《深入分析Java Web技術內幕(修訂版)》提供了思路、方法和技巧,深入原理細節與設計模式,并提供大量實例分享。
知其然,并知其所以然,值得擁有!
專 家 點 評
《深入分析Java Web技術內幕(修訂版)》的內容涉及從HTTP、Servlet、模板渲染、數據層、容器到JVM 等Java Web開發的各個方面,這些問題是許令波在日常工作中經常遇到的,我想也是所有Java Web開發人員都會遇到的?!渡钊敕治鯦ava Web技術內幕(修訂版)》最大的特點就是讓Java Web 開發人員對整個開發過程所涉及的技術能有一個完整的脈絡圖,從前端瀏覽器到Java 技術,再到Java 服務端技術,還介紹了實現這些技術用到的設計模式;不僅詳細總結了這些技術的工作原理,而且也結合了很多實際案例來進行闡述,將復雜、難懂的技術原理通過時序圖和架構圖的方式展現出來,更加便于讀者理解??梢哉f如果你掌握了本書的知識,那么你就可以成為一個合格的JavaWeb 開發人員。
《深入分析Java Web技術內幕(修訂版)》文筆流暢,圖表清晰、易懂,值得推薦給Java Web 開發人員作為進階學習的參考書。
——吳澤明(范禹),天貓產品技術部研究員
這是一本關于 Java 的書,里面講述的大量基礎知識對前端開發工程師非常有幫助。比如中文編碼章節,作者以一個實踐者的身份詳細闡述了編碼問題的方方面面??傊?,這是一本很用心的書,是實踐者的思考和總結。目前在國內很少看到這類書籍,強烈推薦從事 Web 開發工作的人員閱讀并實踐之。
——王保平(玉伯),開源前端類庫KISSY、SeaJS 作者
作者在淘寶做了很多Java Web 方面的改造項目,在Java Web 的相關技術上有深入的掌握,并積累了豐富的經驗。在這本書中作者不僅向讀者展示了這類大改造項目所需的知識,還展示了Java Web 更為全景的技術知識體系。本書值得Java Web 開發人員閱讀。
——林昊(畢玄),淘寶資深技術專家

從第1 次拜讀相關內容開始,就可以感覺到作者并不是在簡簡單單地講述一門技術或者一個概念, 他的分析和講解十分深入, 并且可以很好地聚焦讀者的思路, 尤其是在 Java Web 、Servlet 規范及字符串處理方面, 都有很優秀的內容。在眾多向 developerWorks 投稿的國內作者中,無論是從文章的質量看,還是從內容的選題方向看,作者的文章都可稱為上乘之作。同時,他的多篇文章還得到了廣大網站讀者的好評,其訪問量、評分及評論的數量均名列前茅。
——劉達,developerWorks 中國Java 專區編輯 、技術工程師
推 薦 序
經過10多年的發展,Java Web從開發框架到社區都已經很成熟,在這些成熟的框架、工具的幫助下,開發人員的效率得到了很大的提高,但也造成了在原理性、整體性上的相對欠缺,很多人往往知其然、不知其所以然,特別是在解決一些系統問題的時候,不能很好地舉一反三。
舉個例子,我看到一些開發人員在使用Web框架后,基于約定的方法進行業務的代碼實現,但不清楚自己寫的代碼是如何被調用執行的,如果他們很清楚Servlet規范,并看過容器的大致實現過程,對解決問題是很有幫助的。
許令波是我認識的一位很關注原理細節的工程師,同時很樂于分享,會把工作中使用到的技術進行分析并寫成文章,分享給大家。他寫的這本書中涉及的技術正是他自己在實際工作中遇到的問題的學習過程和解決過程的總結,是總結技術所涉及的知識,更是總結如何分析和解決問題的思路,以及這些技術背后的原理,讓你知其所以然。
本書中的內容涉及從HTTP、Servlet、模板渲染、數據層到容器、JVM等Java Web開發的各個方面,這些問題是許令波在日常工作中經常遇到的,我想也是所有Java Web開發人員都會遇到的。本書最大的特點就是讓Java Web開發人員對整個開發過程所涉及的技術能有一個完整的脈絡圖,從前端瀏覽器到Java技術,再到Java 服務端技術,還介紹了實現這些技術用到的設計模式。不僅詳細總結了這些技術的工作原理,而且也結合了很多實際案例來進行闡述,將復雜難懂的技術原理通過時序圖和架構圖的方式展現出來,更加便于讀者理解??梢哉f如果你掌握了本書的知識,那么就可以成為一個合格的Java Web開發人員。
本書文筆流暢,圖表清晰易懂,值得推薦給Java Web開發人員作為進階學習的參考書。

——吳澤明(范禹),天貓產品技術部研究員

再版序言
自《深入分析Java Web技術內幕》一書出版以來,我收到了不少讀者的反饋,也很
感謝他們指出了書中的一些錯誤和不足。時隔兩年,在電子工業出版社博文視點編輯的幫
助下,《深入分析Java Web 技術內幕》有了修訂再版的機會。
這兩年來,一些技術也在發生著變化:無線技術越來越成熟,我們的系統開始更多地
支持無線,并衍生出系統要進行多終端化改造等問題;同時我們也遇到了一些新的技術問
題如大流量、網絡瓶頸及機房的電力短缺等,這給系統的部署和系統架構帶來新的挑戰。
所以我借這次再版的機會,將這方面的技術更新和實踐嘗試一并分享給讀者。除了修正前
版的一些錯漏之處,本次修訂還主要做了以下更新。
第1 章增加了CDN 動態加速的內容,介紹了我們當前最新的想法和嘗試。
第3 章增加一種繁簡轉換的實現方式的內容,介紹了我們在遇到多終端的情況下面臨
的多語言的問題,將我們的思路和實踐分享給大家。
第10 章增加了多終端Session 統一的內容,也介紹了在多終端的情況下如何解決
Session 統一的問題。
新增了第18 章,重點介紹了我們在近兩年遇到大流量的情況下,如何跨越性能、網
絡和一個地區的電力瓶頸等問題,并提供了一個比較完整的解決方案。
感謝劉皎和張國霞兩位編輯,感謝阿里巴巴的幾位大牛范禹、黃眉等對修訂版提供的
一些有益建議,也感謝我們技術發展部恬玉同學的大力幫助。
許令波
2014.7

第1版序言
我第1次接觸電腦應該是在10年前,記得當時連怎么開電腦都不會,當時感覺電腦真是一個讓人著迷的東西,但是那時別說擁有一臺電腦,就算是能玩上電腦也算是一件奢侈的事情了。人總是有好奇心的,而我也因為追隨著這份好奇和電腦一起走過了將近10年的光陰,也是這份好奇讓我接觸了電腦,認識了電腦,到現在了解了電腦。但是到目前為止我仍然有很多好奇的東西,所以我將一直求解下去。
回想我開始學習編程的時候,在大學期間開始構建自己的第1個網頁,然后是第1個網站,其中的復雜程度真是難以想象,要構建一個網頁,需要學習當時的“網頁三劍客”,頁面布局需要學習Dreamweaver,圖片處理需要學習Fireworks,動畫制作需要學習Flash。有時候為了一個導航欄甚至通宵達旦。還有要自己搭建一個本地服務器,要學習IIS、Apache等。當時的我竟然能夠一個人完成這一系列的事情,現在想想還真是有點兒佩服自己。
現在回想一下當時自己的學習過程,真是走了很多彎路,浪費了很多時間。當時的學習就像是在一個陌生的城市找路一樣,不知道如何才能到達目的地,只能邊走邊問別人,這個人告訴你一點,那個人告訴你一點,一點一點往前走。但是雖然在往前走,但走的路并不是最近的,甚至有人指的方向是錯的。當時缺少一個總攬全局的地圖,所以不能畫出一條最優的路。雖然走了很多彎路,但是這種不斷自學的過程還是大大地提升了我的學習能力,這種好的自學能力也在我以后的學習工作中起到了關鍵作用。
IT行業的知識變化很快,需要不斷地學習新東西,所以學習知識的能力比掌握知識本身更重要。這也是目前大公司招聘標準中很重要的一條。記得當時我的老大在招聘我進入淘寶時,面試時就問我如何學習一門新技術。你在學習的過程中會碰到很多難題,并會克服這些難題,很多這樣的過程積累起來就是你無形的寶貴財富。因為你遇到的問題肯定也是其他人遇到的問題,從發現問題、分析問題再到解決問題的過程遠比這個問題本身更有價值。
愛因斯坦說過:“發現問題比解決問題更重要?!睂T人員來說,發現Bug和重現Bug比解決這個Bug更有難度。這就好比一個外國人問周總理中國有多少廁所,總理回答說只有兩個廁所:男廁所和女廁所。但是,什么人在什么時間、什么地點需要上廁所,考慮這樣的情形恐怕需要多少廁所就很難計算了。同樣,在電腦中也只有0和1兩個選擇,電腦中的程序也同樣如此,每寫一行代碼就能增加甚至一個數量級的出錯概率。但是我們還是要學習如何避免出現Bug,這就要求我們能有總理看問題的思維,將復雜的問題簡單化,發現問題背后的本質,找到解決問題的背后的一些通用邏輯,按照這種思路來解決問題可能會讓你事半功倍。
如何讓學習知識的過程事半功倍,尤其是我們程序員如何做到,從我這么多年的學習過程來說,有一些經驗可以分享給大家,這也是我寫這本書的初衷,我真正想分享的不是我掌握的知識,更多的是我學習這個知識的過程,以及我對這些知識的一些總結和提煉。
雖然要掌握整個Web開發中涉及的所有知識是一件非常困難的事情,尤其是要掌握這些知識的實現原理,不僅知其然還要知其所以然。所以掌握學習它們的方法至關重要。如何快速高效地閱讀它們的源碼,有很多同學看到我在developerWorks上發表的文章時來信問我如何閱讀各種框架的源碼,很多同學都說不知道從哪里入手。其實,當你掌握了一些技巧,加上你的一點耐心,這并不是很難。
本書雖然介紹了很多開源框架,但是始終都在告訴你如何才能更深入和簡單地掌握這個框架,告訴你學習的方法,而并不是告訴你這個框架有哪些類、怎么用這些零碎的知識。打個比喻,本書并不是告訴你1+1=2,1+2=3,2+2=4這個結果,然后你可以根據這個方式得出1+1+2=4,你要計算其他數必須根據它給你的公式才能計算,而是告訴你加減乘除的算法規則,然后你就可以根據這個規則自己做運算了。
另外本書為什么要選擇介紹Web開發中這些技術的實現原理,因為只有你掌握它們的實現原理,才能夠快速地解決一些意想不到的問題。例如,當你理解了 ClassLoader的工作機制后,遇到ClassNotFoundException時,你就能快速地判斷,到底為什么會報這個錯誤,可能是哪個地方出錯導致的。
另外還有一個很重要的原因是,如果你很想進入淘寶、騰訊、百度這樣的大型互聯網企業工作,不掌握本書講到的這些技術的實現原理,是很難通過技術面試的。因為面試官不僅希望你會用這些技術,還要求你說出個所以然來。所以掌握這些技術的實現原理可以為你的職業發展提供更好的機會。
本書的組織結構
本書從結構上主要分為3部分:第1部分為基礎知識,主要介紹Java Web開發中涉及的一些基本知識,例如一次HTTP請求是什么樣的,HTTP協議本身是如何工作的;第2部分將深入介紹Java技術,幫助讀者了解Java是如何工作的,在會用的基礎上進一步理解Java;第3部分是Java服務端技術,主要介紹Web服務器的處理流程,包括Servlet容器的工作原理和Web框架是如何運轉的,也就是從Web服務器接收到請求到返回請求這個過程中涉及的知識,最后介紹了針對大流量情況下的系統的一些優化技巧。
目標讀者
如果你是學校剛畢業的學生或者剛剛準備學習Web開發并且不知道如何入手的人,那么這本書比較適合你;如果你已經工作1~2年,已經熟悉了Java Web開發的基本流程并且想進一步提高自己,那么這本書更適合你。
如果你已經知道了如何去學習Java Web開發技術,正準備入門去實際開發,也就是說你是一個開發新手,那么這本書不太適合你。但是當你知道了如何去開發一個Web應用并想知道它們是如何工作時,歡迎你再回來看本書,它能幫助你進一步提高。
總的來說,本書適合以下讀者人群。
對Web技術感覺迷茫,不知道如何開始學習,對整個B/S工作機制不了解的同學。
Java技術愛好者,以及想深入學習Java技術內部實現細節的人。
有一定開發基礎,但是不了解Web中一些容器和框架的內部工作原理的人。
對性能優化和分布式數據管理有興趣的大型互聯網工程師,這里介紹了淘寶的一些實踐經驗。
開源代碼愛好者,喜歡研究開發代碼的Coder可以從本書中找到一些分析源碼的方法。
本書不會教你如何開發Web應用程序,也不會介紹Struts、Spring、Ibatis等框架如何使用。這些框架的使用參考手冊在圖書市場上有很多,本書沒有再重復介紹。但是如果你已經掌握了如何使用并且不滿足只會使用,想知道它們是如何工作的,想打開這些黑盒子,想以后告訴人家這些黑盒子里到底有些什么東西,對每種技術有強烈的好奇心,如果你是這樣的人,本書值得你擁有。
本書特點
本書按照通常的學習習慣設計,為你展示了從瀏覽器發出請求到瀏覽器最終顯示頁面的整個過程,讓你對Web開發的整個過程有個總體的理解。
本書雖然講解的都是比較深入的技術,但是有關實踐的示例和比較恰當的比喻將幫你更好地理解。
本書將結合淘寶網中真實使用的示例應用程序來講解技術,讓讀者有更好的直觀認識。
讀者討論
在本書出版后的任何時間,若你對本書有任何問題,你都可以通過[email protected]發送郵件給我,或者到http://xulingbo.net上向我提交你的建議和想法,我會對所有問題給予回復。
致謝
感謝我的父母,在我高考失敗后仍然給我機會讓我選擇做自己想做的事,支持我選擇了自己喜歡的電腦行業,在家庭并不富裕的情況下給我配置了第1臺電腦,讓我有機會繼續追求自己的夢想,是你們的支持和鼓勵讓我在做自己一直喜歡做的事。
感謝我的瑩,從大學你就一直陪伴在我身邊,有你在我身邊是我一直不斷努力的最大動力,在本書的寫作過程中,你完成初稿的審閱工作,同時也給了我很多鼓勵和建議。
感謝電子工業出版社的策劃編輯劉皎和張國霞編輯,你們嚴謹認真的工作態度讓我非常敬佩。
感謝吳澤明(范禹)老大為本書寫的序,不僅帶我進入淘寶,而且也一直幫助我持續進步,感謝王保平、林昊和劉達在繁忙的工作中為我寫推薦語。
感謝在本書寫作過程中提出寶貴意見的同事們,他們的花名是:小凡、小邪、丹臣、哲別、景升、文通、向飛、凌棄、路奇、濟城、大仁、常彬、旭天、韓章、小賭、雁聲、索尼、鳳豪、柳擎、華黎、空望、嗷嗷、漸飛、普智、勝衣、叔度、文景、撒迦、狄龍、祝幽、單通、承澤等。
感謝developerWorks上所有向我提出問題和建議的網友們。


許令波
2014.3

目錄

目 錄
第1章 深入Web請求過程 1
1.1 B/S網絡架構概述 2
1.2 如何發起一個請求 4
1.3 HTTP協議解析 6
1.3.1 查看HTTP信息的工具 8
1.3.2 瀏覽器緩存機制 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工作機制 20
1.5.1 CDN架構 20
1.5.2 負載均衡 21
1.5.3 CDN動態加速 24
1.6 總結 25
第2章 深入分析Java I/O的工作機制 26
2.1 Java的I/O類庫的基本架構 26
2.1.1 基于字節的I/O操作接口 27
2.1.2 基于字符的I/O操作接口 28
2.1.3 字節與字符的轉化接口 29
2.2 磁盤I/O工作機制 30
2.2.1 幾種訪問文件的方式 30
2.2.2 Java訪問磁盤文件 34
2.2.3 Java序列化技術 35
2.3 網絡I/O工作機制 37
2.3.1 TCP狀態轉化 38
2.3.2 影響網絡傳輸的因素 40
2.3.3 Java Socket的工作機制 40
2.3.4 建立通信鏈路 41
2.3.5 數據傳輸 42
2.4 NIO的工作方式 42
2.4.1 BIO帶來的挑戰 42
2.4.2 NIO的工作機制 43
2.4.3 Buffer的工作方式 46
2.4.4 NIO的數據訪問方式 48
2.5 I/O調優 50
2.5.1 磁盤I/O優化 50
2.5.2 TCP網絡參數調優 51
2.5.3 網絡I/O優化 53
2.6 設計模式解析之適配器模式 57
2.6.1 適配器模式的結構 57
2.6.2 Java I/O中的適配器模式 58
2.7 設計模式解析之裝飾器模式 58
2.7.1 裝飾器模式的結構 59
2.7.2 Java I/O中的裝飾器模式 59
2.8 適配器模式與裝飾器模式的區別 60
2.9 總結 60
第3章 深入分析Java Web中的中文編碼問題 61
3.1 幾種常見的編碼格式 61
3.1.1 為什么要編碼 61
3.1.2 如何“翻譯” 62
3.2 在Java中需要編碼的場景 64
3.2.1 在I/O操作中存在的編碼 64
3.2.2 在內存操作中的編碼 66
3.3 在Java中如何編解碼 67
3.3.1 按照ISO-8859-1編碼 69
3.3.2 按照GB2312編碼 70
3.3.3 按照GBK編碼 71
3.3.4 按照UTF-16編碼 71
3.3.5 按照UTF-8編碼 72
3.3.6 UTF-8編碼代碼片段 72
3.3.7 對幾種編碼格式的比較 74
3.4 在Java Web中涉及的編解碼 74
3.4.1 URL的編解碼 76
3.4.2 HTTP Header的編解碼 79
3.4.3 POST表單的編解碼 79
3.4.4 HTTP BODY的編解碼 80
3.5 JS中的編碼問題 81
3.5.1 外部引入JS文件 81
3.5.2 JS的URL編碼 82
3.5.3 其他需要編碼的地方 84
3.6 常見問題分析 84
3.6.1 中文變成了看不懂的字符 84
3.6.2 一個漢字變成一個問號 85
3.6.3 一個漢字變成兩個問號 85
3.6.4 一種不正常的正確編碼 86
3.7 一種繁簡轉換的實現方式 87
3.8 總結 88
第4章 Javac編譯原理 89
4.1 Javac是什么 90
4.2 Javac編譯器的基本結構 90
4.3 Javac工作原理分析 92
4.3.1 詞法分析器 93
4.3.2 語法分析器 100
4.3.3 語義分析器 105
4.3.4 代碼生成器 115
4.4 設計模式解析之訪問者模式 118
4.4.1 訪問者模式的結構 119
4.4.2 Javac中訪問者模式的實現 120
4.5 總結 121
第5章 深入class文件結構 122
5.1 JVM指令集簡介 122
5.1.1 與類相關的指令 124
5.1.2 方法的定義 125
5.1.3 屬性的定義 126
5.1.4 其他指令集 127
5.2 class文件頭的表示形式 135
5.3 常量池 139
5.3.1 UTF8常量類型 142
5.3.2 Fieldref、Methodref常量類型 143
5.3.3 Class常量類型 143
5.3.4 NameAndType常量類型 144
5.4 類信息 144
5.5 Fields和Methods定義 145
5.6 類屬性描述 149
5.7 Javap生成的class文件結構 150
5.7.1 LineNumberTable 152
5.7.2 LocalVariableTable 153
5.8 總結 155
第6章 深入分析ClassLoader工作機制 156
6.1 ClassLoader類結構分析 157
6.2 ClassLoader的等級加載機制 158
6.3 如何加載class文件 161
6.3.1 加載字節碼到內存 161
6.3.2 驗證與解析 163
6.3.3 初始化Class對象 163
6.4 常見加載類錯誤分析 163
6.4.1 ClassNotFoundException 163
6.4.2 NoClassDefFoundError 164
6.4.3 UnsatisfiedLinkError 165
6.4.4 ClassCastException 166
6.4.5 ExceptionInInitializerError 167
6.5 常用的ClassLoader分析 168
6.6 如何實現自己的ClassLoader 172
6.6.1 加載自定義路徑下的class文件 172
6.6.2 加載自定義格式的class文件 174
6.7 實現類的熱部署 176
6.8 Java應不應該動態加載類 178
6.9 總結 179
第7章 JVM體系結構與工作方式 180
7.1 JVM體系結構 180
7.1.1 何謂JVM 180
7.1.2 JVM體系結構詳解 183
7.2 JVM工作機制 185
7.2.1 機器如何執行代碼 185
7.2.2 JVM為何選擇基于棧的架構 186
7.2.3 執行引擎的架構設計 187
7.2.4 執行引擎的執行過程 188
7.2.5 JVM方法調用棧 193
7.3 總結 197
第8章 JVM內存管理 198
8.1 物理內存與虛擬內存 199
8.2 內核空間與用戶空間 200
8.3 在Java中哪些組件需要使用內存 201
8.3.1 Java堆 201
8.3.2 線程 201
8.3.3 類和類加載器 202
8.3.4 NIO 202
8.3.5 JNI 203
8.4 JVM內存結構 203
8.4.1 PC寄存器 204
8.4.2 Java棧 204
8.4.3 堆 205
8.4.4 方法區 205
8.4.5 運行時常量池 206
8.4.6 本地方法棧 206
8.5 JVM內存分配策略 206
8.5.1 通常的內存分配策略 207
8.5.2 Java中的內存分配詳解 207
8.6 JVM內存回收策略 212
8.6.1 靜態內存分配和回收 212
8.6.2 動態內存分配和回收 213
8.6.3 如何檢測垃圾 213
8.6.4 基于分代的垃圾收集算法 215
8.7 內存問題分析 224
8.7.1 GC日志分析 224
8.7.2 堆快照文件分析 227
8.7.3 JVM Crash日志分析 227
8.8 實例1 233
8.9 實例2 235
8.10 實例3 237
8.11 總結 242

第9章 Servlet工作原理解析 243
9.1 從Servlet容器說起 243
9.1.1 Servlet容器的啟動過程 244
9.1.2 Web應用的初始化工作 247
9.2 創建Servlet實例 249
9.2.1 創建Servlet對象 250
9.2.2 初始化Servlet 250
9.3 Servlet體系結構 252
9.4 Servlet如何工作 255
9.5 Servlet中的Listener 257
9.6 Filter如何工作 259
9.7 Servlet中的url-pattern 261
9.8 總結 262
第10章 深入理解Session與Cookie 263
10.1 理解Cookie 264
10.1.1 Cookie屬性項 264
10.1.2 Cookie如何工作 265
10.1.3 使用Cookie的限制 268
10.2 理解Session 269
10.2.1 Session與Cookie 269
10.2.2 Session如何工作 270
10.3 Cookie安全問題 273
10.4 分布式Session框架 274
10.4.1 存在哪些問題 274
10.4.2 可以解決哪些問題 275
10.4.3 總體實現思路 275
10.5 Cookie壓縮 280
10.6 表單重復提交問題 282
10.7 多終端Session統一 283
10.8 總結 285
第11章 Tomcat的系統架構與設計模式 286
11.1 Tomcat總體設計 286
11.1.1 Tomcat總體結構 287
11.1.2 Connector組件 293
11.1.3 Servlet容器Container 298
11.1.4 Tomcat中的其他組件 309
11.2 Tomcat中的設計模式 309
11.2.1 門面設計模式 309
11.2.2 觀察者設計模式 311
11.2.3 命令設計模式 313
11.2.4 責任鏈設計模式 314
11.3 總結 316
第12章 Jetty的工作原理解析 317
12.1 Jetty的基本架構 317
12.1.1 Jetty的基本架構簡介 317
12.1.2 Handler的體系結構 319
12.2 Jetty的啟動過程 320
12.3 接受請求 321
12.3.1 基于HTTP協議工作 321
12.3.2 基于AJP工作 323
12.3.3 基于NIO方式工作 326
12.4 處理請求 327
12.5 與JBoss集成 330
12.6 與Tomcat的比較 331
12.6.1 架構比較 331
12.6.2 性能比較 332
12.6.3 特性比較 332
12.7 總結 333


第13章 Spring框架的設計理念與設計模式分析 334
13.1 Spring的骨骼架構 334
13.1.1 Spring的設計理念 335
13.1.2 核心組件如何協同工作 336
13.2 核心組件詳解 337
13.2.1 Bean組件 337
13.2.2 Context組件 339
13.2.3 Core組件 340
13.2.4 Ioc容器如何工作 342
13.3 Spring中AOP的特性詳解 352
13.3.1 動態代理的實現原理 352
13.3.2 Spring AOP如何實現 355
13.4 設計模式解析之代理模式 358
13.4.1 代理模式原理 358
13.4.2 Spring中代理模式的實現 358
13.5 設計模式解析之策略模式 361
13.5.1 策略模式原理 361
13.5.2 Spring中策略模式的實現 362
13.6 總結 362
第14章 Spring MVC工作機制與設計模式 364
14.1 Spring MVC的總體設計 364
14.2 Control設計 369
14.2.1 HandlerMapping初始化 370
14.2.2 HandlerAdapter初始化 372
14.2.3 Control的調用邏輯 373
14.3 Model設計 374
14.4 View設計 375
14.5 框架設計的思考 377
14.5.1 為什么需要框架 377
14.5.2 需要什么樣的框架 377
14.5.3 框架設計的原則 378
14.5.4 “指航燈” 378
14.5.5 最基本的原則 378
14.6 設計模式解析之模板模式 379
14.6.1 模板模式的結構 379
14.6.2 Spring MVC中的模板模式示例 379
14.7 總結 380
第15章 深入分析Ibatis框架之系統架構與映射原理 381
15.1 Ibatis框架主要的類層次結構 381
15.2 Ibatis框架的設計策略 382
15.3 Ibatis框架的運行原理 384
15.4 示例 386
15.5 Ibatis對SQL語句的解析 388
15.6 數據庫字段映射到Java對象 389
15.7 示例運行的結果 391
15.8 設計模式解析之簡單工廠模式 391
15.8.1 簡單工廠模式的實現原理 391
15.8.2 在Ibatis中的簡單工廠模式示例 392
15.9 設計模式解析之工廠模式 393
15.9.1 工廠模式的實現原理 393
15.9.2 Ibatis中的工廠模式示例 394
15.10 總結 395
第16章 Velocity工作原理解析 397
16.1 Velocity總體架構 398
16.2 JJTree渲染過程解析 401
16.2.1 #set語法 405
16.2.2 Velocity的方法調用 406
16.2.3 #if、#elseif和#else語法 409
16.2.4 #foreach語法 410
16.2.5 #parse語法 412
16.3 事件處理機制 413
16.4 常用優化技巧 416
16.4.1 減少樹的總節點數量 416
16.4.2 減少渲染耗時的節點數量 416
16.5 與JSP比較 417
16.5.1 JSP渲染機制 417
16.5.2 Velocity與JSP 423
16.6 設計模式解析之合成模式 423
16.6.1 合成模式的結構 423
16.6.2 Velocity中合成模式的實現 424
16.7 設計模式解析之解釋器模式 425
16.7.1 解釋器模式的結構 425
16.7.2 Velocity中解釋器模式的實現 426
16.8 總結 426
第17章 Velocity優化實踐 427
17.1 現實存在的問題 427
17.2 優化的理論基礎 428
17.2.1 程序語言的三角形結構 428
17.2.2 數據結構減少抽象化 429
17.2.3 簡單的程序復雜化 429
17.2.4 減少翻譯的代價 430
17.2.5 變的轉化為不變 430
17.3 一個高效的模板引擎的實現思路 430
17.3.1 vm模板如何被編譯 432
17.3.2 方法調用的無反射優化 439
17.3.3 將字符輸出改成字節輸出 442
17.4 優化的成果 443
17.4.1 將char轉成byte 443
17.4.2 無反射執行 444
17.5 其他優化手段 445
17.6 總結 445
第18章 大瀏覽量系統的靜態化架構設計 446
18.1 淘寶大瀏覽量商品詳情系統簡介 446
18.2 系統面臨哪些挑戰 447
18.3 淘寶前臺系統的優化歷程 449
18.4 大瀏覽量系統的靜態改造 449
18.4.1 什么是靜態化系統 449
18.4.2 為什么要進行靜態化架構設計 450
18.4.3 如何改造動態系統 451
18.4.4 幾種靜態化方案的設計及選擇 453
18.4.5 如何解決失效問題 458
18.4.6 服務端靜態化方案的演進:CDN化 459
18.5 總結 462

讀者評論

  • 在哪里下載書中的代碼?

    稀飯涼面發表于 2017/11/17 10:38:37
  • 堪稱本類圖書之翹楚

    郭立發表于 2017/3/1 14:04:14

同系列書

  • 深入分析Java Web技術內幕(修訂版)

    《深入分析Java Web技術內幕(修訂版)》主要圍繞Java Web 相關技術從三方面全面、深入地進行了闡述。首先介紹前端知識,即在JavaWeb 開發中涉及...

    ¥79.00
  • 盡在雙11——阿里巴巴技術演進與超越

    阿里巴巴集團雙11技術團隊 (作者)

    “雙 11”,誕生于杭州,成長于阿里,風行于互聯網,成就于新經濟,貢獻于全世界。 從 2009 年淘寶商城起,雙 11 已歷經八年。每年的雙 11 既是當年的...

    ¥49.00
  • 機器學習在線:解析阿里云機器學習平臺

    楊旭 (作者)

    以機器學習中的典型案例為主線,條分縷析梳理阿里云的平臺功能,講解如何用阿里云的機器學習平臺來實現各類應用,包括商家作弊檢測、生存預測、信用風險預測、用戶購買行為...

    ¥79.00
  • 大數據大創新:阿里巴巴數據中臺業務模式解密

    鄧中華 (作者)

    阿里巴巴云上數據中臺正服務著阿里生態中的數十個業務板塊、百余家公司、千萬級客戶,在幫助決策層看清甚至決定業態走向的同時,在上萬個業務場景中應用并催生創新。<br...

    ¥99.00
  • 企業數字化基石——阿里巴巴云計算基礎設施實踐

    高山淵 蔡德忠 趙曉雪 劉禮寅 劉水旺 陳義全 徐波 編著 (作者)

    在互聯網行業中,云計算基礎設施技術具有非常重要的作用與影響,一方面,在電商、金融科技、云計算、大數據、AI等重要戰略領域發展的過程中,云計算基礎設施技術的重要支...

     
国际官方棋牌下载中心 游戏挂机赚钱一小时5块 二分时时彩计划官网 股票涨跌颜色表示 贵州体彩11选5走势图 中国福利彩票预测专家 2014年股票推荐 江苏11选五中奖规则 三分彩开奖结果提前知道 广西福彩快3开奖结果今天 炒股实战教程视频