碼農野蠻生長——Java源碼閱讀方法論

沈進群

  • 出版商: 電子工業
  • 出版日期: 2025-07-01
  • 售價: $528
  • 語言: 簡體中文
  • 頁數: 324
  • ISBN: 7121506157
  • ISBN-13: 9787121506154
  • 相關分類: Java 相關技術
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

如何克服閱讀經典源碼的畏難情緒?如何將零散的 Java 高級知識串聯為一個整體?如何將 Java 高級知識的學習與實踐融為一體?閱讀本書,你將獲得想要的答案。本書向流暢閱讀集高並發、高可用於一體的 ZooKeeper 源碼的終極目標出發,從環境搭建開始點滴積累,提供了一種與眾不同的 Java 語言學習路徑。 本書首先講解了源碼閱讀環境選型、必備插件準備、快捷操作高級技巧、源碼跟蹤調試高級技巧及常見問題分析,介紹了如何構建 ZooKeeper 源碼及多個底層開源組件的源碼閱讀環境;其次完整地論述了字符集的基礎知識,說明了字符亂碼產生的原因及根本的解決辦法;接著以裝飾模式為核心構建一套新的I/O 學習方法,並結合源碼深入分析了線程、線程池、ThreadFactory 和 ThreadLocal;然後以 JCStress 壓測為輔助手段深入講解 Java 內存模型,並深入分析了高並發常用編程組件;最後圍繞案例講解基於 BIO、NIO、AIO 的網絡編程模型,以實戰形式分析 RMI、WebService、RPC、HttpServer、HttpClient 等 JDK 內置組件。

目錄大綱

第1章 打磨源碼閱讀環境
1.1 集成開發環境準備
1.1.1 Eclipse IDE安裝與優化
1.1.2 IntelliJ IDEA社區版安裝與優化
1.2 Eclipse開發環境高級設置
1.2.1 高效編程必備設置
1.2.2 全鍵盤操作修煉之道
1.3 IDEA快捷操作進階
1.3.1 快捷操作之Live Templates
1.3.2 快捷操作之Postfix Completion
1.4 編碼效率提升利器——Vrapper與IdeaVim速成
1.4.1 命令模式
1.4.2 文本編輯模式
1.4.3 尾行模式
1.5 JDK版本選型、安裝和配置
1.5.1 版本選型——OpenJDK 11
1.5.2 Eclipse環境設置Java Module可訪問性
1.5.3 IDEA中設置JDK Module可見性
1.6 本章小結
第2章 創建示例工程,開啟源碼調試研究
2.1 示例工程的設計原則
2.2 創建標準工作區——Eclipse
2.3 創建標準工作區——IntelliJ IDEA
2.4 源碼跟蹤及調試實用技巧——Eclipse
2.4.1 六種顯式斷點各盡其用
2.4.2 六種隱式斷點深度揭秘
2.4.3 揭秘斷點調試中的八大“靈異”事件
2.4.4 持續提升Debug技能
2.5 基於IntelliJ IDEA的源碼跟蹤及調試實用技巧
2.5.1 IDEA調試功能“平替”Eclipse
2.5.2 IDEA高階調試技巧
2.5.3 調試侵入幹擾程序功能和性能
2.6 本章小結
第3章 導入、編譯與運行ZooKeeper源碼
3.1 ZooKeeper 3.4.14源碼閱讀準備
3.1.1 ZooKeeper 3.4.14源碼導入Eclipse
3.1.2 ZooKeeper 3.4.14源碼導入IDEA
3.2 極速簡易法開啟ZK工程驗證
3.2.1 ZK編譯常見問題處理
3.2.2 突破源碼閱讀第一關
3.2.3 ZK服務端啟動
3.2.4 ZK客戶端啟動連接
3.3 JDK 11源碼解壓縮及導入
3.4 Log4j源碼閱讀準備
3.4.1 源碼搜索方法匯總
3.4.2 將日誌組件源碼導入到示例工程
3.4.3 補充導入循環依賴組件
3.5 SLF4J源碼閱讀準備
3.6 JUnit源碼閱讀準備
3.7 本章小結
第4章 根治中文亂碼——Java字符集考證
4.1 常見字符集與字符編碼辨識
4.1.1 ASCII碼回顧
4.1.2 單字節拉丁字符集ISO-8859-1
4.1.3 雙字節中文字符集GB2312
4.1.4 漢字擴展庫GBK與CP936代碼頁
4.1.5 Windows操作系統中的ANSI
4.2 統一碼(Unicode)
4.2.1 動手制作Unicode字典表
4.2.2 Unicode字符集知識體系
4.2.3 基於Unicode字符集的六大編碼辨析
4.3 發掘Java端字符集控制的工具箱
4.3.1 JDK命令行工具與字符集控制參數
4.3.2 操作系統對字符集的影響
4.3.3 IDE中的字符編碼設置
4.4 讓亂碼原地現形的組合拳
4.4.1 解決亂碼的策略
4.4.2 字符集有損轉換與無損轉換實踐
4.4.3 常見亂碼典型特征識別
4.4.4 Java命令行參數解決亂碼問題
4.4.5 IDE設置與亂碼處置
4.4.6 通過代碼轉換解決亂碼(String類)
4.4.7 操作系統側修正亂碼
4.5 字符集控制底層邏輯與JDK源碼解讀
4.5.1 UTF-16字符編碼關聯Character類
4.5.2 String類中的顯式或隱式編碼轉換
4.5.3 所有字符集或編碼的祖先——Charset類
4.5.4 Java序列化之DataOutputStream類
4.5.5 Java反序列化之DataInputStream類
4.5.6 屬性文件處理與Properties類
4.5.7 標準輸入、標準輸出與System類
4.6 本章小結
第5章 摒棄死記硬背,全方位精通Java I/O體系
5.1 Java I/O迂回學習歸納總結
5.1.1 深扒Java I/O體系學習十大槽點
5.1.2 Java I/O學習的必要性
5.1.3 Java I/O學習範式
5.2 字節流基礎應用及源碼分析
5.2.1 向本地磁盤寫Java對象
5.2.2 兩種方式從本地磁盤獲取文本內容
5.2.3 自定義輸入流——按指定分隔符讀取
5.2.4 字節輸出流源碼解讀
5.2.5 字節輸入流源碼解讀
5.3 節點流、過濾流與序列化的綜合應用
5.3.1 八個原生數據類型的字節碼輸入輸出
5.3.2 自定義原生數據類型可視化輸出
5.3.3 Java對象的序列化與反序列化
5.3.4 回退流應用原理解析
5.4 字符流基礎應用及源碼分析
5.4.1 字符輸入流的整行讀取
5.4.2 從源碼看字符流與字節流的關系
5.5 字符流與半個漢字讀寫問題
5.5.1 字符輸出流對SMP文字的支持
5.5.2 用混編字符串考查字符輸出流
5.6 從BIO到NIO的延伸閱讀
5.6.1 NIO中的通道和緩沖區
5.6.2 自定義字節緩沖區MyByteBuffer
5.6.3 模擬Netty中的雙向指針字節緩沖區
5.6.4 NIO中的性能優化
5.7 本章小結
第6章 盤點線程、線程狀態與線程池
6.1 輕松入門多線程編程
6.1.1 三種線程初始化方法比較
6.1.2 返回式線程的回調與阻塞
6.1.3 源碼解讀之java.lang.Thread類
6.2 枚舉全部線程狀態,探究狀態跳轉規則
6.2.1 枚舉線程運行時的六種狀態
6.2.2 區分Thread類中的interrupt關鍵字
6.2.3 線程中斷不能立即生效的例外情況
6.3 線程池與線程工廠應用
6.3.1 線程池中的單例多線程
6.3.2 靜態變量無懼多線程幹擾
6.3.3 帶返回參數的線程池應用
6.3.4 ThreadFactory簡單應用
6.4 線程本地對象與線程安全
6.4.1 ThreadLocal類應用實例
6.4.2 從源碼再認識ThreadLocal
6.5 非侵入式多線程優化重構
6.6 本章小結
第7章 挖掘Java高並發支撐體系
7.1 線程安全基礎之synchronized關鍵字
7.1.1 synchronized關鍵字鎖定對象驗證
7.1.2 線程通信與wait、notify和notifyAll
7.2 Java內存模型與高並發陷阱
7.2.1 JMM原子性檢驗及實現策略
7.2.2 JMM可見性驗證及應對策略
7.2.3 用JCStress驗證JMM的有序性
7.2.4 final關鍵字語義分析
7.3 ZK組件之高並發Lock應用
7.3.1 LockSupport功能演示
7.3.2 重入鎖ReentrantLock詳細解讀
7.3.3 AQS底層的原子性與可見性
7.3.4 讀寫分離與ReentrantReadWriteLock
7.4 ZK組件之高並發同步工具應用
7.4.1 ZK應用之CountDownLatch
7.4.2 CountDownLatch源碼解析
7.5 ZK組件之高性能List、Set和Map
7.5.1 ArrayList線程不安全分析
7.5.2 線程安全的List實現及Vector類解析
7.5.3 讀多寫少之CopyOnWriteArrayList
7.6 ZK組件之高並發Queue應用
7.6.1 單鎖數組隊列ArrayBlockingQueue
7.6.2 雙鎖鏈表隊列LinkedBlockingQueue
7.6.3 無鎖無界隊列ConcurrentLinkedQueue
7.7 本章小結
第8章 探索網絡原理與網絡應用的邊界
8.1 阻塞式網絡編程模型
8.1.1 Java阻塞式網絡編程
8.1.2 基於BIO的雙向簡易聊天室實現
8.1.3 基於NIO的阻塞式網絡編程模型
8.2 非阻塞、多路復用和異步網絡編程模型
8.2.1 基於NIO的非阻塞式網絡編程模型
8.2.2 基於Selector的多路復用網絡編程模型
8.2.3 基於AIO的異步網絡編程模型
8.3 JDK內置網絡組件應用
8.3.1 遠程方法調用(RMI)
8.3.2 WebService遠程調用
8.3.3 遠程過程調用(RPC)
8.3.4 JDK內置HTTP協議支持
8.4 ZK組件之網絡應用
8.4.1 Netty模式應用
8.4.2 ZK工程中的NIO模式應用分析
8.4.3 ZK工程中Netty應用分析
8.4.4 粘包拆包問題處理
8.5 本章小結