Hello 算法 1.0.0b4 Golang版
} return } 4.1.4. 数组典型应用 数组是最基础的数据结构,在各类数据结构和算法中都有广泛应用。 ‧ 随机访问:如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实 现样本的随机抽取。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。例如,快速排序、归并排序、二分查找等都需 要在数组上进行。 4. 数组与链表 hello‑algo.com append(list, list1...) // 将列表 list1 拼接到 list 之后 排序列表。排序也是常用的方法之一。完成列表排序后,我们便可以使用在数组类算法题中经常考察的「二 分查找」和「双指针」算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列 4.3.2. 列表实现 素的缺陷,需要通过标记删除。 被标记为已删除的空间是可以再次被使用的。当将新元素插入哈希表,并且通过哈希函数找 到了被标记为已删除的位置时,该位置可以被新的元素使用。这样做既能保持哈希表的探测 序列不变,又能保证哈希表的空间使用率。 � 为什么在线性探测中,查找元素的时候会出现哈希冲突呢? 查找的时候通过哈希函数找到对应的桶和键值对,发现 key 不匹配,这就代表有哈希冲突。因 此,线0 码力 | 347 页 | 27.40 MB | 1 年前3Hello 算法 1.0.0b1 Golang版
== target { index = i break } } return } 4.1.4. 数组典型应用 随机访问。如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。 append(list, list1...) // 将列表 list1 拼接到 list 之后 排序列表。排序也是常用的方法之一,完成列表排序后,我们就可以使用在数组类算法题中经常考察的「二分 查找」和「双指针」算法了。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列 4.3.2. 列表简易实现 完全二叉树 「完全二叉树 Complete Binary Tree」只有最底层的结点未被填满,且最底层结点尽量靠左填充。 完全二叉树非常适合用数组来表示。如果按照层序遍历序列的顺序来存储,那么空结点 null 一定全部出现在 序列的尾部,因此我们就可以不用存储这些 null 了。 Figure 7‑5. 完全二叉树 完满二叉树 「完满二叉树 Full Binary Tree」除了叶结点之外,其余所有结点都有两个子结点。0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 Golang版
== target { index = i break } } return } 4.1.4. 数组典型应用 随机访问。如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现样本 的随机抽取。 二分查找。例如前文查字典的例子,我们可以将字典中的所有字按照拼音顺序存储在数组中,然后使用与日常 查纸质字典相同的“翻开中间,排除一半”的方式,来实现一个查电子字典的算法。 append(list, list1...) // 将列表 list1 拼接到 list 之后 排序列表。排序也是常用的方法之一,完成列表排序后,我们就可以使用在数组类算法题中经常考察的「二分 查找」和「双指针」算法了。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列 4.3.2. 列表简易实现 完全二叉树 「完全二叉树 Complete Binary Tree」只有最底层的结点未被填满,且最底层结点尽量靠左填充。 完全二叉树非常适合用数组来表示。如果按照层序遍历序列的顺序来存储,那么空结点 null 一定全部出现在 序列的尾部,因此我们就可以不用存储这些 null 了。 Figure 7‑5. 完全二叉树 完满二叉树 「完满二叉树 Full Binary Tree」除了叶结点之外,其余所有结点都有两个子结点。0 码力 | 202 页 | 15.73 MB | 1 年前303. Golang 在隐私计算平台建设中的实践 - 刘敬
edDatasetA) 对应 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 嵌套调⽤用其他算法 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 息 反序列列化并缓存,否则⽆无法进⼊入到元函数调度流程注并⼊入到元对应函数的⼊入参中 趣链科技版权所有©2016 – 2021 28 隐私计算算法框架-⾃自动序列列化⽹网络消息 将reflect.TypeOf(data).String()作为消息体类型 将消息序列列化后记录消息类型和序列列化⽅方式包装 趣链科技版权所有©2016 – 2021 29 隐私计算算法框架-⾃自动序列列化⽹网络消息0 码力 | 37 页 | 6.20 MB | 1 年前3Hello 算法 1.0.0b5 Golang版
4.1.3 数组典型应用 数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。 ‧ 随机访问:如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实 现样本的随机抽取。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。快速排序、归并排序、二分查找等都主要在数 组上进行。 ‧ 查找表:当我们需要快速查找一个元素或者需要查 list = append(list, list1...) // 将列表 list1 拼接到 list 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考察的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(list) // 排序后,列表元素从小到大排列 4.3.2 列表实现 许多编程语言都提供内置的列表,例如 素的缺陷,需要通过标记删除。 被标记为已删除的空间是可以再次被使用的。当将新元素插入哈希表,并且通过哈希函数找 到了被标记为已删除的位置时,该位置可以被新的元素使用。这样做既能保持哈希表的探测 序列不变,又能保证哈希表的空间使用率。 � 为什么在线性探测中,查找元素的时候会出现哈希冲突呢? 查找的时候通过哈希函数找到对应的桶和键值对,发现 key 不匹配,这就代表有哈希冲突。因 此,线0 码力 | 379 页 | 30.70 MB | 1 年前3IPC性能极致优化方案-RPAL落地实践
几种常见的同机通信场景: 1. 微服务合并部署(亲和性部署、sidecar 部署) 2. 本地基础组件:mesh sidecar、风控 sidecar、分布式网关... 方案诞生的背景 微服务化拆分: 1. 序列化 2. 网络开销 3. 服务治理 微服务合并部署 function call remote call 方案诞生的背景 微服务合并形态:sidecar 进程通信 方案诞生的背景 微服务合并形态:亲和性部署 com/cloudwego/shmipc-go 方案诞生的背景 方案诞生的背景 IPC 的性能瓶颈有哪些: 1. 系统特权级切换; 2. 异步线程唤醒/休眠(事件通知); 3. 数据拷贝(序列化/反序列化); 方案诞生的背景 能不能把库函数调用的高性能优势做到 IPC 里面,降低进程间的事件通知和数据拷贝开销? 以go-go微服务 RPC 通信场景为例,该问题可以抽象为,如何高效地在两个 epoll 网络模型,实现了纯用户态的事件轮询和无拷贝的指针读写接口。 从性能瓶颈的两点分析: 1. 异步线程唤醒: 关键在于如何最低限度降低线程唤醒的开销,非必要不通知事件。 2. 数据序列化/反序列化 需要做到跨进程的虚拟地址空间共享,通过传递指针来传递一切数据。 全进程地址空间共享与保护 第二部分 全进程地址空间共享与保护 模拟插件/动态链接库等方案的用户态上下文切换和虚拟地址访问,需要解决:0 码力 | 39 页 | 2.98 MB | 1 年前3Hello 算法 1.1.0 Go版
4.1.3 数组典型应用 数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。 ‧ 随机访问:如果我们想随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现 随机抽样。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。快速排序、归并排序、二分查找等都主要在数 组上进行。 ‧ 查找表:当需要快速查找一个元素或其对应关系时,可以 nums = append(nums, nums1...) // 将列表 nums1 拼接到 nums 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考查的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(nums) // 排序后,列表元素从小到大排列 第 4 章 数组与链表 hello‑algo 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使用。当将新元素插入哈希表,并且通过哈希函数找到标记为已删除的位置时,该位置可以 被新元素使用。这样做既能保持哈希表的探测序列不变,又能保证哈希表的空间使用率。 Q:为什么在线性探测中,查找元素的时候会出现哈希冲突呢? 第 6 章 哈希表 hello‑algo.com 134 查找的时候通过哈希函数找到对应的桶和键值对,发现0 码力 | 383 页 | 18.48 MB | 1 年前3Hello 算法 1.0.0 Golang版
4.1.3 数组典型应用 数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。 ‧ 随机访问:如果我们想随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现 随机抽样。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。快速排序、归并排序、二分查找等都主要在数 组上进行。 ‧ 查找表:当需要快速查找一个元素或其对应关系时,可以 nums = append(nums, nums1...) // 将列表 nums1 拼接到 nums 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考查的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(nums) // 排序后,列表元素从小到大排列 第 4 章 数组与链表 hello‑algo 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使用。当将新元素插入哈希表,并且通过哈希函数找到标记为已删除的位置时,该位置可以 被新元素使用。这样做既能保持哈希表的探测序列不变,又能保证哈希表的空间使用率。 Q:为什么在线性探测中,查找元素的时候会出现哈希冲突呢? 查找的时候通过哈希函数找到对应的桶和键值对,发现 key 不匹配,这就代表有哈希冲突。因此,线性探测0 码力 | 382 页 | 17.60 MB | 1 年前3Hello 算法 1.2.0 简体中文 Go 版
4.1.3 数组典型应用 数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。 ‧ 随机访问:如果我们想随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现 随机抽样。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。快速排序、归并排序、二分查找等都主要在数 组上进行。 ‧ 查找表:当需要快速查找一个元素或其对应关系时,可以 nums = append(nums, nums1...) // 将列表 nums1 拼接到 nums 之后 6. 排序列表 完成列表排序后,我们便可以使用在数组类算法题中经常考查的“二分查找”和“双指针”算法。 // === File: list_test.go === /* 排序列表 */ sort.Ints(nums) // 排序后,列表元素从小到大排列 第 4 章 数组与链表 www.hello‑algo 多次哈希是开放寻址的一种,开放寻址法都有不能直接删除元素的缺陷,需要通过标记删除。标记为已删除 的空间可以再次使用。当将新元素插入哈希表,并且通过哈希函数找到标记为已删除的位置时,该位置可以 被新元素使用。这样做既能保持哈希表的探测序列不变,又能保证哈希表的空间使用率。 Q:为什么在线性探测中,查找元素的时候会出现哈希冲突呢? 第 6 章 哈希表 www.hello‑algo.com 134 查找的时候通过哈希函数找到对应的桶和键值对,发现0 码力 | 384 页 | 18.49 MB | 10 月前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
的初衷 6 • 升级成本高 • 业务解耦 • 平滑升级 • 异构语言治理 • 异构语言治理能力弱 • SDK 版本不统一 应用 SDK 服务路由 负载均衡 通信序列化协议 sidecar 应用 SDK 通信序列化协议 业务逻辑 服务路由 熔断限流 进程通信 熔断限流 负载均衡 Service Mesh 落地实践 7 基础设施 MOSN RPC MQ Actuator 业务逻辑 RPC SDK 通信序列化协议 RPC SOFA-RPC 基础设施 新的挑战 2:异构语言接入成本高 12 MOSN NodeJS 业务逻辑 RPC SDK 通信序列化协议 RPC Cache MQ Config SOFA-RPC Redis SOFA-MQ SOFA- config 基础设施 X SDK 通信序列化协议 新的挑战 2:异构语言接入成本高 2:异构语言接入成本高 13 MOSN NodeJS 业务逻辑 X SDK 通信序列化协议 RPC Cache MQ Config python 业务逻辑 X SDK 通信序列化协议 go 业务逻辑 X SDK 通信序列化协议 C++ 业务逻辑 X SDK 通信序列化协议 SOFA- RPC Redis SOFA-MQ SOFA-config 基础设施 14 Multi-Runtime0 码力 | 63 页 | 880.85 KB | 1 年前3
共 24 条
- 1
- 2
- 3