PingCap的Rust训练课程5:异步编程

前言

任务:通过自定义协议,使用异步网络创建一个多线程、持久化键/值存储的服务端和客户端。

目标

  • 了解在Rust中编写future时使用基本模式
  • 了解future的错误处理
  • 学会调试类型系统
  • 使用Tokio运行时执行异步网络
  • 使用boxed future处理棘手的类型系统问题
  • 使用impl Trait创建匿名Future类型

关键词:异步、future、tokio、impl Trait

阅读更多

PingCap的Rust训练课程4:并发与并行

前言

任务:使用自定义协议,创建一个具有同步网络的多线程、持久化键/值存储的服务端和客户端。

目标

  • 写一个简单的线程池
  • 使用通道进行跨线程通信
  • 利用锁共享数据结构
  • 无锁执行读操作
  • 对单线程与多线程版本进行基准测试

关键词:线程池、通道、锁、无锁数据结构、原子化、参数化基准测试。

阅读更多

PingCap的Rust训练课程3:同步的“客户端-服务端”网络模块

前言

任务:创建一个单线程、持久化的键/值存储的服务器和客户端,使用自定义协议进行同步联网

目标

  • 创建一个客户端-服务器应用程序
  • std库的网络API编写自定义协议
  • 为服务端引入日志记录功能
  • 用trait实现可插拔的后端
  • sled对手写的后端进行基准测试

关键词std::net、日志、trait、基准测试。

阅读更多

PingCap的Rust训练课程2:日志结构文件I/O

前言

任务:创建一个键/值存储程序,能够从命令行访问,支持持久化

目标

  • 编写健壮的错误和异常处理
  • 使用serde进行序列化
  • 使用标准文件API将数据作为日志写入磁盘
  • 从磁盘读取键/值数据的状态
  • 将内存中的索引键映射在磁盘的对应值上
  • 定期压缩日志以删除过期数据

关键词:日志结构文件I/O、bitcask、failurecrate、Read/Writetrait、serdecrate。

扩展练习:尝试使用structoptcrate。

阅读更多

PingCap的Rust训练课程1:熟悉Rust工具链

前言

任务:在内存中创建一个能够接受命令行参数的键/值存储程序,且程序能够通过一些简单的测试。

目标

  • 安装Rust编译器和工具
  • 了解本课程中使用的项目结构
  • 使用cargo init/run/test/clippy/fmt
  • 了解如何从crates.io查找、导入crates
  • 为键值存储程序定义恰当的数据类型

关键词:测试、clapcrate、了解CARGO_VERSION等值、熟悉clippyrustfmt工具。

扩展练习:尝试使用structoptcrate。

阅读更多

使用Rust在树莓派上编写操作系统 - 07 - 时间戳

概述

  • 用SD卡上的镜像启动树莓派感觉很棒,但如果对每个新的二进制文件,都需要手动将其放在SD卡上就会非常麻烦。因此,本章我们将编写一个链式加载器
  • 这是我们最后一次手动拷贝镜像到SD卡上。后面的每章教程都会在Makefile中提供一个chainboot目标,以便通过UART加载内核。
  • 我们为定时器硬件添加抽象,并在_arch/aarch64中为ARM架构实现了定时器。
  • 新的计时器函数用于给UART打印的内容添加时间戳,并消除了GPIO设备驱动程序中由循环产生的延迟,从而提高精确性。
  • 增加了一个warn!()宏。
阅读更多

使用Rust在树莓派上编写操作系统 - 06 - UART的链式加载

概述

  • 用SD卡上的镜像启动树莓派感觉很棒,但如果对每个新的二进制文件,都需要手动将其放在SD卡上就会非常麻烦。因此,本章我们将编写一个链式加载器
  • 这是我们最后一次手动拷贝镜像到SD卡上。后面的每章教程都会在Makefile中提供一个chainboot目标,以便通过UART加载内核。
阅读更多

使用Rust在树莓派上编写操作系统 - 05 - 驱动GPIO和UART

概述

  • 既然我们在上一章教程中已经准备好了基础设施——启用了安全全局变量——那么现在就可以为第一个真实设备添加驱动程序了。
  • 现在我们可以离开神奇的QEMU控制台,来使用真正的UART设备了,就像正经的嵌入式开发者那样。
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×