Erlang趣學指南
作 者: [加]弗萊德·赫伯特(Fred Hébert) 著 鄧輝 孫鳴 譯
定 價: 79
出?版?社: 人民郵電出版社
出版日期: 2016年09月01日
頁 數: 469
裝 幀: 簡裝
ISBN: 9787115431905
●目錄 章 啟程 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 &nb組 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 &nb數據 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 0章 並發編程漫遊指南 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 1章 深入多重處理 118 11.1 定義進程狀態 118 11.2 隱藏消息實現 120 11.3 超時 121 11.4 選擇性接收 123 11.4.1 選擇性接收的風險 124 11.4.2 郵箱使用的其他風險 126 2章 錯誤與進程 127 12.1 鏈接 127 12.1.1 捕獲退出信號 129 12.1.2 老異常,新概念 130 12.2 監控器 133 12.3 命名進程 134 3章 並發應用設計 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 4章 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 5章 令人憤怒的有限狀態機 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 6章 事件處理器 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 7章 誰來監督監督者 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 8章 構建應用 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 9章 構建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章 EUni測試框架 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
內容簡介
這是一本講解Erlang編程語言的入門指南,內容通俗易懂,插圖生動幽默,示例短小清晰,結構安排合理。書中從Erlang的基礎知識講起,融彙所有的基本概念和語法。內容涉及模塊、函數、類型、遞歸、錯誤和異常、常用數據結構、並行編程、多處理、OTP、事件處理,以及所有Erlang的重要特性和強大功能。
[加]弗萊德·赫伯特(Fred Hébert) 著 鄧輝 孫鳴 譯
作者介紹 Fred Hébert是一位自學成纔的程序員,具有Web前端、Web 服務開發經驗以及全面的後端多語言編程經驗。他撰寫的Erlang在線教程Learn You Some Erlang for Great Good! 被認可為好的Erlang學習教程。在Erlang Solutions工作期間,他撰寫過Erlang培訓資料,並在西方國家到處教授Erlang編程。目前,他在用Erlang開發一款實時競價平臺(AdGear),他被提名為2012年度Erlang User。 譯者介紹 鄧輝 獨立咨詢顧問,捷中科技首席架構師,有10年Erlang編程經驗。《敏捷軟件開發:原則、模式與實踐......
"