• Rust实战
  • Rust实战
  • Rust实战
  • Rust实战
  • Rust实战
21年品牌 40万+商家 超1.5亿件商品

Rust实战

全新正版 假一赔十 可开发票

90.71 7.0折 129.8 全新

库存10件

北京东城
认证卖家担保交易快速发货售后保障

作者(新西兰)蒂姆·麦克纳马拉

出版社人民邮电出版社

ISBN9787115591395

出版时间2022-09

装帧平装

开本16开

定价129.8元

货号1202709549

上书时间2024-12-29

轻阅书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
蒂姆·麦克纳马拉(Tim McNamara),是文本挖掘、自然语言处理和数据工程等领域的专家。他是Rust Wellington(新西兰Rust开发者活动)的组织者,并且定期通过社交网站主持Rust编程教学

目录
第一部分Rust语言的特色

第1章Rust语言介绍3

1.1哪些地方使用了Rust?4

1.2在工作中提倡使用Rust5

1.3Rust初体验6

1.3.1直通“Hello,world!”6

1.3.2第一个Rust程序8

1.4下载本书源代码10

1.5使用Rust语言的感受如何10

1.6Rust语言是什么?13

1.6.1Rust的目标:安全性14

1.6.2Rust的目标:生产力18

1.6.3Rust的目标:控制19

1.7Rust的主要特点20

1.7.1性能20

1.7.2并发21

1.7.3内存使用效率21

1.8Rust的缺点21

1.8.1循环数据结构21

1.8.2编译速度22

1.8.3严格22

1.8.4语言的大小22

1.8.5炒作22

1.9TLS安全性问题的研究22

1.9.1“心脏出血”23

1.9.2跳转到失败23

1.10Rust最适用于哪些领域?25

1.10.1命令行实用程序25

1.10.2数据处理25

1.10.3扩展应用程序25

1.10.4资源受限的环境26

1.10.5服务器端应用26

1.10.6桌面应用程序26

1.10.7桌面26

1.10.8移动端27

1.10.9Web27

1.10.10系统编程27

1.11Rust的隐式特性:它的社区27

1.12Rust术语表28

本章小结28

第2章Rust语言基础29

2.1创建一个可运行的程序30

2.1.1编译单文件的Rust程序30

2.1.2使用cargo编译Rust项目31

2.2初探Rust语法32

2.3数字类型34

2.3.1整数和浮点数34

2.3.2整数的二进制、八进制及十六进制表示法35

2.3.3数字的比较运算36

2.3.4有理数、复数和其他数字类型41

2.4流程控制43

2.4.1for循环:迭代的中心支柱43

2.4.2continue:跳过本次迭代余下的部分45

2.4.3while:循环,直到循环条件改变了循环的状态45

2.4.4loop:Rust循环结构的基本组件46

2.4.5break:立即退出循环46

2.4.6if、ifelse和else:条件测试47

2.4.7match:类型感知的模式匹配48

2.5定义函数50

2.6使用引用50

2.7项目:绘制芒德布罗集51

2.8高级函数定义54

2.8.1显式生命周期注解54

2.8.2泛型函数55

2.9创建grep-lite58

2.10使用数组、切片和动态数组来创建数据列表61

2.10.1数组61

2.10.2切片63

2.10.3动态数组63

2.11包含第三方代码65

2.11.1增加对正则表达式的支持66

2.11.2生成包的本地化文档67

2.11.3使用rustup管理Rust工具链68

2.12命令行参数的支持68

2.13从文件中读取70

2.14从标准输入中读取72

本章小结73

第3章复合数据类型75

3.1使用普通函数对API进行实验76

3.2使用结构体为文件建模77

3.3使用impl为结构体添加方法81

3.4返回错误信息84

3.4.1修改一个有名的全局变量85

3.4.2使用Result作为返回类型88

3.5定义并使用枚举体91

3.6使用trait来定义共有的行为95

3.6.1创建名为Read的trait95

3.6.2为类型实现std::fmt::Display96

3.7将类型暴露给外部使用99

3.8创建内联文档100

3.8.1使用rustdoc给单个源文件生成文档101

3.8.2使用cargo为一个包及其依赖的包生成文档101

本章小结103

第4章生命周期、所有权和借用104

4.1实现一个模拟的立方体卫星地面站105

4.1.1遇到第一个生命周期问题106

4.1.2基本类型的特殊行为109

4.2本章图例的说明110

4.3所有者是什么?它有什么职责?111

4.4所有权是如何移动的?112

4.5解决所有权的问题114

4.5.1在不需要完整所有权的地方,使用引用116

4.5.2使用更少的长存活期的值119

4.5.3在需要完整所有权的地方,复制长存活期的值124

4.5.4把数据包装到特殊的类型中127

本章小结129

第二部分揭开系统编程的神秘面纱

第5章深入理解数据133

5.1位模式和类型133

5.2整数的生存范围135

5.3小数的表示形式139

5.4浮点数139

5.4.1观察f32的内部140

5.4.2分离出符号位141

5.4.3分离出指数142

5.4.4分离出尾数143

5.4.5剖析一个浮点数145

5.5定点数格式147

5.6从随机字节中生成随机概率151

5.7实现一个CPU模拟器以建立函数也是数据的观念153

5.7.1CPU原型1:加法器153

5.7.2CPU原型1完整的清单157

5.7.3CPU原型2:累加器159

5.7.4CPU原型3:调用函数162

5.7.5CPU4:添加额外功能168

本章小结168

第6章内存169

6.1指针169

6.2探索Rust的引用和指针类型171

6.2.1Rust中的原始指针176

6.2.2Rust指针的生态系统178

6.2.3智能指针构建块180

6.3为程序提供存储数据的内存181

6.3.1栈181

6.3.2堆183

6.3.3什么是动态内存分配?187

6.3.4分析动态内存分配的影响192

6.4虚拟内存194

6.4.1背景195

6.4.2第一步:让一个进程来扫描它自己的内存196

6.4.3把虚拟地址翻译为物理地址198

6.4.4第二步:通过操作系统来扫描地址空间201

6.4.5第三步:读取和写入进程内存中的字节数据203

本章小结203

第7章文件与存储204

7.1文件格式是什么?204

7.2创建你自己的用于存储数据的文件格式206

7.3实现一个hexdump的克隆208

7.4Rust中的文件操作211

7.4.1使用Rust打开一个文件并控制文件的模式211

7.4.2使用std::fs::Path以一种类型安全的方式与文件系统进行交互212

7.5使用基于日志结构、仅追加的存储架构,来实现一个键值存储213

7.5.1键值模型213

7.5.2讲解actionkvv1:一个带有命令行接口的内存中的键值存储214

7.6Actionkvv1:前端代码215

7.7理解ACTIONKV的核心:LIBACTIONKV包219

7.7.1初始化ActionKV结构体219

7.7.2处理单条记录221

7.7.3以确定的字节顺序将多字节二进制数据写入磁盘223

7.7.4使用校验和来验证I/O错误225

7.7.5向已存在的数据库中插入一个新的键值对227

7.7.6actionkv的完整清单228

7.7.7使用HashMap和BTreeMap来处理键和值232

7.7.8创建一个HashMap并用值来填充它234

7.7.9从HashMap和BTreeMap中来检索值235

7.7.10在HashMap和BTreeMap之间如何选择236

7.7.11给actionkvv2.0添加数据库索引237

本章小结240

第8章网络242

8.1全部的网络体系都在7个分层中243

8.2使用reqwest来生成一个HTTPGET请求245

8.3trait对象247

8.3.1trait对象能做什么?247

8.3.2trait对象是什么?247

8.3.3创建一个微型的角色扮演游戏:rpg项目248

8.4TCP251

8.4.1端口号是什么?252

8.4.2把主机名转换为IP地址252

8.5以符合工效学的方式处理来自多个包的错误258

8.5.1问题:无法返回多种错误类型259

8.5.2通过定义错误类型来包装下游的错误262

8.5.3使用unwrap()和expect()来“作弊”267

8.6MAC地址268

8.7使用Rust的枚举体来实现状态机271

8.8原始TCP272

8.9创建一个虚拟网络设备272

8.10原始HTTP273

本章小结282

第9章时间与时间保持283

9.1背景284

9.2时间源285

9.3一些相关的术语定义286

9.4时间的编码287

9.5clockv0.1.0:教会一个应用程序如何报时288

9.6clockv0.1.1:格式化时间戳以符合ISO8601和电子邮件的标准289

9.6.1重构clockv0.1.0的代码以支持更广泛的体系结构290

9.6.2时间的格式化291

9.6.3提供一个完整的命令行接口291

9.6.4clockv0.1.1:完整的项目代码293

9.7clockv0.1.2:设置时间295

9.7.1相同的行为模式295

9.7.2给使用libc的操作系统来设置时间296

9.7.3在Windows上设置时间298

9.7.4clockv0.1.2:完整的清单300

9.8改善错误处理303

9.9clockv0.1.3:使用NTP来解决时钟之间的差异304

9.9.1发送NTP请求并解析响应304

9.9.2依据服务器的响应来调整本地时间306

9.9.3在使用了不同的精度和纪元的时间表示法之间进行转换308

9.9.4clockv0.1.3:完整的清单309

本章小结316

第10章进程、线程和容器318

10.1匿名函数319

10.2产生线程320

10.2.1引入闭包320

10.2.2产生一个新线程321

10.2.3产生几个线程的效果321

10.2.4产生很多个线程的效果322

10.2.5重新生成这些结果324

10.2.6共享的变量328

10.3闭包与函数的差异330

10.4从多线程解析器和代码生成器中程序化地生成头像331

10.4.1如何运行render-hex以及预期的输出331

10.4.2单线程版本render-hex的概要介绍333

10.4.3为每个逻辑上的任务产生一个线程341

10.4.4使用线程池和任务队列343

10.5并发与任务虚拟化350

10.5.1线程352

10.5.2上下文切换是什么?352

10.5.3进程353

10.5.4WebAssembly353

10.5.5容器353

10.5.6为什么要使用操作系统呢?354

本章小结354

第11章内核355

11.1初级操作系统(FledgeOS)355

11.1.1搭建开发环境,用于开发操作系统内核355

11.1.2验证开发环境357

11.2Fledgeos-0:先让一些东西能运行起来358

11.2.1第一次引导启动358

11.2.2编译的步骤359

11.2.3源清单360

11.2.4处理panic364

11.2.5使用VGA兼容的文本模式写入屏幕365

11.2.6_start():FledgeOS的main()函数366

11.3fledgeos-1:避免使用忙循环367

11.3.1通过直接与CPU交互来降低功耗367

11.3.2fledgeos-1的源代码368

11.4fledgeos-2:自定义异常处理369

11.4.1几乎可以正确地处理异常369

11.4.2fledgeos-2的源代码369

11.5fledgeos-3:文本的输出370

11.5.1把彩色的文本输出到屏幕371

11.5.2控制枚举体的内存表示形式371

11.5.3为何要使用枚举体?372

11.5.4创建出一个类型,能够用来输出到VGA的帧缓冲区372

11.5.5输出到屏幕373

11.5.6fledgeos-3的源代码373

11.6fledgeos-4:自定义恐慌处理375

11.6.1实现一个恐慌处理程序,能够向用户报告错误375

11.6.2使用core::fmt::Write来重新实现panic()376

11.6.3实现core::fmt::Write376

11.6.4fledgeos-4的源代码377

本章小结379

第12章信号、中断和异常380

12.1术语表380

12.2中断是如何影响应用程序的?383

12.3软件中断384

12.4硬件中断385

12.5信号处理386

12.5.1默认的行为386

12.5.2用来暂停和恢复一个程序的操作386

12.5.3列出操作系统支持的所有信号389

12.6使用自定义的行为来处理信号389

12.6.1在Rust中使用全局变量390

12.6.2使用全局变量来指示已经启动了关机392

12.7发送由应用程序定义的信号394

12.8如何忽略信号?396

12.9从深层嵌套的调用栈中关闭程序397

12.9.1sjlj项目的介绍399

12.9.2在程序中设置固有函数399

12.9.3把指针转换成其他类型401

12.9.4编译sjlj项目402

12.9.5sjlj项目的源代码403

12.10将这些技术应用于不支持信号的平台的说明406

12.11修订异常406

本章小结406

内容摘要
本书通过探索多种系统编程概念和技术引入Rust编程语言,在深入探索计算机工作原理的同时,帮助读者了解Rust的所有权系统、Trait、包管理、错误处理、条件编译等概念,并通过源自现实的示例来帮助读者了解Rust中的内存模型、文件操作、多线程、网络编程等内容。

本书旨在帮助读者理解如何用Rust进行系统编程,并提供了一些使用Rust编写代码的技巧。本书给出了10余个源自现实的示例,让读者不仅能了解Rust语法,还能了解Rust的实际运用。

本书适合所有对Rust感兴趣的读者阅读。要更好地掌握本书涵盖的内容,读者应具备一定的编程经验,至少应对计算机编程的基本概念有所了解。

主编推荐
*赠送源代码示例文件
*涵盖数十个有趣的示例,简洁易懂,帮你了解Rust语法和Rust的实际运用
*内容由浅入深,通过探索多种系统编程概念和技术引入Rust编程语言,推荐给对rust编程感兴趣的你!

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP