MoonBit月兔编程语言 现代编程思想 第十课 哈希表与闭包现代编程思想 哈希表与闭包 Hongbo Zhang ## 回顾 ## · 表 键值对的集合,其中键不重复 简单实现:二元组列表 - 添加时向队首添加 - 查询时从队首遍历 树实现:二叉平衡树 - 基于第五节课介绍的二叉平衡树,每个节点的数据为键值对 - 对树操作时比较第一个参数 ## 哈希表 - 哈希函数/散列函数 Hash function ◦ 接口中,数据被映射到整数范围内 trait Hash { hash(Self) -> Int } ■ "这是一个非常非常长的字符串".hash() == -900478401 ## · 哈希表 ◦ 利用哈希函数,将数据映射到数组索引中,进行快速的添加、查询、修改 1. // 对于 a: Array[(Key, Value)], key: Key, value: Value 2. let 不同数据的哈希可能相同 不同的哈希映射为数组索引时可能相同 - 解决哈希表的冲突 ◦ 直接寻址(分离链接):同一索引下用另一数据结构存储 列表 二叉平衡搜索树等 ☐ 开放寻址 ■ 线性探查:当发现冲突后,索引递增,直到查找空位放入 ■ 二次探查(索引递增 $ 1^{2}2^{2}3^{2} $ )等 ## 哈希表:直接寻址 - 当发生哈希/索引冲突时,将相同索引的数据装进一个数据结构中0 码力 | 27 页 | 448.83 KB | 2 年前3
通过Oracle 并行处理集成 Hadoop 数据数据库里访问某个文件系统中的外部文件或外部数据,最简单的方法莫过于使用外部表。请参阅这里了解外部表。 外部表以表的形式展示存储在文件系统中的数据,并且可在 SQL 查询中完全透明地使用。因此,可以考虑用外部表从 Oracle 数据库中直接访问 HDFS(Hadoop 文件系统)中存储的数据。遗憾的是,常规的操作系统无法调用外部表驱动直接访问 HDFS 文件。FUSE(File System in U HDFS(如果是 RAC 数据库,则在其所有实例上挂载 HDFS),即可使用外部表基础架构轻松访问 HDFS 文件。  图 1. 用数据库内置的 MapReduce 通过外部表进行访问 在图 1 中,我们利用 Oracle Database 11g mapreduce。通常情况下,Oracle Database 11g 中的并行执行框架足以满足针对外部表大多数的并行操作。 在有些情况下(例如,如果 FUSE 不可用),外部表方法可能不适用。Oracle 表函数提供了从 Hadoop 中获取数据的替代方法。本文附带的示例展示了一种这样的方法。更深入地来讲,我们用一个表函数来实现,这个表函数使用 DBMS_SCHEDULER 框架异步调用外部 shell 脚本,然后由这个0 码力 | 21 页 | 1.03 MB | 2 年前3
2 Sharding-JDBC入门使用phere.version} ## 基于Java编码的规则配置 Sharding-JDBC的分库分表通过规则配置描述,以下例子是根据user_id取模分库,且根据order_id取模分表的两库两表的配置。 // 配置真实数据源 MapdataSourceMap = new HashMap<>(); setUsername("root"); dataSource2.setPassword(); dataSourceMap.put("ds1", dataSource2); // 配置Order表规则 TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration(); orderTableRuleConfig der"); orderTableRuleConfig.setActualDataNodes("ds${0..1}.t_order${0..1}"); // 配置分库 + 分表策略 orderTableRuleConfig.setDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("user_id"0 码力 | 12 页 | 325.38 KB | 2 年前3
MoonBit月兔编程语言 现代编程思想 第九课 接口
- 需要数据结构内部的数据同样实现接口 ## 表:利用接口实现 ## • 一个表是键值对的集合 对于每一个键存在一个对应值 ☐ 例:{ 0 -> "a", 5 -> "Hello", 7 -> "a" } 1. type Map[Key, Value] 2. 3. // 创建表 4. fn make[Key, Value]() Value] 7. // 获取键对应值 8. fn get[Key, Value](map: Map[Key, Value], key: Key) -> Option[Value] ## 表:利用接口实现 • 表的简易实现 ☐ 利用列表+二元组存储键值对 ☐ 添加/更新时向列表前添加键值对 ☐ 查询时从列表前开始,找到键即返回 - 简易实现需要判断存储的键值对是否为搜索的键 ☐ 键应当满足相等接口 键应当满足相等接口 1. fn get[Key: Eq, Value](map: Map[Key, Value], key: Key) -> Option[Value] ## 表:利用接口实现 ## • 我们以列表+二元组作为表 1. // 我们定义一个类型Map,其实际值为List[(Key, Value)] 2. type Map[Key, Value] List[(Key, Value)] 30 码力 | 16 页 | 346.04 KB | 2 年前3
SQLite Development with Zumero0 码力 | 57 页 | 199.89 KB | 2 年前3
03 CSS 杨亮 《PHP语⾔程序设计》important text normal text another important text ## 选择器的优先级 1. 内联样式表的权值最高 1000 2. ID 选择器的权值为 100 3. Class 类选择器的权值为 10 4. 标签选择器的权值为 1 权值越大越优先red
0 码力 | 25 页 | 2.68 MB | 2 年前3
Weblate 4.12.1 用户文档Weblate 基础知识 1.2 注册和用户个人资料 1.3 使用 Weblate 进行翻译工作 1.4 Downloading and uploading translations 1.5 术语表 1.6 检查和修正 1.7 搜索 1.8 翻译工作流 1.9 常见问题 1.10 支持的文件格式 1.11 版本控制集成 1.12 Weblate 的 REST API 如果一条信息出现在多个地方(例如多个部件),若发现它们不一致,这个选项卡会显示所有的信息(参见不一致的)。你可以选择使用其中之一。 翻译记忆库 查找过去翻译过的相似字符串,参见翻译记忆库。 术语表 显示当前信息中用到的项目术语表中的术语。 近期变更 显示最近通过 Weblate 更改了此信息的人员列表。 项目 Project info like instructions for translators, or and want to merge it into existing translations while properly crediting the actual author. ### 1.5 术语表 Each project can include one or more glossaries as a shorthand for storing terminology. Glossary easily0 码力 | 478 页 | 8.01 MB | 2 年前3
Hello 算法 1.1.0 C++ 版统都可以建模为“图”;大到一个国家,小到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下;羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通过编程来实现它们。在此基础上,本书致力于揭示算法在复杂世界中的生动体现,展现算法之美。希望本书能够帮助到你! 4.3 列表 4.4 内存与缓存 * 4.5 小结 第5章 栈与队列 5.1 栈 5.2 队列 5.3 双向队列 5.4 小结 第6章 哈希表 6.1 哈希表 6.2 哈希冲突 6.3 哈希算法 6.4 小结 第7章 树 7.1 二叉树 7.2 二叉树遍历 7.3 二叉树数组表示 7.4 二叉搜索树 7.5 .. 357 15.5 小结 ..... 360 第 16 章 附录 16.1 编程环境安装 ..... 363 16.2 一起参与创作 ..... 365 16.3 术语表 ..... 367 ## 第 0 章 前言 0 码力 | 379 页 | 18.47 MB | 2 年前3
Weblate 4.14.2 用户文档2022年11月05日 1 用户文档 1.1 Weblate 基础知识 1.2 注册和用户个人资料 1.3 使用 Weblate 进行翻译工作 1.4 下载和上传译文 1.5 术语表 1.6 检查和修正 1.7 搜索 1.8 翻译工作流 1.9 常见问题 1.10 支持的文件格式 1.11 版本控制集成 1.12 Weblate 的 REST API 1.2.1 注册 默认情况下,每个人都可以浏览项目、查看翻译或建议翻译。只有注册用户才能实际保存更改,并且每次翻译都会获得积分。 您可以按照以下几个简单步骤进行注册: 1. 使用您的凭据填写注册表。 2. 使用电子邮件中收到的链接来激活注册账号。 3. 可以选择调整您的个人资料以选择您知道的语言。 #### 1.2.2 操作面板 登录后,您将看到项目和组件的概述,以及它们各自的翻译进度。 如果一条信息出现在多个地方(例如多个部件),若发现它们不一致,这个选项卡会显示所有的信息(参见不一致的)。你可以选择使用其中之一。 ## 翻译记忆库 查找过去翻译过的相似字符串,参见翻译记忆库。 ## 术语表 显示当前信息中用到的项目术语表中的术语。 ## 近期变化 显示最近通过 Weblate 更改了此信息的人员列表。 ## 项目 项目信息,如翻译人员的说明,或项目使用的版本控制系统仓库中字符串的目录或链接。0 码力 | 496 页 | 8.15 MB | 2 年前3
Hello 算法 1.2.0 繁体中文 Rust 版統都可以建模為“圖”;大到一個國家,小到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下;羽毛球簡則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。 本書旨在透過清晰易懂的動畫圖解與可執行的程式碼範例,使讀者理解演算法和資料結構的核心概念,並能夠透過程式設計來實現它們。在此基礎上,本書致力於揭示演算法在複雜世界中的生動 4.3 串列 4.4 記憶體與快取* 4.5 小結 第5章 堆疊與佇列 5.1 堆疊 5.2 佇列 5.3 雙向佇列 5.4 小結 第6章 雜湊表 6.1 雜湊表 6.2 雜湊衝突 6.3 雜湊演算法 6.4 小結 第7章 樹 7.1 二元樹 7.2 二元樹走訪 7.3 二元樹陣列表示 7.4 二元搜尋樹 7 15.4 最大切分乘積問題 366 15.5 小結 370 第 16 章 附錄 371 16.1 程式設計環境安裝 372 16.2 一起參與創作 375 16.3 術語表 376 ## 第 0 章 前言  ##0 码力 | 388 页 | 18.82 MB | 1 年前3
共 854 条
- 1
- 2
- 3
- 4
- 5
- 6
- 86













