
算法
文章平均质量分 85
wuezs
阿里巴巴 高级开发工程师
展开
-
Reservoir Sampling - 蓄水池抽样
问题起源于编程珠玑Column 12中的题目10,其描述如下: How could you select one of n objects at random, where you see the objects sequentially but you do not know the value of n beforehand? For concreteness, how woul转载 2016-08-10 11:00:36 · 1395 阅读 · 0 评论 -
理解分布式一致性协议:二、三阶段提交
由于毕设和Lab项目需要,最近在看《从paxos到zookeeper分布式一致性原理与实践》, 2和3PC算法流程,网上资料很多,就不赘述了。由于书中关于2PC和3PC的缺点的部分描述不容易让人理解,因此本文主要想讨论一下2和3PC存在哪些优缺点?为什么存在这些缺点? 以及该协议适应的场景。2PC 二阶段提交2PC其实就是先尝试执行事务再提交的策略,如果有一个参与者出现问题,则回滚尝试期间做的事务原创 2017-08-07 17:15:19 · 1301 阅读 · 0 评论 -
如何构造另一个随机生成函数?
昨天下午面搜狐的时候被问到了构造随机数生成函数的问题,事后觉得有必要归纳一下相关题型。 1.已知随机数生成函数randA能等概率生成0~n的整数,设计一个等概率生成0~m的randB算法: 若n大于m,则直接利用randA随机产生的数作为randB,如果randA产生的数大于m则丢弃这个数,重新产生,直至成功。若n远大于m,则只需构造最大值为m*(n/m)的随机函数randC,然后丢弃ran原创 2017-08-03 14:25:49 · 1724 阅读 · 0 评论 -
理解Paxos算法的推导过程
Paxos作为分布式系统的基石,一直都是CS领域的热门话题,Paxos号称是最难理解的算法。最近几天一直在看Paxos相关资料,发现Paxos算法执行过程很简单,但如何推导出Paxos算法确实令人费解。网上有大量关于Paxos的基本概念、算法描述、推导过程等文章,所以关于Paxos的基本概念就不赘述了,但大部分文章都没有说明白推导过程中一些容易让人疑惑的问题(例如为什么题案要被设计为编号+value原创 2017-08-07 23:26:33 · 2135 阅读 · 0 评论