算法
文章平均质量分 94
梦回从前
只要是光一定会灿烂的
展开
-
位图BitMap不好用?那来看看进化版本的RoaringBitmap,包您满意
到底什么是RBM,这里直接引用网上的定义:从上述的定义可以看出,RBM还是使用到了BM,只是在位图的的基础上进化成了高效压缩位图,从而达到了高性能以及更广泛的使用场景。看到上面的处理逻辑,大家可能会感到疑惑,为什么会选择4096这个阈值呢?其实也很简单,看下面这张图:从上图可以看出 ArrayContainer 和 BitmapContainer 的内存占用随元素个数增加的变化曲线。理论上来说两条线的交点就是整个临界点,在这个点之前 ArrayContainer 占用的内存更少;...原创 2022-08-11 10:30:12 · 439 阅读 · 0 评论 -
“不靠谱“的布隆过滤器是怎么成为大数据世界中的韦小宝的?
前言在计算机的世界中,数据计算和处理都是准确无误的,这在大多数人看来是理所当然的,确实也应该是这样的。但是在某些场景下完全的准确无误意味着很高的代价,不管是时间上还是空间上。于是大家都在考虑,能不能有一些方法能在很小的错误率的前提下,能大幅度提高效率减少资源消耗,而对于小概率误判的场景,能通过容错机制将窟窿补上。显然有,在这种背景下,咱们本文的主角,一个“不靠谱”的二愣子Bloom Filter(布隆过滤器)登场了。和偶像剧剧情不同,二愣子没有因为自身的“缺点”而两集就“领盒饭”了,反而通过自己原创 2021-08-05 09:33:49 · 309 阅读 · 0 评论 -
面试以及大数据处理中的常客BitMap到底是个什么样子的存在?
前言相信大家肯定也都遇到过,在很多的面试中,尤其是5年以下java工作经验的面试中,经常会看到如下的面试题: 在2.5亿个整数中找出不重复的整数,内存不足以容纳这2.5亿个整数。 给40亿个不重复的int型整数(32位),乱序,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 笔者也曾经遇到过,而且很长一段时间内都不知道这种题到底考点是什么,但是那时候年少无知,过了也就过了也没去仔细研究,直到后来开始研究大数据,接触到了今天文章的主角BitMap以及BitMap的衍生技术B原创 2021-08-02 09:49:50 · 374 阅读 · 0 评论 -
俗话说别在一棵树上吊死,那为什么那么多NOSQL都喜欢在LSM树上吊死呢?
背景 当前的产品使用的数据交换协议是JSON,对于数据量大的客户来说,数据存储成本以及带宽的消耗已经成为整个产品的一大支出。在这种背景下,需要对数据交换协议进行优化,达到减少网络带宽以及存储消耗,如果能顺便提升下数据的序列化与反序列化的效率,那就更完美了。由于公司的产品是端到端的处理流程,且处理语言涉及到java,C以及JavaScript等,所以数据交换协议跨平台也是基础需求之一,在上述场景下对市面上相关的产品进行调研,基本上确认了Protocol Buffer作为潜在的候选目标,下面就会....原创 2021-07-05 22:57:57 · 554 阅读 · 2 评论 -
深入浅出一文搞懂Raft协议
前言 在分布式的世界里,要说最核心最复杂的功能,一致性的实现无出其右,之前的paxos算法堪称经典,被认为是同类算法中效果最好的,基本上成为分布式一致性的代名词,但是paxos算法也是出了名的难理解,而且相当不好实现。本人也花了很多时间、看了很多材料也没有真正理解。所以基于paxos的思想进行的一致性算法的简化和实现就成为了现实的需求,在此背景下,本文的主角Raft就出现了。 Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,R...原创 2021-03-03 15:39:47 · 3742 阅读 · 0 评论