函數式與並發編程
[美] 米歇爾·卡彭特(Michel Charpentier)著 郭濤 譯
- 出版商: 清華大學
- 出版日期: 2024-10-01
- 售價: $708
- 貴賓價: 9.5 折 $673
- 語言: 簡體中文
- ISBN: 7302672172
- ISBN-13: 9787302672173
- 此書翻譯自: Functional and Concurrent Programming: Core Concepts and Features
立即出貨 (庫存=1)
買這商品的人也買了...
-
$446PCI Express 體系結構導讀
-
$708$673 -
$301路由與交換技術(華為信息與網絡技術學院指定教材)/ICT認證系列叢書
-
$474$450 -
$648$616 -
$454$427 -
$594$564 -
$959Scala 編程, 5/e (Programming in Scala 5/e)
-
$414$393 -
$700$553 -
$266路由交換技術詳解與實踐 第1捲(上冊)
-
$454Wi-Fi 7 開發參考:技術原理、標準和應用
-
$454互聯網技術十講
-
$407GPT 圖解 : 大模型是怎樣構建的
-
$301智能邊緣計算
-
$299$284 -
$594$564 -
$556高效能並行運行時系統:設計與實現
-
$403$379 -
$327AI Agent:AI的下一個風口
-
$419$398 -
$588$559 -
$774$735 -
$654$621 -
$834$792
相關主題
商品描述
目錄大綱
目 錄
第I部分 函數式編程
第1章 函數式編程的概念 3
1.1 什麽是函數式編程 3
1.2 函數 4
1.3 從函數到函數式編程概念 5
1.4 小結 6
第2章 編程語言中的函數 7
2.1 定義函數 7
2.2 合成函數 8
2.3 定義為方法的函數 9
2.4 定義為方法的運算符 10
2.5 擴展方法 10
2.6 局部函數 11
2.7 重復參數 12
2.8 可選參數 13
2.9 命名參數 13
2.10 類型參數 14
2.11 小結 16
第3章 不可變性 17
3.1 純函數和非純函數 17
3.2 動作 18
3.3 表達式與語句 20
3.4 函數變量 22
3.5 不可變對象 23
3.6 可變狀態的實現 24
3.7 函數式列表 25
3.8 混合編程 27
3.9 更新可變/不可變對象的集合 28
3.10 小結 30
第4章 案例研究:active-passive集合 31
4.1 面向對象設計 31
4.2 函數值 33
4.3 函數對象 35
4.4 小結 36
第5章 模式匹配與代數數據類型 38
5.1 函數開關 38
5.2 元組 39
5.3 選項 40
5.4 回顧函數式列表 41
5.5 樹 43
5.6 示例:列表拉鏈 46
5.7 提取器 48
5.8 小結 49
第6章 遞歸程序設計 51
6.1 遞歸的必要性 51
6.2 遞歸算法 53
6.3 遞歸算法的關鍵原理 55
6.4 遞歸結構 56
6.5 尾遞歸 58
6.6 尾遞歸函數示例 60
6.7 小結 63
第7章 列表遞歸 64
7.1 等價的遞歸算法 64
7.2 遍歷列表 65
7.3 返回列表 66
7.4 從執行堆棧中構建列表 68
7.5 多個/嵌套列表上的遞歸 69
7.6 除尾部以外的子列表遞歸 71
7.7 逆序創建列表 73
7.8 示例:排序 74
7.9 高效地構建列表 77
7.10 小結 78
第8章 案例研究:二叉搜索樹 79
8.1 二叉搜索樹 79
8.2 二叉搜索樹的整數集 80
8.3 未重新平衡情況下的實現 81
8.4 自平衡樹 86
8.5 小結 90
第9章 高階函數 92
9.1 函數作為值 92
9.2 柯里化 95
9.3 函數字面量 96
9.4 函數與方法 99
9.5 單一抽象方法接口 100
9.6 部分應用 100
9.7 閉包 104
9.8 控制反轉 107
9.9 小結 108
第10章 標準高階函數 109
10.1 帶有謂詞參數的函數 109
10.2 映射和遍歷 111
10.3 flatMap 112
10.4 fold和reduce 116
10.5 iterate、tabulate和unfold 118
10.6 sortWith、sortBy、maxBy和minBy 119
10.7 groupBy和groupMap 120
10.8 標準高階函數的實現 121
10.9 foreach、map、flatMap和for推導式 122
10.10 小結 124
第11章 案例研究:文件樹 125
11.1 設計概述 125
11.2 節點搜索輔助函數 126
11.3 字符串表示 126
11.4 構建樹 128
11.5 查詢 131
11.6 導航 135
11.7 樹形拉鏈 135
11.8 小結 138
第12章 延遲計算 139
12.1 延遲求值的參數 139
12.2 按名稱參數 140
12.3 控制抽象 142
12.4 內部領域特定語言 144
12.5 作為延遲求值列表的流 145
12.6 管道流 147
12.7 無限數據結構流 148
12.8 迭代 149
12.9 列表、流、迭代程序和視圖 151
12.10 字段和局部變量的延遲求值 154
12.11 示例:子集和 155
12.12 小結 157
第13章 故障處理 158
13.1 例外情況和特殊值 158
13.2 使用Option 160
13.3 使用Try 160
13.4 使用Either 162
13.5 高階函數和管道 163
13.6 小結 166
第14章 案例研究:蹦床 167
14.1 尾調用優化 167
14.2 用於尾調用的蹦床函數 168
14.3 Java中的尾調用優化 169
14.4 處理非尾調用 170
14.5 小結 174
第15章 類型(及相關概念) 175
15.1 類型策略 175
15.2 類型集合 179
15.3 類型服務 180
15.4 抽象數據類型 181
15.5 類型推斷 182
15.6 子類型 185
15.7 多態性 188
15.8 類型變換 190
15.9 類型邊界 195
15.10 類型類 199
15.11 小結 203
第Ⅱ部分 並發編程
第16章 並發編程的概念 208
16.1 非順序程序 208
16.2 並發編程相關概念 211
16.3 小結 211
第17章 線程與不確定性 213
17.1 執行線程 213
17.2 使用lambda表達式創建線程 214
17.3 多線程程序的不確定性 215
17.4 線程終止 216
17.5 測試和調試多線程程序 218
17.6 小結 219
第18章 原子性和鎖 220
18.1 原子性 220
18.2 非原子操作 222
18.3 原子操作和非原子復合操作 223
18.4 鎖 226
18.5 內部鎖 227
18.6 選擇鎖目標 229
18.7 小結 231
第19章 線程安全對象 232
19.1 不可變對象 232
19.2 封裝同步策略 233
19.3 避免引用轉義 234
19.4 公用鎖和私有鎖 235
19.5 利用不可變類型 236
19.6 線程安全 239
19.7 小結 240
第20章 案例研究:線程安全隊列 242
20.1 作為列表對組的隊列 242
20.2 單個公用鎖的實現 242
20.3 單個私有鎖的實現 245
20.4 應用鎖拆分 247
20.5 小結 249
第21章 線程池 250
21.1 即發即棄異步執行 250
21.2 示例:並行服務器 252
21.3 不同類型的線程池 254
21.4 並行集合 256
21.5 小結 260
第22章 同步 261
22.1 同步的必要性 261
22.2 同步器 264
22.3 死鎖 265
22.4 使用線程轉儲調試死鎖 267
22.5 Java內存模型 268
22.6 小結 272
第23章 常用同步器 274
23.1 鎖 274
23.2 鎖存器和柵欄 276
23.3 信號量 278
23.4 條件 279
23.5 阻塞隊列 284
23.6 小結 287
第24章 案例研究:並行執行 289
24.1 順序引用實現 289
24.2 每個任務一個新線程 290
24.3 有界線程數 291
24.4 專用線程池 292
24.5 共享線程池 293
24.6 有界線程池 294
24.7 並行集合 295
24.8 使用條件提交異步任務 295
24.9 雙信號量實現 299
24.10 小結 300
第25章 Future與Promise 302
25.1 函數任務 302
25.2 Future作為同步器 303
25.3 超時、故障和取消 306
25.4 Future變體 307
25.5 Promise 308
25.6 示例:線程安全緩存 309
25.7 小結 311
第26章 函數並發編程 312
26.1 阻塞的正確性和性能問題 312
26.2 回調 314
26.3 Future的高階函數 316
26.4 Future的flatMap函數 318
26.5 示例:重新訪問並行服務器 319
26.6 函數並發編程模式 322
26.7 小結 325
第27章 最小化線程阻塞 327
27.1 原子操作 327
27.2 無鎖數據結構 330
27.3 fork/join池 332
27.4 異步編程 333
27.5 actor 334
27.6 反應流 337
27.7 非阻塞同步 338
27.8 小結 340
第28章 案例研究:並行策略 341
28.1 問題定義 341
28.2 帶超時的順序實現 342
28.3 使用invokeAny的並行實現 344
28.4 使用CompletionService的並行實現 345
28.5 Scala Future的異步實現 346
28.6 帶有CompletableFuture的異步實現 348
28.7 緩存策略的結果 350
28.8 小結 353
—附錄和詞匯表通過掃描封底二維碼獲取—
附錄 Java和Kotlin的特性 354
詞匯表 381