- ISBN:9787302616771
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:348
- 出版时间:2022-09-01
- 条形码:9787302616771 ; 978-7-302-61677-1
本书特色
Rust是一种现代开源系统编程语言,它承诺并做到了3个领域的*佳:Java的类型安全;C++的速度、表现力和效率;无须垃圾收集器的内存安全。通读完本书,你会对如何使用Rust管理和控制操作系统资源(如内存、文件、进程、线程、系统环境、外围设备、网络接口、终端和外壳程序)有清晰的了解,并掌握如何通过FFI构建跨语言绑定。在此过程中,你会对Rust为构建安全、高性能、可靠和高效的系统级软件带来的价值有深刻的认识。
内容简介
《Rust系统编程》详细阐述了与Rust系统编程相关的基本解决方案,主要包括Rust工具链和项目结构,Rust编程语言之旅,Rust标准库介绍,管理环境、命令行和时间,Rust中的内存管理,在Rust中使用文件和目录,在Rust中实现终端I/O,处理进程和信号,管理并发,处理设备I/O,学习网络编程,编写不安全Rust和FFI等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
目录
目 录
第1篇 Rust系统编程入门
第1章 Rust工具链和项目结构 3
1.1 技术要求 3
1.2 为项目选择正确的Rust配置 4
1.2.1 选择Rust发布通道 4
1.2.2 选择Rust项目类型 6
1.3 Cargo和项目结构简介 7
1.4 使用Cargo自动化构建管理 9
1.4.1 构建一个基本的二进制项Crate 9
1.4.2 配置Cargo 11
1.4.3 构建静态库Crate 13
1.5 自动化依赖项管理 14
1.5.1 指定依赖项的位置 15
1.5.2 在源代码中使用依赖包 16
1.6 编写和运行自动化测试 16
1.6.1 用Rust编写单元测试 17
1.6.2 用Rust编写集成测试 18
1.6.3 控制测试执行 19
1.6.4 按顺序或并行运行测试 21
1.7 生成项目文档 21
1.7.1 在Crate中编写内联文档注释 22
1.7.2 在Markdown文件中编写文档 23
1.7.3 运行文档测试 24
1.8 小结 24
1.9 延伸阅读 25
第2章 Rust编程语言之旅 27
2.1 技术要求 28
2.2 分析问题域 28
2.3 系统行为建模 29
2.4 构建标记化器 32
2.4.1 Tokenizer数据结构 32
2.4.2 Tokenizer数据处理 36
2.5 构建解析器 40
2.5.1 Parser数据结构 41
2.5.2 Parser方法 43
2.5.3 运算符优先级 47
2.6 构建求值器 50
2.7 处理错误 51
2.8 综合演练 55
2.9 小结 57
第3章 Rust标准库介绍 59
3.1 技术要求 59
3.2 Rust标准库和系统编程 59
3.3 探索Rust标准库 62
3.4 面向计算的模块 67
3.4.1 数据类型 67
3.4.2 数据处理 69
3.4.3 错误处理 69
3.4.4 外部函数接口 70
3.4.5 编译器 70
3.5 面向系统调用的模块 70
3.5.1 内存管理 70
3.5.2 并发 72
3.5.3 文件系统 73
3.5.4 输入/输出 73
3.5.5 网络连接 73
3.5.6 与特定操作系统相关的模块 73
3.5.7 时间 73
3.5.8 异步 73
3.6 构建模板引擎 74
3.7 模板语法和设计 76
3.7.1 模板文件的常见元素列表 76
3.7.2 模板引擎的概念模型 77
3.7.3 模板引擎的工作原理 79
3.7.4 模板引擎生成HTML的步骤 80
3.7.5 新建库项目 81
3.7.6 模板引擎的代码结构 81
3.7.7 数据结构 82
3.7.8 关键函数 83
3.7.9 测试用例 84
3.8 编写模板引擎 86
3.8.1 解析器的设计 86
3.8.2 编写解析器 87
3.8.3 支持函数 88
3.8.4 main()函数 91
3.8.5 执行模板引擎 95
3.9 小结 96
3.10 延伸阅读 97
第4章 管理环境、命令行和时间 99
4.1 技术要求 100
4.2 项目范围和设计概述 100
4.2.1 要构建的内容 100
4.2.2 技术设计 103
4.3 使用Rust标准库 106
4.3.1 路径操作和目录迭代 106
4.3.2 时间测量 108
4.3.3 使用环境变量 108
4.3.4 使用命令行参数 110
4.3.5 imagix库设计方法总结 111
4.4 编写imagix库代码 111
4.4.1 imagix库的模块结构 112
4.4.2 添加依赖项 114
4.4.3 遍历目录条目 114
4.4.4 调整图像大小 115
4.4.5 图像文件信息统计 117
4.4.6 错误处理 118
4.5 开发命令行应用程序 119
4.5.1 设计命令行界面 120
4.5.2 使用structopt对命令行二进制文件进行编码 122
4.6 小结 125
第2篇 在Rust中管理和控制系统资源
第5章 Rust中的内存管理 129
5.1 技术要求 130
5.2 操作系统内存管理的基础知识 130
5.2.1 内存管理生命周期 130
5.2.2 进程的内存布局 134
5.3 Rust程序的内存布局 136
5.3.1 理解Rust程序的内存布局 136
5.3.2 栈、堆和静态内存的特性 139
5.4 Rust内存管理生命周期 141
5.4.1 Rust内存管理生命周期概述 142
5.4.2 内存分配 144
5.4.3 内存使用和操作 146
5.4.4 Rust的所有权规则 147
5.4.5 Rust借用和引用规则 148
5.4.6 内存释放 148
5.4.7 内存安全 149
5.5 实现动态数据结构 150
5.5.1 模板引擎设计的变化 152
5.5.2 编写动态数据结构的代码 154
5.6 小结 159
5.7 延伸阅读 159
第6章 在Rust中使用文件和目录 161
6.1 技术要求 161
6.2 理解用于文件操作的Linux系统调用 161
6.3 在Rust中执行文件I/O操作 164
6.3.1 创建 166
6.3.2 打开 166
6.3.3 复制 167
6.3.4 重命名 167
6.3.5 读取 167
6.3.6 写入 168
6.3.7 查询 168
6.3.8 元数据 169
6.3.9 关闭 170
6.4 了解目录和路径操作 170
6.4.1 读取目录条目的详细信息 172
6.4.2 以编程方式创建目录结构 173
6.4.3 动态构造路径字符串 173
6.5 设置硬链接、符号链接和执行查询 174
6.5.1 创建硬链接 175
6.5.2 创建和查询符号链接 175
6.6 在Rust中编写shell命令 176
6.6.1 代码概述 176
6.6.2 错误处理 178
6.6.3 源指标计算 180
6.6.4 main()函数 184
6.7 小结 186
第7章 在Rust中实现终端I/O 187
7.1 技术要求 187
7.2 终端I/O基础知识 188
7.2.1 终端的特性 188
7.2.2 Termion Crate 189
7.2.3 定义项目构建内容 190
7.3 处理终端用户界面和光标 192
7.3.1 编写数据结构和main()函数 192
7.3.2 初始化文本查看器并获取终端大小 195
7.3.3 显示文档并设置终端颜色、样式和光标位置 196
7.3.4 退出文本查看器 197
7.4 处理键盘输入和滚动 198
7.4.1 侦听用户的按键 199
7.4.2 定位终端光标 200
7.4.3 在终端上启用滚动功能 202
7.5 处理鼠标输入 203
7.6 小结 205
第8章 处理进程和信号 207
8.1 技术要求 207
8.2 理解Linux进程概念和系统调用 208
8.2.1 程序和进程之间的区别 208
8.2.2 程序内存布局和进程管理 209
8.3 深入了解Linux进程基础知识 211
8.3.1 进程管理关键任务分解 211
8.3.2 创建新进程 212
8.3.3 检查子进程的状态 213
8.3.4 使用进程间通信 213
8.3.5 设置环境变量 213
8.3.6 终止进程 214
8.3.7 处理信号 214
8.4 使用Rust生成进程 214
8.4.1 生成新的子进程 214
8.4.2 终止进程 216
8.4.3 检查子进程的执行状态 217
8.5 处理I/O和环境变量 218
8.5.1 处理子进程的I/O 218
8.5.2 为子进程设置环境变量 220
8.6 处理恐慌、错误和信号 221
8.6.1 中止当前进程 221
8.6.2 信号处理 223
8.7 用Rust编写shell程序 225
8.7.1 新建项目 225
8.7.2 迭代1—生成执行命令的子进程 225
8.7.3 迭代2—添加对命令参数的支持 227
8.7.4 迭代3—支持自然语言命令 228
8.7.5 测试和错误处理 229
8.7.6 练习和改进 230
8.8 小结 231
第9章 管理并发 233
9.1 技术要求 233
9.2 并发的基础知识 234
9.2.1 并发与并行 234
9.2.2 多线程的概念 237
9.3 生成和配置线程 239
9.3.1 使用thread::spawn()函数 240
9.3.2 使用thread::Builder结构 241
9.4 线程中的错误处理 242
9.5 线程间消息传递 245
9.6 通过共享状态实现并发 247
9.6.1 互斥锁和原子引用计数 248
9.6.2 定义程序结构 249
9.6.3 汇总共享状态下的源文件统计信息 250
9.7 使用计时器暂停线程执行 254
9.8 小结 255
第3篇 高 级 主 题
第10章 处理设备I/O 259
10.1 技术要求 259
10.2 了解Linux中设备I/O的基础知识 260
10.2.1 设备驱动程序 260
10.2.2 设备类型 262
10.3 执行缓冲读取和写入操作 263
10.4 使用标准输入和输出 266
10.5 I/O上的链接和迭代器 268
10.6 处理错误和返回值 270
10.7 获取已连接USB设备的详细信息 272
10.7.1 设计项目 272
10.7.2 编写数据结构和工具函数 274
10.7.3 编写main()函数 276
10.8 小结 278
第11章 学习网络编程 279
11.1 技术要求 279
11.2 Linux中的网络连接基础知识 280
11.3 理解Rust标准库中的网络原语 283
11.3.1 Rust网络标准库中的基础数据结构 283
11.3.2 IP地址应用示例 284
11.3.3 套接字示例 286
11.4 在Rust中使用TCP和UDP进行编程 286
11.4.1 编写UDP服务器和客户端 286
11.4.2 编写TCP服务器和客户端 289
11.5 编写一个TCP反向代理 290
11.5.1 代理服务器类型 291
11.5.2 新建项目 292
11.5.3 编写源服务器—结构体和方法 293
11.5.4 编写源服务器—main()函数 295
11.5.5 测试源服务器 298
11.5.6 编写反向代理服务器 299
11.5.7 测试反向代理服务器 302
11.6 小结 303
第12章 编写不安全Rust和FFI 305
12.1 技术要求 305
12.2 不安全Rust简介 306
12.2.1 区分安全Rust和不安全Rust代码 307
12.2.2 在不安全Rust中的操作 308
12.3 FFI简介 310
12.3.1 通过FFI接口调用外部函数 310
12.3.2 跨FFI边界共享联合体 311
12.4 安全FFI指南 313
12.5 从C中调用Rust 314
12.5.1 项目操作步骤概述 314
12.5.2 具体操作过程 314
12.6 理解ABI 316
12.6.1 关于ABI 317
12.6.2 条件编译选项 317
12.6.3 数据布局约定 318
12.6.4 链接选项 319
12.7 小结 319
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥48.2¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0