Rust HTTP 协议栈在终端通信场景的实践 - 胡凯
与 HTTP 协议 actix_web 是一个强大、实用且速度极快的 Rust 网络框架。 ✓ Rust 异步实现 ✓ 支持 HTTP/1 和 HTTP/2 ✓ 支持 HTTPS ✓ 支持消息路由 ✓ 支持 body 自动解压缩 ✓ 支持 multipart Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 以上 Ylong HTTP 客户端库当 前实现的基础功能: ✓ 支持同步逻辑和异步逻辑 ✓ 支持 HTTP/1.1、HTTP/2、 HTTP/3 协议及其组件 ✓ 支持 HTTPS ✓ 支持客户端代理 ✓ 支持自动重定向 ✓ 支持连接管理和复用 ✓ 支持进度显示 ✓ 支持发送 Multipart/ Chunk 格式 body Rust China Conf 2022 – 2023, 传输性能。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与终端 HTTP 通信场景结合 针对网络不稳定场景: ➢ 支持用户设置速度限制范围:给消息 body 读取逻辑增加速度的上下限,以及时根据网络变化做 出操作。 ➢ 支持用户设置连接和请求的超时时间:给请求的各个区间设置定时器,以及时检测网络变化。 Rust China Conf 20220 码力 | 26 页 | 1.25 MB | 1 年前3Rust 语言学习笔记
.. 92 7.1.4 线程与 move闭包 ................................................................ 93 7.2 消息传递 .................................................................................... 93 7.2.1 通道与所有权的转移 96 7.2.4 异步通道与同步通道 ............................................................. 97 7.2.5 可发送的消息类型 ................................................................ 99 7.3 send 与 sync........... 原生类型的无效值,即使是在私有字段/本地变量中: o 空/悬垂引用或装箱 o bool 中一个不是 false(0)或 true(1)的值 o enum 中一个并不包含在类型定义中判别式 o char 中一个代理字(surrogate)或超过 char::MAX 的值 o str 中非 UTF-8 字节序列 在外部代码中使用 Rust 或在 Rust 中使用外部语言。 6.3 FFI(Foreign0 码力 | 117 页 | 2.24 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 16.2. 使用消息传递在线程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规 则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序的运行。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 562 页 | 3.23 MB | 9 天前3简谈 Rust 与国密 TLS - 王江桐
10118-3:2018 计算密码杂凑 哈希 256 SHA256 是 TLCP、数字签名及验证、消息认 证码生成及验证、随机数生成、 密钥扩充 Sm4 GM/T 0002-2012 ISO/IEC WD1 18033- 3/AMD2 分组加解密 分组加 密 128 AES128,但 是更多次轮询 是 TLCP、消息加解密,用于替代 DES/AES 等国际算法 Sm7 / 分组加解密 分组加 Rust China Conf 2022 – 2023, Shanghai, China • SM1 是分组加密算法,实现对称加密,分组长度和密钥长度都为 128 位,对长消息进行加解密时, 若消息长度过长,需要进行分组,如果消息长度不足,则要进行填充。 • 保证数据机密性。 • 算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片 中,调用该算法时,需要通过加密芯片的接口进行调用。 MD5/SHA-1/SHA-2 等国际 算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • 在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成、密钥 扩充等。据国家密码管理局表示,其安全性及效率要高于0 码力 | 44 页 | 3.70 MB | 1 年前3Rust 程序设计语言简体中文版
...................................................................................... 414 16.2. 使用消息传递在线程间通信 ....................................................................................... 421 Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 译器在编译时会根据一系列的规则 进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都 不会减慢程序。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 600 页 | 12.99 MB | 1 年前3Comprehensive Rust(简体中文) 202412
言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 27 fn main() { let x = 3.14; let y = 20; assert_eq!(x, y); // ERROR: happened: {msg}"), } } 在这里,我们使用了分支来解构“Result”值。在第一个分支中, “half”被绑定到“Ok”变体中的值。在第二 个分支中, “msg”被绑定到错误消息。 结构体 • 更改“foo”中的字面量值以与其他模式相匹配。 • 向“Foo”添加一个新字段,并根据需要更改模式。 • 捕获和常量表达式之间的区别可能很难发现。尝试将第二个分支中的“2”更改为一个变量,可以看 collect() 或使用以下 Turbofish:foo.collect::>()。 debuggable 是什么类型?尝试输入 let debuggable: () = ..,查看会显示什么错误消息。 14.6 练习:通用 min 函数 In this short exercise, you will implement a generic min function that determines 0 码力 | 359 页 | 1.33 MB | 10 月前3基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭
如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决 了很多分布式⽹络管理的共同的问题, ⽐如说分布式消息⼀致性问题,边缘节 点⾃动发现等问题 传统⽅案痛点 1)数据传输量⼤,中⼼压⼒⼤,⾼可⽤要求⾼ 2)数据发布与订阅都在中⼼,延迟⾼ 3)源站直接暴露 hpmq-cli push 发布函数 Demo 4. HPMQ未来规划 开源(https://github.com/wangjuyunlian/hpmq) 基于零信任架构实现远程设备访问 消息边缘存储 发个招聘⼩⼴告(rust/c/c++岗位) 但愿诸贤集鹭汉, 书⽣穷死胜侯封0 码力 | 31 页 | 3.95 MB | 1 年前3基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺
taosX - 物联网数据接入问题 • 多种不同协议数据对接,开发复杂度高 • 模块之间关联性不高但模块组成复杂,可维护性差 • 大量设备大量数据归集存储,存储压力大 • 数据总线 / 消息队列消息接入,定制化程度要求高 • 数据业务逻辑自定义需求强 • 一定的实时数据分析能力 taosX - 功能路线图 集群运维 数据接入 流式处理 流式处理 数据分享 开放平台 • Backup/Restore0 码力 | 29 页 | 2.26 MB | 1 年前3Hello 算法 1.1.0 Rust版
语言设计之初,人们认 为 16 位足以表示所有可能的字符。然而,这是一个不正确的判断。后来 Unicode 规范扩展到了超过 16 位,所以 Java 中的字符现在可能由一对 16 位的值(称为“代理对”)表示。 ‧ JavaScript 和 TypeScript 的字符串使用 UTF‑16 编码的原因与 Java 类似。当 1995 年 Netscape 公司 首次推出 JavaScript 操作系统)都广泛使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字 节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试 难度。 出于以上原因,部分编程语言提出了一些不同的编码方案。0 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.2.0 简体中文 Rust 版
语言设计之初,人们认 为 16 位足以表示所有可能的字符。然而,这是一个不正确的判断。后来 Unicode 规范扩展到了超过 16 位,所以 Java 中的字符现在可能由一对 16 位的值(称为“代理对”)表示。 ‧ JavaScript 和 TypeScript 的字符串使用 UTF‑16 编码的原因与 Java 类似。当 1995 年 Netscape 公司 首次推出 JavaScript 操作系统)都广泛使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字 节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试 难度。 出于以上原因,部分编程语言提出了一些不同的编码方案。0 码力 | 387 页 | 18.51 MB | 10 月前3
共 16 条
- 1
- 2