Redis实现布隆过滤器
摘要:前面讲到bloomfilter的原理及guava实现的bloomfilter的用法,现在看看redis如何实现: 一、bitmaps 我们知道计算机是以二进制位作为底层存储的基础单位,一个字节等于8位。 比如“big”字符串是由三个字符组成的,这三个字符对应的ASCII码分为是98、105、103,
阅读全文
posted @
2021-04-25 09:29
duanxz
阅读(2564)
推荐(1) 编辑
guava之BloomFilter
摘要:Guava中的布隆过滤器 示例: import com.google.common.base.Charsets; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; public clas
阅读全文
posted @
2021-04-25 09:17
duanxz
阅读(1624)
推荐(0) 编辑
算法——贝叶斯
摘要:简介 学过概率理论的人都知道条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B);即事件A和事件B同时发生的概率等于在发生A的条件下B发生的概率乘以A的概率。由条件概率公式推导出贝叶斯公式:P(B|A)=P(A|B)P(B)/P(A);即,已知P(A|B),P(A)和P(B)可以计
阅读全文
posted @
2018-12-11 11:44
duanxz
阅读(4597)
推荐(0) 编辑
计算字符串的相似度-两种解法
摘要:一直不理解,为什么要计算两个字符串的相似度呢。什么叫做两个字符串的相似度。经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释。因为搜索引擎要把通过爬虫抓取的页面给记录下来,那么除了通过记录url是否被访问过之外,还可以这样,比较两个页面的相似度,
阅读全文
posted @
2018-11-07 17:31
duanxz
阅读(6080)
推荐(0) 编辑
红黑树(Red-Black tree)
摘要:红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树。我们知道一颗基本的二叉树他们都需要满足一个基本性质–即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高。我们知道在生成二叉树的过程是非常容易失衡的
阅读全文
posted @
2016-12-22 09:51
duanxz
阅读(2094)
推荐(0) 编辑
常见hash算法的原理
摘要:散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映
阅读全文
posted @
2015-12-07 15:31
duanxz
阅读(20778)
推荐(0) 编辑
常见限流算法介绍(漏桶算法、令牌桶算法)及实现--待整理
摘要:1.限流2.限流算法 2.1计数器 2.2 漏桶算法 2.3 令牌桶算法 2.4、滑动时间窗 2.5、三色速率标记法三、限流实现 3.1 RateLimiter简介(guava的令牌桶实现) 3.2 基于 redis 的分布式限流 3.3 Spring Cloud GateWay整合redis内置R
阅读全文
posted @
2014-11-26 13:48
duanxz
阅读(6440)
推荐(0) 编辑
一致性哈希算法原理、避免数据热点方法及Java实现
摘要:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了
阅读全文
posted @
2014-09-16 10:24
duanxz
阅读(1339)
推荐(0) 编辑
分布式一致性协议之:Paxos算法(转)
摘要:Paxos算法的难理解与算法的知名度一样令人敬仰,从我个人的经历而言,难理解的原因并不是该算法高深到大家智商不够,而在于Lamport在表达该算法时过于晦涩且缺乏一个完整的应用场景。如果大师能换种思路表达该算法,大家可能会更容易接受: 首先提出算法适用的场景,给出一个多数读者能理解的案例 其次描述P
阅读全文
posted @
2014-06-13 18:01
duanxz
阅读(630)
推荐(0) 编辑
分布式一致性协议之:Zab(Zookeeper的分布式一致性算法)
摘要:Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量、低延迟、健壮、简单,但不过分要求其扩展性。下面将展示一些该协议的核心内容: 另,本文仅讨论Zook
阅读全文
posted @
2014-06-13 18:01
duanxz
阅读(1325)
推荐(0) 编辑
分布式一致性协议之:Gossip(八卦)算法
摘要:Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易。为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<Efficient Reconciliation and Flow Control for Anti-Entrop
阅读全文
posted @
2014-06-04 17:27
duanxz
阅读(3853)
推荐(0) 编辑
ZAB与Paxos算法的联系与区别
摘要:ZAB协议并不是Paxos算法的一个典型实现,在讲解ZAB和Paxos之间的区别之前,我们首先来看下两者的联系。 两者都存在一个类似于Leader进程的角色,由其负责协调多个Follow进程的运行。 Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交。 在ZA
阅读全文
posted @
2014-04-22 11:22
duanxz
阅读(2277)
推荐(0) 编辑
分布式一致性协议之:Raft算法
摘要:一致性算法Raft详解 背景 熟悉或了解分布性系统的开发者都知道一致性算法的重要性,Paxos一致性算法从90年提出到现在已经有二十几年了,而Paxos流程太过于繁杂实现起来也比较复杂,可能也是以为过于复杂 现在我听说过比较出名使用到Paxos的也就只是Chubby、libpaxos,搜了下发现Ke
阅读全文
posted @
2014-03-30 22:28
duanxz
阅读(2503)
推荐(0) 编辑
对一致性Hash算法,Java代码实现的深入研究
摘要:一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理做了详细的解读。 算法的具体原理这里再次贴上: 先构造一个长度为232的整数环(这个环被称为一致性
阅读全文
posted @
2014-03-18 14:20
duanxz
阅读(419)
推荐(0) 编辑
各种排序算法的分析及java实现
摘要:排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果
阅读全文
posted @
2014-02-10 14:33
duanxz
阅读(553)
推荐(0) 编辑
常用hash算法及评测[转]
摘要:RS hash 算法 unsigned int RSHash(char* str, unsigned int len) { unsigned int b = 378551; unsigned int a = 63689; unsigned int hash = 0; unsigned int i =
阅读全文
posted @
2014-01-06 10:37
duanxz
阅读(1044)
推荐(0) 编辑
几种经典的hash算法
摘要:计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函 数都可以被认为
阅读全文
posted @
2014-01-05 23:03
duanxz
阅读(2247)
推荐(0) 编辑
Bloom Filter(布隆过滤器)的概念和原理
摘要:目录 引子 布隆过滤器介绍 产生的契机 设计思想 优缺点与用途 假阳性率的计算 Guava中的布隆过滤器 redis实现布隆过滤器 总结 引子 最近在研究推荐系统中已读内容排除以及重复内容去重相关的问题,布隆过滤器是解决这类问题最好的工具之一,很值得专门写一篇文章来详细讲解。 在缓存穿透的场景中,解
阅读全文
posted @
2013-12-18 14:07
duanxz
阅读(4132)
推荐(1) 编辑
分布式限流之一:redis+lua 实现分布式令牌桶,高并发限流---temp
摘要:《高可用服务设计之二:Rate limiting 限流与降级》 《nginx限制请求之一:(ngx_http_limit_conn_module)模块》 《nginx限制请求之二:(ngx_http_limit_req_module)模块》 《nginx限制请求之三:Nginx+Lua+Redis
阅读全文
posted @
2013-06-13 17:34
duanxz
阅读(4305)
推荐(0) 编辑
Trie(前缀树/字典树)及其应用
摘要:Trie,又经常叫前缀树,字典树等等。它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree。当然很多名字的意义其实有交叉。 定义 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通
阅读全文
posted @
2013-05-03 11:10
duanxz
阅读(907)
推荐(0) 编辑