MoonBit月兔编程语言 现代编程思想 第十课 哈希表与闭包
现代编程思想 哈希表与闭包 Hongbo Zhang 1 回顾 表 键值对的集合,其中键不重复 简单实现:⼆元组列表 添加时向队⾸添加 查询时从队⾸遍历 树实现:⼆叉平衡树 基于第五节课介绍的⼆叉平衡树,每个节点的数据为键值对 对树操作时⽐较第⼀个参数 2 哈希表 哈希函数/散列函数 Hash function 将任意⻓度的数据映射到某⼀固定⻓度的数据 在⽉兔的 Hash Hash 接⼝中,数据被映射到整数范围内 trait Hash { hash(Self) -> Int } "这是⼀个⾮常⾮常⻓的字符串".hash() == -900478401 哈希表 利⽤哈希函数,将数据映射到数组索引中,进⾏快速的添加、查询、修改 1. // 对于 a: Array[(Key, Value)], key: Key, value: Value 2. let index 解决哈希表的冲突 直接寻址(分离链接):同⼀索引下⽤另⼀数据结构存储 列表 ⼆叉平衡搜索树等 开放寻址 线性探查:当发现冲突后,索引递增,直到查找空位放⼊ ⼆次探查(索引递增 )等 4 哈希表:直接寻址 当发⽣哈希/索引冲突时,将相同索引的数据装进⼀个数据结构中 例:添加0、5(哈希值分别为0、5)⾄⻓度为5的数组中时: 0 5 5 哈希表:直接寻址 哈希表结构 10 码力 | 27 页 | 448.83 KB | 1 年前3SelectDB案例 从 ClickHouse 到 Apache Doris
集市层围绕内容对象构建大宽表,从不同主题域 DWS 表中抽取字段。 加速层:在数仓中构建的大宽表导入到加速层中,Clickhouse 作为分析引擎, Elasticsearch 作为搜索/圈选引擎。 应用层:根据场景创建 DataSet,作为逻辑视图从大宽表选取所需的标签与指标,同 时可以二次定义衍生的标签与指标。 存在的问题: 数仓层:不支持部分列更新,当上游任一来源表产生延迟,均会造成大宽表延迟, ,均会造成大宽表延迟, 进而导致数据时效性下降。 加速层:不同的标签跟指标特性不同、更新频率也各不相同。由于 ClickHouse 目前 更擅长处理宽表场景,无区别将所有数据导入大宽表生成天的分区将造成存储资源 的浪费,维护成本也将随之升高。 应用层:ClickHouse 采用的是计算和存储节点强耦合的架构,架构复杂,组件依赖 严重,牵一发而动全身,容易出现集群稳定性问题,对于我们来说,同时维护 Doris / ES 中构建宽表,解决了架构 1.0 中 上游数据更新延迟导致整个宽表延迟的问题,进而提升了数据的时效性。数据(指 标、标签等)通过 Spark 统一离线加载到 Kafka 中,使用 Flink 将数据增量更新到 Doris 和 ES 中(利用 Flink 实现进一步的聚合,减轻了 Doris 和 ES 的更新压力)。 加速层:该层主要将大宽表拆为小宽表,根据更新频率配置不同的分区策略,减小0 码力 | 12 页 | 1.55 MB | 1 年前3RISC-V 开放架构设计之道 1.0.0
章介绍系统指令,说明 RISC-V 如何处理分页以及机器、用户和监管特权 模式。 最后一章简要介绍 RISC-V 国际基金会目前正在考虑添加的其他扩展。 简洁 然后是本书最长的部分,附录 A,按字母表顺序排列的指令集汇总。它用约 50 页的篇幅涵盖了完整的 RISC-V ISA,包括上文提到的所有扩展和所有伪指令,这是 RISC-V 简洁性的证明。 附录 B 展示了一些常见的汇编语言操作,以及这些操作在 zimm 111 rd 1110011 I csrrci 图 2.3: RV32I 操作码表包含指令的布局、操作码、格式类型和名称。(此图源于 [Waterman and Asanović 2017] 的表 19.2。) 17 编语言程序员需要额外使用一条传送(move)指令,避免其中一个源操作数被破坏。 再者,在所有 RISC-V 指令中,源寄存器和目的寄存器始终位于同一字段,这意味着 可在指令译码前开始访问寄存器。在许多其他 调用约定,即各种指针寄存器(sp,gp,tp,fp), 保存寄存器(s0-s11)和临时寄存器(t0-t6)的使用规范(此图源于 [Waterman and Asanović 2017] 的图 2.1 和表 20.1)。 20 2.4 RV32I 整数计算 支指令支持两个寄存器间的所有关系运算,但条件表达式可能涉及多对寄存器间的关 系,此时编译器或汇编语言程序员可将 slt 和 and、or、xor0 码力 | 223 页 | 15.31 MB | 1 年前3【PyTorch深度学习-龙龙老师】-测试版202112
定义为向量( ?? ?? , ?? ??)。这里通过一个具体的函数?(?, ?) = −(cos2 ? + cos2 ?)2来观察梯度的性质,如图 2.6 所示,图中??平面的红色箭头的长度表 示梯度向量∇?的模,箭头的方向表示梯度向量∇?的方向。可以看到,箭头的方向总是指向 当前位置函数值增速最大的方向,函数曲面越陡峭,箭头的长度也就越长,梯度的模也越 预览版202112 2.2 优化方法 6 章详细介绍交叉熵损失函数,这里 仍然使用均方误差损失函数来求解手写数字识别问题(机器学习的做法是多种多样的,不要 迷信某种做法,理解了算法思想即可随意变通)。对于?个样本的均方误差损失函数可以表 达为: ℒ( ,?) = 1 ? ∑ ∑ (?? (?) − ?? (?)) 2 10 ?=1 ? ?=1 只需要采用梯度下降算法来优化损失函数得到?和?的最优解,然后再利用求得的模型去 循环迭代多次后,就可以利用学好的模型??去预测未知的图片的类别概率分布。模型的测 试部分暂不讨论。 手写数字图片 MNIST 数据集的训练误差曲线如图 3.11 所示,由于 3 层的神经网络表 达能力较强,手写数字图片识别任务相对简单,误差值可以较快速、稳定地下降,其中, 把对数据集的所有样本迭代一遍叫作一个 Epoch,通常在间隔数个 Epoch 后测试模型的准 确率等指标,方便监控模型的训练效果。0 码力 | 439 页 | 29.91 MB | 1 年前3Krita 4.x 官方文档中文版 2021-08-06A
F6 可以快速访问“笔刷预设” ⼯具⾯板。 笔刷可以画出各种颜⾊,那么计算机⼜是如何理解⾊彩的呢? ⾊彩 ⼈眼可以分辨⼏百万种颜⾊,⾊彩是⼈类对射⼊眼睛的光线的感 知,⽽光是⼀种电磁波。任何物体的表⾯都会反射、吸收不同波⻓ 的电磁波 (光) ,不同波⻓的光呈现出不同的颜⾊。 左图:符合减⾊法原则的 CMY ⾊彩模型;右图:符合加⾊法的 RGB ⾊彩模型。由于两者的差异,图像在打印前都需要进⾏⼀次⾊ ⾥⾯的常⽤笔刷类型都有对应的笔刷引擎:像素 (描 线)、颜⾊涂抹 (画笔)、滤镜 (减淡和加深)。 以⼀个简单的描线笔刷为例,你可以选取⼀个像素笔刷,取消勾选 “不透明度”和“流量”的 启⽤压感笔传感器选项,并取消勾选列 表中除了“⼤⼩”之外的所有选项。接着来到笔尖⻚⾯,选中 ⾃动 笔尖,然后把直径设成 25 (要输⼊具体数值,可以单击蓝⾊滑动 条),勾选笔刷轮廓下⽅的“抗锯⻮”选项,将“淡化”设成 0.9。 最后将“间距”设成⾃动,并把数值设为 ⽴起⼀座桥 梁。 每当你启动 Krita 之后,Krita ⾸先会与操作系统建⽴联系,要求它 进⾏显⽰图像、调⽤内存等各种操作。不过现在最重要的是,Krita 要从数位板获取信息! 然⽽操作系统表⽰它做不到,因为它并不了解你的数位板是如何⼯ 作的。只有安装了驱动程序,操作系统才可以正确地识别数位板, 然后给 Krita 提供所需的数位板信息。⼀般来说,数位板的制造商 会负责为各个操作系统提供合适的驱动程序。0 码力 | 1594 页 | 110.95 MB | 1 年前3python3学习手册
回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE ⑥其他 eval() 函数用来执行一个字符串表达式(为python表达式),并返回表 达式的值 open() 函数用于打开一个文件,并返回文件对象 ascii() 函数类似 repr() 函数, 返回一个表示对象的字符串, 但是对于字符 串中的非 ASCII 字符则返回通过 repr() ②print()旧式字符串格式化 同C语言的sprin�()的格式化字符串用法,用 % 操作符 print( "这是第%2d号,体重%5.2f公折" % (num, wei) ) %-6.3f 表示左对齐,共6位宽,3位小数,浮点型(默认左对齐) 类 型 码 含义 类型码 含义 %c 字符 %s 字符串 %d 十进制整数 %u 无符号整数 %o 八进制数 %x 小写十六进制数 %X 大写十六进制数 数据库所有数据存储在此文件中,默认数据库名称同文件名(不含.db后 缀) sqlite_cursor = sqlite_conn.cursor() # 创建一个游标,用于执 行sql语句 # 查询是否有名为'tb_test'的表 sqlite_cursor.execute( 'SELECT * FROM sqlite_master WHERE "type"="table" and "tbl_name"="tb_test";')0 码力 | 213 页 | 3.53 MB | 1 年前3Blender v4.2.0 参考手册
章节 ⽤户界⾯ 窗⼜系统 键位映射 界⾯控件 ⼯具 & 操作 编辑器 3D 视图 图像编辑器 UV编辑器 合成器 纹理节点 ⼏何节点编辑器 着⾊器编辑器 视频序列编辑器 影⽚剪辑编辑器 动画摄影表 时间线 曲线编辑器 驱动器编辑器 ⾮线性动画 ⽂本编辑器 Python 控制台 信息编辑器 ⼤纲视图 属性 ⽂件浏览器 资产浏览器 电⼦表格 偏好设置 场景 & 物体 场景 物体 集合 视图层 功能局限 操作项 Blender⽬录布局 Deploying Blender in Production 附录 问题排查 启动 3D 视图 图形硬件 崩溃 Python错误 恢复数据 兼容性 词汇表 ⼿册索引 参与 ⼿册主要由志愿者维护,中⽂翻译组QQ群号:620831153,欢迎加 ⼊。 请考虑参与这份⼯作并 为⼿册出⼒。针对中⽂⼿册中的问题,请 点此 报错。 查看源 查看译⽂ 报告本页⾯的问题 ⼀致的 显⽰效果(并且可通过Python脚本来⾃定义界⾯)。 ⾼质量的3D架构,带来了快速且⾼效的⼯作流。 它有着活跃的社区⽀持,blender.org/community 收录了⼤量的站点列 表。 It can be installed into and run from any directory without modifying the system. 你可以在 这⾥ 下载最新版Blender。0 码力 | 9945 页 | 286.32 MB | 1 年前3Blender v4.0 参考手册(简体中文版)
部分 ⽤户界⾯ 窗⼜系统 键位映射 界⾯控件 ⼯具 & 操作 编辑器 3D 视图 图像编辑器 UV编辑器 合成器 纹理节点 ⼏何节点编辑器 着⾊器编辑器 视频序列编辑器 影⽚剪辑编辑器 动画摄影表 时间线 曲线编辑器 驱动器编辑器 ⾮线性动画 ⽂本编辑器 Python 控制台 信息编辑器 ⼤纲视图 属性 ⽂件浏览器 资产浏览器 电⼦表格 偏好设置 场景&物体 场景 物体 集合 视图层 建模 命令⾏ 脚本与扩展Blender 应⽤模板 键位映射⾃定义 功能局限 操作项 Blender⽬录布局 附录 问题排查 启动 3D 视图 图形硬件 崩溃 Python错误 恢复数据 兼容性 词汇表 ⼿册索引 参与 ⼿册主要由志愿者维护,中⽂翻译组QQ群号:620831153,欢迎加⼊。 请考虑参与这份⼯作并 为⼿册出⼒ 。针对中⽂⼿册中的问题,请 点此报错 。 关于Blender 简介 多重笔刷绘 制、 流体粒⼦、 代理对象、 序列编辑器的重写,和后期 UV 贴图绘画。 2.44 -- 2007年5⽉: ⼤新闻,除了两个新的修改器和重新启动的 64 位操作系统⽀持外,增加 了次表⾯散射,模拟⽣物和软物体表⾯的光散射。 2.45 -- 2007年9⽉: 重⼤bug修复,解决了⼀些性能问题。 2.46 -- 2008年5⽉: 桃项⽬发布,⼤约70名开发⼈员对这块进⾏了⼤量的开发⼯作。提供了⽑0 码力 | 5352 页 | 306.21 MB | 1 年前3RISC-V 手册 v2(一本开源指令集的指南)
令扩展的指令助记符。见图2.3、3.3、3.4、4.2、5.2、5.3、6.2、7.6、7.5、7.7、 9.5和10.1。(这些指令图和操作码映射启发了我们在书的副标题中使用单词图 集。) ⚫ 指令术语表——附录A是对每个RISC-V指令和伪指令的详尽描述1。它包括所有内 容:操作名称和操作数、英文描述、寄存器传输语言定义、它所在的RISC-V扩 展、指令的全称、指令格式、显示操作码的指令图,以及紧凑版本指令的参照。 勘误和补充内容 我们打算把勘误集中起来,每年发布几次更新。这本书的网站上会有本书的最新版 本,还会简单介绍一下当前版本相对上一版本的改变。可在本书的网站 (www.riscvbook.com)上查看勘误表的历史版本或报告新的错误。我们预先为您在这一版 中发现的问题表示歉意。我们期待您的反馈意见,来帮助我们改进这本书。 本书的诞生过程 在2017年5月8日至11日在上海举行的第六届RISC-V研讨会上,我们认识到了对这么一 Asanovic教授一起撰写的文章在中文杂志上发表。当我收到了中文翻译稿《指令系统应该 免费:RISC-V的案例》后,动用了专栏编委的一点小权利,立刻向《中国计算机学会通 讯》强烈推荐了这篇文章。文章很快于2015年2月发表,然而略显遗憾的是彼时它并未得到 广泛关注,不过却让我们团队“近水楼台先得月”,成为国内最早将体系结构前沿研究全面 转到了RISC-V平台的团队。这一次,怀着对RISC-V的感激之情、对Patterson教授的敬仰之0 码力 | 164 页 | 8.85 MB | 1 年前3Blender v4.1 参考手册
⽤户界⾯ 窗⼜系统 键位映射 界⾯控件 ⼯具 & 操作 编辑器 3D 视图 图像编辑器 UV编辑器 合成器 纹理节点 ⼏何节点编辑器 着⾊器编辑器 视频序列编辑器 影⽚剪辑编辑器 动画摄影表 时间线 曲线编辑器 驱动器编辑器 ⾮线性动画 ⽂本编辑器 Python 控制台 信息编辑器 ⼤纲视图 属性 ⽂件浏览器 资产浏览器 电⼦表格 偏好设置 场景 & 物体 场景 物体 集合 视图层 命令⾏ 脚本与扩展Blender 应⽤模板 键位映射⾃定义 功能局限 操作项 Blender⽬录布局 附录 问题排查 启动 3D 视图 图形硬件 崩溃 Python错误 恢复数据 兼容性 词汇表 ⼿册索引 参与 ⼿册主要由志愿者维护,中⽂翻译组QQ群号:620831153,欢迎加 ⼊。 请考虑参与这份⼯作并 为⼿册出⼒。针对中⽂⼿册中的问题,请 点此 报错。 View Source View 致的 显⽰效果(并且可通过Python脚本来⾃定义界⾯)。 ⾼质量的3D架构,带来了快速且⾼效的⼯作流。 它有着活跃的社区⽀持, blender.org/community 收录了⼤量的站点列 表。 体积⼩巧,便于分发。 你可以在 这⾥ 下载最新版Blender。 正在经历后期处理的已渲染图像。 Blender可以胜任多种多样的任务,也许初次上⼿会让你产⽣那么⼀点点胆 怯。但是,只需要0 码力 | 6411 页 | 312.46 MB | 1 年前3
共 908 条
- 1
- 2
- 3
- 4
- 5
- 6
- 91