`
代码小达人
  • 浏览: 24455 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

bitmap及其应用

阅读更多
[基本概念:
为了存放很多数据并且去重的时候,用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。
实现思路(以存储int为例):
本来一个int是4个字节的,要存的话就需要4个字节的存储空间,但是若有大量数据要排重并且存储时,内存就可能会不够用,这个时候我们就可以用bitmap来解决。仍以存储int型数据为例,为了存储这大量的数据,我们如下面步骤实现:
1.开辟一块大小为2^29byte的空间(2^32/2^3=2^29)
2.将这块空间进行“编号”,其“编号”遍历了int范围(因为其大小就是int范围个的bit)
3.将数据逐个输入,将这些数据所对应的编号的空间置1
4.这些被置1的空间所对应的“编号”就是存在的int值,并且一定是去重了
具体实现所遇问题:
1.可能一下子开辟不了如此大的一块存储空间
解决方案:可以“分批”开辟空间,不一定要连续
//分批创建byte组织,根据不同大小放到不同地byte数组中,对byte进行位操作,一个byte相当于8个bit
		byte[] bytes1=new byte[1000];
		byte[] bytes2=new byte[1000];
		byte[] bytes3=new byte[1000];
		byte[] bytes4=new byte[1000];
		byte[] bytes5=new byte[1000];
		byte[] bytes6=new byte[1000];
		byte[] bytes7=new byte[1000];
		byte[] bytes8=new byte[1000];
		byte[] bytes9=new byte[192];

2.如何进行位操作
解决方案:本来可以用循环移位,然后将所需置1的位移到最前面“或”1再移位回原样即可,但是java中好像没有直接的循环移位,因此要自己写一个
综合应用方面:
    我们在平时打开网页时有些网页会在“黑名单”中,即不让我们访问的,如果用一般的搜索排除的话效率太低,那么如何高效率的判断该网页不在“黑名单”中呢?
答案:利用布隆过滤器
布隆过滤器:可以说是哈希表和bitmap的结合,先对每个黑名单网站网址的每个字符通过哈希表得到一个value,将该value所对应的在bitmap中的位置置1。当在要打开某个网页时会先对该网页的网址同样通过哈希表得到一些value,只要这些value所对应的bitmap中的值有一个不为1就说明该网址不在“黑名单”中。
分享到:
评论

相关推荐

    Bitmap 结构在高性能网络算法设计中的应用

    在探讨Bitmap结构如何被应用于高性能网络算法设计之前,我们首先需要理解Bitmap(位图)的基本概念及其在数据处理中的优势。Bitmap是一种用于存储二进制数据的数据结构,它将每个元素映射为一个比特(bit),从而...

    Bitmap的相关优化及使用

    本篇文章将深入探讨Bitmap的优化策略及其在实际开发中的应用。 一、Bitmap的内存占用分析 Bitmap对象在内存中的大小主要由三个因素决定:宽度、高度和颜色深度。宽度和高度决定了图像的像素数量,而颜色深度(通常...

    二维码BitMap图片解析

    ### 二维码BitMap图片解析知识点详解 #### 一、二维码简介 二维码(Quick Response Code),又称快速响应矩阵码,是一种可以在水平和垂直方向上同时存储...这些知识点对于理解二维码的工作原理及其实现方法至关重要。

    Bitmap转jpeg源码 简化版

    本篇将详细讲解Bitmap转换为JPEG的简化版源码及其核心原理,以及如何进行性能测试。 一、Bitmap与JPEG简介 Bitmap是Android中的一个类,它代表了一个图像数据,可以是位图或者索引颜色图像。JPEG(Joint ...

    8583bitmap组包工具

    8583协议是一种广泛应用于金融交易系统,特别是银行卡交易中的报文交换标准。这个协议定义了交易数据的结构和格式,包括交易类型、金额、日期等关键信息。在8583协议中,位图(Bitmap)是报文结构的一部分,用于指示...

    Turbo Pascal中Bitmap类型的数据结构分析.pdf

    总的来说,这篇文档为我们提供了Turbo Pascal编程中关于Bitmap类型数据结构及其应用的深入分析,这对于了解早期的计算机图形编程和数据结构非常有价值。这些知识不仅帮助我们理解了过去如何在高级语言中进行高效的...

    2-9+bitmap在连续留存分析中的使用.pdf

    接下来,我们将深入讨论Bitmap数据结构及其在连续留存分析中的应用。 Bitmap,也称为位图,是一种用单个二进制位(bit)来标记特定值是否存在或状态的技术。这种数据结构特别适用于存储大量的布尔值,如用户是否在...

    处理android bitmap oom 2.0版本关闭了硬件加速

    "处理android bitmap oom 2.0版本关闭了硬件加速"这一主题,关注的是如何在Android 2.0版本及其后续版本中避免Bitmap导致的内存溢出,以及硬件加速在这个过程中的角色。 首先,理解硬件加速的概念至关重要。在...

    初中级Android开发社招面试之Bitmap

    Bitmap是Android平台中用于处理图像的核心类,它在Android应用开发中扮演着至关重要的角色,尤其是在显示图片、处理图片效果等方面。本知识点主要探讨Bitmap在Android开发中的使用及其面试常见问题。 1. Bitmap基本...

    MFC学习bitmap的代码类

    在Microsoft Foundation Classes (MFC) 中,Bitmap 是一个重要的图形对象,用于在应用程序中显示和处理位图图像。MFC 提供了一个 CBitmap 类来封装Windows API中的位图操作。这个"BitmapDemo"可能是一个教学示例,...

    android bitmap

    本文将深入探讨Android中的`Bitmap`对象及其操作方法,帮助开发者更好地理解如何有效地管理和优化应用程序中的图片资源。 ### Bitmap 基础知识 #### 1. Bitmap 类介绍 `Bitmap`类是Android框架提供的一个核心类,...

    Bitmap_光栅_位图_

    位图(Bitmap)是一种常见的图像文件格式,广泛用于计算机图形处理和数字图像领域。它是由像素阵列组成的,每个像素代表图像中一个特定位置的颜色信息。位图图像的优点在于能够表现丰富的细节和色彩层次,但缺点是...

    游戏编程-7。Bitmap函数

    本篇文章将深入探讨Bitmap函数及其在游戏编程中的应用。 首先,我们了解Bitmap的基本概念。Bitmap是一个二维像素数组,每个像素都有自己的颜色值。在游戏编程中,Bitmap对象通常用于存储和显示静态图像,如角色、...

    Bitmap,BitmapDrawable,Drawable.doc

    Bitmap通常用于需要对图像进行精确控制和修改的场景,例如裁剪、缩放、旋转或应用滤镜效果。值得注意的是,Bitmap并不能直接实例化,而是需要通过特定的方法(如decodeFile、decodeResource等)从文件、资源或流中...

    Windows Mobile BitMap Butoon

    让我们深入探讨一下Bitmap Button在Windows Mobile中的实现及其相关知识点。 首先,Windows Mobile操作系统是基于Windows CE内核的,主要用于移动设备如智能手机和平板电脑。在这样的平台上,开发者通常使用...

    解析bitmap处理海量数据及其实现方法分析

    通过以上分析,我们可以看到Bitmap在处理海量数据时,以其高效、节省空间的特点,成为了许多大数据应用场景的理想选择。了解并掌握Bitmap的原理和实现方法,有助于我们在面对大规模数据处理时,设计出更优化的解决...

    Android Bitmap详解及Bitmap的内存优化

    了解Bitmap及其内存优化对于开发高性能、低内存消耗的应用至关重要。 1. **Bitmap基本操作** - `recycle()`: 释放Bitmap占用的内存空间,回收后不应再使用该位图,否则可能导致程序崩溃。 - `isRecycled()`: 检查...

    bitmap图片解析

    首先,需要创建一个表示高斯函数的权重矩阵,然后对图像的每个像素及其邻域应用该矩阵,计算新像素值的加权平均。这个过程涉及矩阵运算和图像的滑动窗口处理。 5. **C++实现**: 在C++中,可以使用标准库如`...

    fontC#中Bitmap类实现

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与C#中Bitmap类实现不相关的知识点,而是关于Font类的应用及属性。以下是对这些知识点的详细解释: ### Font类概述 在C#及其相关的.NET框架中,`Font`类用于...

Global site tag (gtag.js) - Google Analytics