Clojure經典實例

Clojure經典實例

《Clojure經典實例》是2015年8月人民郵電出版社出版的圖書,作者是范德哈特、諾伊費爾德 。

基本介紹

  • 書名:Clojure經典實例
  • 作者: [美] 范德哈特 ( Luke VanderHart ) [加] 諾伊費爾德 ( Ryan Neufeld )
  • ISBN:978-7-115-39594-8
  • 出版社:人民郵電出版社
  • 出版時間: 2015-08
編輯推薦,內容簡介,圖書目錄,作者簡介,媒體推薦,

編輯推薦

本書涵蓋150多個具體實例,展示了有經驗的Clojure開發 者如何用這門JVM語言完成各種編程任務。解決方案全面廣泛:從構建動態網站和套用資料庫到網路通信、雲計算、高 級測試策略等,面面俱到。這些實例源於全球60多名Clojure開發 者。
本書的每個實例不僅可以即學即用,而且其中提供的關於解決方案原理的討論,讓讀者可以在模式、方法和技巧上舉一反三,從而在遇到本書未提及的其他編程任務時也能遊刃有餘。
通過閱讀本書,你可以:
掌握內建原生數據和複合數據結構;
使用Leiningen工具創建、開發和發布庫;
與本地計算機互動;
管理網路通信協定和庫;
掌握連線和使用各種資料庫的技術;
套用Ring HTTP伺服器庫構建並維護動態網站;
解決封裝、發布、配置、日誌等套用任務;
進行雲計算和重量級分散式數據處理;
深入研究單元測試、集成測試、模擬測試和基於屬性的測試。

內容簡介

本書以具體實例的形式講解了Clojure語言在不同領域的套用,不僅介紹如何運用Clojure,而且還展示了很多常見庫。書中給出了添加了注釋的示例代碼,詳細分析並解釋了數百個真實世界的編程任務。讀者既可通過本書深入了解Clojure的精髓,也可將本書用作參考指南,解決具體問題。

圖書目錄

譯者序 xi
前言 xiii
第1 章 原生數據 1
1.0 簡介 1
1.1 改變字元串的大小寫 2
1.2 清除字元串中的空白字元 3
1.3 利用部件構建字元串 5
1.4 將字元串作為字元序列 6
1.5 字元與整數的轉換 7
1.6 格式化字元串 9
1.7 按模式查找字元串 11
1.8 利用正則表達式從字元串中取出值 12
1.9 對字元串執行查找和替換 13
1.10 將字元串切分成部分 15
1.11 基於數量為字元串加複數 16
1.12 在字元串、符號和關鍵字之間的轉換 18
1.13 利用非常大或非常小的數來保持精度 20
1.14 使用有理數 21
1.15 解析數字 23
1.16 數的截斷和捨入 24
1.17 模糊比較 26
1.18 三角計算 27
1.19 根據不同的進制輸入和輸出整數 29
1.20 計算數值集合的統計值 30
1.21 位操作 33
1.22 生成隨機數 34
1.23 操作貨幣 36
1.24 生成唯一ID 37
1.25 得到當前的日期和時間 39
1.26 用字面值來表示日期 40
1.27 利用clj—time 解析日期和時間 42
1.28 利用clj—time 格式化日期 43
1.29 比較日期 45
1.30 計算時間間隔的長度 46
1.31 生成一系列的日期和時間 48
1.32 利用原生Java 類型生成一系列日期和時間 49
1.33 根據日期間的關係取得日期 52
1.34 處理時區 53
1.35 將Unix 時間戳轉換成Date 對象 55
1.36 將Date 對象轉換成Unix 時間戳 56
第2 章 複合數據 58
2.0 簡介 58
2.1 創建列表 59
2.2 從已有的數據結構創建列表 61
2.3 在列表中“添加”一個元素 62
2.4 從列表中“移除”一個元素 63
2.5 測試是否列表 64
2.6 創建向量 65
2.7 在向量中“添加”一個元素 66
2.8 從向量中“移除”一個元素 67
2.9 取得索引處的值 68
2.10 設定索引處的值 70
2.11 創建集 71
2.12 在集中添加和移除元素 73
2.13 測試集成員 74
2.14 使用集操作 76
2.15 創建映射表 77
2.16 從映射表中取得值 79
2.17 從映射表中同時取出多個鍵 82
2.18 設定映射表中的鍵 84
2.19 用複合值作為映射表的鍵 86
2.20 將映射表作為序列(或反過來)88
2.21 對映射表套用函式 90
2.22 一個鍵保存多個值 92
2.23 合併映射表 95
2.24 值的比較與排序 97
2.25 從集合中移除重複元素 100
2.26 檢測集合是否包含幾個值中的一個 102
2.27 實現定製的數據結構:紅黑樹(第一部分)103
2.28 實現定製的數據結構:紅黑樹(第二部分)106
第3 章 廣義計算 111
3.0 簡介 111
3.1 運行最小的Clojure REPL 111
3.2 互動式文檔 112
3.3 探索命名空間 114
3.4 嘗試庫而不指明依賴關係 116
3.5 運行Clojure 程式 117
3.6 從命令行運行程式 119
3.7 解析命令行參數 121
3.8 創建定製的項目模板 124
3.9 構建具有多態行為的函式 128
3.10 擴展內建的類型 133
3.11 用core.async 解除消費者和生產者的耦合 135
3.12 用core.match 為Clojure 表達式製作解析器 138
3.13 用core.logic 查詢層級圖 141
3.14 演奏兒歌 146
第4 章 本地I/O 150
4.0 簡介 150
4.1 寫入STDOUT 和STDERR 150
4.2 從控制台讀入一次擊鍵 152
4.3 執行系統命令 153
4.4 訪問資源檔案 156
4.5 複製檔案 157
4.6 刪除檔案或目錄 159
4.7 列出目錄中的檔案 161
4.8 檔案的記憶體映射 163
4.9 讀寫文本檔案 164
4.10 使用臨時檔案 165
4.11 在任意位置讀寫檔案 166
4.12 並行檔案處理 168
4.13 帶歸約的並行檔案處理 170
4.14 讀寫Clojure 數據 172
4.15 在配置檔案中使用edn 174
4.16 將記錄作為edn 值發布 178
4.17 讀取Clojure 數據時處理未知的帶標籤字面值 180
4.18 從檔案中讀取屬性 182
4.19 讀寫二進制檔案 184
4.20 讀寫CSV 數據 186
4.21 讀寫壓縮檔案 187
4.22 處理XML 數據 189
4.23 讀寫JSON 數據 190
4.24 生成PDF 檔案 192
4.25 生成帶可滾動文本的GUI 視窗 196
第5 章 網路I/O 和Web 服務 200
5.0 簡介 200
5.1 發出HTTP 請求 200
5.2 執行異步HTTP 請求 202
5.3 發出Ping 請求 204
5.4 取得並解析RSS 數據 205
5.5 傳送郵件 206
5.6 用RabbitMQ 實現佇列通信 210
5.7 通過MQTT 與嵌入式設備通信 215
5.8 並發使用ZeroMQ 219
5.9 創建TCP 客戶端 222
5.10 創建TCP 伺服器 223
5.11 收發UDP 包 227
第6 章 資料庫 230
6.0 簡介 230
6.1 連線SQL 資料庫 231
6.2 利用連線池連線SQL 資料庫 233
6.3 操作SQL 資料庫 236
6.4 用Korma 簡化SQL 242
6.5 用Lucene 進行全文查找 245
6.6 用ElasticSearch 建立數據索引 248
6.7 使用Cassandra 252
6.8 使用MongoDB 256
6.9 使用Redis 259
6.10 連線Datomic 資料庫 262
6.11 為Datomic 資料庫定義數據模式 264
6.12 向Datomic 寫入數據 267
6.13 從Datomic 資料庫中刪除數據 270
6.14 嘗試Datomic 事務而不提交 272
6.15 遍歷Datomic 索引 274
第7 章 Web 套用 277
7.0 簡介 277
7.1 Ring 簡介 277
7.2 使用Ring 中間件 279
7.3 用Ring 提供靜態檔案 281
7.4 用Ring 處理表單數據 282
7.5 用Ring 處理Cookie 284
7.6 用Ring 保存會話 286
7.7 在Ring 中讀寫請求和回響的頭 288
7.8 用Compojure 路由請求 289
7.9 用Ring 執行HTTP 重定向 291
7.10 用Liberator 構建REST 風格的套用 292
7.11 用Enlive 實現HTML 模板 294
7.12 用Selmer 實現模板 300
7.13 用Hiccup 實現模板 305
7.14 渲染Markdown 文檔 307
7.15 用Luminus 來構建套用 310
第8 章 性能與開發效率 312
8.0 簡介 312
8.1 AOT 編譯 312
8.2 將項目打包成JAR 檔案 314
8.3 創建WAR 檔案 317
8.4 將套用作為守護進程運行 320
8.5 利用類型暗示減輕性能問題 325
8.6 用原生Java 數組進行快速數學運算 328
8.7 用Timbre 進行簡單剖析 330
8.8 用Timbre 記日誌 332
8.9 向Clojars 發布庫 334
8.10 使用宏來簡化API 棄用 336
第9 章 分散式計算 341
9.0 簡介 341
9.1 用Storm 構建活動推送系統 342
9.2 用抽取轉換載入(ETL)管道來處理數據 350
9.3 聚合大型檔案 354
9.4 測試Cascalog 工作流 359
9.5 設定Cascalog 任務的檢查點 361
9.6 解釋Cascalog查詢
9.7 在Elastic MapReduce上運行Cascalog任務
第10章 測試
10.0 簡介
10.1 單元測試
10.2 用Midje測試
10.3 通過隨機輸入進行徹底測試
10.4 尋找導致失敗的值
10.5 運行基於瀏覽器的測試
10.6 追蹤代碼執行
10.7 用core.typed避免空指針異常
10.8 用core.typed驗證Java互操作
10.9 用core.typed檢查高階函式
關於作者
關於封面

作者簡介

Luke VanderHart是一名Clojure和ClojureScript開發 者,目前就職於Cognitect公司(Clojure之父在該公司任CTO)。他是Practical Clojure(Apress)和ClojureScript: Up and Running(O'Reilly)的合著者之一,目前在北卡羅來納州達勒姆市生活和工作。
Ryan Neufeld通曉多種計算機語言,是一名全能型軟體開 發者,熱衷於分散式系統和網路套用開發。Ryan十分善於為客戶解決各種或棘手或簡單的軟體技術問題,及時為客戶交付成果。他目前居住於北卡羅來納州達勒姆市,是Cognitect公司的一名開發人員。

媒體推薦

“Clojure是由實踐者所創,也是為實踐者而創,而這本書也一樣,它源於實踐,面向實踐,是Clojure實際開發的全面指南。”
——Rich Hickey
Clojure之父,Cognitect公司CTO

相關詞條

熱門詞條

聯絡我們