計算之道 捲III:C++語言與JVM源碼

黃俊 賴志環

  • 出版商: 清華大學
  • 出版日期: 2025-05-01
  • 售價: $714
  • 語言: 簡體中文
  • ISBN: 730268300X
  • ISBN-13: 9787302683001
  • 相關分類: C++ 程式語言
  • 下單後立即進貨 (約4週~6週)

  • 計算之道 捲III:C++語言與JVM源碼-preview-1
  • 計算之道 捲III:C++語言與JVM源碼-preview-2
  • 計算之道 捲III:C++語言與JVM源碼-preview-3
計算之道 捲III:C++語言與JVM源碼-preview-1

相關主題

商品描述

"《計算之道捲 Ⅲ:C++語言與 JVM 源碼》是一本深入探討電腦科學與技術的圖書。本書旨在幫助讀者更深入地理解電腦內部的工作原理,並探索從高級編程語言到 JVM 源碼等核心概念。本書適合對電腦科學和底層技術感興趣的讀者,無論是學習電腦基礎知識還是進一步擴展技術視野,都能從本書中獲益良多。 在《計算之道捲Ш:C++語言與JM 源碼》中,作者以清晰易懂的語言詳細介紹了高級編程語言的工作原理。通過本書,讀者將瞭解編程語言的特性和原理、電腦網絡、JVM 等關鍵概念,從而更好地理解電腦執行程序的方式。以及將學習JVM 源碼,並瞭解 hotspot、全局模塊等底層機制。結合實例和案例研究,讀者將能夠編寫高效、可靠的高性能應用程序。 無論是學生、工程師還是對電腦科學感興趣的讀者,本書都將成為你不可或缺的參考資源。"

目錄大綱

目錄

第1 章 C++語言的推理 1

1.1 編程語言演變過程 1

1.2 C++語言出現的原因 3

1.2.1 C 語言圖書管理系統 4

1.2.2 C++語言的出現原因 5

1.2.3 C++語言圖書管理系統 7

1.3 面向過程和麵向對象 8

1.4 C++語言特性來源 11

1.5 其他編程語言原理推導 12

1.6 編程語言的共性 13

1.7 小結 15

第2 章 C++語言的特性和原理 17

2.1 對象和類原理 17

2.1.1 C++語言的class 關鍵字 19

2.1.2 C++語言的new/delete運算符 19

2.1.3 C++語言的this 指針 22

2.2 異常處理 23

2.2.1 C++語言異常處理 23

2.2.2 Java 異常處理 24

2.3 C++語言的特性 26

2.3.1 C++語言的hello world 26

2.3.2 C++語言的數據類型 27

2.3.3 C++語言的指針和引用 28

2.3.4 C++語言的類與對象 29

2.3.5 C++語言的多態 31

2.3.6 C++語言的泛型編程 32

2.4 匯編、C 和C++語言存在的問題 35

2.4.1 匯編語言 35

2.4.2 C 語言 36

2.4.3 C++語言 37

2.4.4 最常見的問題 38

2.5 Java 語言出現的推論 40

2.5.1 內存泄漏和野指針規避 40

2.5.2 新語言的設計要求 42

2.5.3 新語言的兩種實現方法 43

2.6 如何通過底層來學習不同的編程語言 45

2.7 小結 48

第3 章 電腦網絡推理 50

3.1 電腦網絡的研究內容 50

3.2 電腦網絡協議 52

3.2.1 什麽是協議 52

3.2.2 誰來制定協議 53

3.2.3 協議分層 54

3.3 電腦網絡地址 56

3.3.1 MAC 地址 56

3.3.2 IP 地址 58

3.3.3 ARP 59

3.4 數據傳輸 61

3.5 電腦網絡下三層 61

3.6 小結 62

第4 章 傳輸協議原理 64

4.1 UDP 65

4.1.1 四元組 65

4.1.2 UDP 的特點 66

4.1.3 UDP 的使用場景 66

4.2 TCP 68

4.2.1 TCP 包頭部分 68

4.2.2 建立TCP 鏈接 69

4.2.3 釋放TCP 連接 71

4.2.4 TCP 狀態機 73

4.3 TCP 可靠傳輸重傳機制 75

4.4 TCP 可靠傳輸—滑動窗口 82

4.5 TCP 可靠傳輸—流量控制 85

4.6 TCP 可靠傳輸—擁塞控制 86

4.6.1 TCP 的擁塞控制原理 87

4.6.2 擁塞控制的算法 88

4.7 TCP 和UDP 的區別 92

4.8 小結 93

第5 章 Linux 網絡包處理源碼分析 94

5.1 Linux 網絡收包的總體流程 96

5.2 Linux 啟動的網絡準備 98

5.2.1 網卡e100 驅動初始化 99

5.2.2 啟動網卡e100 105

5.2.3 網卡e100 網絡數據發送隊列初始化 107

5.2.4 網卡e100 網絡數據接收隊列初始化 109

5.2.5 網卡e100 的中斷處理 112

5.2.6 開啟硬中斷 113

5.2.7 軟中斷ksoftirqd 內核線程 114

5.2.8 網絡子系統初始化 121

5.2.9 協議棧註冊 123

5.3 Linux 接收網絡數據 129

5.3.1 e100 對網絡數據包的存儲 130

5.3.2 硬中斷處理 131

5.3.3 軟中斷處理 132

5.3.4 網絡層IP 協議棧處理 143

5.3.5 傳輸層UDP 協議棧處理 152

5.4 網絡消息最終歸途 159

5.4.1 激活用戶進程 159

5.4.2 recvfrom 系統調用 167

5.4.3 Socket 數據結構 170

5.4.4 socket 創建 171

5.5 小結 179

第6 章 應用層協議原理 181

6.1 HTTP 協議 181

6.1.1 DNS 解析 182

6.1.2 發送HTTP 請求 183

6.1.3 HTTP 請求的響應 184

6.1.4 瀏覽器解析 185

6.1.5 瀏覽器進行頁面渲染 186

6.1.6 一次完整的HTTP 請求小結 187

6.2 掃碼支付背後那些事 188

6.2.1 掃碼支付的工作流程 189

6.2.2 掃碼支付如何保證交易安全 189

6.2.3 HTTPS 協議 191

6.2.4 Https 協議建立連接 194

6.3 直播使用的流媒體協議 197

6.3.1 直播的技術組成部分 197

6.3.2 直播的核心技術 197

6.4 小結 199

第7 章 Java Hello World 底層推理 201

7.1 回顧C 語言的Hello World 201

7.1.1 Hello World 在Linux 平臺編譯執行過程 202

7.1.2 hello.c 程序編譯過程 202

7.1.3 hello.out 可執行文件格式及內存映像 203

7.1.4 hello.out 程序裝載和執行的過程 203

7.1.5 入口函數和程序初始化 205

7.1.6 Windows 操作系統的hello.c 206

7.1.7 C 語言的平臺關聯性 207

7.2 Java 的HelloWorld 208

7.3 Hello World 的運行 211

7.4 HelloWorld 的字節碼文件結構 213

7.5 執行HelloWorld 的main 方法前的過程 217

7.6 HelloWorld 的main 方法的執行過程 221

7.6.1 JVM 的執行引擎 221

7.6.2 JVM 的GC 222

7.7 《JVM 規範手冊》 223

7.8 小結 224

第8 章 Hotspot JVM 啟動原理 226

8.1 啟動Hotspot VM 227

8.1.1 main()函數 228

8.1.2 JLI_Launch()函數 229

8.1.3 JVMInit()函數 232

8.1.4 ContinueInNewThread()函數 232

8.1.5 ContinueInNewThread0()函數 233

8.1.6 JavaMain()函數 234

8.2 類加載器 235

8.2.1 Bootstrap ClassLoader 類加載器 236

8.2.2 三層類加載器 239

8.2.3 雙親委派模型 244

8.3 Hotspot CreateVM 245

8.3.1 初始化系統屬性及SystemProperites 247

8.3.2 給JVM 的主乾添加枝葉——程序參數解釋 250

8.3.3 線程安全點 255

8.3.4 初始化全局線程隊列及vm_init_globals 257

8.3.5 JavaThread 257

8.4 初始化全局模塊init_globals 258

8.4.1 JVM 解釋器模塊 261

8.4.2 代碼高速緩存模塊 265

8.4.5 universe_init 267

8.4.3 StubRountines 272

8.4.6 marksweep_init 275

8.5 小結 276