 RustBelt - Rust 的形式化语义模型第三届中国 Rust 开发者大会 王俊吉 RustBelt - Rust 的形式化语义模型 Outline Background • RustBelt Project • Rust Types Overview Rust Semantics • Type System • The own Predict • Exclusive Ownership & Mutable Borrow0 码力 | 21 页 | 2.63 MB | 1 年前3 RustBelt - Rust 的形式化语义模型第三届中国 Rust 开发者大会 王俊吉 RustBelt - Rust 的形式化语义模型 Outline Background • RustBelt Project • Rust Types Overview Rust Semantics • Type System • The own Predict • Exclusive Ownership & Mutable Borrow0 码力 | 21 页 | 2.63 MB | 1 年前3
 Rust 在算法交易中的实际应用与积极效应在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost 集成学习模型 定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU Cache 友好 Rust 在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost 集成学习模型 定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数0 码力 | 18 页 | 3.49 MB | 1 年前3 Rust 在算法交易中的实际应用与积极效应在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost 集成学习模型 定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数 概念指数 龙头 lead 股票 互联网新闻 外 部 交 互 交易所引擎 Web客户端 下单指令 信息回报 母单/信息上传 统计信息查询等 数据获取 模型训练 信号预测 交易指令 交易指令 1. 低延迟高吞吐的一写多读消息队列 2. 基于共享内存,全用户态,零拷贝(配合 capnproto) 3. 针对 x86_64、AArch64 架构分别优化,CPU Cache 友好 Rust 在非凸算法交易服务中的全栈应用实践 内 部 智 能 引 擎 行情服务 总控模块 预测模型 策略模块 数据总线 智 能 特 征 工 程 去量纲:标准化、归一化 缺失值处理:样条插值 降维:PCA A I 信 号 生 成 LSTM 神经网络 BP 全连接网络 XGBoost 集成学习模型 定制早停函数 原 始 高 频 数 据 实时超高频数据 结构化多档行情 全行业指数 概念指数0 码力 | 18 页 | 3.49 MB | 1 年前3
 新一代分布式高性能图数据库的构建 - 沈游人领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 43 项, 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 …  人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘  为已有的分析模型增加“关系特征”维 度 客户贡献度 客户信用分 客户忠诚度 客户欺诈分 客户风险度 违约概率 客户资质 … 集团关系 社群关系 欺诈团伙 担保关系 资金圈 / 链 …  设别出带有某种共同特征 Productivity • Modern development tools • Lots of amazing libraries Rust 编译通过了 bug 比 cpp 少上 百倍 !!! 图模型—— Labeled Property Graph Model Arbitrary (key,value) pairs where key identifies a property and value0 码力 | 38 页 | 24.68 MB | 1 年前3 新一代分布式高性能图数据库的构建 - 沈游人领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 43 项, 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 …  人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘  为已有的分析模型增加“关系特征”维 度 客户贡献度 客户信用分 客户忠诚度 客户欺诈分 客户风险度 违约概率 客户资质 … 集团关系 社群关系 欺诈团伙 担保关系 资金圈 / 链 …  设别出带有某种共同特征 Productivity • Modern development tools • Lots of amazing libraries Rust 编译通过了 bug 比 cpp 少上 百倍 !!! 图模型—— Labeled Property Graph Model Arbitrary (key,value) pairs where key identifies a property and value0 码力 | 38 页 | 24.68 MB | 1 年前3
 Rust 语言学习笔记 数据竞争  解引用空裸指针和悬垂裸指针  读取未初始化的内存  使用裸指针打破指针重叠规则  &mut T 和&T 遵循 LLVM 范围的 noalias 模型,除了如果&T 包含一个 UnsafeCell的话。不安全代码必须不能违反这些重叠(aliasing)保证  不使用 UnsafeCell改变一个不可变值/引用  通过编译器固有功能调用未定义行为: 建新线程的 API。这种由编程语言调用操作系统 API 创建线程的模模型有时被称为 1:1, 一个 OS 线程对应一个语言线程。 很多编程语言提供了自己特殊的线程实现。编程语言提供的线程被称为 绿色 (green)线程,使用绿色线程的语言会在不同数量的 OS 线程的上下文中执行 它们。为此,绿色线程模式被称为 M:N 模型:M 个绿色线程对应 N 个 OS 线程,这里 M 和 N 不必相同。 需要做到几乎没有运行时,同时为了 保持高性能必需能够调用 C 语言,这点也是不能妥协的。 绿色线程的 M:N 模型更大的语言运行时来管理这些线程。为此,Rust 标准库 只提供了 1:1 线程模型实现。Rust 是足够底层的语言,所以有相应的 crate 实现了 M:N 线程模型,如果你宁愿牺牲性能来换取例如更好的线程运行控制和 更低的上下文切换成本。 7.1.2 使用 spawn 创建新线程0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记 数据竞争  解引用空裸指针和悬垂裸指针  读取未初始化的内存  使用裸指针打破指针重叠规则  &mut T 和&T 遵循 LLVM 范围的 noalias 模型,除了如果&T 包含一个 UnsafeCell的话。不安全代码必须不能违反这些重叠(aliasing)保证  不使用 UnsafeCell改变一个不可变值/引用  通过编译器固有功能调用未定义行为: 建新线程的 API。这种由编程语言调用操作系统 API 创建线程的模模型有时被称为 1:1, 一个 OS 线程对应一个语言线程。 很多编程语言提供了自己特殊的线程实现。编程语言提供的线程被称为 绿色 (green)线程,使用绿色线程的语言会在不同数量的 OS 线程的上下文中执行 它们。为此,绿色线程模式被称为 M:N 模型:M 个绿色线程对应 N 个 OS 线程,这里 M 和 N 不必相同。 需要做到几乎没有运行时,同时为了 保持高性能必需能够调用 C 语言,这点也是不能妥协的。 绿色线程的 M:N 模型更大的语言运行时来管理这些线程。为此,Rust 标准库 只提供了 1:1 线程模型实现。Rust 是足够底层的语言,所以有相应的 crate 实现了 M:N 线程模型,如果你宁愿牺牲性能来换取例如更好的线程运行控制和 更低的上下文切换成本。 7.1.2 使用 spawn 创建新线程0 码力 | 117 页 | 2.24 MB | 1 年前3
 KCL: Rust 在编译器领域的实践与探索KCL:面向应用研发者的 配置策略专用高级编程语 言,及其协议组,工具链及 IDE 插件 • Kusion:运维引擎、工具 链、服务层,IDE 工作空间 及社区技术集成套件 • Konfig:应用配置及基础 模型共享仓库,及面向 GitOps 工作流程(如 GitHub Actions)的自定义 CI 套件 KusionStack 实践 KCL Tools & CI/CD Engagement Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase Case2: Konfig模型 + 用户定义 > https://github.com/KusionStack/konfig/blob/ main/base/examples/native/ng 错误恢复: 不完整代码的编译 • 代码补全 • 错误代码的语义分析 2. 增量编译 • 大规模场景下的编译优化和 IDE 性能提升 • 编译粒度: 项目 -> 文件 -> 函数/定义 3. 结构化语义模型(Structured Semantic Model) • Using the tree as a store for semantic info is convenient in traditional0 码力 | 25 页 | 3.50 MB | 1 年前3 KCL: Rust 在编译器领域的实践与探索KCL:面向应用研发者的 配置策略专用高级编程语 言,及其协议组,工具链及 IDE 插件 • Kusion:运维引擎、工具 链、服务层,IDE 工作空间 及社区技术集成套件 • Konfig:应用配置及基础 模型共享仓库,及面向 GitOps 工作流程(如 GitHub Actions)的自定义 CI 套件 KusionStack 实践 KCL Tools & CI/CD Engagement Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase Case2: Konfig模型 + 用户定义 > https://github.com/KusionStack/konfig/blob/ main/base/examples/native/ng 错误恢复: 不完整代码的编译 • 代码补全 • 错误代码的语义分析 2. 增量编译 • 大规模场景下的编译优化和 IDE 性能提升 • 编译粒度: 项目 -> 文件 -> 函数/定义 3. 结构化语义模型(Structured Semantic Model) • Using the tree as a store for semantic info is convenient in traditional0 码力 | 25 页 | 3.50 MB | 1 年前3
 Hello 算法 1.1.0 Rust版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 www.hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 www.hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数 一定的“动态性”。 Tip 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.0.0 Rust版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 中对其长 度进行调整。 � 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版我们按照说明书一步步操作,就能组装出精美的积木模型。 第 1 章 初识算法 hello‑algo.com 15 图 1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结 中对其长 度进行调整。 � 如果你感觉物理结构理解起来有困难,建议先阅读下一章,然后再回顾本节内容。 3.2 基本数据类型 当谈及计算机中的数据时,我们会想到文本、图片、视频、语音、3D 模型等各种形式。尽管这些数据的组织 形式各异,但它们都由各种基本数据类型构成。 基本数据类型是 CPU 可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种。 ‧ 整数类型 byte、short、int、long 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字0 码力 | 383 页 | 17.61 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412i32) -> &(i32, i32) { let point = (x, 0); return &point; } • 引用被称为“借用”了其所引用的值,这对于不熟悉指针的学生来说是一个很好的模型:代码可以通 过引用来访问值,但原始变量仍然保有对该值的“所有权”。本课程会在第 3 天详细介绍所有权。 43 • 引用是以指针的形式实现的,其关键优势在于它们可以比其所指的内容小得多。熟悉 C 依赖垃圾回收器来识别无法再访问的内存并将其舍弃。这保证可对所有指针 进行解引用操作,从而消除了释放后使用等各类 bug。但是,垃圾回收 (GC) 会产生运行时成本,并 且很难进行适当调优。 在许多情况下,Rust 的所有权和借用模型可以实现 C 语言的性能,能够精确地在所需位置执行分配和释 放操作,且为零成本。它还提供类似于 C++ 智能指针的工具。必要时,它还提供引用计数等其他选项,甚至 还有第三方 crate 可以支持运行时垃圾回收(本课程中不作介绍)。 • 一般来说,微控制器不具备 MMU 或多级特权(例如,Arm CPU 中的异常级别,x86 中的铃声级 别)的功能,而应用处理器则具备这些功能。 • QEMU 支持针对每种架构模拟不同的机器或板级模型。 “虚拟”开发板并不适用于任何特定的真实 硬件,而是专为虚拟机设计的。 53.1 准备使用 Rust 在开始运行 Rust 代码之前,我们需要进行一些初始化设置。 .section .init0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412i32) -> &(i32, i32) { let point = (x, 0); return &point; } • 引用被称为“借用”了其所引用的值,这对于不熟悉指针的学生来说是一个很好的模型:代码可以通 过引用来访问值,但原始变量仍然保有对该值的“所有权”。本课程会在第 3 天详细介绍所有权。 43 • 引用是以指针的形式实现的,其关键优势在于它们可以比其所指的内容小得多。熟悉 C 依赖垃圾回收器来识别无法再访问的内存并将其舍弃。这保证可对所有指针 进行解引用操作,从而消除了释放后使用等各类 bug。但是,垃圾回收 (GC) 会产生运行时成本,并 且很难进行适当调优。 在许多情况下,Rust 的所有权和借用模型可以实现 C 语言的性能,能够精确地在所需位置执行分配和释 放操作,且为零成本。它还提供类似于 C++ 智能指针的工具。必要时,它还提供引用计数等其他选项,甚至 还有第三方 crate 可以支持运行时垃圾回收(本课程中不作介绍)。 • 一般来说,微控制器不具备 MMU 或多级特权(例如,Arm CPU 中的异常级别,x86 中的铃声级 别)的功能,而应用处理器则具备这些功能。 • QEMU 支持针对每种架构模拟不同的机器或板级模型。 “虚拟”开发板并不适用于任何特定的真实 硬件,而是专为虚拟机设计的。 53.1 准备使用 Rust 在开始运行 Rust 代码之前,我们需要进行一些初始化设置。 .section .init0 码力 | 359 页 | 1.33 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Rust 版書。我們按照說明書一步步操作,就能組裝出精美的積木模型。 第 1 章 初識演算法 www.hello‑algo.com 15 圖 1‑5 拼裝積木 兩者的詳細對應關係如表 1‑1 所示。 表 1‑1 將資料結構與演算法類比為拼裝積木 資料結構與演算法 拼裝積木 輸入資料 未拼裝的積木 資料結構 積木組織形式,包括形狀、大小、連線方式等 演算法 把積木拼成目標形態的一系列操作步驟 輸出資料 積木模型 值得說明的是 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 是雙精度 64 位; 沒有 char 型別,單個字元實際上是長度為 1 的字串 str 。 ‧ C 和 C++ 未明確規定基本資料型別的大小,而因實現和平臺各異。表 3‑1 遵循 LP64 資料模型,其用於 包括 Linux 和 macOS 在內的 Unix 64 位作業系統。 ‧ 字元 char 的大小在 C 和 C++ 中為 1 位元組,在大多數程式語言中取決於特定的字元編碼方法,詳見0 码力 | 388 页 | 18.82 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Rust 版書。我們按照說明書一步步操作,就能組裝出精美的積木模型。 第 1 章 初識演算法 www.hello‑algo.com 15 圖 1‑5 拼裝積木 兩者的詳細對應關係如表 1‑1 所示。 表 1‑1 將資料結構與演算法類比為拼裝積木 資料結構與演算法 拼裝積木 輸入資料 未拼裝的積木 資料結構 積木組織形式,包括形狀、大小、連線方式等 演算法 把積木拼成目標形態的一系列操作步驟 輸出資料 積木模型 值得說明的是 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D 模型等各種形式。儘管這些資料的組織 形式各異,但它們都由各種基本資料型別構成。 基本資料型別是 CPU 可以直接進行運算的型別,在演算法中直接被使用,主要包括以下幾種。 ‧ 整數型別 byte、short、int、long 是雙精度 64 位; 沒有 char 型別,單個字元實際上是長度為 1 的字串 str 。 ‧ C 和 C++ 未明確規定基本資料型別的大小,而因實現和平臺各異。表 3‑1 遵循 LP64 資料模型,其用於 包括 Linux 和 macOS 在內的 Unix 64 位作業系統。 ‧ 字元 char 的大小在 C 和 C++ 中為 1 位元組,在大多數程式語言中取決於特定的字元編碼方法,詳見0 码力 | 388 页 | 18.82 MB | 10 月前3
共 19 条
- 1
- 2













