深入分析Java Web技術(shù)內(nèi)幕

出版時(shí)間:2012-9  出版社:電子工業(yè)出版社  作者:許令波  
Tag標(biāo)簽:無  

內(nèi)容概要

  《深入分析Java Web技術(shù)內(nèi)幕》圍繞Java Web相關(guān)技術(shù)從三方面全面深入地進(jìn)行闡述。首先介紹前端知識,主要介紹Java Web開發(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框架等原理介紹。本書不僅介紹這些技術(shù)和框架的工作原理,而且結(jié)合示例來講解,通過通俗易懂的文字和豐富生動的配圖,讓讀者充分并深入理解它們的內(nèi)部工作原理,同時(shí)還結(jié)合了設(shè)計(jì)模式來介紹這些技術(shù)背后的架構(gòu)思維。

作者簡介

許令波,畢業(yè)于合肥工業(yè)大學(xué),獲計(jì)算機(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ù)改造等工作。

書籍目錄

第1章 深入Web請求過程1 1.1 B/S網(wǎng)絡(luò)架構(gòu)概述2 1.2 如何發(fā)起一個(gè)請求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章 深入分析JavaI/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ù)囊蛩?9 2.3.3 JavaSocket的工作機(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è)計(jì)模式解析之適配器模式56 2.6.1 適配器模式的結(jié)構(gòu)56 2.6.2 JavaI/O中的適配器模式57 2.7 設(shè)計(jì)模式解析之裝飾器模式57 2.7.1 裝飾器模式的結(jié)構(gòu)58 2.7.2 JavaI/O中的裝飾器模式58 2.8 適配器模式與裝飾器模式的區(qū)別59 2.9 總結(jié)59 第3章 深入分析JavaWeb中的中文編碼問題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 JavaWeb中涉及的編解碼73 3.4.1 URL的編解碼75 3.4.2 HTTPHeader的編解碼78 3.4.3 POST表單的編解碼78 3.4.4 HTTPBODY的編解碼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 一個(gè)漢字變成一個(gè)問號84 3.6.3 一個(gè)漢字變成兩個(gè)問號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è)計(jì)模式解析之訪問者模式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 LineNumberTable150 5.7.2 LocalVariableTable151 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 驗(yàn)證與解析161 6.3.3 初始化Class對象161 6.4 常見加載類錯誤分析161 6.4.1 ClassNotFoundException161 6.4.2 NoClassDefFoundError162 6.4.3 UnsatisfiedLinkError163 6.4.4 ClassCastException164 6.4.5 ExceptionInInitializerError165 6.5 常用的ClassLoader分析166 6.6 如何實(shí)現(xiàn)自己的ClassLoader170 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 何謂JVM178 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è)計(jì)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 NIO200 8.3.5 JNI201 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)行時(shí)常量池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 JVMCrash日志分析225 8.8 實(shí)例1231 8.9 實(shí)例2233 8.10 實(shí)例3235 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 初始化Servlet248 9.3 Servlet體系結(jié)構(gòu)250 9.4 Servlet如何工作253 9.5 Servlet中的Listener255 9.6 Filter如何工作257 9.7 Servlet中的url—pattern259 9.8 總結(jié)260 第10章 深入理解Session與Cookie261 10.1 理解Cookie262 10.1.1 Cookie屬性項(xiàng)262 10.1.2 Cookie如何工作263 10.1.3 使用Cookie的限制266 10.2 理解Session267 10.2.1 Session與Cookie267 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è)計(jì)模式282 11.1 Tomcat總體設(shè)計(jì)282 11.1.1 Tomcat總體結(jié)構(gòu)283 11.1.2 Connector組件289 11.1.3 Servlet容器Container294 11.1.4 Tomcat中的其他組件305 11.2 Tomcat中的設(shè)計(jì)模式305 11.2.1 門面設(shè)計(jì)模式305 11.2.2 觀察者設(shè)計(jì)模式307 11.2.3 命令設(shè)計(jì)模式309 11.2.4 責(zé)任鏈設(shè)計(jì)模式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è)計(jì)理念與設(shè)計(jì)模式分析330 13.1 Spring的骨骼架構(gòu)330 13.1.1 Spring的設(shè)計(jì)理念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 SpringAOP如何實(shí)現(xiàn)351 13.4 設(shè)計(jì)模式解析之代理模式354 13.4.1 代理模式原理354 13.4.2 Spring中代理模式的實(shí)現(xiàn)354 13.5 設(shè)計(jì)模式解析之策略模式357 13.5.1 策略模式原理357 13.5.2 Spring中策略模式的實(shí)現(xiàn)358 13.6 總結(jié)358 第14章 SpringMVC工作機(jī)制與設(shè)計(jì)模式360 14.1 SpringMVC的總體設(shè)計(jì)360 14.2 Control設(shè)計(jì)365 14.2.1 HandlerMapping初始化366 14.2.2 HandlerAdapter初始化368 14.2.3 Control的調(diào)用邏輯369 14.3 Model設(shè)計(jì)370 14.4 View設(shè)計(jì)371 14.5 框架設(shè)計(jì)的思考373 14.5.1 為什么需要框架373 14.5.2 需要什么樣的框架373 14.5.3 框架設(shè)計(jì)的原則374 14.5.4 “指航燈”374 14.5.5 最基本的原則374 14.6 設(shè)計(jì)模式解析之模板模式375 14.6.1 模板模式的結(jié)構(gòu)375 14.6.2 SpringMVC中的模板模式示例376 14.7 總結(jié)377 第15章 深入分析Ibatis框架之系統(tǒng)架構(gòu)與映射原理378 15.1 Ibatis框架主要的類層次結(jié)構(gòu)378 15.2 Ibatis框架的設(shè)計(jì)策略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è)計(jì)模式解析之簡單工廠模式388 15.8.1 簡單工廠模式的實(shí)現(xiàn)原理388 15.8.2 Ibatis中的簡單工廠模式示例389 15.9 設(shè)計(jì)模式解析之工廠模式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 減少渲染耗時(shí)的節(jié)點(diǎn)數(shù)量413 16.5 與JSP比較414 16.5.1 JSP渲染機(jī)制414 16.5.2 Velocity與JSP420 16.6 設(shè)計(jì)模式解析之合成模式420 16.6.1 合成模式的結(jié)構(gòu)420 16.6.2 Velocity中合成模式的實(shí)現(xiàn)421 16.7 設(shè)計(jì)模式解析之解釋器模式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 減少翻譯的代價(jià)427 17.2.5 變的轉(zhuǎn)化為不變427 17.3 一個(gè)高效的模板引擎的實(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)成byte440 17.4.2 無反射執(zhí)行441 17.5 其他優(yōu)化手段442 17.6 總結(jié)442

章節(jié)摘錄

版權(quán)頁:   插圖:   1.類加載器 在深入分析ClassLoader時(shí)我們詳細(xì)分析了ClassLoader的工作機(jī)制,這里需要說明的是,每一個(gè)被JVM裝載的類型都有一個(gè)對應(yīng)的java.lang.Class類的實(shí)例來表示該類型,該實(shí)例可以唯一表示被JVM裝載的class類,要求這個(gè)實(shí)例和其他類實(shí)例一樣都存放在Java的堆中。 2.執(zhí)行引擎 執(zhí)行引擎是JVM的核心部分,執(zhí)行引擎的作用就是解析JVM字節(jié)碼指令,得到執(zhí)行結(jié)果。在《Java虛擬機(jī)規(guī)范》中詳細(xì)地定義了執(zhí)行引擎遇到每條字節(jié)碼指令時(shí)應(yīng)該處理什么,并且應(yīng)該得到什么結(jié)果。但是并沒有規(guī)定執(zhí)行引擎應(yīng)該如何或采取什么方式處理而得到這個(gè)結(jié)果。因?yàn)閳?zhí)行引擎具體采取什么方式由JVM的實(shí)現(xiàn)廠家自己去實(shí)現(xiàn),是直接解釋執(zhí)行還是采用JIT技術(shù)轉(zhuǎn)成本地代碼去執(zhí)行,還是采用寄存器這個(gè)芯片模式去執(zhí)行都可以。所以執(zhí)行引擎的具體實(shí)現(xiàn)有很大的發(fā)揮空間,如SUN的hotspot是基于棧的執(zhí)行引擎,而Google的Dalvik是基于寄存器的執(zhí)行引擎。 執(zhí)行引擎也就是執(zhí)行一條條代碼的一個(gè)流程,而代碼都是包含在方法體內(nèi)的,所以執(zhí)行引擎本質(zhì)上就是執(zhí)行一個(gè)個(gè)方法所串起來的流程,對應(yīng)到操作系統(tǒng)中一個(gè)執(zhí)行流程是一個(gè)Java進(jìn)程還是一個(gè)Java線程呢?很顯然是后者,因?yàn)橐粋€(gè)Java進(jìn)程可以有多個(gè)同時(shí)執(zhí)行的執(zhí)行流程。這樣說來每一個(gè)Java線程就是一個(gè)執(zhí)行引擎的實(shí)例,那么一個(gè)JVM實(shí)例中就會同時(shí)有多個(gè)執(zhí)行引擎在工作,這些執(zhí)行引擎有的在執(zhí)行用戶的程序,而有的在執(zhí)行JVM內(nèi)部的程序(如Java垃圾收集器)。 3.Java內(nèi)存管理 執(zhí)行引擎在執(zhí)行一段程序時(shí)需要存儲一些東西,如操作碼需要的操作數(shù),操作碼的執(zhí)行結(jié)果需要保存。class類的字節(jié)碼還有類的對象等這些信息都需要在執(zhí)行引擎執(zhí)行之前就準(zhǔn)備好。從圖7—2中可以看出一個(gè)JVM實(shí)例會有一個(gè)方法區(qū)、Java堆、Java棧、PC寄存器和本地方法區(qū)。其中方法區(qū)和Java堆是所有線程共享的,也就是可以被所有的執(zhí)行引擎實(shí)例訪問。每一個(gè)新的執(zhí)行引擎實(shí)例被創(chuàng)建時(shí)會為這個(gè)執(zhí)行引擎創(chuàng)建一個(gè)Java棧和一個(gè)PC寄存器,如果當(dāng)前正在執(zhí)行一個(gè)Java方法,那么當(dāng)前的這個(gè)Java棧中保存的是該線程中方法調(diào)用的狀態(tài),包括方法的參數(shù)、方法的局部變量、方法的返回值以及運(yùn)算的中間結(jié)果等。而PC寄存器會指向即將執(zhí)行的下一條指令。

編輯推薦

《深入分析Java Web技術(shù)內(nèi)幕》不僅介紹這些技術(shù)和框架的工作原理,而且結(jié)合示例來講解,通過通俗易懂的文字和豐富生動的配圖,讓讀者充分并深入理解它們的內(nèi)部工作原理,同時(shí)還結(jié)合了設(shè)計(jì)模式來介紹這些技術(shù)背后的架構(gòu)思維。

名人推薦

這是一本有關(guān)Java的書,里面講述的大量基礎(chǔ)知識對前端開發(fā)工程師也非常有幫助。比如中文編碼章節(jié),作者以一個(gè)實(shí)踐者的身份詳細(xì)闡述了編碼問題的方方面面??傊?,這是一本用心的書,是實(shí)踐者的思考和總結(jié)。國內(nèi)目前很少看到這類書籍,強(qiáng)烈推薦從事Web開發(fā)工作的人員購買閱讀并實(shí)踐之。 ——王保平,開源前端類庫KISSY、SeaJS作者 作者在淘寶做了很:多Java Web方面的改造項(xiàng)目,在Java Web的相關(guān)技術(shù)上有深入的掌握,并積累了豐富的經(jīng)驗(yàn)。在這本書中作者不僅向讀者展示了這類大改造項(xiàng)目所需的知識。還展示了Java Web更為全景的技術(shù)知識體系,值得Java Web開發(fā)人員閱讀。 ——林昊,淘寶資探深技術(shù)專家、China OSGi User Group總監(jiān) 從第一次拜讀相關(guān)內(nèi)容開始,就可以感覺到作者并不是簡簡單單地講述一個(gè)技術(shù)或者概念,他的分析和講解十分深入,并且可以很好地聚焦讀者的思路,尤其是在Java Web、Servlet規(guī)范及字符串處理方面,都有很優(yōu)秀的內(nèi)容。在眾多向developerWorks投稿的國內(nèi)作者中,無論從文章的質(zhì)量看,還是從內(nèi)容的選題方向看,作者的文章都可稱是上乘之作。同時(shí),他的多篇文章還得到了廣大網(wǎng)站讀者的好評,其訪問量、評分及評論的數(shù)量均名列前茅。 ——劉達(dá)

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    深入分析Java Web技術(shù)內(nèi)幕 PDF格式下載


用戶評論 (總計(jì)17條)

 
 

  •   紙質(zhì)讓人失望 印刷也失望 居然有的圖還不清析
  •   比預(yù)期的要差,里面的內(nèi)容太籠統(tǒng)化了,只是個(gè)框架的大概介紹
  •   字體我很喜歡,就是圖片有點(diǎn)小。
  •   不錯,讓我對Java Web了解更深了
  •   這本書很不錯,尤其對java的核心原理,web框架講述的很好。只可惜沒有光盤,美中有些不足!
  •   講解的比較好,比較喜歡。
  •   內(nèi)容沒有細(xì)看,不過還是很喜歡
  •   本來書的內(nèi)容很好,可惜作者沒有深入講解,只是淺淺一說。差了一些火候、
  •   java Web內(nèi)容深入淺出,非常值得一讀,淘寶的技術(shù)牛人就是不一樣
  •   看了第一張,很多遺留問題沒有解答。涉及面太廣了吧!只是籠統(tǒng)的說了技術(shù)的摘要沒有對技術(shù)做出詳細(xì)的介紹!希望作者能把這些內(nèi)容補(bǔ)充出來!
  •   講的知識很多,有些深度,但是到一定的時(shí)候卻跳過了,所以當(dāng)本小說什么的來看還是不錯的
  •   內(nèi)容不夠詳盡,只說了大概。
  •   沖著公開的章節(jié)買的,確實(shí)有幾章寫的不錯。但是有很多跟主題不是很有關(guān)系的內(nèi)容,比如“javac編譯原理”,“深入class文件結(jié)構(gòu)”,有拼湊章節(jié)湊厚度之嫌。
  •   很劃算。。
  •   對于Web技術(shù)內(nèi)幕講得比較清楚。
  •   書不錯,內(nèi)容很精辟
  •   學(xué)習(xí)主流java web技術(shù)的好書
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7