Rust HTTP 协议栈在终端通信场景的实践 - 胡凯actix_web 是一个强大、实用且速度极快的 Rust 网络框架。 ✓ Rust 异步实现 ✓ 支持 HTTP/1 和 HTTP/2 ✓ 支持 HTTPS ✓ 支持消息路由 ✓ 支持 body 自动解压缩 ✓ 支持 multipart Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: 境影响而产生波动。 ➢ 流量限制:移动端网络流量受到用户的限制。 ➢ 设备资源有限:移动端设备CPU、内存等资源较少。 Rust China Conf 2022 – 2023, Shanghai, China 终端 HTTP 协议场景浅析 从用户使用的角度出发: ➢ 下载进度:对于一些涉及上传或下载的应用软件,进度显示能够给用户及时性的反馈。 ➢ 速度和流量限制:受到资费和网络状况的 速度和流量限制:受到资费和网络状况的影响,传输速度和流量需要提供给用户设置。 ➢ 暂停和重试:网络传输需要提供给用户控制启动和暂停的控制手段。 ➢ 功耗:网络传输需要消耗终端设备资源,需要尽可能平衡功耗和传输速度。 ➢ 性能表现:网络传输不能影响到和用户直接交互的前台应用的表现。 Rust 与终端 HTTP 通信场景结合 Part 04 我们当前结合 Rust 和终端通信场景的实践的简单介绍 Rust China Conf0 码力 | 26 页 | 1.25 MB | 1 年前3
Rust语言核心竞争力-庄晓立操作系统 • 虚拟机/容器 • 数据库 • 3D游戏引擎 • 网络服务器 • 浏览器引擎 • 编译器、解释器 • 三维建模/动画/渲染 数据中心 • CPU/GPU • 内存/硬盘 • 电力 • 网络流量 • 其他设备和人员维护费用 都是白花花的银子,“硬件很便宜”的说法不靠 谱 你能买最新硬件,对手也能,无助于提升竞争力 物联网 • 需要大批量部署,必须控制硬件成本 • 受限于成本控制,硬件性能不强 因为有“所有权转移”的存在: 同一个资源可能由变量A持有或变量B持有; 同一个变量可能持有资源也可能不持有资源; 同一时刻有且只有一个变量唯一持有(Owns)某个资源。 持有资源的变量超出作用域或被另赋新值时,自动调用 资源析构函数(Drop),无论该资源在堆上还是栈上。 Rust的RAII青出于蓝而胜于蓝(蓝=C++) (std::unique_ptr) Borrowing(租借使用权) Shared 同样是能保证内存安全的。(通过人脑保证,而非机器) 机器通过执行一系列冰冷的规则拒绝不安全代码。但是机 器有机器的局限。unsafe代码充分发挥人的主观能动性, 允许专家在不受机器束缚的前提下写出安全的代码。 神舟十号与天宫一号有自动对接的同时还有人工对接。 内存安全小结 Rust语言通过: • 优秀的类型系统设计 • 严格的编译器静态审查 • 配合程序员局部核对 • 加上少量的运行时校验 ……保障了内存安全。 (0 码力 | 51 页 | 1.09 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 2/562Rust 程序设计语言 简体中文版 11. 编写自动化测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 要求所有函数体都要用花括号包裹起来。一般来说,将左花括号 与函数声明置于同一行并以空格分隔,是良好的代码风格。 注:如果你希望在 Rust 项目中保持一种标准风格,可以使用名为 rustfmt 的自动格 式化工具将代码格式化为特定的风格(更多内容详见附录 D 中的 rustfmt)。Rust 团 队已经在标准的 Rust 发行版中包含了这个工具,就像 rustc 一样。所以它应该已经 安装在你的电脑中了! cargo new --vcs=git 来覆盖这些行为。 注意:git 是一个常用的版本控制系统(version control system,VCS)。可以通过 --vcs 参数使 cargo new 切换到其它版本控制系统(VCS),或者不使用 VCS。运行 cargo new --help 查看可用的选项。 请自行选用文本编辑器打开 Cargo.toml 文件。它应该看起来与示例 1-2 中代码类似:0 码力 | 562 页 | 3.23 MB | 1 月前3
Comprehensive Rust(简体中文) 202412@johnathan79717。 • Korean by @keispace, @jiyongp, @jooyunghan, and @namhyung. • 西班牙语版本译者:@deavid。 使用右上角的语言选择器切换语言。 未完成的翻译 还有很多语言版本仍在翻译中。以下是最近更新的翻译版本的链接: • 孟加拉语版本译者:@raselmandol。 • 法语版本译者:@KookaS 和@vcaen。 15 Rust 之后,你应当配置你的编辑器或 IDE 以开始使用 Rust。大多数编辑器使用了 rust-analyzer。 它为 VS Code、Emacs、Vim/Neovim 及其他许多编辑器提供了自动补全及定义跳转的功能。同样也可 以使用 RustRover IDE。 • 在 Debian/Ubuntu 上,你也可以通过 apt 安装 Cargo、Rust 源代码和 Rust 格式化工具。但是, 工具链安装和更新工具。当 Rust 发布新版本时,此工具用于安装并更新 rustc 和 cargo。此外,rustup 还可以下载标准库的文档。可以同时安装多个版本的 Rust,rustup 会根 据需要让你在这些版本之间切换。 关键点: • Rust 有一个快速发布时间表,每六周就会发布一次新版本。新版本保持与旧版本的向后兼容性,并 添加新功能。 17 • 共有三个发布阶段:“稳定版(stable)”、 “测试0 码力 | 359 页 | 1.33 MB | 11 月前3
Rust 程序设计语言简体中文版....................................................................................... 226 11. 编写自动化测试 ............................................................................................... 要求所有函数体都要用花括号包裹起来。一般来说,将左花括 号与函数声明置于同一行并以空格分隔,是良好的代码风格。 注:如果你希望在 Rust 项目中保持一种标准风格,可以使用名为 rustfmt 的自动格 式化工具将代码格式化为特定的风格(更多内容详见附录 D 中的 rustfmt )。Rust 团 队已经在标准的 Rust 发行版中包含了这个工具,就像 rustc 一样。所以它应该已经 安装在你的电脑中了! new --vcs=git 来覆盖这些行为。 注意:Git 是一个常用的版本控制系统(version control system,VCS)。可以通过 --vcs 参数使 cargo new 切换到其它版本控制系统(VCS),或者不使用 VCS。运行 cargo new --help 参看可用的选项。 请自行选用文本编辑器打开 Cargo.toml 文件。它应该看起来如示例 1-2 所示:0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 语言学习笔记基于继承的 OO 语言 C++, Java 有相当大的差异。而跟 Ocaml, Haskell 这类函数式语言更加接近。 Rust 做到了内存安全而无需 .NET 和 Java 编程语言中实现自动垃圾收集器的 开销,这是通过所有权/借用机制、生命周期、以及类型系统来达到的。 Rust 程序设计语言的本质在于赋能(empowerment):无论你现在编写的是何 种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。 iii. 包可以带有多个二进制 crate,默认将文件置于 src/bin 目录,但是 也可以自由配置。 举例: [[bin]] name = “base_language_demo” 会自动去寻找 src/bin/base_language_demo.rs 作为 bin crate 的编译入口。 [[bin]] name = “src/bin_build_demo/bin_test 了 cargo。主要是为了 减少复杂的项目管理配置参数。cargo 工具是官方正统出身。 在 cargo.toml 中不配置唯一的 lib crate 和 bin crate name 的话,会自动去 根据 package 进行命名。 约定的补充: cargo.toml 和 cargo.lock 文件总是位于项目根目录下。 源代码位于 src 目录下。 默认的库入口文件是 src/lib0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust并行编译的挑战与突破数据结构 接口 实现 接口 实现 执行结果 同一份代码 线程数为1 线程数大于1 同一份代码 缺点:业务代码带有泛型参数 挑战:消减共享数据结构效率损失 动态线程安全检查 —— 自动切换数据同步模式 数据结 构方法 数据 同步 数据 同步 返回结果 线程数为1 线程数>1 Lock 单线程 同步器 多线程 同步器 挑战:并行环境内存分配器的设计 allocator1 用优秀的设计消减数据同步代价 读写分离 限制作用范围 COPY-WRITE机制 优化并行粒度 任务粒度与并行效率的关系 rayon库中的粒度控制函数 死锁的检测和处理 基于rayon线程池的自动触发式死锁检测 通过有向图环路检测移除死锁 Rust社区与并行编译 Rust社区与并行编译 18年1月由编译器团队成员提出 成立社区工作组 陷入技术阻塞,人员逐渐流失 编译器Roadmap寻求帮助0 码力 | 25 页 | 4.60 MB | 1 年前3
硬件创业公司的Rust应用和转型 - 陈昱衡更稳定的SDK 我司目前阶段,过渡期 嵌入式Rust应用 脑立体定位仪 1um精度 超小体积 自定义类SPI同步采集协议 采集+计算+自适应滤波 全自动脑立体定位仪(在研) 电机控制移动 传感器精度增到100nm 远程控制 自动运行 关注逻辑本身不用过分关心内存安全 嵌入式项目评估 Rust物联网不足 解决方案:屏幕上云 冷热板刺激仪 老项目评估 新项目评估 简单工期长,探索型项目优先选择Rust 屏幕交互是用户体验的核心之一 相 似 串口屏用户体验不佳,开发复用性低 多端统一 Slint更多应用 Slint尝试 未来望 胶囊测温仪 Slint踩坑 开荒 Flickable 底部图层按键/滚轮 触发 图片切换时直接改图片地址导致卡顿 数据无法正常渲染 图表无支持,列表表格等支持弱 。。。 轻量化,高效率 多平台多语言支持 团队未来愿景 类QML的语法 Cargo 社区 胶囊测温仪 Slint踩坑0 码力 | 23 页 | 4.95 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 www.hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruis Q & A Q:尾递归的空间复杂度是 ?(1) 吗? 理论上,尾递归函数的空间复杂度可以优化至 ?(1) 。不过绝大多数编程语言(例如 Java、Python、C++、 Go、C# 等)不支持自动优化尾递归,因此通常认为空间复杂度是 ?(?) 。 Q:函数和方法这两个术语的区别是什么? 第 2 章 复杂度分析 www.hello‑algo.com 50 函数(function)可以被独0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法和数据结构就已经存在于世界的各个角落。早期的算法相对简单,例如古 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、Gonglja、nuomi1、codingonion、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑crui Q & A Q:尾递归的空间复杂度是 ?(1) 吗? 理论上,尾递归函数的空间复杂度可以优化至 ?(1) 。不过绝大多数编程语言(例如 Java、Python、C++、 Go、C# 等)不支持自动优化尾递归,因此通常认为空间复杂度是 ?(?) 。 Q:函数和方法这两个术语的区别是什么? 第 2 章 复杂度分析 hello‑algo.com 50 函数(function)可以被独立执行,0 码力 | 388 页 | 18.50 MB | 1 年前3
共 23 条
- 1
- 2
- 3













