購物比價找書網找車網
FindBook
排序:
 
 有 1 項符合

唐剛

的圖書
Rust實戰
$ 678
Rust實戰
作者:(新西蘭蒂姆·麥克納馬拉 / 譯者:金偉,唐剛 
出版社:人民郵電出版社
出版日期:2022-09-01
語言:簡體中文   規格:平裝 / 406頁 / 16k/ 19 x 26 x 2.03 cm / 普通級/ 單色印刷 / 1-1
博客來 博客來 - 計算機概論  - 來源網頁  
圖書介紹看圖書介紹
圖書介紹 - 資料來源:博客來   評分:
圖書名稱:Rust實戰

內容簡介

本書通過探索多種系統程式設計概念和技術引入Rust程式設計語言,在深入探索計算機工作原理的同時,幫助讀者瞭解Rust的所有權系統、Trait、包管理、錯誤處理、條件編譯等概念,並通過源自現實的示例來説明讀者瞭解Rust中的記憶體模型、檔操作、多執行緒、網路程式設計等內容。

本書旨在説明讀者理解如何用Rust進行系統程式設計,並提供了一些使用Rust編寫代碼的技巧。本書給出了10餘個源自現實的示例,讓讀者不僅能瞭解Rust語法,還能瞭解Rust的實際運用。

本書適合所有對Rust感興趣的讀者閱讀。要更好地掌握本書涵蓋的內容,讀者應具備一定的程式設計經驗,至少應對電腦程式設計的基本概念有所瞭解。

 

作者介紹

蒂姆·麥克納馬拉(Tim McNamara),是文本挖掘、自然語言處理和資料工程等領域的專家。他是Rust Wellington(紐西蘭Rust開發者活動)的組織者,並且定期通過社交網站主持Rust程式設計教學。

 

目錄

第一部分 Rust語言的特色

第1章 Rust語言介紹 3

1.1 哪些地方使用了Rust? 4

1.2 在工作中提倡使用Rust 5

1.3 Rust初體驗 6

1.3.1 直通“Hello, world!” 6

1.3.2 第 一個Rust程式 8

1.4 下載本書原始程式碼 10

1.5 使用Rust語言的感受如何 10

1.6 Rust語言是什麼? 13

1.6.1 Rust的目標:安全性 14

1.6.2 Rust的目標:生產力 18

1.6.3 Rust的目標:控制 19

1.7 Rust的主要特點 20

1.7.1 性能 20

1.7.2 併發 21

1.7.3 記憶體使用效率 21

1.8 Rust的缺點 21

1.8.1 迴圈資料結構 21

1.8.2 編譯速度 22

1.8.3 嚴格 22

1.8.4 語言的大小 22

1.8.5 炒作 22

1.9 TLS安全性問題的研究 22

1.9.1 “心臟出血” 23

1.9.2 跳轉到失敗 23

1.10 Rust最適用於哪些領域? 25

1.10.1 命令列實用程式 25

1.10.2 資料處理 25

1.10.3 擴展應用程式 25

1.10.4 資源受限的環境 26

1.10.5 伺服器端應用 26

1.10.6 桌面應用程式 26

1.10.7 桌面 26

1.10.8 移動端 27

1.10.9 Web 27

1.10.10 系統程式設計 27

1.11 Rust的隱式特性:它的社區 27

1.12 Rust術語表 28

本章小結 28

第2章 Rust語言基礎 29

2.1 創建一個可運行的程式 30

2.1.1 編譯單檔的Rust程式 30

2.1.2 使用cargo編譯Rust專案 31

2.2 初探Rust語法 32

2.3 數位類型 34

2.3.1 整數和浮點數 34

2.3.2 整數的二進位、八進制及十六進位標記法 35

2.3.3 數字的比較運算 36

2.3.4 有理數、複數和其他數位類型 41

2.4 流程控制 43

2.4.1 for迴圈:反覆運算的中心支柱 43

2.4.2 continue:跳過本次反覆運算餘下的部分 45

2.4.3 while:迴圈,直到迴圈條件改變了迴圈的狀態 45

2.4.4 loop:Rust迴圈結構的基本元件 46

2.4.5 break:立即退出迴圈 46

2.4.6 if、if else和else:條件測試 47

2.4.7 match:類型感知的模式匹配 48

2.5 定義函數 50

2.6 使用引用 50

2.7 項目:繪製芒德布羅集 51

2.8 高級函式定義 54

2.8.1 顯式生命週期注解 54

2.8.2 泛型函數 55

2.9 創建grep-lite 58

2.10 使用陣列、切片和動態陣列來創建資料清單 61

2.10.1 陣列 61

2.10.2 切片 63

2.10.3 動態陣列 63

2.11 包含協力廠商代碼 65

2.11.1 增加對規則運算式的支持 66

2.11.2 生成包的當地語系化文檔 67

2.11.3 使用rustup管理Rust工具鏈 68

2.12 命令列參數的支持 68

2.13 從文件中讀取 70

2.14 從標準輸入中讀取 72

本章小結 73

第3章 複合資料類型 75

3.1 使用普通函數對API進行實驗 76

3.2 使用結構體為檔建模 77

3.3 使用impl為結構體添加方法 81

3.4 返回錯誤資訊 84

3.4.1 修改一個著名的全域變數 85

3.4.2 使用Result作為返回類型 88

3.5 定義並使用枚舉體 91

3.6 使用trait來定義共有的行為 95

3.6.1 創建名為Read的trait 95

3.6.2 為類型實現std::fmt::Display 96

3.7 將類型暴露給外部使用 99

3.8 創建內聯文檔 100

3.8.1 使用rustdoc給單個原始檔案生成文檔 101

3.8.2 使用cargo為一個包及其依賴的包生成文檔 101

本章小結 103

第4章 生命週期、所有權和借用 104

4.1 實現一個模擬的立方體衛星地面站 105

4.1.1 遇到第 一個生命週期問題 106

4.1.2 基本類型的特殊行為 109

4.2 本章圖例的說明 110

4.3 所有者是什麼?它有什麼職責? 111

4.4 所有權是如何移動的? 112

4.5 解決所有權的問題 114

4.5.1 在不需要完整所有權的地方,使用引用 116

4.5.2 使用更少的長存活期的值 119

4.5.3 在需要完整所有權的地方,複製長存活期的值 124

4.5.4 把資料包裝到特殊的類型中 127

本章小結 129

第二部分 揭開系統程式設計的神秘面紗

第5章 深入理解資料 133

5.1 位元模式和類型 133

5.2 整數的生存範圍 135

5.3 小數的表示形式 139

5.4 浮點數 139

5.4.1 觀察f32的內部 140

5.4.2 分離出符號位元 141

5.4.3 分離出指數 142

5.4.4 分離出尾數 143

5.4.5 剖析一個浮點數 145

5.5 定點數格式 147

5.6 從隨機位元組中生成隨機概率 151

5.7 實現一個CPU模擬器以建立函數也是資料的觀念 153

5.7.1 CPU原型1:加法器 153

5.7.2 CPU原型1完整的清單 157

5.7.3 CPU原型2:累加器 159

5.7.4 CPU原型3:調用函數 162

5.7.5 CPU 4:添加額外功能 168

本章小結 168

第6章 記憶體 169

6.1 指針 169

6.2 探索Rust的引用和指針類型 171

6.2.1 Rust中的原始指標 176

6.2.2 Rust指標的生態系統 178

6.2.3 智能指針構建塊 180

6.3 為程式提供存儲資料的記憶體 181

6.3.1 棧 181

6.3.2 堆 183

6.3.3 什麼是動態記憶體分配? 187

6.3.4 分析動態記憶體分配的影響 192

6.4 虛擬記憶體 194

6.4.1 背景 195

6.4.2 第 一步:讓一個進程來掃描它自己的記憶體 196

6.4.3 把虛擬位址翻譯為物理位址 198

6.4.4 第二步:通過作業系統來掃描位址空間 201

6.4.5 第三步:讀取和寫入進程記憶體中的位元組資料 203

本章小結 203

第7章 檔與存儲 204

7.1 檔案格式是什麼? 204

7.2 創建你自己的用於存儲資料的檔案格式 206

7.3 實現一個hexdump的克隆 208

7.4 Rust中的檔操作 211

7.4.1 使用Rust打開一個檔並控制檔的模式 211

7.4.2 使用std::fs::Path以一種類型安全的方式與檔案系統進行交互 212

7.5 使用基於日誌結構、僅追加的存儲架構,來實現一個鍵值存儲 213

7.5.1 鍵值模型 213

7.5.2 講解actionkv v1:一個帶有命令列介面的記憶體中的鍵值存儲 214

7.6 Actionkv v1:前端代碼 215

7.7 理解ACTIONKV的核心:LIBACTIONKV包 219

7.7.1 初始化ActionKV結構體 219

7.7.2 處理單條記錄 221

7.7.3 以確定的位元組順序將多位元組二進位資料寫入磁片 223

7.7.4 使用校驗和來驗證I/O錯誤 225

7.7.5 向已存在的資料庫中插入一個新的鍵值對 227

7.7.6 actionkv的完整清單 228

7.7.7 使用HashMap和BTreeMap來處理鍵和值 232

7.7.8 創建一個HashMap並用值來填充它 234

7.7.9 從HashMap和BTreeMap中來檢索值 235

7.7.10 在HashMap和BTreeMap之間如何選擇 236

7.7.11 給actionkv v2.0添加資料庫索引 237

本章小結 240

第8章 網路 242

8.1 全部的網路體系都在7個分層中 243

8.2 使用reqwest來生成一個HTTP GET請求 245

8.3 trait對象 247

8.3.1 trait物件能做什麼? 247

8.3.2 trait物件是什麼? 247

8.3.3 創建一個微型的角色扮演遊戲:rpg項目 248

8.4 TCP 251

8.4.1 埠號是什麼? 252

8.4.2 把主機名稱轉換為IP位址 252

8.5 以符合工效學的方式處理來自多個包的錯誤 258

8.5.1 問題:無法返回多種錯誤類型 259

8.5.2 通過定義錯誤類型來包裝下游的錯誤 262

8.5.3 使用unwrap()和expect()來“作弊” 267

8.6 MAC地址 268

8.7 使用Rust的枚舉體來實現狀態機 271

8.8 原始TCP 272

8.9 創建一個虛擬網路設備 272

8.10 原始HTTP 273

本章小結 282

第9章 時間與時間保持 283

9.1 背景 284

9.2 時間源 285

9.3 一些相關的術語定義 286

9.4 時間的編碼 287

9.5 clock v0.1.0:教會一個應用程式如何報時 288

9.6 clock v0.1.1:格式化時間戳記以符合ISO 8601和電子郵件的標準 289

9.6.1 重構clock v0.1.0的代碼以支援更廣泛的體系結構 290

9.6.2 時間的格式化 291

9.6.3 提供一個完整的命令列介面 291

9.6.4 clock v0.1.1:完整的項目代碼 293

9.7 clock v0.1.2:設置時間 295

9.7.1 相同的行為模式 295

9.7.2 給使用libc的作業系統來設置時間 296

9.7.3 在Windows上設置時間 298

9.7.4 clock v0.1.2:完整的清單 300

9.8 改善錯誤處理 303

9.9 clock v0.1.3:使用NTP來解決時鐘之間的差異 304

9.9.1 發送NTP請求並解析回應 304

9.9.2 依據伺服器的回應來調整本地時間 306

9.9.3 在使用了不同的精度和紀元的時間標記法之間進行轉換 308

9.9.4 clock v0.1.3:完整的清單 309

本章小結 316

第10章 進程、執行緒和容器 318

10.1 匿名函數 319

10.2 產生執行緒 320

10.2.1 引入閉包 320

10.2.2 產生一個新執行緒 321

10.2.3 產生幾個執行緒的效果 321

10.2.4 產生很多個執行緒的效果 322

10.2.5 重新生成這些結果 324

10.2.6 共用的變數 328

10.3 閉包與函數的差異 330

10.4 從多執行緒解析器和代碼生成器中程式化地生成頭像 331

10.4.1 如何運行render-hex以及預期的輸出 331

10.4.2 單執行緒版本render-hex的概要介紹 333

10.4.3 為每個邏輯上的任務產生一個執行緒 341

10.4.4 使用執行緒池和任務佇列 343

10.5 併發與任務虛擬化 350

10.5.1 執行緒 352

10.5.2 上下文切換是什麼? 352

10.5.3 進程 353

10.5.4 WebAssembly 353

10.5.5 容器 353

10.5.6 為什麼要使用作業系統呢? 354

本章小結 354

第11章 內核 355

11.1 初級作業系統(FledgeOS) 355

11.1.1 搭建開發環境,用於開發作業系統內核 355

11.1.2 驗證開發環境 357

11.2 Fledgeos-0:先讓一些東西能運行起來 358

11.2.1 第 一次引導啟動 358

11.2.2 編譯的步驟 359

11.2.3 源清單 360

11.2.4 處理panic 364

11.2.5 使用VGA相容的文字模式寫入螢幕 365

11.2.6 _start():FledgeOS的main()函數 366

11.3 fledgeos-1:避免使用忙迴圈 367

11.3.1 通過直接與CPU交互來降低功耗 367

11.3.2 fledgeos-1的原始程式碼 368

11.4 fledgeos-2:自訂異常處理 369

11.4.1 幾乎可以正確地處理異常 369

11.4.2 fledgeos-2的原始程式碼 369

11.5 fledgeos-3:文本的輸出 370

11.5.1 把彩色的文本輸出到螢幕 371

11.5.2 控制枚舉體的記憶體表示形式 371

11.5.3 為何要使用枚舉體? 372

11.5.4 創建出一個類型,能夠用來輸出到VGA的框架緩衝區 372

11.5.5 輸出到螢幕 373

11.5.6 fledgeos-3的原始程式碼 373

11.6 fledgeos-4:自訂恐慌處理 375

11.6.1 實現一個恐慌處理常式,能夠向使用者報告錯誤 375

11.6.2 使用core::fmt::Write來重新實現panic() 376

11.6.3 實現core::fmt::Write 376

11.6.4 fledgeos-4的原始程式碼 377

本章小結 379

第12章 信號、中斷和異常 380

12.1 術語表 380

12.2 中斷是如何影響應用程式的? 383

12.3 軟體插斷 384

12.4 硬體中斷 385

12.5 信號處理 386

12.5.1 默認的行為 386

12.5.2 用來暫停和恢復一個程式的操作 386

12.5.3 列出作業系統支援的所有信號 389

12.6 使用自訂的行為來處理信號 389

12.6.1 在Rust中使用全域變數 390

12.6.2 使用全域變數來指示已經啟動了關機 392

12.7 發送由應用程式定義的信號 394

12.8 如何忽略信號? 396

12.9 從深層嵌套的調用棧中關閉程式 397

12.9.1 sjlj項目的介紹 399

12.9.2 在程式中設置固有函數 399

12.9.3 把指針轉換成其他類型 401

12.9.4 編譯sjlj項目 402

12.9.5 sjlj項目的原始程式碼 403

12.10 將這些技術應用於不支援信號的平臺的說明 406

12.11 修訂異常 406

本章小結 406
 

詳細資料

  • ISBN:9787115591395
  • 規格:平裝 / 406頁 / 16k / 19 x 26 x 2.03 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國
贊助商廣告
 
金石堂 - 今日66折
迷霧之子首部曲:最後帝國
66折: $ 251 
城邦讀書花園 - 今日66折
思考吧!啟發創造性思維的大師課──創意思考之父狄波諾,教你用水平思考法找到新點子
作者:愛德華‧狄波諾 (Edward de Bono)
出版社:商周出版
出版日期:2024-06-06
66折: $ 277 
 
金石堂 - 暢銷排行榜
敗北女角太多了!@comic (首刷限定版) 01
作者:いたち
出版社:東立出版社
出版日期:2024-12-09
$ 162 
Taaze 讀冊生活 - 暢銷排行榜
長期買進︰財金教授周冠男的42堂自制力投資課
作者:周冠男
出版社:遠見天下文化出版股份有限公司
出版日期:2024-07-31
$ 355 
金石堂 - 暢銷排行榜
張忠謀自傳:上冊 一九三一──一九六四
作者:張忠謀
出版社:遠見天下文化出版股份有限公司
出版日期:2024-11-29
$ 277 
Taaze 讀冊生活 - 暢銷排行榜
生命中最大的寶藏就是你自己Stand by Yourself
作者:曾寶儀
出版社:遠見天下文化出版股份有限公司
出版日期:2024-10-31
$ 331 
 
Taaze 讀冊生活 - 新書排行榜
不是搞不定人,是搞不懂人性【新裝版】:掌握人類行為的底層邏輯,到哪都吃得開!
作者:王心傲
出版社:時報文化出版企業股份有限公司
出版日期:2024-12-17
$ 252 
博客來 - 新書排行榜
張忠謀自傳全集(上下冊)
作者:張忠謀
出版社:天下文化
出版日期:2024-11-29
$ 869 
Taaze 讀冊生活 - 新書排行榜
32歲,一家四口用100萬環遊世界:沒規畫x預算少x破英文也OK!從風土人情到實用技巧,開啟親子冒險全新篇章
作者:李婷萱
出版社:墨刻
出版日期:2024-12-14
$ 322 
Taaze 讀冊生活 - 新書排行榜
名中醫傳承一味中藥對症良方【暢銷修訂版】
作者:陳旺全
出版社:原水文化
出版日期:2024-12-21
$ 385 
 

©2024 FindBook.com.tw -  購物比價  找書網  找車網  服務條款  隱私權政策