前段时间接触到一个基本的大数据的问题,十亿个整数查重。现实意义非凡,同类的商品,同样兴趣个体的筛选,相同频段的好友,各种在大数据时代里面的具象,仍然基于一个十亿个整数查重的基本问题。
在java里面,int类型的数据从0-2的32次方个不同的数字,我们用一个2的32次方个位这么长的数组来映射所有int类型整数。因为数字总是逃不过这个范围,需求的空间是2的29次方个byte,因为java中只有byte数组来表示位,一个byte等于八个位所以2的32次方个数字转化成2的29次方个byte数组,总大小应该在内存的允许范围之内。
对于问题的分析,需要对数据类型和问题具象的难点进行适当的算法设计,这样问题就会迎刃而解了。
难点在于10亿个数字读入的时候,具体的数字到底怎么处理。如果你在纠结10亿个数字怎么存入内存中,那要跨过大数据的门槛,还要再加修行了。
读入一个数字,它的特征,只有对于你设计的算法进行适当的处理,才能真正地处理掉。刚说了申请了一个2的29次方个byte数组,一个byte等于八个bit,也就是00000000。这个进来的数字,必须要以八为关键点进行分解。比如说进来一个数字是44,这个数字对于8来说是什么呢?5*8+4,这样的式子是不是有些启示。一个byte代表8个数字,从0-2的32次方对应于byte下标的0-2的29次方。44就是存在于byte[5]的第4位,注意:位是从第0位开始计数的。拿到一个数字之后,分解成需要的因子之后把相应的位置修改成1,第二次进来的时候检测到相应位为一,则这个数字重复了。输出一个。
byte数组是有整数来呈现的,修改相应位置就是加个2的余数次方的整数,检测的时候再把byte变成二进制,创建一个8长度的int数组,只存0,1。作为验证。
这个算法可能不是很优秀,但是对于处理大数据的入门思维有了一定的启发。
相关推荐
【交换机在江湖之初窥门径】VLAN隔离篇主要探讨了如何在华为交换机上实现不同场景下的VLAN隔离,以确保网络中特定用户的通信限制。以下是对文档内容的详细解析: 首先,VLAN隔离的基本目的是在同一个VLAN内的设备...
金融行业研究方法-初窥门径:我国外汇市场简介—申万债券研究部汇率专题研究之四.pdf
VLAN 隔离技术详解 在计算机网络中,虚拟局域网(VLAN)是一种常用的网络隔离技术,通过将一个局域网分隔成多个虚拟的局域网,可以实现网络的逻辑隔离和安全性提高。在这篇文章中,我们将深入探讨 VLAN 隔离技术,...
在IT行业中,Django是一个非常流行的Python web框架,它提供了高效、可扩展的解决方案来构建web应用程序。...在Django中实现OAuth登录认证,可以帮助开发者创建更安全、灵活的用户接口。 Django OAuth工具包(`django-...
1. 检测用户名和序列号是否为空,序列号长度是否小于5 2. 将用户名各个字符的ASCII码的十进制转换成字符串连接起来得到一个数result 3. 判断res
Android基础入门教程——4.1.2 Activity初窥门径-附件资源
Maven是一个强大的项目管理工具,它在Java开发领域中广泛使用,主要负责项目的构建、依赖管理和文档生成。Maven的核心功能包括项目对象模型(Project Object Model,POM)、依赖管理系统、项目生命周期和插件系统。...
[金融分会场]个人金融信息保护门径初窥与重要话题.pdf
在编译原理领域,实验是理解并掌握编译器构造的关键环节。本次实验主题为“编译原理实验_pl语言扩充”,旨在让学生深入实践编译器的设计与实现,特别是在已有编程语言PL的基础上进行功能扩展。PL语言可能是一个简化...
此资源为PL语言编译器扩充报告,包括详细实验报告和源代码,用PASCAL语言编写。 编译器扩充内容包括: 复合赋值语句扩充 case语句 if else语句 repeat语句 for语句 所有语句包括支持begin....end扩充,对于for语句...
实验一:Python程序设计之初窥门径 2 实验二:Python程序设计之结构与复用 7 实验三:Python程序设计之组合数据类型 11 实验四:Python程序设计之文件 15
实验一:Python程序设计之初窥门径 2 实验二:Python程序设计之结构与复用 7 实验三:Python程序设计之组合数据类型 11 实验四:Python程序设计之文件 15
最近在做毕业设计,SVM多类分类器葡萄叶分类并行化实现,其中有个模块要用到OpenMP多线程编程,结合我所掌握的知识,我想在Visual Studio2010这个IDE 中完成先,学习C++有些年了,但也是只是初窥门径吧。在Win系统中...
【课程列表】 00愉快的开始 01第一次亲密接触 02设计第一个游戏 03小插曲之变量和字符串 04改进我们的小游戏 05数据类型 06之常用操作符 07了不起的分支和循环2 ...40Scrapy框架之初窥门径 41Pygame:播放声音和音效
标题和描述中的“初写作文的几个门径”是指针对初学者提高写作能力的一些有效方法。以下是这四个门径的详细解析,它们分别是记日记、写书评与影评、办手抄报以及写读后感。 1. 记日记:日记是个人情感与思考的记录...