`

BitMap

阅读更多
问题:
    腾讯要统计自己的注册用户总量,考虑到有的用户用一个IP同时注册了扣扣,DNF和LOL,为了不重复统计,要将超内存的整型数据进行排重操作。
   
初级想法:
    为了解决大型数组排重问题,我们先了解一下bitmap这个概念。bit指位,map指映射。bitmap,顾名思义,就是指输入的整型数能用bit数组中的数一一对应表示出来。也就是说,我们可以建立一个很大的“bit数组”,这个数组足以映射到所有的整型,于是乎我们用一个bit(一个位)表示一个int(32位),只用了原数据的三十二分之一的空间就完成了。

遇到的问题:
    现在,我们面临的最最重要的问题是:我们的电脑无法直接对位进行操作!!!

解决问题的思路:
    问题到这里,似乎成了一个死结,我们只能用一个byte表示一个int了,节省四分之三的空间,但这远远达不到需求。
    试想,我们能否通过byte间接操作bit呢?
    一个byte占据八位的存储空间,如果我们找到了一种方法使得一个byte表示八个整型数据,就间接找到了我们理想化的方法。

实际解决步骤:
    下面开始讨论这个大数组排重问题的具体实现思路。
    1)创建一个byte数组,长度为2的29次方,把所有的byte置0。
    2)对应输入的int型数据,先对8取整得m,并把byte[m]转化为二进制数表示。
    3)对8取余得到n,将byte[m]的第n位置1。(对于这部分代码,可以当做字符串来处理,当然,熟悉位操作的同学可以通过移位实现。)


    到这里,腾讯的用户统计问题就解决了。童鞋们,开始写代码喽。
分享到:
评论

相关推荐

    Android中Glide获取图片Path、Bitmap用法详解

    软件开发网在此之前给大家介绍过图片加载框架Glide的基本用法介绍,大家可以先参考一下,本篇内容更加深入的分析了Glide获取图片Path、Bitmap用法,以及实现的代码分析。 1. 获取Bitmap: 1)在图片下载缓存好之后...

    RoaringBitmap-0.7.45-API文档-中英对照版.zip

    赠送jar包:RoaringBitmap-0.7.45.jar; 赠送原API文档:RoaringBitmap-0.7.45-javadoc.jar; 赠送源代码:RoaringBitmap-0.7.45-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.7.45.pom; 包含翻译后的API...

    YUV420帧转Bitmap

    改用原始图像数据流回调函数RegisterImageStreamCallback进行抓图 但回调函数帧为YUV420格式 需要转成Bitmap才用用于显示及本地查看 在网上找了好多都是基于R Y+1 4075 V 128 G Y 0 3455 U 128 – 0 7169 V 128 B Y+...

    RoaringBitmap-0.7.45-API文档-中文版.zip

    赠送jar包:RoaringBitmap-0.7.45.jar; 赠送原API文档:RoaringBitmap-0.7.45-javadoc.jar; 赠送源代码:RoaringBitmap-0.7.45-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.7.45.pom; 包含翻译后的API...

    RoaringBitmap-0.5.11-API文档-中英对照版.zip

    赠送jar包:RoaringBitmap-0.5.11.jar; 赠送原API文档:RoaringBitmap-0.5.11-javadoc.jar; 赠送源代码:RoaringBitmap-0.5.11-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.5.11.pom; 包含翻译后的API...

    android bitmap outOfMemory解决方法

    android bitmap outofMemory 用来解决android中常见的bitmap outOfMemory

    针对图片字体,为Bitmap Font Generator自动生成配置文件

    功能:针对图片字体,为Bitmap Font Generator自动生成配置文件 用法:1、制作图片,单个文字图片的命名必须以图片名字命名。如:图片内容为“1”命名为“1.png”,图片内容为“万”命名为“万.png” 2、将该...

    处理bitmap内存溢出问题

    处理bitmap内存溢出问题

    Bitmap图像转halcon图像

    机器视觉技术必备,从位图到halcon图像,bitmap图像转为halcon图像,bitmap to Hobject

    Halcon_Bitmap转换

    Halcon_Bitmap转换方法 写的文档 开发笔记

    android获取图片尺寸的两种方式及bitmap的缩放操作

    我就废话不多说了,大家还是直接看代码吧~ //Uri.parse(file://+result.getImage().getCompressPath())) String path=uri.... Bitmap bitmap= BitmapFactory.decodeFile(path); int height= bitmap.get

    RoaringBitmap-0.5.11-API文档-中文版.zip

    赠送jar包:RoaringBitmap-0.5.11.jar; 赠送原API文档:RoaringBitmap-0.5.11-javadoc.jar; 赠送源代码:RoaringBitmap-0.5.11-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.5.11.pom; 包含翻译后的API...

    Android canvas drawBitmap方法详解及实例

    主要介绍了 Android canvas drawBitmap方法详解及实例的相关资料,需要的朋友可以参考下

    C# Bitmap转为Mat

    C#语言下,官方好像没有提供直接的方式把Bitmap转为Mat,但是可以使用我的这个方式转变格式

    c#.net Bitmap类的基本使用方法

    c#.net Bitmap类的基本使用方法

    android pdf转bitmap

    将pdf文件转换成图片并显示在界面, 先要引用AndroidPDFViewerLibrary-master ... Bitmap image = page.getImage((int)(page.getWidth() * scale), (int)(page.getHeight() * scale), null, true, true);

    Android中Bitmap、File与Uri之间的简单记录

    感觉Uri 、File、bitmap 比较混乱,这里进行记载,方便以后查看.下面话不多说了,来一起看看详细的介绍吧 Bitmap、File与Uri 1、将一个文件路径path转换成File String path ; File file = new File(path) 2...

    带透明度的HBITMAP和Bitmap的转换

    博客配套文件,解决常见的Bitmap转HBITMAP背景变浅,HBITMAP转Bitmap背景变黑的问题,并演示了如何输出HBITMAP和Bitmap的每行像素,所有代码封装成了类,可以直接在生产环境中使用。

    android平台jpeg数据流转换成rgb直接用bitmap显示数据的so库

    canvas.drawBitmap(bmp, null, rect, null); // draw camera bitmap native接口如下 package lzt.drv; public class V4L2Camera { static { System.loadLibrary("jpeg"); } public native static byte[] decode...

Global site tag (gtag.js) - Google Analytics