大小:13.57M
更新时间:23-08-31
系统:Pc
第一部分 为何用Erlang 第1章 什么是并发 2 1.1 给并发建模 2 1.1.1 开始模拟 3 1.1.2 发送消息 4 1.1.3 接收消息 4 1.2 并发的益处 4 1.3 并发程序和并行计算机 5 1.4 顺序和并发编程语言 6 1.5 小结 6 第2章 Erlang速览 7 2.1 Shell 7 2.1.1 =操作符 8 2.1.2 变量和原子的语法 8 2.2 进程、模块和编译 9 2.2.1 在shell里编译并运行Hello World 9 2.2.2 在Erlang shell外编译 9 2.3 你好,并发 10 2.3.1 文件服务器进程 10 2.3.2 客户端代码 13 2.3.3 改进文件服务器 14 2.4 练习 14 第二部分 顺序编程 第3章 基本概念 16 3.1 启动和停止Erlang shell 16 3.1.1 在shell里执行命令 17 3.1.2 可能出错的地方 17 3.1.3 在Erlang shell里编辑命令 18 3.2 简单的整数运算 18 3.3 变量 19 3.3.1 Erlang的变量不会变 20 3.3.2 变量绑定和模式匹配 20 3.3.3 为什么一次性赋值让程序变得更好 21 3.4 浮点数 22 3.5 原子 22 3.6 元组 23 3.6.1 创建元组 24 3.6.2 提取元组的值 25 3.7 列表 26 3.7.1 专用术语 26 3.7.2 定义列表 27 3.7.3 提取列表元素 27 3.8 字符串 27 3.9 模式匹配再探 29 3.10 练习 30 第4章 模块与函数 31 4.1 模块是存放代码的地方 31 4.1.1 常见错误 33 4.1.2 目录和代码路径 33 4.1.3 给代码添加测试 33 4.1.4 扩展程序 34 4.1.5 分号放哪里 36 4.2 继续购物 36 4.3 fun:基本的抽象单元 39 4.3.1 以fun作为参数的函数 40 4.3.2 返回fun的函数 41 4.3.3 定义你自己的控制抽象 42 4.4 简单列表处理 42 4.5 列表推导 45 4.5.1 Quicksort 46 4.5.2 毕达哥拉斯三元数组 47 4.5.3 回文构词 48 4.6 内置函数 48 4.7 关卡 49 4.7.1 关卡序列 49 4.7.2 关卡示例 50 4.7.3 true关卡的作用 51 4.8 case和if表达式 52 4.8.1 case表达式 52 4.8.2 if表达式 53 4.9 构建自然顺序的列表 54 4.10 归集器 55 4.11 练习 56 第5章 记录与映射组 57 5.1 何时使用映射组或记录 57 5.2 通过记录命名元组里的项 58 5.2.1 创建和更新记录 59 5.2.2 提取记录字段 59 5.2.3 在函数里模式匹配记录 59 5.2.4 记录是元组的另一种形式 60 5.3 映射组:关联式键-值存储 60 5.3.1 映射组语法 60 5.3.2 模式匹配映射组字段 62 5.3.3 操作映射组的内置函数 63 5.3.4 映射组排序 64 5.3.5 以JSON为桥梁 64 5.4 练习 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 改进错误消息 72 6.4.2 经常返回错误时的代码 73 6.4.3 错误可能有但罕见时的代码 73 6.4.4 捕捉一切可能的异常错误 74 6.5 栈跟踪 74 6.6 抛错要快而明显,也要文明 75 6.7 练习 75 第7章 二进制型与位语法 76 7.1 二进制型 76 7.2 位语法 78 7.2.1 打包和解包16位颜色 78 7.2.2 位语法表达式 79 7.2.3 位语法的真实例子 81 7.3 位串:处理位级数据 85 7.4 练习 87 第8章 Erlang顺序编程补遗 88 8.1 apply 89 8.2 算术表达式 90 8.3 元数 91 8.4 属性 91 8.4.1 预定义的模块属性 91 8.4.2 用户定义的模块属性 93 8.5 块表达式 94 8.6 布尔值 94 8.7 布尔表达式 95 8.8 字符集 95 8.9 注释 95 8.10 动态代码载入 96 8.11 Erlang的预处理器 99 8.12 转义序列 99 8.13 表达式和表达式序列 100 8.14 函数引用 101 8.15 包含文件 101 8.16 列表操作:++和-- 102 8.17 宏 102 8.18 模式的匹配操作符 104 8.19 数字 105 8.19.1 整数 105 8.19.2 浮点数 105 8.20 操作符优先级 106 8.21 进程字典 106 8.22 引用 108 8.23 短路布尔表达式 108 8.24 比较数据类型 108 8.25 元组模块 109 8.26 下划线变量 109 8.27 练习 110 第9章 类型 111 9.1 指定数据和函数类型 111 9.2 Erlang的类型表示法 113 9.2.1 类型的语法 113 9.2.2 预定义类型 114 9.2.3 指定函数的输入输出类型 114 9.2.4 导出类型和本地类型 116 9.2.5 不透明类型 116 9.3 dialyzer教程 117 9.3.1 错误使用内置函数的返回值 118 9.3.2 内置函数的错误参数 119 9.3.3 错误的程序逻辑 119 9.3.4 使用dialyzer 120 9.3.5 干扰dialyzer的事物 120 9.4 类型推断与成功分型 121 9.5 类型系统的局限性 123 9.6 练习 125 第10章 编译和运行程序 126 10.1 改变开发环境 126 10.1.1 设置载入代码的搜索路径 126 10.1.2 在系统启动时执行一组命令 127 10.2 运行程序的不同方式 128 10.2.1 在Erlang shell里编译和运行 128 10.2.2 在命令提示符界面里编译和运行 129 10.2.3 作为Escript运行 130 10.2.4 带命令行参数的程序 131 10.3 用makefile使编译自动化 132 10.4 当坏事发生 135 10.4.1 停止Erlang 135 10.4.2 未定义(缺失)的代码 135 10.4.3 shell没有反应 136 10.4.4 我的makefile不工作 137 10.4.5 Erlang崩溃而你想阅读故障转储文件 137 10.5 获取帮助 138 10.6 调节运行环境 138 10.7 练习 139 第三部分 并发和分布式程序 第11章 现实世界中的并发 142 第12章 并发编程 145 12.1 基本并发函数 145 12.2 客户端-服务器介绍 147 12.3 进程很轻巧 151 12.4 带超时的接收 153 12.4.1 只带超时的接收 154 12.4.2 超时值为0的接收 154 12.4.3 超时值为无穷大的接收 155 12.4.4 实现一个定时器 155 12.5 选择性接收 156 12.6 注册进程 157 12.7 关于尾递归的说明 158 12.8 用MFA或Fun进行分裂 160 12.9 练习 160 第13章 并发程序中的错误 161 13.1 错误处理的理念 161 13.1.1 让其他进程修复错误 162 13.1.2 任其崩溃 162 13.1.3 为何要崩溃 162 13.2 错误处理的术语含义 163 13.3 创建连接 164 13.4 同步终止的进程组 164 13.5 设立防火墙 165 13.6 监视 166 13.7 基本错误处理函数 166 13.8 容错式编程 167 13.8.1 在进程终止时执行操作 167 13.8.2 让一组进程共同终止 168 13.8.3 生成一个永不终止的进程 169 13.9 练习 170 第14章 分布式编程 171 14.1 两种分布式模型 171 14.2 编写一个分布式程序 172 14.3 创建名称服务器 173 14.3.1 第1阶段:一个简单的名称服务器 173 14.3.2 第2阶段:客户端在一个节点,服务器在相同主机的另一个节点 174 14.3.3 第3阶段:同一局域网内不同机器上的客户端和服务器 175 14.3.4 第4阶段:跨互联网不同主机上的客户端和服务器 176 14.4 分布式编程的库和内置函数 177 14.4.1 远程分裂示例 178 14.4.2 文件服务器再探 180 14.5 cookie保护系统 181 14.6 基于套接字的分布式模型 182 14.6.1 用lib_chan控制进程 182 14.6.2 服务器代码 183 14.7 练习 185 第四部分 编程库与框架 第15章 接口技术 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里调用shell脚本 196 15.4 高级接口技术 196 15.5 练习 197 第16章 文件编程 198 16.1 操作文件的模块 198 16.2 读取文件的几种方法 199 16.2.1 读取文件里的所有数据类型 199 16.2.2 分次读取文件里的数据类型 200 16.2.3 分次读取文件里的行 202 16.2.4 读取整个文件到二进制型中 202 16.2.5 通过随机访问读取文件 203 16.3 写入文件的各种方式 205 16.3.1 把数据列表写入文件 206 16.3.2 把各行写入文件 207 16.3.3 一次性写入整个文件 207 16.3.4 写入随机访问文件 209 16.4 目录和文件操作 209 16.4.1 查找文件信息 210 16.4.2 复制和删除文件 211 16.5 其他信息 211 16.6 一个查找工具函数 212 16.7 练习 214 第17章 套接字编程 216 17.1 使用TCP 216 17.1.1 从服务器获取数据 216 17.1.2 一个简单的TCP服务器 219 17.1.3 顺序和并行服务器 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服务器与客户端 227 17.4.2 一个UDP阶乘服务器 228 17.4.3 UDP数据包须知 230 17.5 对多台机器广播 230 17.6 一个SHOUTcast服务器 231 17.6.1 SHOUTcast协议 232 17.6.2 SHOUTcast服务器的工作原理 232 17.6.3 SHOUTcast服务器的伪代码 233 17.6.4 运行SHOUTcast服务器 234 17.7 练习 235 第18章 用WebSocket和Erlang进行浏览 236 18.1 创建一个数字时钟 237 18.2 基本交互 239 18.3 浏览器里的Erlang shell 240 18.4 创建一个聊天小部件 241 18.5 简化版IRC 244 18.6 浏览器里的图形 247 18.7 浏览器-服务器协议 249 18.7.1 从Erlang发送消息到浏览器 249 18.7.2 从浏览器到Erlang的消息 250 18.8 练习 251 第19章 用ETS和DETS存储数据 252 19.1 表的类型 252 19.2 影响ETS表效率的因素 254 19.3 创建一个ETS表 255 19.4 ETS示例程序 255 19.4.1 三字母组合迭代函数 256 19.4.2 创建一些表 257 19.4.3 创建表所需的时间 258 19.4.4 访问表所需的时间 258 19.4.5 获胜者是…… 259 19.5 保存元组到磁盘 260 19.6 其余操作 262 19.7 练习 263 第20章 Mnesia:Erlang数据库 264 20.1 创建初始数据库 264 20.2 数据库查询 265 20.2.1 选择表里的所有数据 266 20.2.2 从表里选择数据 267 20.2.3 从表里有条件选择数据 268 20.2.4 从两个表里选择数据(联接) 268 20.3 添加和移除数据库里的数据 269 20.3.1 添加行 269 20.3.2 移除行 270 20.4 Mnesia事务 270 20.4.1 中止事务 271 20.4.2 载入测试数据 273 20.4.3 do()函数 273 20.5 在表里保存复杂数据 274 20.6 表的类型和位置 275 20.6.1 创建表 276 20.6.2 常用的表属性组合 277 20.6.3 表的行为 278 20.7 表查看器 278 20.8 深入挖掘 279 20.9 练习 279 第21章 性能分析、调试与跟踪 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 未结束字符串 284 21.4.4 不安全变量 284 21.4.5 影子变量 285 21.5 运行时诊断 286 21.6 调试方法 287 21.6.1 io:format调试 288 21.6.2 转储至文件 289 21.6.3 使用错误记录器 289 21.7 Erlang调试器 289 21.8 跟踪消息与进程执行 291 21.9 Erlang代码的测试框架 294 21.10 练习 295 第22章 OTP介绍 296 22.1 通用服务器之路 297 22.1.1 Server 1:基本的服务器 297 22.1.2 Server 2:实现事务的服务器 298 22.1.3 Server 3:实现热代码交换的服务器 299 22.1.4 Server 4:事务与热代码交换 301 22.1.5 Server 5:更多乐趣 302 22.2 gen_server入门 304 22.2.1 确定回调模块名 304 22.2.2 编写接口方法 305 22.2.3 编写回调方法 305 22.3 gen_server的回调结构 308 22.3.1 启动服务器 308 22.3.2 调用服务器 308 22.3.3 调用和播发 309 22.3.4 发给服务器的自发性消息 310 22.3.5 后会有期,宝贝 310 22.3.6 代码更改 311 22.4 填写gen_server模板 311 22.5 深入探索 313 22.6 练习 313 第23章 用OTP构建系统 315 23.1 通用事件处理 316 23.2 错误记录器 318 23.2.1 记录错误 318 23.2.2 配置错误记录器 319 23.2.3 分析错误 323 23.3 警报管理 324 23.4 应用程序服务器 326 23.4.1 质数服务器 326 23.4.2 面积服务器 327 23.5 监控树 328 23.6 启动系统 331 23.7 应用程序 335 23.8 文件系统组织方式 336 23.9 应用程序监视器 337 23.10 怎样计算质数 338 23.11 深入探索 340 23.12 练习 341 第五部分 构建应用程序 第24章 编程术语 344 24.1 保持Erlang世界观 344 24.2 多用途服务器 346 24.3 有状态的模块 348 24.4 适配器变量 349 24.5 表意编程 351 24.6 练习 353 第25章 第三方程序 354 25.1 制作可共享代码存档并用rebar管理代码 354 25.1.1 安装rebar 354 25.1.2 在GitHub上创建一个新项目 355 25.1.3 在本地克隆这个项目 355 25.1.4 制作一个OTP应用程序 356 25.1.5 宣传你的项目 356 25.2 整合外部程序与我们的代码 357 25.3 生成依赖项本地副本 358 25.4 用cowboy构建嵌入式Web服务器 359 25.5 练习 364 第26章 多核CPU编程 366 26.1 给Erlang程序员的好消息 367 26.2 如何在多核CPU中使程序高效运行 367 26.2.1 使用大量进程 368 26.2.2 避免副作用 368 26.2.3 避免顺序瓶颈 369 26.3 让顺序代码并行 370 26.4 小消息,大计算 372 26.5 用mapreduce使计算并行化 376 26.6 练习 380 第27章 福尔摩斯的最后一案 381 27.1 找出数据的相似度 381 27.2 sherlock演示 382 27.2.1 获取并预处理数据 382 27.2.2 寻找最像给定文件的邮件 383 27.2.3 搜索指定作者、日期或标题的邮件 385 27.3 数据分区的重要性 386 27.4 给邮件添加关键词 386 27.4.1 词汇的重要性:TF*IDF权重 387 27.4.2 余弦相似度:两个权重向量的相似程度 388 27.4.3 相似度查询 389 27.5 实现方式概览 389 27.6 练习 390 27.7 总结 391 附录A OTP模板 392 附录B 一个套接字应用程序 398 附录C 一种简单的执行环境 413
同类热门
热门标签
网友评论0人参与,0条评论
最新排行
QManga漫画阅读器5.23Mv0.3 QManga是一款简洁小巧的漫画阅读软件。这款软件拥有十分精简的界面,能够给用户带来流畅舒适的漫画阅读体验,它支持众多常见的图片文件格式和压缩格式,还支持通过键盘进行快速翻页,让用户能够更加轻松地享受阅读漫画的乐趣。这款动漫阅读器有着非常小巧的体积
查看全唐诗检索工具官方版8.94Mv1.0 全唐诗检索工具官方版是由网友采用Python开发的一款唐诗查询工具,绿色小巧,安全无毒。该软件导入了《全唐诗》书籍中的全部诗词内容,非常丰富,同时支持用户输入诗人名、诗名、部分诗句等内容来进行快速查找唐诗,这样就能为研究者猛提供了莫大的方便。不过需
查看量化投资以python为工具53.25M蔡立耑pdf扫描版 量化投资以python为工具是一本量化投资优质工具书,由蔡立耑编著。全书主要介绍了Python的入门级操作及Python语言的介绍和安装,并由浅入深的为读者讲解了Python语言和Python量化的重要操作知识点,可以快速的帮助用户完成Python
查看css3专业网页开发指南72.75Mpdf高清扫描版css3专业网页开发指南是一本介绍css3网页开发的技术型指南图书,由英国著名Web前端开发工程师Peter Gasston编著。本书主要将CSS3规范中枯燥的技术语言提炼为平实的话语,向你展示了目前使用CSS3所有主流浏览器中能实现的各种效果,并通过真
查看百姓自制蔬菜食谱1000例58.08Mpdf高清版百姓自制蔬菜食谱1000例是一本pdf高清版的电子书,详细的介绍了各种蔬菜的不同做法,包括白菜、菠菜、韭菜、圆白菜、青菜、雪菜、茭白、芦笋、萝卜、山药、土豆、藕等多种蔬菜。同时该蔬菜菜谱还介绍了做菜的一些小常识、小窍门,让百姓了解从选料、制作到食用的一系
查看面向对象葵花宝典:思想技巧与实践38.21M李运华pdf扫描版 面向对象葵花宝典:思想技巧与实践,作者李运华,全书不仅系统介绍了面向对象是什么,更着重介绍了如何让这些技术落地。通过面向对象基础、面向对象实战、面向对象技巧、面向对象架构设计4部分,书中有详尽的和通俗易懂的概念和方法介绍,有完整的面向对象开发流程,
查看arduino编程从零开始23.64M刘椮楠译 pdf扫描版 arduino编程从零开始是一款Arduino新手编程入门手册,由Simon Monk编著,刘椮楠翻译,全书揭示了arduino的软件特性,介绍了如何在arduino上用c语言编写能稳定运行的sketch。本书的重点是对Arduino编程,作者将介
查看深入理解网站优化提升网站转化率的艺术与科学13.43M扫描版深入理解网站优化:提升网站转化率的艺术与科学是一本科学、全面、详尽的网站优化指南,由美国资深网站优化专家Rich Page编著。本书是目前市场上最优秀的网站优化“圣经”,结合网站分析、测试、易用性、在线营销4大方面深刻阐述转化率优化的艺术与科学,能够使你
查看ppk谈JavaScript50.85M科克 pdf扫描版ppk谈JavaScript是一本JavaScript提高书籍,由[荷]科克(Koch P.P.)著,淘宝UED翻译。本书内容丰富翔实,书中的8个案例来自作者开发的实际商业项目,将基础知识、Web标准、现代开发理念、最佳实践和大量实战技巧完美地结合起来,
查看尼康d3100说明书15.74Mpdf高清版 7101871018尼康d3100说明书专为持有同款相机的朋友准备的使用教程,该教程将图片和文字完美的结合在一起,从机身开始一只介绍到每一处的功能特点。同时压缩包内还特别提供了尼康d3100使用技巧,让不知如何操作尼康d3100单反相机的朋友瞬间成
查看delphi程序开发范例宝典第3版159.18Mpdf高清扫描版delphi程序开发范例宝典第3版是目前学习delphi开发最好的图书,由明日科技李慧、刘欣编著,目前已经由小编扫描成了pdf格式文件,可用于电脑、手机上阅读。本书知识点全面,涵盖delphi程序开发中用到的各种技术,包括了524个典型范例,覆盖热点和关
查看