随笔分类 - 算法
摘要:Raft 实现日志复制同步 本篇文章以 "John Ousterhout(斯坦福大学教授)" 和 "Diego Ongaro(斯坦福大学获得博士学位,Raft算法发明人)" 在 Youtube 上的讲解视频及 ppt 为蓝本,深入分析 Raft 的内部机制,并以日志复制同步(Replicated L
阅读全文
摘要:Paxos 实现日志复制同步 这篇文章以一种易于理解的方式来解释 Multi Paxos 的机制。 Multi Paxos 的是为了创建日志复制 一种实现方式是用一组基础 Paxos 实例,每条记录都有一个独立的 Paxos 实例,要想这么做只需要为每个 Prepare 和 Accept 请求增加一
阅读全文
摘要:Paxos 实现日志复制同步 本篇文章以 "John Ousterhout(斯坦福大学教授)" 和 "Diego Ongaro(斯坦福大学获得博士学位,Raft算法发明人)" 在 Youtube 上的讲解视频及 ppt 为蓝本,深入分析 Paxos 的内部机制,并以日志复制同步(Replicated
阅读全文
摘要:算术表达式求值我们要学习的一个栈的用例同时也是展示泛型的应用的一个经典例子,就是用来计算算术表达式的值,例如( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )如果将4乘以5,把3加上2,取它们的积然后加上1,就得到了101。但Java系统是如何完成这些运算的呢?不需要研究Java系统...
阅读全文
摘要:二分查找与暴力查找。如果可能,我们的测试用例都会通过模拟实际情况来展示当前算法的必要性。这里该过程被称为白名单过滤。具体来说,可以想象一家信用卡公司,它需要检查客户的交易账号是否有效。为此,它需要:将客户的账号保存在一个文件中,我们称它为白名单;从标准输入中得到每笔交易的账号;使用这个测试用例在标准...
阅读全文
摘要:乱序检查。通过实验检查表中的乱序代码是否能够产生预期的效果。编写一个程序ShuffleTest,接受命令行参数M和N,将大小为M的数组打乱N次且在每次打乱之前都将数组重新初始化为a[i] = i。打印一个MxM的表格,对于所有的列j,行i表示的是i在打乱后落到j的位置的次数。数组中的所有元素的值都应...
阅读全文
摘要:模拟掷骰子。以下代码能够计算每种两个骰子之和的准确概率分布:int SIDES = 6;double[] dist = new double[2*SIDES+1];for (int i = 1; i <= SIDES; i++) for (int j = 1; i <= SIDES; j++...
阅读全文