哈希切割 + 位图 + 布隆过滤器 —— 海量数据面试题

news2024/12/29 8:02:21

目录

题目一:给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?

哈希切割

题目二:给定100亿个整数,设计算法找到只出现一次的整数?

解法一:哈希切割

解法二:利用2个位图

解法三:利用1个位图

题目三:给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?

解法一:哈希切割

解法二:位图

位图拓展:如何获取数据的交集、并集、差集?

题目四:位图应用变形:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数

题目五:给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法

精确算法:哈希切割

近似算法:布隆过滤器


题目一:给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?

        一般情况下,忽略大小,统计IP出现的次数,使用<k,V>解决即可~

        但是题目中,100G的数据,有点太大了【一次性无法加载到内存中】,怎么办呢?

        思路:我们呢,可以去尝试着,将这个大的文件拆分成若干个小的文件,但此时,又出现了一个问题,如何拆分呢?

哈希切割

——哈希切割,就是根据IP地址的内容进行拆分,将相同IP存储到同一个文件中

接下来,我们分析:

  • IP本身就是一个字符串,我们将IP哈希成一个整数
  • 再将这个整数%200,也就是将100G的文件,拆分成了200份小文件
  • 读取每个小文件的内容,统计文件当中,IP出现的次数【Map】

题目二:给定100亿个整数,设计算法找到只出现一次的整数?

解法一:哈希切割

        将数字哈希到对应的小文件中,相同的数字肯定是在一起的,遍历每个小文件,统计数字出现次数,此时,就可以知道哪个数字只出现一次了

解法二:利用2个位图

一共整数42亿个,大约占用内存512M【42亿 /8 /1024 /1024 = 512M】

  • 没出现:00
  • 出现一次:01
  • 出现两次:10
  • 出现两次以上:11

当进去后,用一个循环,同时遍历两个bitSet即可得到结果 

解法三:利用1个位图

 之前位图确定一个数的位置是采用val/8,val%8,在这里就是:ArrayIndex = val /4【确定数字所在的大致区间】,BitIndex = val % 4 * 2【确定该数字的位置,由于一个数字用2个比特位表示,所以另一个就是BitIndex+1】


题目三:给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?

解法一:哈希切割

解法二:位图

  • 遍历第一个文件,将第一个文件数据读取出来,存放在bitSet中
  • 遍历第二个文件,每次读一个数据,就查看bitSet中,之前是否存在
  • 如果存在,就是交集 

位图拓展:如何获取数据的交集、并集、差集?

 


题目四:位图应用变形:1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数

解法一:哈希切割

 解法二:使用2个位图

同上述的题2中解法相同


题目五:给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法

精确算法:哈希切割

同题3解法相同

近似算法:布隆过滤器

  • 把第一个文件当中的query映射到布隆过滤器中
  • 读取第二个文件,每个query,都去布隆过滤器中查找【存在误判】

好啦,本期结束咯~ 

我们下期见~~~

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

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

相关文章

【论文精读】Guided-MVS

今天读的是一篇发表在IROS2022上的MVS文章&#xff1a;Multi-View Guided Multi-View Stereo&#xff0c;作者是来自于意大利University of Bologna的Matteo Poggi。 论文链接&#xff1a;arxiv 代码链接&#xff1a;https://github.com/andreaconti/multi-view-guided-multi-v…

SpringCloud Netflix复习之OpenFeign

文章目录写作背景Feign核心组件介绍Encoder和DecoderLoggerContractFeign.Builder上手实战开启FeignClient调用请求日志给FeignClient注入自定义拦截器Feign支持文件上传配置Feign开启Gzip压缩Feign配置超时时间Feign整合Ribbon支持负载均衡核心源码部分FeignClient注入到Sprin…

【Qt】通过创建ui界面类成员变量的方式显示窗体

【Qt】通过创建ui界面类成员变量的方式显示窗体1、背景2、实例3、验证1、背景 将.ui 文件转化为.h 头文件参考&#xff1a; 【Qt】将QtDesigner生成的.ui文件转化为.h头文件 https://jn10010537.blog.csdn.net/article/details/128589666其生成的.h头文件的显示&#xff0c;如…

HQChart实战教程56-限制指标周期

HQChart实战教程56-限制指标周期 指标周期范围效果图增加周期限制步骤1. 创建系统指标Condition.PeriodCONDITION_PERIOD 枚举说明提示信息提示信息配色实例源码指标周期范围 有些指标我们需要限制它的周期, 如指标A它只能对日线周期有效, 分时周期时无效的, 所有在切换到分…

Apache Hive 使用

Apache Hive 使用使用beeline 连接Apache Hive查看数据库使用或进入数据库创建表查看数据表上传数据数据操纵语言&#xff08;DML&#xff09;查询语句函数数学函数条件函数) 使用beeline 连接Apache Hive /export/server/apache-hive-3.1.2-bin/bin/beelinebeeline> ! co…

C51单片机基础之4G模块

一、4G模块初识EC03-DNC是亿佰特公司推出的 LTE CAT1 数传模块产品&#xff0c; 该产品软件功能完善&#xff0c; 覆盖绝大多数常规应用场景&#xff0c; EC03-DNC 是为实现串口设备与网络服务&#xff0c;通过网络相互传输数据而开发的产品 &#xff0c; 该产品是一款带分集接…

Linux 计算机网络 从 ping 来初窥计算机网络

Linux 计算机网络 从 ping 来初窥计算机网络 在上一章节《计算机网络从零到一》我们重点讲解了整个网络的形成&#xff0c;以及物理层、数据链路层、网络层这三层的形成以及他们所解决的问题&#xff0c;而本章节主要讲解 ping 命令在 Linux 中到底发生了一些什么。 ping 简介…

学习open62541 --- [73] 数据源造成无法监测变量的问题解决

本人最近遇到一个问题&#xff1a;给一个变量添加数据源后&#xff0c;使用监测项去监测变量变化&#xff0c;如果采样时间为0&#xff0c;会发现无法监测到变量的变化。 本文讲述这种情况的发生原因以及解决办法。 一 Server例子 首先准备server例子&#xff0c;如下&#x…

WSL 下载服务器加速

网络下载加速&#xff0c;这里使用修改 hosts 文件 &#xff0c;地址映射 方法&#xff0c;所有网址适用&#xff0c;这里以 WSL 下载服务器为例子 命令 wsl -l -o 访问的地址&#xff1a; https://raw.githubusercontent.com/microsoft/WSL/master/distributions/Distributi…

Java设计模式中组合模式是什么/树形结构怎么组合或显示存储,编程怎么实现树形结构

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 5.7 组合模式 5.7.1 概述 又名整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次属于…

基于asp.net+vbscript+wsc编写网站

1、前言 asp大家应该都比较熟悉&#xff0c;就是一个动态服务器页面&#xff0c;有点类似于jsp。只是不同的是asp可以在IIS服务器上创建&#xff0c;并且如果配置了.net环境的话&#xff0c;那么就可以在asp里面<%%>写vbscript。vbscript是一种脚本语言&#xff0c;其实就…

因果推断5--DML(个人笔记)

目录 1论文介绍 1.1论文 1.2摘要 1.3DML思路 2价格需求曲线 2.1价格需求弹性 2.2价格需求弹性计算DML代码 2.3价格需求弹性例子--数据集 2.4建模过程 2.5回归结果 1论文介绍 1.1论文 V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W.…

(强制)类型转换方法

目录 一、C语言中的类型转换 二、C中的强制类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 2.5 总结 一、C语言中的类型转换 在C语言中&#xff0c;若赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或…

[PyTorch笔记]深度学习计算

[PyTorch笔记]深度学习计算1 层和块1.1自定义神经网络块1.2顺序块1.3在前向传播中执行代码2.参数管理2.1 访问参数、用于调试、诊断和可视化2.2 参数初始化2.2.1内置初始化&#xff1a;2.2.2 自定义初始化2.3 在不同模型组件间共享参数3.延后初始化4.自定义层4.1 不带参数的层4…

深入理解数据结构 —— 跳表

什么是跳表 只要是平衡搜索二叉树能实现的功能&#xff0c;跳表都能实现&#xff0c;且时间复杂度都相同 例如&#xff1a; 哈希表的功能&#xff1a;插入&#xff0c;查找&#xff0c;删除有序表的功能&#xff1a;查找大于某值最小的数&#xff0c;小于某值最大的数&#…

干货 | 数据跨境传输合规体系的构建思路

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;研究背景随着经济活动数字化转型加快&#xff0c;“数据”对生产、流通、分配和消费活动产生重要影响&#xff0c;成为新的生产要素。地区之间数据流通愈发频繁&#xff0c;…

图像频域滤波(理想低通滤波)

图像变换是对图像信息进行变换&#xff0c;是能量保持但重新分配&#xff0c;利于加工处理。这里主要介绍傅里叶变换的图像频域滤波。 图像从空间域变换到频域后&#xff0c;其低频分量对应图像中灰度值变化较为缓慢的区域&#xff0c;高频分量表征图像中物体的边缘和随机噪声等…

基于yolov5的钢材表面缺陷识别(pycharm连接远程服务器,老版本yolov5运行遇到的问题)

时间&#xff1a;2023年1月 1 pycharm远程连接服务器 提示&#xff1a;需要下载pycharm专业版。 参考文献&#xff1a; [1] [2] [3] [4] 设置解释器的界面有一些不同&#xff0c;在此截图记录一下。 &#xff08;这是已经弄好了之后回头截图的&#xff0c;假设它不存在哈) …

【寒假每日一题】洛谷 P6206 [USACO06OCT] Another Cow Number Game G

题目链接&#xff1a;P6206 [USACO06OCT] Another Cow Number Game G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 奶牛们在玩一种数字游戏&#xff0c;Bessie 想让你帮她预测一下结果。游戏开始时&#xff0c;Bessie 将得到一个正整数 N。此时她的分数为 0。 奶…

C 程序设计教程(07)—— 数据类型转换

C 程序设计教程&#xff08;07&#xff09;—— 数据类型转换 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;07&#xff…