Erlang趣學指南 Erlang趣学指南

弗萊德·赫伯特 (Fred Hébert)

立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

<內容介紹>

這是一本講解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