对 Go 程序进行可靠的性能测试
(相当不严谨地)回顾 18 ● 总体:所有满足某些共同性质的值的集合(共同性质:接口) ● 样本:从总体中随机抽取的个体 ● 频率:n 次试验中,某个事件发生的次数除以总的试验次数 ● 大数定理:当试验次数 n → ∞ 时,频率一定收敛到某个值 ● 概率:频率收敛到的值,性质之一: ● 独立:两个事件互不影响,性质之一: ● 随机变量:是一个函数,参数是所有可能的样本,返回值是这些样本的取值,例如 中心极限定理:无穷多个独立的随机变量的和服从正态分布 * 额外的说明见演讲者备注 2020 © Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 检验的类型 19 ● 统计是一套在总体分布函数完全未知或者只知道形式、不知参数的情况下,为了由样本推断总体的某些未知特性,形成的 一套方法论。 ● 多次抽样:对同一个性能基准测试运行多次,根据中心极限定理,如果理论均值存在,则抽样噪声服从正态分布的。 Go 夜读 · 对 Go 程序进行可靠的性能测试 假设检验 20 假设检验:利用样本判断对总体的假设是否成立的过程 零假设 H0:想要驳回的论点 备择假设 H1:拒绝零假设后的备用项,我们想要证明的论点 p 值:零假设发生的概率 显著性水平:可靠程度 例如:在性能基准测试中, H0:代码修改前后,性能没有提升 H1:代码修改前后,性能有显著提升 p < 0.05:H0 发生的概率小于0 码力 | 37 页 | 1.23 MB | 1 年前3Go 1.18 中的泛型
ConstraintA | ConstraintB // 并集 ConstraintMethodC() // 交集 } 这个问题是一个 NP 完全问题(Cook–Levin 定理)。 编译器在编译期间执行这类检查,如果不对规则加以限制,则将在某些情况下极大的增加 编译时间。 这最终导致了 "并集元素中不能包含具有方法集的参数 类型" 这一限制. Go 1.18 中的类0 码力 | 45 页 | 501.50 KB | 1 年前3Hello 算法 1.0.0b4 Golang版
算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复出这个短语的内容了。 Figure 3‑7. Unicode 编码示例 然而,ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会 是 ASCII 编码下大小的 2 倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3. 数据结构 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质不是一件易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 15. 贪心 hello‑algo.com 324 � 有 动态规划中 都有涉及。 2. 确定贪心策略:确定如何在每一步中做出贪心选择。这个策略能够在每一步减小问题的规模,并最终能 解决整个问题。 3. 正确性证明:通常需要证明问题具有贪心选择性质和最优子结构。这个步骤可能需要使用到数学证明, 例如归纳法或反证法等。 确定贪心策略是求解问题的核心步骤,但实施起来可能并不容易,原因包括: ‧ 不同问题的贪心策略的差异较大。对于许多问题来说,贪心策略都比较浅显,我们通过一些大概的思考0 码力 | 347 页 | 27.40 MB | 1 年前3Hello 算法 1.1.0 Go版
将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法0 码力 | 383 页 | 18.48 MB | 1 年前3Hello 算法 1.0.0 Golang版
将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法0 码力 | 382 页 | 17.60 MB | 1 年前3Hello 算法 1.0.0b5 Golang版
,将“Hello 算法”中的所有字符 都编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复出这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下大小的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 第 3 章 数据结构 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速的判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质不是一件易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 第 15 章 贪心 hello‑algo.com 355 �0 码力 | 379 页 | 30.70 MB | 1 年前3Hello 算法 1.2.0 简体中文 Go 版
将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法0 码力 | 384 页 | 18.49 MB | 10 月前3大规模高性能区块链架构设计模式与测试框架-李世敬
2009 • 中本聪发表了比特币的创世论文 《比特币: 一种点对点的电子现 金系统》,标志着区块链作为一 项完整的集成创新技术正式诞生 • 比特币诞生,是世界上首个区 块链应用系统。发展至今有力 地证明了区块链技术的创新性、 颠覆性和顽强的生存能力 中本聪 比特币Bitcoin 2013 • 以太坊发布以太坊白皮书, 引入智能合约,推出首个 图灵完备的区块链平台, 进入区块链2.0时代 以太坊Ethereum 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 设备,主要进⾏数据的可信采集 「多��异构并⾏区��架构模型」 17 趣链科技 版权所有 ©2016-2021 17 趣链科技 版权所有 ©2016-2021 ©2016-2021 ⾼安全 易⽤性 • ⽀持1000+共识节点组⽹ • ⽇均存储量可达TB级 • 全国密⽀持 • 链内原⽣权限控制体系 强隐私 • TEE账本加密、隐私交易 • 零知识证明、同态加密 • 安全完备证书准⼊机制 • 分区共识 • ⽀持GB级图⽚、⾳视频⼤⽂件存储 连续荣获第⼀ 2017-2020年 中国信通院 可信区块链测评 海量存储 • ⾼效数据索引0 码力 | 39 页 | 56.58 MB | 1 年前3基于Go的大数据平台-党合萱
指数增⻓长 简单 · 可信赖 ⾼高可⽤用与⽔水平扩展 简单 · 可信赖 master/server架构 • master/server间采⽤用golang rpc通信 • server上报⼼心跳证明⾃自⼰己存活,并汇报所 执⾏行行任务的情况 • master向server周期性下发任务,server 管理理⾃自身任务决定哪些要执⾏行行哪些要丢弃 简单 · 可信赖 master⾼高可⽤用 •0 码力 | 34 页 | 1.26 MB | 1 年前3Go 2 Generics? A (P)review
T& { /*…*/ } 但大部分人宁愿要一个关 键字来帮助识别模板,[...] 选择尖括号 <…> 而不是圆括号 (…),是因为用户发现这样更容易阅读,因为圆括号在 C/C++ 里已被过度使用。事实证明,使用圆括 号进行语法分析也并不困 难,但读者(reader)总是喜欢尖括号 <…>。』 ——"The0 码力 | 41 页 | 770.62 KB | 1 年前3
共 16 条
- 1
- 2