Hello 算法 1.2.0 繁体中文 Rust 版基本資料型別以二進位制的形式儲存在計算機中。一個二進位制位即為 1 位元。在絕大多數現代作業系統中, 1 位元組(byte)由 8 位元(bit)組成。 基本資料型別的取值範圍取決於其佔用的空間大小。下面以 Java 為例。 ‧ 整數型別 byte 佔用 1 位元組 = 8 位元,可以表示 28 個數字。 ‧ 整數型別 int 佔用 4 位元組 = 32 位元,可以表示 232 個數字。 表 3‑1 列舉了 整數 byte 1 位元組 −27 (−128) 27 − 1 (127) 0 short 2 位元組 −215 215 − 1 0 int 4 位元組 −231 231 − 1 0 第 3 章 資料結構 www.hello‑algo.com 55 型別 符號 佔用空間 最小值 最大值 預設值 long 8 位元組 −263 263 − 1 0 浮點數 float 4 位元組 1.175 × × 10−38 3.403 × 1038 0.0f double 8 位元組 2.225 × 10−308 1.798 × 10308 0.0 字元 char 2 位元組 0 216 − 1 0 布林 bool 1 位元組 false true false 請注意,表 3‑1 針對的是 Java 的基本資料型別的情況。每種程式語言都有各自的資料型別定義,它們的佔用 空間、取值範圍和預設值可能會有所不同。0 码力 | 388 页 | 18.82 MB | 10 月前3
Comprehensive Rust(繁体中文)char 'a'、' α '、' ∞' 布林值 bool true、false 型別的寬度如下: • iN、uN 和 fN 的寬度為 N 位元 • isize 和 usize 等同於指標的寬度 • char 寬度為 32 位元 • bool 寬度為 8 位元 除此之外,還有一些其他語法: • 數字中的底線全都可以省略,寫出來只是為了方便閱讀。換句話說,1_000 可以寫成 1000 (或 10_00),而 s.push_str(..) 等方法。 • &str 中的 & 表示這是參照。我們稍後會講解何謂參照,因此現在只需將 &str 視為代表「唯讀字 串」的單位就行了。 • 被註解掉的那行程式碼會按照位元組位置建立索引到字串中。12..13 的結尾不是字元邊界,因此 程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。 26 • 原形字串可讓您建立停用逸出功能的 &str 值:r"\n" were all defined in an enum. • Rust 會以最少的空間來儲存判別值。 – 如有需要,Rust 會儲存最小所需大小的整數 – 如果允許的變體值未涵蓋所有位元模式,Rust 會使用無效的位元模式來編碼判別值 (即「區 位最佳化」)。舉例來說,Option<&u8> 可儲存指向整數的指標,也可儲存 None 變體適用的 NULL。 – 您可以視需要控制判別值,例如為了與0 码力 | 358 页 | 1.41 MB | 11 月前3
Comprehensive Rust(繁体中文) 202406char 'a'、' α '、' ∞' 布林值 bool true、false 型別的寬度如下: • iN、uN 和 fN 的寬度為 N 位元 • isize 和 usize 等同於指標的寬度 • char 寬度為 32 位元 • bool 寬度為 8 位元 除此之外,還有一些其他語法: • 數字中的底線全都可以省略,寫出來只是為了方便閱讀。換句話說,1_000 可以寫成 1000 (或 10_00),而 s.push_str(..) 等方法。 • &str 中的 & 表示這是參照。我們稍後會講解何謂參照,因此現在只需將 &str 視為代表「唯讀字 串」的單位就行了。 • 被註解掉的那行程式碼會按照位元組位置建立索引到字串中。12..13 的結尾不是字元邊界,因此 程式會發生恐慌。請根據錯誤訊息,將其調整至結尾為字元邊界的範圍。 25 • 原形字串可讓您建立停用逸出功能的 &str 值:r"\n" were all defined in an enum. • Rust 會以最少的空間來儲存判別值。 – 如有需要,Rust 會儲存最小所需大小的整數 – 如果允許的變體值未涵蓋所有位元模式,Rust 會使用無效的位元模式來編碼判別值 (即「區 位最佳化」)。舉例來說,Option<&u8> 可儲存指向整數的指標,也可儲存 None 變體適用的 NULL。 – 您可以視需要控制判別值,例如為了與0 码力 | 356 页 | 1.41 MB | 1 年前3
Rust 在算法交易中的实际应用与积极效应定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3 定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 与非 Rust 世界交互的主要边界 Rust FFI 网络协议栈参数优化,多路行情冗余互备 UDP 组播 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 森林模型的 Rust 展开 预测 大规模的新闻实时 spider 以及 NLP 分析 互联网新闻因子 配备 8TB 内存 +8 显卡定制机型,分布式超大 规模的 LSTM 等训练,单台价值 100w,支持 全天候多周期预测 自建机房 Rust0 码力 | 18 页 | 3.49 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase Case2: Konfig模型 + 用户定义 > https://github.com/Ku 400 单文件 用户定义 + Konfig (120+) Python Rust 1 50 1.31 55 0 10 20 30 40 50 60 单文件 用户定义 + Konfig (120+) Python Rust 390 840 414 350 0 100 200 300 400 500 600 700 800 900 单文件 用户定义0 码力 | 25 页 | 3.50 MB | 1 年前3
洛佳 组件化驱动、ROM运行环境与RustSBI这是传统开发方法不具备的功能。 多核异构芯片的镜像融合(以BL808为例) 部 分 固 件 调 试 首 先 编 译 程 序 为 单 核 固 件 , 再 融 合 三 个 固 件 为 多 核 。 单 核 固 件 可 独 立 运 行 , 易 于 按 处 理 器 核 单 独 划 分 和 调 试 。 融 合 规 则 若 三 个 不 同 固 件 中 镜 像 头 的 闪 存 配 置 、 时 钟 配 置0 码力 | 21 页 | 3.12 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐Sm2国密双证书 • Sm2 GMT ECDHE • Sm2ECC • 国际通用密码套 • 单证书机制 • Resumption + Ticket机制 • SM4GCMSM3 • Sm2国密单/双证书 • Sm2 IEEE ECDHE • Sm2ECC 1 2 3 • 国际通用密码套 • 单证书机制 • Resumption + Ticket机制 • SM4GCMSM3 • Resumption:SessionID(TLS1.2/TLCP)、Ticket( TLS1.2/TLS1.3) 8. 同步 API 以及基于可替换 Runtime 的异步 API 9. 支持单国密模式,单通用模式,或混合模式 TLS 使用 安全协议: 密码算法: 1. 对称加密:AES 、Chacha20 、SM4 2. 加密模式:GCM、XTS、CBC、CFB、CTR、OFB 3. 非对称加密:SM2、RSA0 码力 | 44 页 | 3.70 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0在餐饮业,餐馆中会有一些地方被称之为前台(front of house),还有另外一些地方被称之为 后台(back of house)。前台是招待顾客的地方;这包括接待员为顾客安排座位、服务员接受 点单和付款、调酒师制作饮品的地方。后台则是厨师和烹饪人员在厨房工作、洗碗工清理餐 具,以及经理处理行政事务的区域。 为了以这种方式构建我们的 crate,我们可以将其功能组织到嵌套模块中。通过执行 cargo 之后,因为它们只是相对于方法本身的。 泛型代码的性能 你可能会好奇使用泛型类型参数是否会有运行时消耗。好消息是泛型并不会使程序比具体类型 运行得慢。 Rust 通过在编译时进行泛型代码的单态化(monomorphization)来保证效率。单态化是一个 通过填充编译时使用的具体类型,将通用代码转换为特定代码的过程。 在这个过程中,编译器所做的工作正好与示例 10-5 中我们创建泛型函数的步骤相反。编译器 寻找 Some(5.0); 当 Rust 编译这些代码的时候,它会进行单态化。编译器会读取传递给 Option的值并发现 有两种 Option :一个对应 i32 另一个对应 f64。为此,它会将泛型定义 Option 展开为 两个针对 i32 和 f64 的定义,接着将泛型定义替换为这两个具体的定义。 编译器生成的单态化版本的代码看起来像这样(编译器会使用不同于如下假想的名字): 0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版泛型代码的性能 在阅读本部分内容的同时,你可能会好奇使用泛型类型参数是否会有运行时消耗。好消息是泛 型并不会使程序比具体类型运行得慢。 Rust 通过在编译时进行泛型代码的 单态化(monomorphization)来保证效率。单态化是一个 通过填充编译时使用的具体类型,将通用代码转换为特定代码的过程。 213/600 Rust 程序设计语言 简体中文版 在这个过程中,编译器所做的工作正好与示例 Some(5.0); 当 Rust 编译这些代码的时候,它会进行单态化。编译器会读取传递给 Option的值并发现 有两种 Option :一个对应 i32 另一个对应 f64 。为此,它会将泛型定义 Option 展开 为两个针对 i32 和 f64 的定义,接着将泛型定义替换为这两个具体的定义。 编译器生成的单态化版本的代码看起来像这样(编译器会使用不同于如下假想的名字): Option 被编译器替换为了具体的定义。因为 Rust 会将每种情况下的泛型代码编译为 具体类型,使用泛型没有运行时开销。当代码运行时,它的执行效率就跟好像手写每个具体定 义的重复代码一样。这个单态化过程正是 Rust 泛型在运行时极其高效的原因。 214/600 Rust 程序设计语言 简体中文版 1 0 . 2 . T r a i t : 定 义 共 0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust并行编译的挑战与突破2022年5月28日 • 相关浅谈 • Rust并行编译的挑战与突破 • 从并行编译到并行程序设计 • Rust社区与并行编译 目录 相关浅谈 Rust编译速度之殇 编译器设计造成编译速度缓慢 · 单态化 · 借用检查 · 宏展开 · MIR优化 ... Rust规模编译速度慢于C++ Rust编译速度之殇 提升编译效率成为近年社区重点工作 并行编译或成下一代编译效率突破利器 2017 Rust社区编译器性能工作组 Rust编译器并行化 Cargo多crate并行 二进制生成并行 更多更好的并行化? Rust编译器架构 语法树生成 宏展开 命名解析 泛型解析 类型检查 借用检查 单态化 二进制生成 增量编译系统 底层数据 结构 Rust语言编译器结构总览 考虑内部编译流程并行化 Rust并行并发 编译时线程安全检查 一些常见线程安全数据结构 常用Rust并行并发库0 码力 | 25 页 | 4.60 MB | 1 年前3
共 19 条
- 1
- 2













