-
Paxos算法为什么说是Raft,Zab协议的鼻祖,及原理解析
paxos算法在分布式领域具有非常重要的地位。但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难。 网上有很多讲解Paxos算法的文章,但是质量参差不齐。看了很多关于Paxos的资料后发现,学习Paxos最好的资料是论文《Paxos Made Simple》,其次是中、英文版维基...
05月04日[游戏|数码]浏览:402
-
共识算法Raft为什么这么流行,及原理解析
拜占庭将军问题是分布式领域最复杂、最严格的容错模型。但在日常工作中使用的分布式系统面对的问题不会那么复杂,更多的是计算机故障挂掉了,或者网络通信问题而没法传递信息,这种情况不考虑计算机之间互相发送恶意信息,极大简化了系统对容错的要求,最主要的是达到一致性。 所以将拜占庭将军问题根据常见的工作上的问题...
05月03日[游戏|数码]浏览:381
-
算法浅谈——人人皆知却很多人写不对的二分法
1 二分法可以说是鼎鼎大名,哪怕是没有学过编程的同学,也许说不上来二分法这个名字,但是对于其中的精髓应该都是有所了解的。不了解的同学也没关系,我一句话就能交代清楚:我们每次将一个集合一分为二,每次舍弃其中一半。 早在两千多年前,庄子就搞清楚了二分法的精髓,他说:一尺之棰,日取其半,万世不...
05月01日[游戏|数码]浏览:430
-
算法专题-手动实现循环队列
这次我就使用数组来实现静态队列了。值得注意的是:往往实现静态队列,我们都是做成循环队列。这道题也是我多次面试过程中遇到的,比如字节跳动和猿辅导,希望大家掌握。 为什么静态队列要做成循环队列呢?试想,底层依赖数组,如果不做成循环的,会非常浪费空间,那我们得申请多大的内存啊?既然做成循环的,首先我们...
04月27日[游戏|数码]浏览:465
-
化繁为简:推荐算法三视角
关于推荐系统,如果在忘掉所有的公式和代码,忘记所有的语言描述,脑海里就剩下几张图景,会是什么?一张二维表格,一个拓扑图,一条时间线。这三幅图景,是我看待推荐算法的三种视角。 视角一:矩阵视角 在脑中想象一个二维的表格,每一行代表一个用户,每一列代表一个物品,表格里的每一个点代表用户对物品的操作,这个...
04月22日[游戏|数码]浏览:490
-
超级简单的数据压缩算法—LZW算法
在字符串算法—数据压缩中,我们介绍了 赫夫曼树(Huffman)的构建和应用(编码、译码)哈夫曼压缩算法(Huffman compression), 本文将介绍 LZW算法 。 2. LZW算法 这个算法很简单,为了方便讲述,我们将采用16进制,写代码的时候在把它转回2进制就是了。 在16进制下:A...
04月20日[游戏|数码]浏览:284
-
Dijkstra算法详细(单源最短路径算法)
对于 dijkstra 算法,很多人可能感觉熟悉而又陌生,可能大部分人比较了解 bfs和dfs ,而对dijkstra和floyd算法可能知道大概是图论中的某个算法,但是可能不清楚其中的作用和原理,又或许,你曾经感觉它很难,那么,这个时候正适合你重新认识它。 Dijkstra能是干啥的? Dij...
04月19日[游戏|数码]浏览:343
-
信息摘要算法之MD5
MD5(Message-Digest Algorithm),想必大家都再熟悉不过了吧。通常我们调用第三方支付接口的时候都会遇到这种算法或者SHA等等类似的算法来做签名验证,由于其是不可逆的算法,对应破解难度也很大。 底层原理 MD5算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。 处理...
04月18日[游戏|数码]浏览:491