随笔分类 -  算法学习

Raft一致性算法
摘要:动画网址 http://thesecretlivesofdata.com/raft/ 阅读全文

posted @ 2019-06-02 10:52 旭东的博客 阅读(384) 评论(0) 推荐(1) 编辑

百度brpc 压测工具rpc_press解析
摘要:1. 背景 昨天看到一段brpc中的压测代码rpc_press, 看着不错。整理一下。 发压工具的难点不是发送请求,而是要注意下面的2点: 保证能发出 ,比如上万qps ,比如控制为5qps,不可以大量发压 2. brpc 中的是关键实现 2.1 如何确保发送足够qps rpc_press 采用多线 阅读全文

posted @ 2018-08-16 08:05 旭东的博客 阅读(2837) 评论(0) 推荐(0) 编辑

算法: 二叉树增、删、查、找
摘要:最近写个任务与二叉树相关。 这里记录一下二叉树相关代码。后续可以使用。 阅读全文

posted @ 2018-05-06 21:08 旭东的博客 阅读(968) 评论(0) 推荐(1) 编辑

对多个有序数组,实现归并操作
摘要:工作中遇到了多个有序链的归并操作,这里记录一下解决方法。方便后续使用。 归并的方法列2种: (1) 堆排序, 或者胜利树。减少比较次数。效率高,实现比较麻烦。 (2) 普通方法,每次都需要比较。实现简单,一般用这个就可以。 下面的代码是,普通的方法,支持多个有序数组的归并操作。 阅读全文

posted @ 2018-04-27 08:34 旭东的博客 阅读(3021) 评论(0) 推荐(0) 编辑

一次问题追查----短字符串签名算法引发的bug
摘要:近期开发代码, 出现了一些诡异现象。追查原因是公司使用的签名函数出现的问题。 问题: 代码使用的签名库函数, 对于<=4字节的字符串, 签名就是本身。 hash函数只是计算签名, 有时会有hash冲突导致实际不相等的字符串, 有相同的hash值。 如果要严格比较, 可以直接比较内存字节。 在严格场景 阅读全文

posted @ 2018-03-13 08:18 旭东的博客 阅读(430) 评论(0) 推荐(0) 编辑

并查集(Union-Find)算法
摘要:最近用到了并查集,记录一下。主要还是对应用场景进行分析建模,判断是否可以使用并查集。 并查集算法主要用于判断连通性。典型的应用场景很多,举例: 1. 网络连通判断。如,已知部分临散的点连通,判断整个网络是否连通。 2. 变量名等同性。在程序中,可以声明多个引用来指向同一对象,这个时候就可以通过为程序 阅读全文

posted @ 2018-01-28 12:09 旭东的博客 阅读(822) 评论(0) 推荐(0) 编辑

算法: 实现LRU缓存,读取、写入O(1)实现
摘要:这题应该见的不少了,写写记录一下。 实现该功能分析: (1) O(1) 时间完成查找,那除了 hash 别无选择。 (2) LRU 最近最少使用算法,为了方便数据的淘汰。需要对最近访问的数据放未访问数据之前。 用双向链表实现即可。(通常情况下,双向链表读取、插入的时间复杂度都是O(n), 但是如果知 阅读全文

posted @ 2017-10-17 08:07 旭东的博客 阅读(2882) 评论(0) 推荐(0) 编辑

算法: skiplist 跳跃表代码实现和原理
摘要:SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。 所有操作均从上向下逐层查找,越上层一次next操作跨度越大。其实现是典型的空间换时间。 后面的图片来自:http://www.cnblogs.com/xuqian 阅读全文

posted @ 2017-09-03 13:05 旭东的博客 阅读(1649) 评论(0) 推荐(0) 编辑

算法:快速排序实现 & 定制比较函数
摘要:1. 快速排序基本算法 2. 快速排序主要是定制比较函数,通过定制比较函数,可以实现不同的输出结果 下面算法定制排序,排序结果分为4个桶,桶内数据是升序排列。 输入: 3 1 9 5 4 6 2 输出: 4 1 5 9 2 6 3 阅读全文

posted @ 2017-08-29 08:00 旭东的博客 阅读(646) 评论(0) 推荐(0) 编辑

算法:整数除法上取整
摘要:写代码会遇到整数除法需要上取整的情况。 1. 整数除法的话,可以自己写^_^ 2. 或者可以根据使用的语言提供的方法 比如c++ math.h头文件中有提供内置方法: 阅读全文

posted @ 2017-08-14 07:53 旭东的博客 阅读(4752) 评论(0) 推荐(0) 编辑

Reservoir Sampling 蓄水池抽样算法,经典抽样
摘要:随机读取数据,如何保证真随机是不可能的,因为计算机的随机函数是伪随机的。但是在不考虑计算机随机函数的情况下,如何保证数据的随机采样呢?1.系统提供的shuffle函数 C++/Java都提供有shuffle函数,可以对容器内部的数据打乱,保持随机排序。 C++:1 template 2 vo... 阅读全文

posted @ 2014-10-28 17:05 旭东的博客 阅读(8311) 评论(1) 推荐(0) 编辑

求二叉树的深度和宽度[Java]
摘要:这个是常见的对二叉树的操作。总结一下:设节点的数据结构,如下:1 class TreeNode {2 char val;3 TreeNode left = null;4 TreeNode right = null;5 6 TreeNode(char _val) {7 ... 阅读全文

posted @ 2014-10-20 13:51 旭东的博客 阅读(41261) 评论(0) 推荐(3) 编辑

[数学] 将长为L的木棒随机折成3段,则3段构成三角形的概率
摘要:1.题目 如题,将长为L的木棒随机折成3段,则3段构成三角形的概率是多少?2.解析 这个与其说是编程题目,倒不如说是个数学题目。可能是你没有见过,或者没有过这种解题思想。(还是那句,一回生两回熟,类推吧) 设分成的三段木棍的长度分别为:x,y,L-x-y。 (1)首先,三边长度都大于0。可以... 阅读全文

posted @ 2014-10-18 14:49 旭东的博客 阅读(19588) 评论(4) 推荐(2) 编辑

[2014亚马逊amazon] 在线笔试题 大于非负整数N的第一个回文数 Symmetric Number
摘要:1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式。 这个题目也是当时笔试第一次见到,花了一个小时才做出了。慢慢总结还是挺简单的。2.分析 分析如下: (1)一位数N(9除外)。 第一个大于N回文数等于N+1,如大于3的第一个回文数是4。 (2)奇数位(一... 阅读全文

posted @ 2014-10-10 12:43 旭东的博客 阅读(3762) 评论(16) 推荐(2) 编辑

有序数组每个数平方后,不同数字的个数?O(n)
摘要:此乃一道笔试题,当时的确也做出来啦。(但是在细节上还是出错啦,对多次重复出现的数字可能会重复计数,没有记录上次删除的元素)如题,有序数组,可以知道平方之后在两边的数据较大,中间的数据较小。 因此可以使用两个下标,从两边向中间扫描。将绝对值大的数字删掉,计数即可,并记录刚才删除的数值... 阅读全文

posted @ 2014-09-30 22:41 旭东的博客 阅读(2831) 评论(0) 推荐(1) 编辑

矩阵连乘最优结合 动态规划求解
摘要:1.引言 多矩阵连乘对于一般的矩阵乘法来说,如矩阵A(m,n)与矩阵B(n,p)相乘需要进行的加法次数为m*n*p次乘法。由于矩阵乘法满足结合律,因此矩阵相乘的结合性,会影响整个计算表达式的乘法执行次数。如下面的例子,其中A(10,5)、B(5,20)、C(20,3): (1) ((AB)C)... 阅读全文

posted @ 2014-09-30 21:53 旭东的博客 阅读(13405) 评论(0) 推荐(0) 编辑

不用中间变量交换两个数 swap(a,b);
摘要:#include using namespace std;int main () { int a = 3; int b = 5; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; ... 阅读全文

posted @ 2014-09-16 17:59 旭东的博客 阅读(1588) 评论(2) 推荐(0) 编辑

求有环单链表中的环长、环起点、链表长
摘要:1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Po 阅读全文

posted @ 2014-06-15 20:22 旭东的博客 阅读(20691) 评论(11) 推荐(5) 编辑

稀疏数据压缩查询方法:Rank & Select 操作
摘要:1.稀疏数据的例子 对于网络图对应的节点关联矩阵、数据生成的哈希表等,这些存储起来是稀疏的,这样我们就会想到需要压缩空间。但是在压缩存储空间的同时,还要支持高效的查询操作。 Rank & Select 就可以对稀疏的数据进行压缩,还能支持高效的查询操作。2.Rank & Select 操作压缩稀... 阅读全文

posted @ 2014-06-14 11:28 旭东的博客 阅读(2860) 评论(0) 推荐(0) 编辑

树状数组(Binary Indexed Tree) 总结
摘要:1.“树状数组”数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]。 进行j-i+1次加法,复杂度为O(j-i+1) (2)任意修改其中某个元素的值。 使用数组下标可以直接... 阅读全文

posted @ 2014-06-11 23:54 旭东的博客 阅读(12371) 评论(3) 推荐(4) 编辑

导航