目录一、位图1、位图的概念2、大厂面试题2.1位图应用(腾讯)2.2位图应用3、位图的优缺点二、哈希切分三、布隆过滤器1、布隆过滤器的概念2、布隆过滤器的应用场景3、布隆过滤器的删除4、布隆过滤器的优缺点5、布隆过滤器面试题6、布隆过滤器的实现一、位图1、位图的概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来标记某个数据在或不在,它解决不了哪个数据出现次数最多的问题。2、大厂面试题2.1位图应用(腾讯)给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中? 开一个位图,使用哈希的直接
布隆过滤器1、布隆过滤器原理1.1什么是布隆过滤器1.2使用场景1.3原理1.4布隆过滤器的优缺点2、实现方式2.1初始化skuId的布隆过滤器2.1.1RedisConst常量类2.1.2修改启动类2.2给商品详情页添加布隆过滤器1、布隆过滤器原理1.1什么是布隆过滤器布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。主要用于判断一个元素是否在一个集合中,0代表不存在某个数据,1代表存在某个数据。
目录一、缓存预热1、缓存预热常见步骤2、代码实现二、缓存雪崩1、什么情况会发生缓存雪崩?2、Redis缓存集群实现高可用3、如何避免Redis缓存雪崩?三、缓存穿透1、什么情况会发生缓存穿透?2、如何避免Redis缓存穿透?四、通过空对象缓存解决缓存穿透五、Google布隆过滤器Guava解决缓存穿透1、引入pom2、创建布隆过滤器3、fpp误判率六、Redis缓存击穿1、什么情况会发生缓存击穿?2、如何避免Redis缓存击穿?七、Redis缓存击穿解决方案1、互斥更新2、差异失效时间往期回顾大家好,我是哪吒。一、缓存预热Redis缓存预热是指在服务器启动或应用程序启动之前,将一些数据先存储到
问题背景在大数据行业内,尤其是数仓建设中,一直有一个绕不开的难题,就是大表的分析计算(这里的大表指亿级以上)。特别是大表之间的Join分析,对任何公司数据部门都是一个挑战!主要有以下挑战:由于数据量大,分析计算时会耗费更多CPU、内存和IO,占用大量的集群资源。由于数据量大,分析计算过程缓慢,挤占其它任务资源使用,从而影响数仓整体任务产出时间。由于数据量大,长时间占用资源,会造成该任务在时间、资源和财务各方面成本巨大。当前业内流行的优化方案1.增加集群资源优点:简单粗暴,对业务和数据开发人员友好,不用调整。缺点:费钱,看你公司是否有钱。2.采用增量计算优点:可以在不大幅增加计算集群成本的情况下
1.引言通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hashtable)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间也会呈现线性增长,最终达到瓶颈。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为O(n),O(logn),O(1)。这种时候,布隆过滤器就是一种比较好的解决方案了。2.什么是布隆过滤器布隆过滤器(BloomFilter)其实是基于bitmap的一种应用, 1970年由布隆提出。它由一个很长的二进制比特数组和一系列哈希函数构成,用于高效地检索数据
速记为什么使用布隆过滤器?1.为了省内存,提高速率2.因为1所以布隆过滤器不需要百分百正确3.说存在不一定存在,说不存在一定不存在4.在解决缓存穿透的问题时,拦截了大部分的请求,只有小部分携带了大量信息的恶意请求访问到了数据库5.不准确的原因是可能会和别的key发生冲突,所以位数组越大精确度越高,但是占用内存越多。所以在设置布隆过滤器的时候,这个容错率是多少是百分之一还是百分之十,是否牺牲内存来提高容错率这个我们要权衡一下。6.专门用来解决缓存穿透的问题一.BloomFilter1.1布隆过滤器介绍BloomFilter专门用来解决我们上面所说的去重问题的,使用BloomFilter不会像使用
布隆过滤器是一个精巧而且经典的数据结构。你可能没想到:RocketMQ、Hbase、Cassandra、LevelDB、RocksDB这些知名项目中都有布隆过滤器的身影。对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。1缓存穿透我们先来看一个商品服务查询详情的接口:publicProductqueryProductById(Longid){//查询缓存Productproduct=queryFromCache(id);if(product!=null){returnproduct;}//从数据库查询product=queryFromDataBas
布隆过滤器是一个精巧而且经典的数据结构。你可能没想到:RocketMQ、Hbase、Cassandra、LevelDB、RocksDB这些知名项目中都有布隆过滤器的身影。对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。1缓存穿透我们先来看一个商品服务查询详情的接口:publicProductqueryProductById(Longid){//查询缓存Productproduct=queryFromCache(id);if(product!=null){returnproduct;}//从数据库查询product=queryFromDataBas
引言北京时间:2023/5/31/22:02,昨天的计算机导论考试,三个字,哈哈哈,摆烂,大致题目都是一些基础知识,但是这些基础知识都是非常非常理论的知识,理论的我一点不会,像什么操作系统的分类,什么IP地址的计算,什么网络协议,反正是什么都不会,而且还有什么填空题,像什么秘钥什么什么鬼的,具体我不太记得清了,反正听都没听说过,哈哈哈!最烦人的题目还属是IP地址,计算什么子网个数,什么什么地址,反正一点不会,要不是有考一些进制转换和有关硬件方面的知识,可能连50分都考不到,总体来说,在我东扯西扯的情况下,应该勉勉强强有个60分吧!谁让我就算是考前最后一分钟都没打算复习一点,何谈整个学期都没听过
文章目录1.位图应用题目一代码实现setrsettest具体代码题目二位图优缺点总结2.布隆过滤器提出背景概念具体实现hash1hash2hash3N取值问题settsettset中在与不在那个准确?使用场景及特点具体代码1.位图应用题目一给40亿个不重复的无符号整数,没排过序,给一个无符号整数,如何快速判断一个数是否在这40亿个数中正常思路:1.排序+二分查找2.放入哈希表或者红黑树10亿字节约等于1GB40亿个整数约等于16GB如果使用上述的两种方法,内存不够哈希的直接定址法的哈希映射,判断整形在不在依次映射标记,将值存起来最少用一个char来表示一个值在不在,这样即为40亿字节即4GB,