从海量数据中查找一个数

实战:上亿数据如何秒查 最近在忙着优化集团公司的一个报表。优化完成后,报表查询速度有从半小时以上(甚至查不出)到秒查的质变。从修改SQL查询语句逻辑到决定创建存储过程实现,花了我3天多的时间,在此总结一下,希望对朋友们有帮助。数据背景首先项目是西门子中国在我司实施部署的MES项目,由于项目是在产线上运作(3 years+),数据累积很大。在项目的数据库中,大概上亿条数据的表有5个以上,千万级数据的表10个以上,百万级数据... 阅读详情

题目:给出40亿个不重复的unsigned int的整数,没排过序,再给一个指定的数,判断这个数是否在那40亿个数

     中存在?

 

方案一:申请512MB的内存,利用位图,一个bit代表一个unsigned int的值,读入这40亿个数,设置相应的位,

       存在的设置为1,不存在的设置为0,然后我们只需要O(1)的复杂度查询即可。

 

方案二:因为是32位无符号整型数,我们先把这40亿个数的二进制的最高位为0和1的数分别放进两个文件夹,然后

       再在每个文件夹中继续把次高位为0和1的数分别放进两个文件夹,以此类推。。。这样下去就建立一个树

       型的文件系统,类似字典树。这样做的时间复杂度为,可以看出这样比较节约内存。

哈希的拓展——位图 关于哈希表,我们需要拓展一些知识,在这有一个位图需要我们理解。首先我们来看一道腾讯的题。 给4 0 亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这4 0 亿个数中。这道题我们怎么做呢?这是一道关于海量数据查找的题,其实这道题,我们就可以和哈希表联系在一起,为何说是海量数据呢,对于一个40亿整数,我们如果要存的话,按照无符号整数来存储,那么下来,大概就需要40亿*4这 阅读详情

相关推荐

面试必须掌握的十个海量数据问题及解决方案

原文链接:BAT直通车-海量数据专题更多精彩内容(BAT招聘、笔试、面试、技术),请访问BAT直通车题目问题一:现有海量日志数据,要提取出某日访问百度次数最多的那个IP(可以将题干简化,假设日志中仅包含IP数据,也就是说待处理的文件中包含且仅包含全部的访问IP,但内存空间有限,不能全部加载,假设只有512MB)解决方案:这是一道典型的分治思想的题目,这种问题处理起来套路比较固定,对于大部分的数据量比

hitxueliang的专栏 1万+

数据量2亿快速检索条件

数据量2亿检索条件: 用户名+密码,邮箱+密码,邮箱+账号+密码 问:请列出一种(几种)可以快速检索的方案?在Mysql里面,至少要按这几个字段建立3个复合索引。超过500万的数据一般都会分表,按邮箱/用户名进行HASH水平分表,这样只要根据邮箱和用户名HASH所在的表快速查询数据。es和solr是用于模糊搜索条件检索不在提问考察范围内。 ...

chenzeweishare的博客 1306

hash海量数据查询的一个实现 :周末练手

前言:闲来蛋疼,周末在家陪老婆,中午还要亲自操厨,操厨之前,加深下对hash的理解,写下此篇。        正文:本篇文章主要模拟了海量搜索过程。从txt文件获取大量数据信息(模拟海量),建立hash表,然后输入关键字(字符串),能迅速定位要找的value。其实就是搜索某个特定的字符串。具体会贴出代码,和验证图。整个过程模拟了海量查找的过程,能切实感觉到hash 海量处理的优势。

2686

mysql二亿大表_面对有2亿条数据的mysql表

看到这个2亿5千条数据的表,我的内心是拒绝的,各种条件筛选要取出相应的数据,被折磨了两天,现在记录下心路历程先分享下mysql相关的知识点1 名词解释主键(PRIMARY KEY): 唯一索引,不能重复组合主键(UNIQUE): 组合索引,若干个字段组成一个主键2 SELECT必备 – EXPLAIN使用EXPLAIN来查看sql语句是否能命中索引,量大的表必须要命中索引才能执行,也还得看以下条件...

weixin_34304538的博客 1662

索引:如何在海量数据中快速查找某个数据?

在海量数据中快速查找某个数据是一个具有挑战性的问题,而索引是解决这个问题的有效手段。通过选择合适的索引类型,并根据数据的特点和查询需求进行优化,我们可以在海量数据中实现快速查找,提高数据处理的效率。希望本文能够帮助你更好地理解如何在海量数据中利用索引进行快速查找。

yonggeit的博客 3264

大模型蒸馏实战:让小模型获得大模型的知识

本文为初学者提供了一份大模型蒸馏实战指南,通过情感分析任务演示如何将 BERT 的知识迁移到轻量级 TextCNN。文章结合原理图解与 PyTorch 代码,详解软标签生成、温度调节和双损失设计等核心概念,并对比蒸馏前后的性能差异(准确率提升 4.6%,推理速度达 1200 句 / 秒)。内含可直接运行的代码片段、训练技巧及常见问题解答,助力开发者快速掌握模型压缩核心技术,实现工业级部署效率。适合 NLP 入门者学习实践。

1368

动画:二分查找(上) | 面试官问我如何在 1 亿数据中快速查找某一整数?(上)

关注公众号,小鹿动画学编程,一天一篇动画喂饱你! 写在前边 今天就来学习一下在一组有序数据中如何快速查找一个数。也就是我们所说的二分查找,虽然很多小伙伴对二分查找很熟悉,但是到了真正的应用问题上,还是不能更好的来把握二分的思想。要想把这部分把握好,还需要真正的体验一下二分查找的强大的效率。 如题目中所述,如果你今天去面试,面试官要问你如何在十个数中查找一个整数,那么你很快就会想到从头到尾遍历就...

小鹿动画学编程 4044

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 538

关于bitmap,布隆过滤器

什么是bit,什么是byte? bit中文名称是位,音译“比特”,是用以描述电脑数据量的最小单位。在二进制数系统中,每个0或1就是一个位(bit)。bit 来自binary digit (二进制数字),1byte=8bit,byte是计算机里面的基本单位,1mb=1024*1024bit。 假设当我们需要在一千万个整数(整数的范围在1-1亿之间)里面快速查找某个整数是否存在于其中的话,如...

Danny_idea的博客 3097

手动以及使用torch.nn实现前馈神经网络实验

手动以及使用torch.nn实现前馈神经网络 手动实现前馈神经网络解决上述回归、二分类、多分类任务 利用torch.nn解决上述回归、二分类、多分类任务 在多分类任务中使用至少三种不同的激活函数 对多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响

m0_52910424的博客 9372

分析android逆向的学习路线

俗话说:“一入逆向深似海,从此头发是路人”。 安卓逆向作为当下热门行业“网络安全”的主要技术之一,已经受到了越来越多人的青睐。但是很多刚入门的新手小伙伴对于怎么去学习却还很是迷糊。本文就分享一下android逆向的学习路线供大家参考。 目前学习安卓逆向的人群大约分为两种: 第一种是完全没有任何基础的计算机纯小白; 第二种是本来就做开发懂编程的IT行业人员。 我们就针对这两个不同的人群做一下安卓逆向的学习路线分析。 一、无基础小白想入门 作为没有任何基础想要入门的计算机纯小白,学习上推荐参照以下步骤: (一

Hacker_by_V的博客 3077

海量数据查找一个数是否存在

问题:给定一个集合,集合中包含50亿级以上的整数(无序,不重复),给定一个算法,查找该集合中是否存在某个数(内存限制1G) Answer: (1)40亿数据全部放入内存中,所需要的内存数:40*10^8*4B=16G这个明显无法一次性装入内存中。但是,如果我们用计算机中的一位来表示某个数出现与否,出现为1,不出现为0, 就可以减少内存使用量。比如在一块连续的内存区域,15出现,则将第15位置1。

svmachine的博客 3863

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 394

腾讯面试题:海量数据中查找一个数

 http://blog.youkuaiyun.com/zcsylj/article/details/6364138 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 这个题目已经有一段时间了,但是腾讯现在还在用来面试。腾讯第一次面试的时候我听面试官问其他人了。我不是故意的。。。   方案1:申请51

hardworkba的专栏 3234

Simulink开发项1000例实战专栏--实例64:基于Simulink构建一个储能系统模型

通过引入储能系统,太阳能电站能够实现在白天储存多余的能量,在夜晚释放能量,平滑负荷曲线,提高电网的稳定性和可靠性。本项目的目标是基于Simulink平台,构建一个完整的储能系统模型,并通过仿真验证其在电网调峰中的应用效果。通过引入储能系统,工业园区能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,降低用电成本,提高电网的稳定性和可靠性。通过引入储能系统,风力发电场能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,提高电网的稳定性和可靠性。

xiaoheshang_123的博客 514

【花雕学编程】Arduino ESP32 SPP 之使用Servo库控制360度舵机正反转

使用 Servo 库控制 360 度舵机的正反转是 Arduino ESP32 SPP 应用中的一个重要案例,具有简易控制接口、灵活速度调节和高兼容性等特点,广泛应用于机器人、自动化装置和动态艺术等领域。在第三个案例中,使用map()函数将用户输入的速度参数(范围0-100)映射到舵机控制的角度(0-180),使得用户能够以更人性化的方式控制舵机速度。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

雕爷学编程 1468

Bitmap和2-Bitmap海量数据处理问题

内容会持续更新,有错误的地方欢迎指正,谢谢!题目题1:在2.5亿个整数找出不重复的整数,内存不足以容纳着2.5亿个整数。 题2:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 题3:“游戏任务标记”的编程题,请见链接: http://blog.youkuaiyun.com/billcyj/article/details/789484

陈云佳的专栏 5337

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 790

位图法和布隆过滤器

1、海量数据常用技巧之位图法【详解实现逻辑】 https://blog.youkuaiyun.com/u013115610/article/details/71112846 2、位图法:判断一个数是否在40亿个整数中?【有实现代码】 https://blog.youkuaiyun.com/v123411739/article/details/86652806 3、位图法和布隆过滤器提高查找效率【解释两者区别以及后...

azhegps的博客 397

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

简单实用算法——位图算法(BitMap)

目录算法原理优点和缺点算法实现(C#)算法应用参考文章 算法原理 BitMap的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此可以大大节省存储空间。 BitMap可以看成一种数据结构。 假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存。 在Java中,int占4字节,1字节=8位(1 byte = 8 bit)。 如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (20.

zhoumouren88的博客 1046

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

海量数据查找

有一百万个数,是在1到一亿当中随机取值,找出这一亿个数中没出现的数,要求用最小的时间复杂度。 说下思想就行,我想到的就是遍历,但感觉太复杂了。 方案1: 用位图法 用一亿个bit来标记一个数是否出现。 比如出现了数字1024,那么就把1024位置1。 从1到一亿扫描,没有标记1的就是缺少的数字。 100000000/1024/1024=95.367431640625,不到96

rongwenbin的专栏 1025

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

从海量数据中查找某个数

从海量数据中查找top K大或者小的数 构建堆 找最大的数前K个构建最小堆,找K个最小的数构建最大堆 如果这些数据是分布在不同的机器上的。 先计算每个机器上的top K , 再使用合并计算整体的top K 如果当前文件是个大文件: 方案1:先构建堆,再遍历进行堆的调整 方案2:分治法: map[分为多个小文件,计算每个topk] reduce[合并汇总] Hash法。 如果这1亿个书里面有很多重复的数,先通过Hash法,把这1亿个数字去重复,这样如果重复率很高的话,会减少很大的内存用量,从而缩

weixin_36378508的博客 1050

海量数据的排序和查找

位图法 使用场景举例:对2G的数据量进行排序,这是基本要求。 数据:1、每个数据不大于8亿;2、数据类型位int;3、每个数据最多重复一次。 内存:最多用200M的内存进行操作。 首先对占用的内存进行判断,每个数据不大于8亿,那么8亿是一个什么概念呢。 1 byte = 8 bit(位) 1024 byte = 81024 bit = 1k 1024 k = 81024*1024 bit = 1M...

u013291468的博客 1547

折半查找(二分查找)

折半查找(二分查找) 1、折半查找法,也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间元素, 则在数组大于或小雨元素的那一半中查找, 而且跟开始一样从中间元素开始比较. 若某1个步骤中数组为空, 则代表找不到. 这种搜索算法每一次比骄傲都使搜索范围缩小一半.这种方法对待查找的列表有两个要求 必须采用顺序存储结构 必须按关键字大小有序排列 2、折半查找法分析 从

weixin_45796387的博客 4万+

海量数据小内存!只出现两次的数以及中位数怎么找

单纯的将这些无符号整数放到 HashMap 中,大概率是会爆内存的,我们可以选择将这些无符号整数分流到很多个小文件中,然后使用 HashMap 对小文件中的数出现的频率进行统计,将只出现过两次的数保存到结果文件中。那么分流的方法就是,遍历这 40 亿个无符号整数,给他们都调用一个 Hash 函数,将结果模上小文件数,就可以实现将这些数均匀的分散的分流到小文件中。根据之前的文章,我们可以知道,位图中的一个位是可以表示数有没有出现过的,比如出现过就标记为 1,始终没有出现过就一直都是 0。

weixin_46103589的博客 679
上一篇: 求两个有序数组的中位数
下一篇: 判断两个单向链表是否存在环
ACHelloWorld
博客等级 码龄14年 35粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值