erlang程序設(shè)計第2版是一本Erlang程序設(shè)計書籍,由Erlang最初的設(shè)計者和實現(xiàn)者Joe Armstrong編著,?;煞g。本書是erlang程序設(shè)計的第二個版本。作者在第2版中做了重要更新,不但涵蓋核心語言和框架的基本內(nèi)容,還涉及rebar和cowboy這樣的關(guān)鍵社區(qū)項目。有經(jīng)驗的Erlang程序員也能在書里找到各種有用的提示和新見解,初學(xué)者則會喜歡Joe在介紹和闡釋關(guān)鍵語言概念時所使用的清楚和有條理的方式,歡迎免費下載閱讀。
2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進(jìn)行閱讀試讀
收起介紹展開介紹
內(nèi)容介紹
Erlang開源語言系出名門,通信巨頭愛立信公司用它開發(fā)出了可靠性驚人的交換機(jī)系統(tǒng)AXD301。它天生就是面向并發(fā)、分布和高容錯的,兼有函數(shù)式語言和腳本語言的各種優(yōu)點,而且已經(jīng)用于商業(yè)開發(fā)多年,具有穩(wěn)定性極高的虛擬機(jī)和平臺庫。《erlang程序設(shè)計第2版》由Erlang之父Joe Armstrong編寫,是毋庸置疑的經(jīng)典著作。書中兼顧了順序編程、并發(fā)編程和分布式編程,重點介紹如何編寫并發(fā)和分布式的Erlang程序以及如何在多核CPU上自動加速程序,并深入地討論了開發(fā)Erlang應(yīng)用中至關(guān)重要的文件和網(wǎng)絡(luò)編程、OTP、ETS和DETS等主題。第2版全新改寫,反應(yīng)了自第1版面世以來Erlang歷經(jīng)的所有變化,添加了大量針對初學(xué)者的內(nèi)容,并在每章后都附上了練習(xí)題。非常適合Erlang初學(xué)者和中級水平Erlang程序員學(xué)習(xí)參考。章節(jié)目錄
第一部分 為何用Erlang 第1章 什么是并發(fā) 2 1.1 給并發(fā)建模 2 1.1.1 開始模擬 3 1.1.2 發(fā)送消息 4 1.1.3 接收消息 4 1.2 并發(fā)的益處 4 1.3 并發(fā)程序和并行計算機(jī) 5 1.4 順序和并發(fā)編程語言 6 1.5 小結(jié) 6 第2章 Erlang速覽 7 2.1 Shell 7 2.1.1 =操作符 8 2.1.2 變量和原子的語法 8 2.2 進(jìn)程、模塊和編譯 9 2.2.1 在shell里編譯并運行Hello World 9 2.2.2 在Erlang shell外編譯 9 2.3 你好,并發(fā) 10 2.3.1 文件服務(wù)器進(jìn)程 10 2.3.2 客戶端代碼 13 2.3.3 改進(jìn)文件服務(wù)器 14 2.4 練習(xí) 14 第二部分 順序編程 第3章 基本概念 16 3.1 啟動和停止Erlang shell 16 3.1.1 在shell里執(zhí)行命令 17 3.1.2 可能出錯的地方 17 3.1.3 在Erlang shell里編輯命令 18 3.2 簡單的整數(shù)運算 18 3.3 變量 19 3.3.1 Erlang的變量不會變 20 3.3.2 變量綁定和模式匹配 20 3.3.3 為什么一次性賦值讓程序變得更好 21 3.4 浮點數(shù) 22 3.5 原子 22 3.6 元組 23 3.6.1 創(chuàng)建元組 24 3.6.2 提取元組的值 25 3.7 列表 26 3.7.1 專用術(shù)語 26 3.7.2 定義列表 27 3.7.3 提取列表元素 27 3.8 字符串 27 3.9 模式匹配再探 29 3.10 練習(xí) 30 第4章 模塊與函數(shù) 31 4.1 模塊是存放代碼的地方 31 4.1.1 常見錯誤 33 4.1.2 目錄和代碼路徑 33 4.1.3 給代碼添加測試 33 4.1.4 擴(kuò)展程序 34 4.1.5 分號放哪里 36 4.2 繼續(xù)購物 36 4.3 fun:基本的抽象單元 39 4.3.1 以fun作為參數(shù)的函數(shù) 40 4.3.2 返回fun的函數(shù) 41 4.3.3 定義你自己的控制抽象 42 4.4 簡單列表處理 42 4.5 列表推導(dǎo) 45 4.5.1 Quicksort 46 4.5.2 畢達(dá)哥拉斯三元數(shù)組 47 4.5.3 回文構(gòu)詞 48 4.6 內(nèi)置函數(shù) 48 4.7 關(guān)卡 49 4.7.1 關(guān)卡序列 49 4.7.2 關(guān)卡示例 50 4.7.3 true關(guān)卡的作用 51 4.8 case和if表達(dá)式 52 4.8.1 case表達(dá)式 52 4.8.2 if表達(dá)式 53 4.9 構(gòu)建自然順序的列表 54 4.10 歸集器 55 4.11 練習(xí) 56 第5章 記錄與映射組 57 5.1 何時使用映射組或記錄 57 5.2 通過記錄命名元組里的項 58 5.2.1 創(chuàng)建和更新記錄 59 5.2.2 提取記錄字段 59 5.2.3 在函數(shù)里模式匹配記錄 59 5.2.4 記錄是元組的另一種形式 60 5.3 映射組:關(guān)聯(lián)式鍵-值存儲 60 5.3.1 映射組語法 60 5.3.2 模式匹配映射組字段 62 5.3.3 操作映射組的內(nèi)置函數(shù) 63 5.3.4 映射組排序 64 5.3.5 以JSON為橋梁 64 5.4 練習(xí) 66 第6章 順序程序的錯誤處理 67 6.1 處理順序代碼里的錯誤 67 6.2 用try...catch捕捉異常錯誤 69 6.2.1 try...catch具有一個值 69 6.2.2 簡寫法 70 6.2.3 try...catch編程樣例 71 6.3 用catch捕捉異常錯誤 72 6.4 針對異常錯誤的編程樣式 72 6.4.1 改進(jìn)錯誤消息 72 6.4.2 經(jīng)常返回錯誤時的代碼 73 6.4.3 錯誤可能有但罕見時的代碼 73 6.4.4 捕捉一切可能的異常錯誤 74 6.5 棧跟蹤 74 6.6 拋錯要快而明顯,也要文明 75 6.7 練習(xí) 75 第7章 二進(jìn)制型與位語法 76 7.1 二進(jìn)制型 76 7.2 位語法 78 7.2.1 打包和解包16位顏色 78 7.2.2 位語法表達(dá)式 79 7.2.3 位語法的真實例子 81 7.3 位串:處理位級數(shù)據(jù) 85 7.4 練習(xí) 87 第8章 Erlang順序編程補(bǔ)遺 88 8.1 apply 89 8.2 算術(shù)表達(dá)式 90 8.3 元數(shù) 91 8.4 屬性 91 8.4.1 預(yù)定義的模塊屬性 91 8.4.2 用戶定義的模塊屬性 93 8.5 塊表達(dá)式 94 8.6 布爾值 94 8.7 布爾表達(dá)式 95 8.8 字符集 95 8.9 注釋 95 8.10 動態(tài)代碼載入 96 8.11 Erlang的預(yù)處理器 99 8.12 轉(zhuǎn)義序列 99 8.13 表達(dá)式和表達(dá)式序列 100 8.14 函數(shù)引用 101 8.15 包含文件 101 8.16 列表操作:++和-- 102 8.17 宏 102 8.18 模式的匹配操作符 104 8.19 數(shù)字 105 8.19.1 整數(shù) 105 8.19.2 浮點數(shù) 105 8.20 操作符優(yōu)先級 106 8.21 進(jìn)程字典 106 8.22 引用 108 8.23 短路布爾表達(dá)式 108 8.24 比較數(shù)據(jù)類型 108 8.25 元組模塊 109 8.26 下劃線變量 109 8.27 練習(xí) 110 第9章 類型 111 9.1 指定數(shù)據(jù)和函數(shù)類型 111 9.2 Erlang的類型表示法 113 9.2.1 類型的語法 113 9.2.2 預(yù)定義類型 114 9.2.3 指定函數(shù)的輸入輸出類型 114 9.2.4 導(dǎo)出類型和本地類型 116 9.2.5 不透明類型 116 9.3 dialyzer教程 117 9.3.1 錯誤使用內(nèi)置函數(shù)的返回值 118 9.3.2 內(nèi)置函數(shù)的錯誤參數(shù) 119 9.3.3 錯誤的程序邏輯 119 9.3.4 使用dialyzer 120 9.3.5 干擾dialyzer的事物 120 9.4 類型推斷與成功分型 121 9.5 類型系統(tǒng)的局限性 123 9.6 練習(xí) 125 第10章 編譯和運行程序 126 10.1 改變開發(fā)環(huán)境 126 10.1.1 設(shè)置載入代碼的搜索路徑 126 10.1.2 在系統(tǒng)啟動時執(zhí)行一組命令 127 10.2 運行程序的不同方式 128 10.2.1 在Erlang shell里編譯和運行 128 10.2.2 在命令提示符界面里編譯和運行 129 10.2.3 作為Escript運行 130 10.2.4 帶命令行參數(shù)的程序 131 10.3 用makefile使編譯自動化 132 10.4 當(dāng)壞事發(fā)生 135 10.4.1 停止Erlang 135 10.4.2 未定義(缺失)的代碼 135 10.4.3 shell沒有反應(yīng) 136 10.4.4 我的makefile不工作 137 10.4.5 Erlang崩潰而你想閱讀故障轉(zhuǎn)儲文件 137 10.5 獲取幫助 138 10.6 調(diào)節(jié)運行環(huán)境 138 10.7 練習(xí) 139 第三部分 并發(fā)和分布式程序 第11章 現(xiàn)實世界中的并發(fā) 142 第12章 并發(fā)編程 145 12.1 基本并發(fā)函數(shù) 145 12.2 客戶端-服務(wù)器介紹 147 12.3 進(jìn)程很輕巧 151 12.4 帶超時的接收 153 12.4.1 只帶超時的接收 154 12.4.2 超時值為0的接收 154 12.4.3 超時值為無窮大的接收 155 12.4.4 實現(xiàn)一個定時器 155 12.5 選擇性接收 156 12.6 注冊進(jìn)程 157 12.7 關(guān)于尾遞歸的說明 158 12.8 用MFA或Fun進(jìn)行分裂 160 12.9 練習(xí) 160 第13章 并發(fā)程序中的錯誤 161 13.1 錯誤處理的理念 161 13.1.1 讓其他進(jìn)程修復(fù)錯誤 162 13.1.2 任其崩潰 162 13.1.3 為何要崩潰 162 13.2 錯誤處理的術(shù)語含義 163 13.3 創(chuàng)建連接 164 13.4 同步終止的進(jìn)程組 164 13.5 設(shè)立防火墻 165 13.6 監(jiān)視 166 13.7 基本錯誤處理函數(shù) 166 13.8 容錯式編程 167 13.8.1 在進(jìn)程終止時執(zhí)行操作 167 13.8.2 讓一組進(jìn)程共同終止 168 13.8.3 生成一個永不終止的進(jìn)程 169 13.9 練習(xí) 170 第14章 分布式編程 171 14.1 兩種分布式模型 171 14.2 編寫一個分布式程序 172 14.3 創(chuàng)建名稱服務(wù)器 173 14.3.1 第1階段:一個簡單的名稱服務(wù)器 173 14.3.2 第2階段:客戶端在一個節(jié)點,服務(wù)器在相同主機(jī)的另一個節(jié)點 174 14.3.3 第3階段:同一局域網(wǎng)內(nèi)不同機(jī)器上的客戶端和服務(wù)器 175 14.3.4 第4階段:跨互聯(lián)網(wǎng)不同主機(jī)上的客戶端和服務(wù)器 176 14.4 分布式編程的庫和內(nèi)置函數(shù) 177 14.4.1 遠(yuǎn)程分裂示例 178 14.4.2 文件服務(wù)器再探 180 14.5 cookie保護(hù)系統(tǒng) 181 14.6 基于套接字的分布式模型 182 14.6.1 用lib_chan控制進(jìn)程 182 14.6.2 服務(wù)器代碼 183 14.7 練習(xí) 185 第四部分 編程庫與框架 第15章 接口技術(shù) 188 15.1 Erlang如何與外部程序通信 188 15.2 用端口建立外部C程序接口 190 15.2.1 C程序 191 15.2.2 Erlang程序 193 15.2.3 編譯和鏈接端口程序 195 15.2.4 運行程序 195 15.3 在Erlang里調(diào)用shell腳本 196 15.4 高級接口技術(shù) 196 15.5 練習(xí) 197 第16章 文件編程 198 16.1 操作文件的模塊 198 16.2 讀取文件的幾種方法 199 16.2.1 讀取文件里的所有數(shù)據(jù)類型 199 16.2.2 分次讀取文件里的數(shù)據(jù)類型 200 16.2.3 分次讀取文件里的行 202 16.2.4 讀取整個文件到二進(jìn)制型中 202 16.2.5 通過隨機(jī)訪問讀取文件 203 16.3 寫入文件的各種方式 205 16.3.1 把數(shù)據(jù)列表寫入文件 206 16.3.2 把各行寫入文件 207 16.3.3 一次性寫入整個文件 207 16.3.4 寫入隨機(jī)訪問文件 209 16.4 目錄和文件操作 209 16.4.1 查找文件信息 210 16.4.2 復(fù)制和刪除文件 211 16.5 其他信息 211 16.6 一個查找工具函數(shù) 212 16.7 練習(xí) 214 第17章 套接字編程 216 17.1 使用TCP 216 17.1.1 從服務(wù)器獲取數(shù)據(jù) 216 17.1.2 一個簡單的TCP服務(wù)器 219 17.1.3 順序和并行服務(wù)器 222 17.1.4 注意事項 223 17.2 主動和被動套接字 224 17.2.1 主動消息接收(非阻塞式) 224 17.2.2 被動消息接收(阻塞式) 225 17.2.3 混合消息接收(部分阻塞式) 225 17.3 套接字錯誤處理 226 17.4 UDP 227 17.4.1 最簡單的UDP服務(wù)器與客戶端 227 17.4.2 一個UDP階乘服務(wù)器 228 17.4.3 UDP數(shù)據(jù)包須知 230 17.5 對多臺機(jī)器廣播 230 17.6 一個SHOUTcast服務(wù)器 231 17.6.1 SHOUTcast協(xié)議 232 17.6.2 SHOUTcast服務(wù)器的工作原理 232 17.6.3 SHOUTcast服務(wù)器的偽代碼 233 17.6.4 運行SHOUTcast服務(wù)器 234 17.7 練習(xí) 235 第18章 用WebSocket和Erlang進(jìn)行瀏覽 236 18.1 創(chuàng)建一個數(shù)字時鐘 237 18.2 基本交互 239 18.3 瀏覽器里的Erlang shell 240 18.4 創(chuàng)建一個聊天小部件 241 18.5 簡化版IRC 244 18.6 瀏覽器里的圖形 247 18.7 瀏覽器-服務(wù)器協(xié)議 249 18.7.1 從Erlang發(fā)送消息到瀏覽器 249 18.7.2 從瀏覽器到Erlang的消息 250 18.8 練習(xí) 251 第19章 用ETS和DETS存儲數(shù)據(jù) 252 19.1 表的類型 252 19.2 影響ETS表效率的因素 254 19.3 創(chuàng)建一個ETS表 255 19.4 ETS示例程序 255 19.4.1 三字母組合迭代函數(shù) 256 19.4.2 創(chuàng)建一些表 257 19.4.3 創(chuàng)建表所需的時間 258 19.4.4 訪問表所需的時間 258 19.4.5 獲勝者是…… 259 19.5 保存元組到磁盤 260 19.6 其余操作 262 19.7 練習(xí) 263 第20章 Mnesia:Erlang數(shù)據(jù)庫 264 20.1 創(chuàng)建初始數(shù)據(jù)庫 264 20.2 數(shù)據(jù)庫查詢 265 20.2.1 選擇表里的所有數(shù)據(jù) 266 20.2.2 從表里選擇數(shù)據(jù) 267 20.2.3 從表里有條件選擇數(shù)據(jù) 268 20.2.4 從兩個表里選擇數(shù)據(jù)(聯(lián)接) 268 20.3 添加和移除數(shù)據(jù)庫里的數(shù)據(jù) 269 20.3.1 添加行 269 20.3.2 移除行 270 20.4 Mnesia事務(wù) 270 20.4.1 中止事務(wù) 271 20.4.2 載入測試數(shù)據(jù) 273 20.4.3 do()函數(shù) 273 20.5 在表里保存復(fù)雜數(shù)據(jù) 274 20.6 表的類型和位置 275 20.6.1 創(chuàng)建表 276 20.6.2 常用的表屬性組合 277 20.6.3 表的行為 278 20.7 表查看器 278 20.8 深入挖掘 279 20.9 練習(xí) 279 第21章 性能分析、調(diào)試與跟蹤 280 21.1 Erlang代碼的性能分析工具 281 21.2 測試代碼覆蓋 281 21.3 生成交叉引用 283 21.4 編譯器診斷信息 283 21.4.1 頭部不匹配 284 21.4.2 未綁定變量 284 21.4.3 未結(jié)束字符串 284 21.4.4 不安全變量 284 21.4.5 影子變量 285 21.5 運行時診斷 286 21.6 調(diào)試方法 287 21.6.1 io:format調(diào)試 288 21.6.2 轉(zhuǎn)儲至文件 289 21.6.3 使用錯誤記錄器 289 21.7 Erlang調(diào)試器 289 21.8 跟蹤消息與進(jìn)程執(zhí)行 291 21.9 Erlang代碼的測試框架 294 21.10 練習(xí) 295 第22章 OTP介紹 296 22.1 通用服務(wù)器之路 297 22.1.1 Server 1:基本的服務(wù)器 297 22.1.2 Server 2:實現(xiàn)事務(wù)的服務(wù)器 298 22.1.3 Server 3:實現(xiàn)熱代碼交換的服務(wù)器 299 22.1.4 Server 4:事務(wù)與熱代碼交換 301 22.1.5 Server 5:更多樂趣 302 22.2 gen_server入門 304 22.2.1 確定回調(diào)模塊名 304 22.2.2 編寫接口方法 305 22.2.3 編寫回調(diào)方法 305 22.3 gen_server的回調(diào)結(jié)構(gòu) 308 22.3.1 啟動服務(wù)器 308 22.3.2 調(diào)用服務(wù)器 308 22.3.3 調(diào)用和播發(fā) 309 22.3.4 發(fā)給服務(wù)器的自發(fā)性消息 310 22.3.5 后會有期,寶貝 310 22.3.6 代碼更改 311 22.4 填寫gen_server模板 311 22.5 深入探索 313 22.6 練習(xí) 313 第23章 用OTP構(gòu)建系統(tǒng) 315 23.1 通用事件處理 316 23.2 錯誤記錄器 318 23.2.1 記錄錯誤 318 23.2.2 配置錯誤記錄器 319 23.2.3 分析錯誤 323 23.3 警報管理 324 23.4 應(yīng)用程序服務(wù)器 326 23.4.1 質(zhì)數(shù)服務(wù)器 326 23.4.2 面積服務(wù)器 327 23.5 監(jiān)控樹 328 23.6 啟動系統(tǒng) 331 23.7 應(yīng)用程序 335 23.8 文件系統(tǒng)組織方式 336 23.9 應(yīng)用程序監(jiān)視器 337 23.10 怎樣計算質(zhì)數(shù) 338 23.11 深入探索 340 23.12 練習(xí) 341 第五部分 構(gòu)建應(yīng)用程序 第24章 編程術(shù)語 344 24.1 保持Erlang世界觀 344 24.2 多用途服務(wù)器 346 24.3 有狀態(tài)的模塊 348 24.4 適配器變量 349 24.5 表意編程 351 24.6 練習(xí) 353 第25章 第三方程序 354 25.1 制作可共享代碼存檔并用rebar管理代碼 354 25.1.1 安裝rebar 354 25.1.2 在GitHub上創(chuàng)建一個新項目 355 25.1.3 在本地克隆這個項目 355 25.1.4 制作一個OTP應(yīng)用程序 356 25.1.5 宣傳你的項目 356 25.2 整合外部程序與我們的代碼 357 25.3 生成依賴項本地副本 358 25.4 用cowboy構(gòu)建嵌入式Web服務(wù)器 359 25.5 練習(xí) 364 第26章 多核CPU編程 366 26.1 給Erlang程序員的好消息 367 26.2 如何在多核CPU中使程序高效運行 367 26.2.1 使用大量進(jìn)程 368 26.2.2 避免副作用 368 26.2.3 避免順序瓶頸 369 26.3 讓順序代碼并行 370 26.4 小消息,大計算 372 26.5 用mapreduce使計算并行化 376 26.6 練習(xí) 380 第27章 福爾摩斯的最后一案 381 27.1 找出數(shù)據(jù)的相似度 381 27.2 sherlock演示 382 27.2.1 獲取并預(yù)處理數(shù)據(jù) 382 27.2.2 尋找最像給定文件的郵件 383 27.2.3 搜索指定作者、日期或標(biāo)題的郵件 385 27.3 數(shù)據(jù)分區(qū)的重要性 386 27.4 給郵件添加關(guān)鍵詞 386 27.4.1 詞匯的重要性:TF*IDF權(quán)重 387 27.4.2 余弦相似度:兩個權(quán)重向量的相似程度 388 27.4.3 相似度查詢 389 27.5 實現(xiàn)方式概覽 389 27.6 練習(xí) 390 27.7 總結(jié) 391 附錄A OTP模板 392 附錄B 一個套接字應(yīng)用程序 398 附錄C 一種簡單的執(zhí)行環(huán)境 413
使用說明
1、下載并解壓,得出pdf文件2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進(jìn)行閱讀試讀
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 南方Plus電腦版 v11.8.027.22M / 簡體中文
- 得間免費小說電腦版 v5.2.7.172.56M / 簡體中文
- 數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
- 吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
- cnki全球?qū)W術(shù)快報電腦版 v0.2.3495.79M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
- linux常用命令大全 chm版1.48M / 簡體中文
- docker入門實戰(zhàn) pdf完整版1.38M / 簡體中文
- HotSpot實戰(zhàn)(陳濤著) 中文pdf掃描版82M / 簡體中文