《Java Web實操:基於IntelliJ IDEA、JDBC、Servlet、Ajax、Nexus、Maven》是電子工業出版社出版圖書,作者是高洪岩
通過對本書16章內容的學習,讀者可以獨立完成IntelliJ IDEA軟體開發項目,使用JDBC操作Oracle/MySQL資料庫等。
基本介紹
- 中文名:Java Web實操:基於IntelliJ IDEA、JDBC、Servlet、Ajax、Nexus、Maven
- 作者:高洪岩
- 出版時間:2021年11月
- 出版社:電子工業出版社
- 頁數:652 頁
- ISBN:9787121421662
- 定價:138 元
- 開本:16 開
內容簡介,圖書目錄,作者簡介,
內容簡介
本書主要包括IntelliJ IDEA,JDBC,Servlet,Vue四部分內容,這四部分是學習Java Web開發的重點。在IntelliJ IDEA部分介紹了40多種使用技巧,還介紹了IntelliJ IDEA的核心技能,包括調試Java項目,創建Java/Web/JavaMaven/WebMaven項目等。JDBC部分介紹如何處理海量數據的查詢與添加操作,常見JDBC接口的使用等功能。Servlet部分介紹了request-response請求回響模型原理,接口Servlet,ServletConfig的使用,web.xml中常見的配置,HttpServletRequest和HttpServletResponse接口的使用等核心技術的使用。Vue章節介紹了模板語法、計算屬性和偵聽器、Class和Style操作、條件渲染、列表渲染、事件處理、等核心技能。最後以購物車的案例將所有知識點串聯,達到綜合演練的目的。
圖書目錄
第1 章 IntelliJ IDEA 常用技巧 ····································· 1
1.1 初次配置IntelliJ IDEA ···································· 2
1.2 創建Java 項目 ················································ 4
1.2.1 關聯JDK 並創建Java 項目 ··························· 4
1.2.2 查看項目結構 ············································ 6
1.2.3 創建Java 類 ·············································· 6
1.2.4 運行Java 類 ·············································· 7
1.3 IntelliJ IDEA 相關配置與使用技巧 ··················· 7
1.3.1 配置界麵皮膚 ············································ 8
1.3.2 設定Eclipse 風格的快捷鍵 ··························· 8
1.3.3 更改代碼編輯器文字大小 ····························· 8
1.3.4 快速生成代碼 ············································· 8
1.3.5 設定快捷鍵“Alt+/” ···································· 9
1.3.6 設定代碼完成對大小寫不敏感 ······················ 10
1.3.7 配置JDK ················································ 11
1.3.8 設定自動編譯 ··········································· 13
1.3.9 拋出異常 ················································· 13
1.3.10 使用“Ctrl+Alt+T”快捷鍵生成代碼塊 ········· 13
1.3.11 使用Generate 選單生成方法 ······················· 14
1.3.12 使用fori 生成for 語句 ······························ 16
1.3.13 實現自動導入的功能 ································ 16
1.3.14 實現水平或垂直分屏的功能 ······················· 16
1.3.15 樹形顯示包結構 ······································ 17
1.3.16 設定“F2”鍵用於改名 ····························· 18
1.3.17 將類的方法抽取成接口 ····························· 18
1.3.18 Maven 項目下載原始碼和幫助文檔 ·············· 19
1.3.19 Find Usages 選單查看方法調用 ··················· 20
1.3.20 增加控制台保存輸出信息的緩衝區大小 ········ 20
1.3.21 增加可用記憶體 ········································· 21
1.3.22 啟用Toolbar ··········································· 21
1.3.23 顯示方法分割符 ······································ 21
1.3.24 設定檔案編碼 ········································· 22
1.3.25 使用快捷鍵找到對應的功能名稱 ················· 24
1.3.26 使用快捷鍵自動生成返回值或聲明變數 ········ 24
1.3.27 使用快捷鍵實現代碼導航 ·························· 24
1.3.28 使用“F4”鍵查看類繼承結構 ···················· 24
1.3.29 使用快捷鍵查看類大綱結構 ······················· 24
1.3.30 使用快捷鍵搜尋與替換文本功能 ················· 25
1.3.31 使用“Ctrl+H”快捷鍵實現查詢更大範圍的功能 ·················· 25
1.3.32 使用“Shift”鍵實現全局搜尋 ···················· 26
1.3.33 生成UML 類圖 ······································· 27
1.3.34 使用快捷鍵查看方法的重寫或實現 ················· 28
1.3.35 使用快捷鍵查看檔案 ································ 28
1.3.36 生成.jar 檔案 ·········································· 29
1.3.37 設定顯示API 文檔提示框的延遲時間 ··········· 31
1.3.38 使用多行Tab 顯示 ··································· 32
1.3.39 設定背景圖片 ········································· 32
1.3.40 自動生成serialVersionUID 屬性 ··················· 33
1.3.41 查看當前檔案的位置 ································ 33
第2 章 IntelliJ IDEA 核心技能 ···································· 43
2.1 調試Java 代碼 ··············································· 43
2.1.1 準備調試代碼 ··········································· 43
2.1.2 設定斷點 ················································· 44
2.1.3 調試 ······················································· 44
2.1.4 跟蹤按鈕解釋 ··········································· 44
2.1.5 更改“force step into”按鈕快捷鍵 ················ 44
2.1.6 查看所有斷點 ··········································· 45
2.1.7 設定條件斷點 ··········································· 46
2.1.8 正確終止進程 ··········································· 46
2.1.9 設定運行到游標處暫停 ······························· 47
2.1.10 顯示完整包路徑 ······································ 47
2.2 為Java 項目引用jar 包檔案 ··························· 48
2.2.1 使用Global Libraries 引用jar 包檔案 ·············· 48
2.2.2 使用Libraries 引用jar 包檔案 ······················· 52
2.2.3 使用Add as Library 引用jar 包檔案 ··············· 54
2.3 對Java 項目導出的.jar 檔案實現轉換 ············· 56
2.4 創建Web 項目 ··············································· 57
2.4.1 創建Java 項目並配置Web 環境 ···················· 57
2.4.2 使用嚮導創建Servlet ································· 59
2.4.3 添加與Servlet 相關的.jar 檔案依賴 ················ 59
2.4.4 完善Servlet 代碼 ······································· 59
2.4.5 創建test1.jsp 檔案 ····································· 60
2.4.6 關聯Tomcat ············································· 60
2.4.7 運行項目並解決Tomcat 啟動亂碼 ················· 62
2.4.8 實現熱部署 ·············································· 63
2.4.9 上傳檔案路徑的小提示 ······························· 64
2.4.10 禁止啟動Tomcat 完成後彈出網頁 ················ 64
2.4.11 設定.html 檔案自動縮進 ···························· 64
2.4.12 導出war 包檔案 ······································ 65
2.5 創建Maven Web 項目 ···································· 66
2.5.1 搭建Maven 環境 ······································· 67
2.5.2 創建Maven Web 項目 ································· 69
2.5.3 改變JDK 版本 ·········································· 71
2.5.4 創建java 和resource 資料夾 ························ 71
2.5.5 其他方式創建java 和resources 資料夾 ··········· 72
2.5.6 創建Servlet 類 ·········································· 73
2.5.7 創建JSP 檔案 ··········································· 74
2.5.8 啟動項目並解決Servlet 列印亂碼的問題 ········· 75
2.5.9 解決EL 表達式無效的問題 ························· 75
2.5.10 導出war 包檔案 ······································ 76
2.6 創建Maven Java 項目並導出.jar 檔案 ············· 77
2.6.1 創建Maven Java 項目 ································· 77
2.6.2 編輯pom.xml 檔案 ···································· 79
2.6.3 創建運行類 ·············································· 79
2.6.4 執行運行類 ·············································· 80
2.6.5 打包並在CMD 中運行類 ···························· 80
2.7 配置全局Maven ············································ 81
2.8 多Modules 模組Web 環境的搭建—非Maven 環境 ·················· 82
2.8.1 創建父項目 ·············································· 82
2.8.2 創建DAO 子模組 ······································ 83
2.8.3 創建Service 子模組 ··································· 84
2.8.4 創建Web 子模組 ······································· 84
2.8.5 在DAO 模組中創建實體類及DAO 類 ············ 85
2.8.6 在Service 模組中引用DAO 模組 ·················· 86
2.8.7 創建Global Libraries 全局庫 ························ 88
2.8.8 在Web 模組中創建Servlet ·························· 88
2.8.9 創建JSP 視圖 ··········································· 89
2.8.10 啟動Tomcat 並解決類找不到的異常 ············· 90
2.8.11 導出.war 檔案 ········································· 91
2.9 多Modules 模組Web 環境的搭建—Maven 環境 ························ 92
2.9.1 創建父項目 ························ 92
2.9.2 創建DAO 子模組 ······································ 92
2.9.3 創建Service 子模組和Web 子模組 ················ 93
2.9.4 給DAO 模組中的pom.xml 檔案添加依賴 ······· 95
2.9.5 在DAO 模組中創建DAO 類 ························ 95
2.9.6 在Service 模組中創建業務類並引用DAO 模組 ··························· 95
2.9.7 在Web 模組中配置Sources Root 資料夾 ········· 96
2.9.8 給Web 模組中的pom.xml 檔案添加依賴 ········ 96
2.9.9 創建Servlet ············································· 96
2.9.10 運行項目 ··············································· 97
2.9.11 導出.war 檔案 ········································· 97
2.10 多Web Modules 模組環境的搭建—非Maven 環境 ················ 98
2.10.1 創建Empty Project ··································· 98
2.10.2 創建Web 模組 ········································ 98
2.10.3 創建Servlet ············································ 99
2.10.4 配置Tomcat ··········································· 99
2.10.5 啟動Tomcat ········································· 103
2.10.6 導出.war 檔案 ······································· 103
第3 章 JDBC 核心技術 ············································ 104
3.1 什麼是JDBC ··············································· 104
3.2 為什麼要使用JDBC ···································· 104
3.3 什麼是JDBC 驅動 ······································· 106
3.4 JDBC 核心接口介紹 ···································· 107
3.4.1 Driver ··················································· 107
3.4.2 Connection ············································· 109
3.4.3 Statement ··············································· 110
3.4.4 ResultSet ················································ 111
3.4.5 PreparedStatement ···································· 113
3.5 創建Driver 對象 ·········································· 114
3.6 創建Connection 對象 ··································· 114
3.7 創建Statement 對象 ····································· 115
3.8 創建ResultSet 對象 ······································ 116
3.9 使用Statement 接口有損軟體的安全性 ········· 117
3.10 創建PreparedStatement 接口 ······················· 119
3.11 PreparedStatement 的預編譯特性 ················· 122
3.12 PreparedStatement 執行效率高 ···················· 123
3.13 不同方式註冊驅動的比較 ··························· 125
3.13.1 方法1 ················································· 125
3.13.2 方法2 ················································· 125
3.13.3 方法3 ················································· 126
3.13.4 讀懂原始碼的基本知識 ··························· 126
3.13.5 針對MySQL 驅動源碼分析 ······················ 127
3.13.6 針對Oracle 驅動源碼分析 ························ 129
3.13.7 方法3 的原理 ······································· 130
3.13.8 三種方法的使用場景 ······························ 132
3.14 使用PreparedStatement 實現記錄的增刪改 ······················· 133
3.15 建議釋放資源放入finally 塊 ······················· 136
3.16 實現Connection 工廠類 ······························ 142
3.17 多條件查詢 ················································ 145
3.18 DTO、ENTITY 和DAO 介紹 ····················· 147
3.19 將JDBC 操作封裝為DAO 數據訪問對象································· 150
3.20 允許MySQL 被遠程訪問 ··························· 156
第4 章 JDBC 實戰技術 ············································ 157
4.1 元數據的獲取 ·············································· 157
4.2 簡化CURD 的操作代碼 ······························· 161
4.3 反射與泛型結合為泛型DAO ······················· 163
4.4 數據源和連線池的使用 ································ 170
4.4.1 創建數據源接口的實現類 ·························· 171
4.4.2 使用驅動提供的DataSource 接口的實現類 ···························· 174
4.4.3 DataSource 接口的弊端 ····························· 175
4.4.4 連線池 ·················································· 178
4.4.5 不使用連線池與使用連線池的比較 ·············· 179
4.4.6 HikariCP 作為連線池································ 180
4.5 在JDBC 中處理資料庫的事務 ······················ 182
4.6 多事務導致轉賬發生異常不回滾 ·················· 187
4.7 使用ThreadLocal 解決問題 ·························· 193
4.8 使用JDBC 操作CLOB ································ 200
4.8.1 添加CLOB 類型的數據 ···························· 200
4.8.2 獲取CLOB 欄位中的數據 ························· 201
4.9 使用JDBC 操作BLOB ································ 203
4.9.1 添加BLOB 類型的數據 ···························· 203
4.9.2 獲取BLOB 欄位的數據 ···························· 205
4.10 實現Batch 批處理 ······································ 207
4.11 插入Date 數據類型並查詢區間 ·················· 210
4.12 返回最新版的ID 值 ··································· 212
4.13 事務的ACID 特性 ····································· 214
4.14 資料庫事務的類型 ····································· 215
4.15 髒讀、可重複讀、不可重複讀及幻讀的解釋 ································ 216
4.16 事務隔離級別 ·································· 217
4.16.1 TRANSACTION_READ_UNCOMMITTED ······················ 217
4.16.2 TRANSACTION_READ_COMMITTED ······· 224
4.16.3 TRANSACTION_REPEATABLE_READ ······ 231
4.16.4 TRANSACTION_SERIALIZABLE ············· 238
第5 章 Servlet 核心技術 ·········································· 245
5.1 Servlet 簡介 ················································· 245
5.2 更改訪問Tomcat 的連線埠號 ··························· 247
5.3 Servlet 技術開發 ·········································· 248
5.3.1 Servlet 的繼承與實現關係 ························· 249
5.3.2 創建基於xml 的Servlet 案例 ····················· 251
5.3.3 正確與錯誤配置Servlet 的不同情況 ············· 254
5.3.4 創建基於註解的Servlet 案例 ······················ 257
5.3.5 接口Servlet ··········································· 259
5.3.6 接口ServletConfig ··································· 267
5.3.7 使用<load-on-startup>配置Servlet ················ 275
5.3.8 使用註解實現<load-on-startup>的功能 ·········· 276
5.3.11 Application context 選項的作用 ·················· 282
5.3.12 HttpServletRequest 和HttpServletResponse 接口的使用 ················· 282
5.3.13 配置Servlet 具有後綴 ····························· 317
5.4 請求與回響 ················································· 318
5.4.1 請求/回響模型 ········································ 318
5.4.2 請求與回響的數據格式 ····························· 319
5.5 使用Servlet+JDBC 實現基於Web 的CURD 增刪改查 ······················ 323
第6 章 Cookie 對象 ················································· 340
6.1 創建Cookie ················································· 340
6.2 查詢Cookie ················································· 342
6.3 修改Cookie ················································· 343
6.4 刪除Cookie ················································· 343
6.6 使用Cookie 存儲中文或空格 ························ 344
6.7 為什麼找不到Cookie ··································· 345
6.8 創建工具類封裝Cookie 操作 ························ 346
6.9 使用Cookie 實現免登錄 ······························· 348
第7 章 HttpSession 接口 ········································· 351
7.1 HttpSession 接口的使用 ································ 352
7.2 HttpServletRequest 接口與HttpSession 的區別 ······························ 353
7.3 Session 與Cookie 的運行機制 ······················ 355
7.4 HttpSession 接口與URL 重寫 ······················· 358
7.5 使用HttpSession 實現免登錄功能 ················· 363
7.6 使用HttpSession 實現簡易購物車功能 ·········· 365
7.6.1 創建一個V 層 ········································ 366
7.6.2 創建三個C 層 ········································ 366
7.6.3 創建兩個entity 實體類 ····························· 368
7.6.4 創建兩個DAO 數據訪問層 ························ 369
7.6.5 創建三個Model 業務邏輯層 ······················ 370
第8 章 ServletContext 接口 ····································· 372
8.1 session 中的數據是私有的 ···························· 373
8.2 ServletContext 中的數據是公共的 ················· 374
8.5 實現charset 編碼可配置 ······························· 379
第9 章 Filter 接口 ···················································· 381
9.1 Filter 的使用 ················································ 382
9.2 Filter 的生命周期 ········································· 385
9.3 獲取私有/公共init 初始化參數 ····················· 387
9.4 使用註解聲明Filter ····································· 389
9.5 過濾鏈的順序——xml 方式 ·························· 390
9.6 過濾鏈的順序——annotation 方式 ················ 392
9.7 使用Filter 實現編碼的處理 ·························· 393
9.8 Filter 攔截請求和轉發 ·································· 395
9.9 使用Filter 實現許可權驗證 ······························ 398
9.10 綜合使用Filter+ThreadLocal+Cookie 實現解耦合 ······················· 401
9.11 使用Cookie 實現購物車的核心邏輯 ··········· 406
第10 章 Listener 接口 ············································· 412
10.1 HttpSessionActivationListener 接口的使用 ························· 412
10.2 HttpSessionAttributeListener 接口的使用 ······ 416
10.3 HttpSessionBindingListener 接口的使用 ······· 418
10.4 HttpSessionListener 接口的使用 ·················· 420
10.5 ServletContextAttributeListener 接口的使用 ··························· 421
10.6 ServletContextListener 接口的使用 ·············· 424
10.7 ServletRequestAttributeListener 接口的使用 ······················· 427
10.8 ServletRequestListener 接口的使用 ·············· 429
10.9 HttpSessionIdListener 接口的使用 ··············· 430
第11 章 JSP-JSTL-EL 必備技術 ······························ 435
11.1 JSP 技術 ···················································· 435
11.1.1 使用Servlet 生成網頁 ····························· 435
11.1.2 使用JSP 生成網頁 ································· 436
11.1.3 在JSP 中執行Java 程式 ·························· 438
11.1.4 JSP 本質上是Servlet ······························· 440
11.1.5 JSP 檔案的內容 ····································· 445
11.1.6 JSP 的指令 ··········································· 447
11.1.7 幾種指令的區別 ···································· 448
11.1.10 Java 代碼塊<%%>和<%!%>的區別 ··········· 453
11.1.11 內置對象pageContext 的使用 ·················· 455
11.1.12 常用內置對象的使用 ····························· 457
11.1.13 使用pageContext 向不同作用域中存取值 ························ 459
11.1.14 使用<%@ include file=“”%>指令靜態導入其他資源 ···················· 460
11.1.15 使用<jsp:include page=" ">動態導入其他資源 ·························· 461
11.1.16 JSP 的注釋 ········································· 462
11.1.17 使用<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>訪問類信息 ······· 463
11.1.18 使用<jsp:forward page=“”>實現轉發 ·········· 465
11.2 JSTL 和EL 表達式 ····································· 466
11.2.1 使用EL 表達式獲取字元串 ······················ 466
11.2.2 使用EL 表達式獲取JavaBean 中的數據 ······ 467
11.2.3 使用EL 表達式查找數據 ························· 467
11.2.4 key 優先獲取作用域小的scope 值 ·············· 468
11.2.5 使用EL 表達式獲取指定作用域中的值 ······· 468
11.2.6 使用EL 表達式列印property 屬性名 ·········· 468
11.3 實現基於MVC 的CURD 增刪改查 ············· 477
第12 章 異步處理AJAX 技術 ·································· 493
12.1 實現無傳參無返回值——get 提交方式 ········ 494
12.2 實現有傳參無返回值——get 提交方式 ········ 495
12.3 實現無傳參無返回值——post 提交方式 ······ 496
12.4 實現有傳參無返回值——post 提交方式 ······ 497
12.5 實現無傳參有返回值String——get 提交方式 ················· 497
12.6 實現無傳參有返回值XML——get 提交方式 ·························· 499
12.7 實現異步效果 ············································ 500
12.8 實現同步效果 ············································ 501
12.9 實現無刷新login 登錄案例 ························· 502
12.10 formdata 和payload 提交 ··························· 504
12.10.1 測試get 方式傳輸數據需要依賴URL ········ 506
12.10.2 測試post 提交使用formdata 方式傳輸數據 ·························· 508
12.10.3 測試post 提交使用payload 方式傳輸數據 ······················· 511
12.11 實現檔案上傳:<form>有刷新 ·················· 513
12.12 實現檔案上傳:AJAX 無刷新 ··················· 515
第13 章 搭建Maven Nexus 私服環境 ····················· 516
13.1 下載Nexus OSS 版本 ································· 517
13.2 配置Nexus OSS 環境變數 ·························· 520
13.3 安裝服務和啟動服務 ·································· 520
13.4 登錄Nexus ················································ 521
13.5 重置Nexus 登錄密碼 ································· 523
13.6 解決連線異常 ············································ 524
13.7 倉庫的類型 ················································ 526
13.8 創建hosted 類型的Maven 倉庫 ·················· 527
13.9 創建proxy 類型的Maven 倉庫 ··················· 529
13.10 創建group 類型的Maven 倉庫 ················· 531
13.11 group-local-proxy 倉庫之間的關係 ············· 532
13.12 配置Nexus 私服URL ······························· 532
13.13 配置登錄Nexus 的賬號和密碼 ·················· 533
13.14 開啟SNAPSHOT 版本支持 ······················· 534
13.15 確認maven-group 倉庫內容為空 ··············· 535
13.16 在IDEA 中創建測試用的項目 ·················· 536
13.17 創建Java 類和執行deploy 操作 ················ 537
13.18 成功進行依賴 ·········································· 540
13.19 獲取最新的RELEASE 版本 ······················ 542
13.20 在Maven 倉庫中進行搜尋 ························ 543
第14 章 Maven 項目生命周期 ································· 545
14.1 生命周期 ··················································· 545
14.1.1 clean 生命周期 ······································ 546
14.1.2 default 生命周期 ···································· 546
14.1.3 site 生命周期 ········································ 547
14.2 創建測試項目 ············································ 550
14.3 clean 選單的使用 ······································· 553
14.4 validate 選單的使用 ···································· 553
14.5 compile 選單的使用 ··································· 555
14.6 test 選單的使用 ·········································· 556
14.7 package 選單的使用 ··································· 557
14.8 verify 選單的使用 ······································ 558
14.9 install 選單的使用 ······································ 558
14.10 site 選單的使用 ········································ 559
14.11 deploy 選單的使用 ···································· 560
第15 章 Maven 依賴的套用 ····································· 561
15.1 依賴的範圍 ················································ 561
15.1.1 依賴範圍:compile ································ 561
15.1.2 依賴範圍:test ······································ 564
15.1.3 依賴範圍:provided ······························· 565
15.1.4 依賴範圍:runtime ································· 566
15.1.5 四種依賴範圍總結 ································· 568
15.2 傳遞性依賴和依賴範圍 ······························ 568
15.3 依賴調解 ··················································· 573
15.3.1 最短路徑 ············································· 573
15.3.2 路徑相同 ············································· 576
15.4 可選依賴 ··················································· 577
15.5 排除依賴 ··················································· 580
15.6 集中處理版本 ············································ 582
15.7 顯示依賴結構 ············································ 584
15.7.1 在IDEA 中顯示依賴結構 ························ 584
15.7.2 使用命令mvn dependency:list 顯示依賴列表 ······················· 586
15.7.3 使用命令mvn dependency:tree 顯示依賴樹 ····························· 587
15.7.4 使用命令mvn dependency:analyze 分析依賴 ························· 588
15.8 依賴snapshot 版本的自動更新特性 ············· 590
15.9 將source 原始碼打包並發布 ······················· 593
15.10 跳過測試 ················································· 594
第16 章 Maven 的聚合與繼承 ································· 596
16.1 項目的聚合 ················································ 596
16.1.1 創建父項目 ·········································· 596
16.1.2 創建DAO 子模組 ·································· 597
16.1.3 創建Service 子模組和Web 子模組 ············· 598
16.1.4 編輯DAO 子模組中的pom.xml 配置檔案 ··························· 600
16.1.5 創建DAO 類並發布 ······························· 600
16.1.6 創建Service 類並引用DAO 子模組 ············ 601
16.1.7 編輯Service 子模組中的pom.xml 配置檔案並發布 ·················· 602
16.1.8 創建java 和resources 資料夾 ···················· 603
16.1.9 添加Servlet 和JSTL 依賴 ························ 603
16.1.10 創建Servlet 類並引用Service 子模組 ········ 603
16.1.11 編輯Web 子模組中的pom.xml 配置檔案並發布 ····················· 604
16.1.12 運行項目 ············································ 605
16.1.13 自動導出war 包檔案 ····························· 605
16.1.14 遠程倉庫中的內容 ································ 606
16.2 實現項目的繼承 ········································· 607
作者簡介
高洪岩,某世界500強公司項目經理,有10年Java開發經驗,精通Java語言,擅長Java EE、分散式、微服務、高性能伺服器架構、報表、多執行緒和高並發相關的技術內容,理論與實踐經驗頗豐。出版《Java多執行緒編程核心技術》《Java並發編程:核心方法與框架》《NIO與Socket編程技術指南》《Java EE核心框架實戰 第2版》《Jasper Reports+iReport報表開發詳解》《Android學習精要》《虛擬化高性能NoSQL存儲案例精粹 Redis+Docker》等圖書。