钟阳红-Apache Ballista Introduction第三届中国Rust开发者大会 Apache Ballista Introduction 钟阳红 (John Zhong) Software Engineer @ eBay nju_yaho@apache.org Agenda • Overview • Cluster Setup • SQL Execution • Data Cache • Future Apache Ballista0 码力 | 17 页 | 2.66 MB | 1 年前3
Hello 算法 1.0.0 Rust版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 queue」是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 第 5 章 栈与队列 hello‑algo.com 98 5.2.1 队列常用操作 队列的常见操作如表 5‑20 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.1.0 Rust版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 第 5 章 栈与队列 hello‑algo.com 98 5.2.1 队列常用操作 队列的常见操作如表 5‑20 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 第 5 章 栈与队列 www.hello‑algo.com 98 5.2.1 队列常用操作 队列的常见操作如表0 码力 | 387 页 | 18.51 MB | 10 月前3
Rust 程序设计语言简体中文版格。 注:如果你希望在 Rust 项目中保持一种标准风格,可以使用名为 rustfmt 的自动格 式化工具将代码格式化为特定的风格(更多内容详见附录 D 中的 rustfmt )。Rust 团 队已经在标准的 Rust 发行版中包含了这个工具,就像 rustc 一样。所以它应该已经 安装在你的电脑中了! 在 main 函数中有如下代码: println!("Hello, world 来了解更多信息。 新建一个哈希 map 可以使用 new 创建一个空的 HashMap ,并使用 insert 增加元素。在示例 8-20 中我们记录两 支队伍的分数,分别是蓝队和黄队。蓝队开始有 10 分而黄队开始有 50 分: # fn main() { use std::collections::HashMap; let mut scores = HashMap::new(); let score = scores.get(&team_name).copied().unwrap_or(0); # } 示例 8-21:访问哈希 map 中储存的蓝队分数 这里,score 是与蓝队分数相关的值,应为 10 。get 方法返回 Option<&V> ,如果某个键在 哈希 map 中没有对应的值,get 会返回 None 。程序中通过调用 copied 方法来获取一个0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0码风格。 注:如果你希望在 Rust 项目中保持一种标准风格,可以使用名为 rustfmt 的自动格 式化工具将代码格式化为特定的风格(更多内容详见附录 D 中的 rustfmt)。Rust 团 队已经在标准的 Rust 发行版中包含了这个工具,就像 rustc 一样。所以它应该已经 安装在你的电脑中了! 在 main 函数体中有如下代码: println!("Hello, world!"); 上定义的函数中。一如既往请查看标准库文档来了解更多信息。 新建一个哈希 map 可以使用 new 创建一个空的 HashMap,并使用 insert 增加元素。在示例 8-20 中我们记录两支 队伍的分数,分别是蓝队和黄队。蓝队开始有 10 分而黄队开始有 50 分: use std::collections::HashMap; let mut scores = HashMap::new(); scores let score = scores.get(&team_name).copied().unwrap_or(0); 示例 8-21:访问哈希 map 中储存的蓝队分数 165/562Rust 程序设计语言 简体中文版 这里,score 是与蓝队分数相关的值,应为 10。get 方法返回 Option<&V>,如果某个键在哈 希 map 中没有对应的值,get 会返回 None。程序中通过调用 copied0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 是否需要另⼀种“⾊彩”的 Future? - 郭⼦兴Pin<&mut Self>, cx: &mut Context<'_>) �� Poll<()>; } 另⼀种“⾊彩”的 Future 相对于现有的“红⾊” async 块: “红⾊” 只能 await “红⾊”,但“蓝⾊”可以 await “蓝⾊”与“红 ⾊”,以确保 cancel 信号能正确地递归响应。 pub trait CompletionFuture { type Output;0 码力 | 19 页 | 7.77 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版bottom of the stack 栈底 堆疊底 queue 队列 佇列 double‑ended queue 双向队列 雙向佇列 front of the queue 队首 佇列首 rear of the queue 队尾 佇列尾 hash table 哈希表 雜湊表 hash set 哈希集合 雜湊集合 bucket 桶 桶 第 16 章 附錄 www.hello‑algo.com balanced binary tree 平衡二叉树 平衡二元樹 binary search tree 二叉搜索树 二元搜尋樹 AVL tree AVL 树 AVL 樹 red‑black tree 红黑树 紅黑樹 level‑order traversal 层序遍历 層序走訪 breadth‑first traversal 广度优先遍历 廣度優先走訪 depth‑first traversal0 码力 | 388 页 | 18.82 MB | 10 月前3
Rust分布式账务系统 - 胡宇2 3 4 ● 1. 接受转账请求,转换成 events ● 2. 将 events 送入 Raft 共识,等待 events 被多数节点保存 ○ 共识:基于 raft-rs 的可靠消息队 列 ○ 存储: Rocksdb with Rust 账户层: Auticuro 分布式账务系统 1 2 3 4 ● 1. 接受转账请求,转换成 events ● 2. 将 events0 码力 | 27 页 | 12.60 MB | 1 年前3
Rust算法教程 The Algos (algorithms)要数据的现场保护。栈中没有数据时,称为空栈。 3. 队列(Queue) 队列和栈类似,也是⼀种特殊的线性表。和栈不同的是,队列只允许在表的⼀ 端进⾏插⼊操作,⽽在另⼀端进⾏删除操作。⼀般来说,进⾏插⼊操作的⼀端称为队尾,进 ⾏删除操作的⼀端称为队头。队列中没有元素时,称为空队列。 4. 链表( Linked List) 链表是⼀种数据元素按照链式存储结构进⾏存储的数据结构,这种存储结 构具有在物理上存在⾮连续的特点。链表由0 码力 | 270 页 | 8.46 MB | 1 年前3
共 10 条
- 1













