Erlang趣學指南

Erlang趣學指南

《Erlang趣學指南》是2016年9月人民郵電出版社出版的圖書,作者是[加]弗萊德·赫伯特(Fred Hébert)。

基本介紹

  • 中文名:Erlang趣學指南
  • 作者:[加]弗萊德·赫伯特(Fred Hébert)
  • 出版時間:2016年9月
  • 出版社:人民郵電出版社
  • 頁數:469 頁
  • ISBN:9787115431905
  • 定價:79 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

這是一本講解Erlang程式語言的入門指南,內容通俗易懂,插圖生動幽默,示例短小清晰,結構安排合理。書中從Erlang的基礎知識講起,融匯所有的基本概念和語法。內容涉及模組、函式、類型、遞歸、錯誤和異常、常用數據結構、並行編程、多處理、OTP、事件處理,以及所有Erlang的重要特性和強大功能。

圖書目錄

第1章 啟程 1
1.1 使用Erlang shell 1
1.1.1 輸入shell命令 1
1.1.2 退出shell 2
1.2 Erlang基礎知識 3
1.2.1 數值類型 3
1.2.2 不變的變數 4
1.2.3 原子 5
1.2.4 布爾代數和比較操作符 6
1.2.5 元組 8
1.2.6 列表 10
1.2.7 列表推導式 13
1.3 處理二進制數據 14
1.3.1 位語法 15
1.3.2 二進制數的按位操作 17
1.3.3 二進制字元串 18
1.3.4 二進制推導式 19
第 2章 模組 20
2.1 什麼是模組 20
2.2 創建模組 21
2.3 編譯代碼 23
2.4 定義宏 26
2.5 模組的其他內容 27
2.5.1 元數據 27
2.5.2 環形依賴 28
第3章 函式 29
3.1 模式匹配 29
3.1.1 模式進階 31
3.1.2 綁定中的變數 31
3.2 衛語句 33
3.3 if表達式 34
3.4 case ... of表達式 37
3.5 如何選擇 38
第4章 類型 39
4.1 動態強類型 39
4.2 類型轉換 40
4.3 數據類型檢測函式 41
4.4 致靜態類型愛好者 43
第5章 遞歸 44
5.1 遞歸的工作原理 44
5.1.1 列表的長度 45
5.1.2 列表長度的尾遞歸實現 46
5.2 更多遞歸函式 47
5.2.1 duplicate函式 47
5.2.2 reverse函式 48
5.2.3 sublist函式 49
5.2.4 zip函式 50
5.2.5 快速排序 51
5.3 不僅僅是列表 53
5.4 遞歸思維 55
第6章 高階函式 58
6.1 一切都是函式 58
6.2 匿名函式 60
6.2.1 匿名函式的其他用途 60
6.2.2 函式的作用域和閉包 61
6.3 映射、過濾器、摺疊以及其他 63
6.3.1 過濾器 63
6.3.2 摺疊一切 64
6.3.3 其他抽象 66
第7章 錯誤和異常 67
7.1 錯誤編譯 67
7.1.1 編譯期錯誤 67
7.1.2 邏輯錯誤 69
7.1.3 運行時錯誤 69
7.2 引發異常 71
7.2.1 出錯異常 71
7.2.2 退出異常 72
7.2.3 拋出異常 73
7.3 處理異常 74
7.3.1 處理不同類型的異常 74
7.3.2 catch後的after語句 76
7.3.3 嘗試多個表達式 76
7.3.4 更多選擇 78
7.4 在樹中使用try語句 80
第8章 用函式式思維解決問題 82
8.1 逆波蘭式計算器 82
8.1.1 RPN計算器的工作原理 82
8.1.2 實現RPN計算器 84
8.1.3 代碼測試 85
8.2 從希思羅到倫敦 87
8.2.1 遞歸地解決問題 87
8.2.2 編寫代碼 89
8.2.3 不使用Erlang shell運行程式 93
第9章 常用數據結構簡介 95
9.1 記錄 95
9.1.1 定義記錄 95
9.1.2 讀取記錄欄位值 97
9.1.3 更新記錄 99
9.1.4 共享記錄定義 99
9.2 鍵/值存儲 100
9.2.1 小數據量存儲 100
9.2.2 大數據量存儲:字典和通用平衡樹 101
9.3 集合 102
9.4 有向圖 104
9.5 佇列 104
9.6 小結 105
第 10章 並發編程漫遊指南 106
10.1 不必驚慌 106
10.2 並發概念 107
10.2.1 伸縮性 108
10.2.2 容錯 108
10.2.3 並發實現 109
10.3 並非完全不能線性伸縮 110
10.4 再見,謝謝你的魚 111
10.4.1 創建進程 112
10.4.2 傳送訊息 113
10.4.3 接收訊息 114
第 11章 深入多重處理 118
11.1 定義進程狀態 118
11.2 隱藏訊息實現 120
11.3 逾時 121
11.4 選擇性接收 123
11.4.1 選擇性接收的風險 124
11.4.2 信箱使用的其他風險 126
第 12章 錯誤與進程 127
12.1 連結 127
12.1.1 捕獲退出信號 129
12.1.2 老異常,新概念 130
12.2 監控器 133
12.3 命名進程 134
第 13章 並發套用設計 139
13.1 理解問題 139
13.2 設計協定 141
13.3 結構 143
13.4 事件模組 143
13.4.1 事件和循環 144
13.4.2 增加接口 146
13.5 事件伺服器 148
13.5.1 處理訊息 149
13.5.2 代碼熱升級 152
13.5.3 隱藏訊息細節 153
13.6 測試 155
13.7 增加監督功能 156
13.8 命名空間 157
第 14章 OTP簡介 158
14.1 提煉通用進程 158
14.2 基礎伺服器 159
14.2.1 kitty伺服器 159
14.2.2 通用化同步調用 161
14.2.3 通用化伺服器循環 162
14.2.4 啟動函式 164
14.2.5 通用化kitty伺服器 165
14.3 專用與通用 166
14.4 面向未來的回調 167
14.4.1 init函式 167
14.4.2 handle_call函式 168
14.4.3 handle_cast函式 169
14.4.4 handle_info函式 169
14.4.5 terminate函式 169
14.4.6 code_change函式 169
14.5 gen_server實踐 170
第 15章 令人憤怒的有限狀態機 174
15.1 什麼是有限狀態機 174
15.2 通用有限狀態機 178
15.2.1 init函式 178
15.2.2 StateName函式 178
15.2.3 handle_event函式 179
15.2.4 handle_syn_event函式 179
15.2.5 code_change和terminate函式 179
15.3 交易系統規格說明 179
15.3.1 操作定義 180
15.3.2 定義狀態圖和狀態遷移 181
15.4 遊戲交易 186
15.4.1 公共接口 186
15.4.2 FSM到FSM的函式 187
15.4.3 gen_fsm回調函式 189
15.5 為自己驕傲 196
15.6 適用於真實世界嗎 197
第 16章 事件處理器 198
16.1 處理它!*泵式散彈槍* 198
16.2 通用事件處理器 199
16.2.1 init和terminate函式 200
16.2.2 handle_event函式 200
16.2.3 handle_call函式 201
16.2.4 handle_info函式 201
16.2.5 code_change函式 201
16.3 現在是冰壺比賽時間 201
16.3.1 記分牌 202
16.3.2 比賽事件 203
16.3.3 通知新聞界 206
第 17章 誰來監督監督者 211
17.1 監督者中的概念 211
17.2 使用監督者 213
17.2.1 重啟策略 213
17.2.2 重啟限制 215
17.2.3 子進程規格說明 215
17.3 樂隊排練 217
17.3.1 音樂人 217
17.3.2 樂隊監督者 220
17.4 動態監督 223
17.4.1 動態使用標準監督者 223
17.4.2 使用simple_one_for_one監督者 224
第 18章 構建套用 226
18.1 進程池 226
18.1.1 洋蔥理論 227
18.1.2 進程池監督樹 228
18.2 實現監督者 230
18.3 進程池伺服器 233
18.4 實現工作者 239
18.5 運行進程池 240
18.6 小結 242
第 19章 構建OTP套用 243
19.1 我還有輛車是一個游泳池 243
19.2 套用資源檔案 244
19.3 把ppool轉換成OTP套用 246
19.4 application行為 247
19.5 從混亂到套用 249
19.6 庫套用 251
第 20章 深入OTP套用 253
20.1 從OTP套用到真實的套用 253
20.1.1 套用檔案 254
20.1.2 套用回調模組和監督者 255
20.1.3 分派器 256
20.1.4 計數模組 264
20.2 運行套用 265
20.3 包含套用 267
20.4 複雜的終止 267
第 21章 發布 268
21.1 修理漏水的管道 268
21.1.1 終止VM 268
21.1.2 更新套用檔案 269
21.1.3 編譯套用 270
21.2 使用systools構建發布 270
21.2.1 創建啟動檔案 271
21.2.2 發布打包 272
21.3 使用Reltool構建發布 273
21.4 Reltool技巧集 279
21.5 基於release檔案發布 282
第 22章 升級Process Quest 283
22.1 升級面臨的問題 283
22.2 Erlang學習的第9級 285
22.3 Process Quest 286
22.3.1 regis-1.0.0套用 287
22.3.2 processquest-1.0.0 套用 287
22.3.3 sockserv-1.0.0套用 288
22.3.4 發布 289
22.4 改進Process Quest 291
22.4.1 更改code_change函式 291
22.4.2 增加appup檔案 293
22.4.3 發布升級 296
22.5 Relup回顧 299
第 23章 套接字編程 301
23.1 IO列表 301
23.2 UDP和TCP:夥伴協定 302
23.2.1 UDP套接字 303
23.2.2 TCP套接字 306
23.3 使用Inet進行更多的控制 308
23.4 重新審視sockserv 310
23.5 下一步的工作 319
第 24章 EUnit:單元測試框架 320
24.1 什麼是EUnit 320
24.2 測試生成器 324
24.3 測試夾具 326
24.3.1 其他測試控制方法 328
24.3.2 測試文檔 329
24.4 測試regis 329
24.5 EUnit小結 338
第 25章 ETS:免費的記憶體NoSQL資料庫 339
25.1 為什麼需要ETS 339
25.2 ETS的概念 340
25.3 ETS的基本操作 342
25.3.1 表的創建和刪除 342
25.3.2 數據的插入和查詢 343
25.4 匹配操作 345
25.5 選擇操作 347
25.6 DETS 351
25.7 少說一點,多做一點 351
25.7.1 接口 352
25.7.2 實現細節 352
第 26章 分散式編程 357
26.1 這是我的火槍 358
26.2 分散式計算中的謬誤 359
26.2.1 網路是可靠的 360
26.2.2 網路沒有延遲 360
26.2.3 頻寬是無限的 361
26.2.4 網路是安全的 361
26.2.5 網路拓撲不會變化 362
26.2.6 只有一個管理員 363
26.2.7 傳輸成本是零 363
26.2.8 網路是同質的 363
26.2.9 謬誤小結 364
26.3 死亡還是失去聯繫 364
26.4 CAP定理 365
26.4.1 一致性 366
26.4.2 可用性 366
26.4.3 分區容忍 366
26.4.4 殭屍倖存者和CAP 367
26.5 搭建Erlang集群 369
26.5.1 節點命名 369
26.5.2 連線節點 370
26.5.3 更多工具 371
26.6 cookie 373
26.7 遠程shell 374
26.8 隱藏節點 375
26.9 防火牆問題 376
26.10 高 級調用 376
26.10.1 net_kernel模組 376
26.10.2 global模組 377
26.10.3 rpc模組 378
26.11 小結 380
第 27章 分散式OTP套用 381
27.1 更多OTP內容 381
27.2 接管和故障切換 382
27.3 神奇8號球 383
27.3.1 構建套用 384
27.3.2 變身分散式套用 387
第 28章 不尋常的Common Test 391
28.1 什麼是Common Test 391
28.2 Common Test的組織結構 392
28.3 創建一個簡單的測試套件 393
28.4 帶狀態的測試 396
28.5 測試組 397
28.5.1 定義測試組 398
28.5.2 測試組屬性 399
28.5.3 會議室 400
28.6 再談測試套件 404
28.7 測試規格說明 404
28.7.1 規格說明檔案內容 405
28.7.2 創建規格說明檔案 406
28.7.3 通過規格說明檔案運行測試 407
28.8 大規模測試 407
28.8.1 創建分散式測試規格說明檔案 409
28.8.2 運行分散式測試 410
28.9 集成Common Test和EUint 411
28.10 還有其他內容嗎 411
第 29章 Mnesia—記憶的藝術 412
29.1 Mnesia是什麼 412
29.2 應該存儲什麼呢 413
29.2.1 需要存儲的數據 413
29.2.2 表結構 414
29.3 從記錄到表 415
29.4 Mnesia數據模式和表 416
29.5 創建表 418
29.5.1 安裝資料庫 418
29.5.2 啟動套用 421
29.6 數據表存取上下文 422
29.7 讀、寫以及其他操作 423
29.8 實現第 一個請求 424
29.8.1 測試增加服務 424
29.8.2 測試查詢 427
29.8.3 賬目和新的需求 430
29.9 滿足老闆 432
29.10 刪除操作示例 434
29.11 列表推導式查詢 437
29.12 記住Mnesia 438
第30章 類型規格說明與Dialyzer 439
30.1 PLT是**好的三明治 439
30.2 成功類型化 440
30.3 類型推導和錯誤 442
30.4 類型的種類 445
30.4.1 單例類型 445
30.4.2 聯合類型和內置類型 445
30.4.3 定義類型 448
30.4.4 記錄類型 449
30.5 為函式增加類型聲明 450
30.6 類型定義實踐 453
30.7 類型導出 457
30.8 OTP行為類型 459
30.9 多態類型 460
30.9.1 我們買了一個動物園 460
30.9.2 注意事項 462
30.10 Dialyzer,我的好朋友 463
30.11 朋友們,就這么多 463
後記 464
附錄 Erlang語法 467

相關詞條

熱門詞條

聯絡我們