建设集团有限公司网站首页济南建设工程交易网官网

pingmian/2025/10/8 5:32:34/文章来源:
建设集团有限公司网站首页,济南建设工程交易网官网,WordPress自然志主题,网站关键词怎么选一、海量数据实时去重说明 借助redis的Set#xff0c;需要频繁连接Redis#xff0c;如果数据量过大, 对redis的内存也是一种压力#xff1b;使用Flink的MapState#xff0c;如果数据量过大, 状态后端最好选择 RocksDBStateBackend#xff1b; 使用布隆过滤器#xff0c;…一、海量数据实时去重说明 借助redis的Set需要频繁连接Redis如果数据量过大, 对redis的内存也是一种压力使用Flink的MapState如果数据量过大, 状态后端最好选择 RocksDBStateBackend 使用布隆过滤器布隆过滤器可以大大减少存储的数据的数据量。 二、海里书实时去重为什么需要布隆过滤器 如果想判断一个元素是不是在一个集合里一般想到的是将集合中所有元素保存起来然后通过比较确定。链表、树、散列表又叫哈希表Hash table等等数据结构都是这种思路。 但是随着集合中元素的增加我们需要的存储空间越来越大。同时检索速度也越来越慢上述三种结构的检索时间复杂度分别为。 布隆过滤器即可以解决存储空间的问题, 又可以解决时间复杂度的问题. 布隆过滤器的原理是当一个元素被加入集合时通过K个散列函数将这个元素映射成一个位数组中的K个点把它们置为1。检索时我们只要看看这些点是不是都是1就大约知道集合中有没有它了如果这些点有任何一个0则被检元素一定不在如果都是1则被检元素很可能在。这就是布隆过滤器的基本思想。 三、布隆过滤基本概念 布隆过滤器Bloom Filter下文简称BF由Burton Howard Bloom在1970年提出是一种空间效率高的概率型数据结构。它专门用来检测集合中是否存在特定的元素。 它实际上是一个很长的二进制向量和一系列随机映射函数。 实现原理 布隆过滤器的原理是当一个元素被加入集合时通过K个散列函数将这个元素映射成一个位数组中的K个点把它们置为1。检索时我们只要看看这些点是不是都是1就大约知道集合中有没有它了如果这些点有任何一个0则被检元素一定不在如果都是1则被检元素很可能在。这就是布隆过滤器的基本思想。 BF是由一个长度为m比特的位数组bit array与k个哈希函数hash function组成的数据结构。位数组均初始化为0所有哈希函数都可以分别把输入数据尽量均匀地散列。 当要插入一个元素时将其数据分别输入k个哈希函数产生k个哈希值。以哈希值作为位数组中的下标将所有k个对应的比特置为1。 当要查询即判断是否存在一个元素时同样将其数据输入哈希函数然后检查对应的k个比特。如果有任意一个比特为0表明该元素一定不在集合中。如果所有比特均为1表明该集合有较大的可能性在集合中。为什么不是一定在集合中呢因为一个比特被置为1有可能会受到其他元素的影响(hash碰撞)这就是所谓“假阳性”false positive。相对地“假阴性”false negative在BF中是绝不会出现的。 下图示出一个m18, k3的BF示例。集合中的x、y、z三个元素通过3个不同的哈希函数散列到位数组中。当查询元素w时因为有一个比特为0因此w不在该集合中。 优点 1.不需要存储数据本身只用比特表示因此空间占用相对于传统方式有巨大的优势并且能够保密数据 2.时间效率也较高插入和查询的时间复杂度均为, 所以他的时间复杂度实际是 3.哈希函数之间相互独立可以在硬件指令层面并行计算。 缺点 1.存在假阳性的概率不适用于任何要求100%准确率的情境 2.只能插入和查询元素不能删除元素这与产生假阳性的原因是相同的。我们可以简单地想到通过计数即将一个比特扩展为计数值来记录元素数但仍然无法保证删除的元素一定在集合中。 使用场景 所以BF在对查准度要求没有那么苛刻而对时间、空间效率要求较高的场合非常合适. 另外由于它不存在假阴性问题所以用作“不存在”逻辑的处理时有奇效比如可以用来作为缓存系统如Redis的缓冲防止缓存穿透。 假阳性概率的计算 假阳性的概率其实就是一个不在的元素被k个函数函数散列到的k个位置全部都是1的概率。可以按照如下的步骤进行计算 p f(m,n,k) 其中各个字母的含义: 1.n 放入BF中的元素的总个数 2.mBF的总长度也就是bit数组的个数 3.k哈希函数的个数 4.p表示BF将一个不在其中的元素错判为在其中的概率也就是false positive的概率 A.BF中的任何一个bit在第一个元素的第一个hash函数执行完之后为 0的概率是 B.BF中的任何一个bit在第一个元素的k个hash函数执行完之后为 0的概率是 C.BF中的任何一个bit在所有的n元素都添加完之后为 0的概率是: D.BF中的任何一个bit在所有的n元素都添加完之后为 1的概率是: E.一个不存在的元素被k个hash函数映射后k个bit都是1的概率是 结论:在哈数函数个数k一定的情况下 1.比特数组m长度越大, p越小, 表示假阳性率越低 2.已插入的元素个数n越大, p越大, 表示假阳性率越大 经过各种数学推导: 对于给定的m和n使得假阳性率误判率最小的k通过如下公式定义 四、使用布隆过滤器实现去重 Flink已经内置了布隆过滤器的实现(使用的是google的Guava) package com.lyh.flink12;import com.atguigu.flink.java.chapter_6.UserBehavior; import org.apache.flink.api.common.eventtime.SerializableTimestampAssigner; import org.apache.flink.api.common.eventtime.WatermarkStrategy; import org.apache.flink.api.common.state.ValueState; import org.apache.flink.api.common.state.ValueStateDescriptor; import org.apache.flink.api.common.typeinfo.TypeHint; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.configuration.Configuration; import org.apache.flink.shaded.guava18.com.google.common.hash.BloomFilter; import org.apache.flink.shaded.guava18.com.google.common.hash.Funnels; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; import org.apache.flink.streaming.api.windowing.time.Time; import org.apache.flink.streaming.api.windowing.windows.TimeWindow; import org.apache.flink.util.Collector; import java.time.Duration;public class Flink02_UV_BoomFilter {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment();// 创建WatermarkStrategyWatermarkStrategyUserBehavior wms WatermarkStrategy.UserBehaviorforBoundedOutOfOrderness(Duration.ofSeconds(5)).withTimestampAssigner(new SerializableTimestampAssignerUserBehavior() {Overridepublic long extractTimestamp(UserBehavior element, long recordTimestamp) {return element.getTimestamp() * 1000L;}});env.readTextFile(input/UserBehavior.csv).map(line - { // 对数据切割, 然后封装到POJO中String[] split line.split(,);return new UserBehavior(Long.valueOf(split[0]), Long.valueOf(split[1]), Integer.valueOf(split[2]), split[3], Long.valueOf(split[4]));}).filter(behavior - pv.equals(behavior.getBehavior())) //过滤出pv行为.assignTimestampsAndWatermarks(wms).keyBy(UserBehavior::getBehavior).window(TumblingEventTimeWindows.of(Time.minutes(60))).process(new ProcessWindowFunctionUserBehavior, String, String, TimeWindow() {private ValueStateLong countState;private ValueStateBloomFilterLong bfState;Overridepublic void open(Configuration parameters) throws Exception {countState getRuntimeContext().getState(new ValueStateDescriptorLong(countState, Long.class));bfState getRuntimeContext().getState(new ValueStateDescriptorBloomFilterLong(bfState, TypeInformation.of(new TypeHintBloomFilterLong() {})));}Overridepublic void process(String key,Context context,IterableUserBehavior elements, CollectorString out) throws Exception {countState.update(0L);// 在状态中初始化一个布隆过滤器// 参数1: 漏斗, 存储的类型// 参数2: 期望插入的元素总个数// 参数3: 期望的误判率(假阳性率)BloomFilterLong bf BloomFilter.create(Funnels.longFunnel(), 1000000, 0.001);bfState.update(bf);for (UserBehavior behavior : elements) {// 查布隆if (!bfState.value().mightContain(behavior.getUserId())) {// 不存在 计数1countState.update(countState.value() 1L);// 记录这个用户di, 表示来过bfState.value().put(behavior.getUserId());}}out.collect(窗口: context.window() 的uv是: countState.value());}}).print();env.execute();} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

铁岭做网站的网站建设需要哪些功能

​ 结构体 结构体是一些值的集合,这些值称为成员变量,结构的成员可以是标量、数组、指针,甚至是其他结构体。 成员名可以与程序中其它变量同名,互不干扰。 结构体的定义 (struct结构名{}) struct books {int a;c…

做织梦网站的心得体会长春火车站时刻表

乾明 发自 凹非寺 量子位 报道 | 公众号 QbitA耗费2个多亿,耗时2年多,连一个可用的网站或者APP都没有交付出来。想要完工?那就再交1000万美元。这件事的受害方、美国汽车租赁公司赫兹(Hertz)一怒之下, 将顶级咨询公司埃森哲(Accen…

SEO参与网站建设注意WordPress抓去微信

我叫范华万,今天22岁,来自于福建省。目前在闽江学院就学。我学的是软件工程软件服务开发专业,能从事网站设计、java工程师、ps技术、c、数据库管理。本人性格乐观、开朗,有上进心、进取心,对学习认真负责,I…

网站建设公司天强科技个人做网站可以盈利么

文章目录 一、验证码的处理1、验证码概述1、2 什么是图片验证码?1、2 验证码的作用1、3 图片验证码使用场景1、4 图片验证码的处理方案 2、图片在网页页面中的形式2、1 如何进行图片形式的转化 3、打码平台 二、代理的使用2、1 付费代理2、1、1 找付费代理服务站点2…

镇江网站关键字优化如何扬中网站建设价格

修饰 实体属性or实体类 //枚举值:ALWAYS,NON_NULL,NON_ABSENT,NON_EMPTY,NON_DEFAULT,CUSTOM,USE_DEFAULTS JsonInclude(Include.NON_EMPTY)//将该标记放在属性上,如果该属性为NULL则不参与序列化 //如果放在类上边,那对这个类的全部属性起作用 Inclu…

南沙定制型网站建设网站建设特色

题目链接 这个挑战赛的 F F F是我出的,最后 zhoukangyang 爆标了。。。orzorz 记所有有颜色的边的属性集合 S S S 。 首先在外层容斥,枚举 S ∈ [ 0 , 2 w ) S\in [0,2^w) S∈[0,2w),计算被覆盖的的边中不包含 S S S 中属性&#xff0c…

百度移动网站建设有几种喀喇沁旗网站建设公司

354. 俄罗斯套娃信封问题 - 力扣(LeetCode) 给你一个二维整数数组 envelopes ,其中 envelopes[i] [wi, hi] ,表示第 i 个信封的宽度和高度。 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一…

成都网站制作龙兵科技照片合成制作app

http://www.bvbcode.com/app/downloadfile1?type2&down_key684b999e03e30a3e29cf1ada84d62b55&fileid1674791&softkeysul6vt9o&t1578129576

pythone网站开发昆明建站专家

目录 一、java常见问题JDK和JRE的区别是什么?Java中的String类是可变的还是不可变的?Java中的equals方法和hashCode方法有什么关系?Java中什么是重载【Overloading】?什么是覆盖【Overriding】?它们有什么区别&#xf…

24小时自助建站电子商务论文8000字

一、排序栗子 注: 属性字段需要进行转换,如String类型或者Number类型 //升序排序 首元素(element1)在前 降序则(element1)元素在后 data data.sort((element1, element2) >element1.属性 - element2.属性 ); 二、代码 Page({/*** 页面的初始数据*/data: {user:…

手机网站的优缺点深圳住房建设部官方网站

1、前言 vcpk是是一款开源的c/c库管理工具,尤其是在windows平台,可以帮助我们很好的管理各种依赖包。 在windows环境做c/c开发的人应该都深有体会,有时候编译需要下载一堆依赖库,导致搭建编译环境特别麻烦。但是,通过v…

公司网站建设与维护方案wordpress主题名字

这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格(水平)考试,11月4号就要考试,因此8天长假绝不能荒废,必须要好好利用起来。现在将各个核心知识点一一进行提炼并做记录。 所…

动漫网站开发 sh框架dede网站版权信息修改

1.案例7.安安的通讯助手 目标 组件设计 素材准备 所有组件的说明及属性设置(1) 所有组件的说明及属性设置(2) 所有组件的说明及属性设置(3)布局小技巧 行为逻辑设计 自动回复短信 短信收发器 组件 记录已收…

昆明网站设计方案怎么给网站做动图

(73)封装一个widget 醒目:必须在web环境下使用,无论是python的web.py或者是通过http访问网站环境,都可以,但纯本地是不可行的。 首先,什么是widget? 简单来说,就是一个do…

网站开发与设计现状网站seo优化怎么做

多进程并发服务器 多线程并发服务器 I/O多路转接服务器 epoll的工作模式 1 多进程并发服务器 在多进程并发服务器中,若有用户请求到达,服务器将会调用fork()函数,创建一个子进程,之后父进程将继续调用accept(),而子进…

网站套利怎么做全网营销课程

55. 关于刑法,表述正确的有:A.对于累犯不适用缓刑B.某甲犯故意杀人罪,但是有可能被适用缓刑C.已满十四周岁不满十六周岁的人不负刑事责任D.紧急避险超过必要限度造成不应有的损害的,应当负刑事责任56. 甲在回家途中发现乙正持刀追…

网站建设目录结构工地接活应该去哪个平台

一、多个真实用户对接口的压力测试1. 获取多个真实用户的token的两种方法:1)第一种:让开发帮忙生成多个token(多个用户账户生成的token),导出为csv格式的文件(以下步骤均以该方法为基础)2)第二种:自己设置多个用户账户和密码&…

英文网站建设 淮安中国纪检监察报社社长

什么是Azure Bastion Azure Bastion 是一个提供安全远程连接到 Azure 虚拟机(VM)的服务。传统上,访问 VM 需要使用公共 IP 或者设立 VPN 连接,这可能存在一些安全风险。Azure Bastion 提供了一种更安全的方式,它是一个…

delphi网站开发东莞企业网站多少钱

2017-03-07在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片。也就是说***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一长串就是具体的文件信息。data:image/jpg;base64则是指的文件头。我们可以…

福建省建设厅网站 保证金软文发布平台有哪些

本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet…