《深入分析Java Web技術內幕(修訂版)》新增了淘 寶在無線端的應用實踐,包括:CDN 動態加速、多終端化改造、 多終端Session 統一 ,以及在大流量的情況下,如何跨越性能、網絡和一個地區的電力瓶頸等內容,并提供了比較完整的解決方案。
《深入分析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技術內幕(修訂版)》不僅介紹這些技術和框架的工作原理,而且結合示例來講解,通過通俗易懂的文字和豐富、生動的配圖,讓讀者充分并深入理解它們的內部工作原理,同時還結合了設計模式來介紹這些技術背后的架構思維。
讓讀者知其然,并知其所以然,是《深入分析Java Web技術內幕(修訂版)》一書的特色。
作者來自淘 寶技術一線,親歷了淘 寶網PV從1億到10億的發展歷程,直接經歷了在這個過程中技術的不斷突破、飛躍等變遷,并積累了豐富實踐經驗。
《深入分析Java Web技術內幕(修訂版)》正是分享了作者在面臨種種技術問題、技術瓶頸時的思路、方法和技巧,具體的應用實踐和直接的案例。
在這次的修訂版中,作者補充了網近兩年在無線端的應用實踐。在這個快速發展的移動互聯的時代,這樣直接的技術積累和分享尤其珍貴。
相信讀者一定能從中獲益匪淺。
集團技術叢書是抱持著為工程師服務的理念誕生的。
阿里的快速發展,使我們見證技術變革的強大力量。在這過程中,我們經歷了技術的變遷、興衰、成敗,既有收獲也有教訓。如今,阿里已成為一家令人矚目的互聯網公司,站在這樣的時點上,回顧過去,放眼四周,我們深刻地覺得有必要將沉淀下來的一線經驗與智慧,結集出版,理由有三。
1.回報。我們獲得的種種經驗與教訓,只有在阿里這樣快速成長、體量巨大的公司中才會親歷。這樣的技術環境并不是每個工程師都有緣遇到的。這些經歷幫助了我們個人能力的提升,也幫助阿里成為一家技術實力過硬的公司。我們愿意把這些內容分享出來,幫助即將或已經面臨類似問題的朋友們,如果他們可以從閱讀中獲得一些啟發而少走彎路的話,將令我們欣慰。
2.交流。在這套叢書里,我們同樣會拋出我們的困惑、問題,借助叢書的平臺,擴大工程師溝通的圈子,以書會友,共同探索、學習、提高。
3.溫故知新。以結集的形式,將以往的經驗與知識固化下來,既可便于以后查閱,也可以幫助我們系統地梳理思路,更為地審視、洞察、并理解過去發生的種種,為未來的變化做好更充分、扎實的準備。
基于以上的考慮,集團技術叢書將立足于實踐,著眼于問題,從工程師的視角解讀技術的內涵。
讓思考成為我們生活的樂趣,讓閱讀成為我們進步的階梯!
2009??????????????????????PV?1??10????????????????Web??????????????????CDN???????? ???????????Cassandra???Tomcat?Jetty???????????????????????????????????????sketch?????MVC??Feiba???????????50%??????????????????????????????????????1s???
? ? ?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
第1版序
我第1次接觸計算機應該是在10年前,記得當時連怎么開計算機都不會,當時感覺計算機真是一個讓人著迷的東西,但是那時別說擁有一臺計算機,就算是能玩上計算機也是一件奢侈的事情了。人總是有好奇心的,而我也因為追隨著這份好奇和計算機一起走過了將近10年的光陰,也是這份好奇讓我接觸了計算機,認識了計算機,到現在了解了計算機。但是到目前為止我仍然有很多好奇的東西,所以我將一直求解下去。
回想我開始學習編程的時候,那是在大學期間開始構建自己的第1個網頁,然后是第1個網站之時,其中的復雜程度真是讓人難以想象。要構建一個網頁,需要學習當時的"網頁三劍客",頁面布局需要學習Dreamweaver,圖片處理需要學習Fireworks,動畫制作需要學習Flash。有時候為了一個導航欄甚至通宵達旦。還有,要自己搭建一個本地服務器,要學習IIS、Apache等。當時的我竟然能夠一個人完成這一系列的事情,現在想想還真是有點兒佩服自己。
現在回想一下當時自己的學習過程,真是走了很多彎路,浪費了很多時間。當時的學習就像是在一個陌生的城市找路一樣,不知道如何才能到達目的地,只能邊走邊問別人,這個人告訴你一點,那個人告訴你一點,一點一點往前走。但是雖然在往前走,走的路卻并不是最近的,甚至有人指的方向是錯的。當時缺少一個總攬全局的地圖,所以不能畫出一條的路。雖然走了很多彎路,但是這種不斷自學的過程還是大大地提升了我的學習能力,這種好的自學能力也在我以后的學習工作中起到了關鍵作用。
IT行業的知識變化很快,需要不斷地學習新東西,所以學習知識的能力比掌握知識本身更重要。這也是目前大公司招聘標準中很重要的一條。記得當時我的老大在招聘我進入淘寶時,面試時就問我如何學習一門新技術。你在學習的過程中會碰到很多難題,并會克服這些難題,很多這樣的過程積累起來就是你無形的寶貴財富。因為你遇到的問題肯定也是其他人遇到的問題,從發現問題、分析問題再到解決問題的過程遠比這個問題本身更有價值。
愛因斯坦說過:"發現問題比解決問題更重要。"對IT人員來說,發現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開發的整個過程有個總體的理解。
本書雖然講解的都是比較深入的技術,但是有關實踐的示例和比較恰當的比喻將幫你更好地理解。
本書將結合淘寶網中真實使用的示例應用程序來講解技術,讓讀者有更好的直觀認識。
讀者討論
由于作者水平有限,書中難免有錯誤之處。在本書出版后的任何時間,若你對本書有任何問題,你都可以通過xulingbo0201@163.com發送郵件給我,或者到xulingbo.net上向我提交你的建議和想法,我會對所有問題給予回復。
致謝
感謝我的父母,在我高考失敗后仍然給我機會讓我選擇做自己想做的事,支持我選擇了自己喜歡的計算機行業,并在家庭并不富裕的情況下給我配置了第1臺計算機,讓我有機會繼續追求自己的夢想,是你們的支持和鼓勵讓我在做自己一直喜歡做的事。
感謝我的老婆,從大學你就一直陪伴在我身邊,有你在我身邊是我不斷努力的較大動力,在本書的寫作過程中,你完成初稿的審閱工作,同時也給了我很多鼓勵和建議。
感謝電子工業出版社的劉皎和張國霞編輯,你們嚴謹認真的工作態度讓我非常敬佩。
感謝吳澤明(范禹)老大為本書寫序,你不僅帶我進入淘寶,而且一直幫助我持續進步。感謝王保平、林昊和劉達在繁忙的工作中為我寫推薦語。
感謝在本書寫作過程中提出寶貴意見的同事們,他們的花名是:小凡、小邪、丹臣、哲別、景升、文通、向飛、凌棄、路奇、濟城、大仁、常彬、旭天、韓章、小賭、雁聲、索尼、鳳豪、柳擎、華黎、空望、嗷嗷、漸飛、普智、勝衣、叔度、文景、撒迦、狄龍、祝幽、單通、承澤等。
感謝developerWorks上所有向我提出問題和建議的網友們。
許令波
2012年7月
再版序
自《深入分析Java Web技術內幕》一書出版以來,我收到了不少讀者的反饋,也很感謝他們指出了書中的一些錯誤和不足。時隔兩年,在電子工業出版社博文視點編輯的幫助下,《深入分析Java Web技術內幕》有了修訂再版的機會。
這兩年來,一些技術也在發生著變化:無線技術越來越成熟,我們的系統開始更多地支持無線,并衍生出系統要進行多終端化改造等問題;同時我們也遇到了一些新的技術問題如大流量、網絡瓶頸及機房的電力短缺等,這給系統的部署和系統架構帶來新的挑戰。所以我借這次再版的機會,將這方面的技術更新和實踐嘗試一并分享給讀者。除了修正前版的一些錯漏之處,本次修訂還主要做了以下更新。
第1章增加了CDN動態加速的內容,介紹了我們當前近期的想法和嘗試。
第3章增加一種繁簡轉換的實現方式的內容,介紹了我們在遇到多終端的情況下面臨的多語言的問題,將我們的思路和實踐分享給大家。
第10章增加了多終端Session統一的內容,也介紹了在多終端的情況下如何解決Session統一的問題。
新增了第18章,重點介紹了我們在近兩年遇到大流量的情況下,如何跨越性能、網絡和一個地區的電力瓶頸等問題,并提供了一個比較完整的解決方案。
感謝劉皎和張國霞兩位編輯,感謝阿里巴巴的幾位大牛范禹、黃眉等對修訂版提供的一些有益建議,也感謝我們技術發展部恬玉同學的大力幫助。
許令波
2014.7
《深入分析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 專區編輯、技術工程師
雖然網上有pdf版本,但是個人感覺知識最好還是通過紙質傳輸會好點,支持!
在手機上就一直在看的一本書,趁著這次雙11,果斷入手,非常全面的一本書
內容多且泛,適合空閑時讀一下,深究某一方面的話這不是你想要的那本書
挺好的書,全面,適合初學者,不是那種深入一個角度的書
很不錯,有很多原理性的知識點不懂,正好多學習學習!
書還沒看,不知怎么樣,就是有個地方破了,不太開心。
非常不錯的好書,書不記,熟讀可記,義不精,細思可精,共勉!
等了快半個月了,終于到了 活動時候買的,還是很實惠的
內容對于目前的我來說還是有點深,適合有一兩年工作經驗的人學習
書里面的內容特別好,把之前在學校里面的知識串了起來,受益匪淺啊。
書非常不錯,很多之前沒有注意到的地方都有說明,非常棒!
對需要深入了解技術的人比較實用,一般維護和開發人員不需要。
沒有膠封,紙張顏色很柔和,看著舒服。內容排版親和。值得一看
很不錯的書,比市面上其他講Java的書好多了
正版沒問題,,價格挺便宜的。。。雖然其中有不少看不懂的內容,,,
書中講了不少原理的東西,覺得有的地方講的還不是很清楚。建議配上servlet規范一起看 了解的會更多!
確實是深入理解,作者總結的精髓,也必須多實踐才能體會得到,看了書發展自己啥都不知道,趕緊碼吧!
講的主要是web相關的技術原理,以及在web開發中遇到的問題以及解決方法,挺實用的...
包裝很好,沒有破碎,前一天晚上10點下單,第二天中午就到了,
物流還算比較給力,內容也還不錯,包裝稍微簡陋了點。希望能從中學到東西吧。
很不錯的java web數據,有利于提升技術水平
學習java web框架開發的好書,書中涉及了很多內容,都讓人很有收獲
想把原理搞明白的童鞋不妨拿過來看看,但是個人感覺至少得有足夠的web基礎才能勝任本書。否則會有點吃力
深入分析技術內幕(修訂版)比想象的要差,印刷一般,有點翻版的感覺,又要貴
講解的很全面,部分知識講的不是很細致,但是入門足夠,要深入可以根據該書做索引來看其他的知識點
非常贊的書!技術細節,技術內幕,分析到位,程序員深入學習的好教材~給好評
朋友推薦的。很實用的一本書,都Java web的深入很有幫助
評價一下吧,大概看了幾章,感覺第三章的中文編碼講的很全面,第一二章屬于掃盲,后邊的應該還不錯,還沒有看,不過第四到第八章這么少講虛擬機感覺應該也不會講的很深入,十章往后很期待。書的紙張不錯,很厚,所以會覺得內容不是很多。
學習Java的都應該看一看,對自己會很有裨益,大牛進階之路上的必備武器,趁這次活動,果斷入手,劃算!