package oom;
/*** 假设index是从1开始的,所以先将index减去1,如果你要统计的数据范围是从0开始的,* 则不需要减去这个1。右移5位(相当于除以32)的原因是,一个int型数据是32位的(2的5次方等于32)。* 偏移量中&31相当于模32,其原因也因为int型数据是32位的。* 如果你不准备基于int,而是准备基于其他的,如byte,long的话,* (以byte为例)则将>>5改成>>3,&31改成&7即可* 实现BitMap*注:这个bitMap的index是从1开始的*/
public class BitMap {private long length;private static int[] bitsMap;//构造函数中传入数据中的最大值public BitMap(long length) {this.length = length;// 根据长度算出,所需数组大小bitsMap = new int[(int) (length >> 5) + ((length & 31) > 0 ? 1 : 0)];}public int getBit(long index) {int intData = bitsMap[(int) ((index - 1) >> 5)];int offset = (int) ((index - 1) & 31);return intData >> offset & 0x01;}public void setBit(long index) {// 求出该index - 1所在bitMap的下标int belowIndex = (int) ((index - 1) >> 5);// 求出该值的偏移量(求余)int offset = (int) ((index - 1) & 31);int inData = bitsMap[belowIndex];bitsMap[belowIndex] = inData | (0x01 << offset);}public static void main(String[] args) {BitMap bitMap = new BitMap(32);bitMap.setBit(32);System.out.println(bitMap.getBit(1));System.out.println(bitMap.getBit(32));}
}
package oom;import java.util.Arrays;/**位操作(&运算)代替求余操作* h & (length-1);    实际上相当于h%length取余数,但&计算速度更快
JAVA基本类型占据的字节数,须知:
byte :8个bit (bit就是比特位的意思)
byte :1个字节 (byte就是字节的意思)
char :2个字节
short :2个字节
int :4个字节
boolean :4个字节
float :4个字节
long :8个字节
double :8个字节
JVM规范中,boolean变量作为int处理,也就是4字节;boolean数组当做byte数组处理。* 这个BitMap的去重是从0开始*/
public class BitMapRepRemove {//public static final int _1MB = 1024 * 1024;//public static byte[] flags = new byte[ 512 * _1MB ];public static byte[] flags;public static void main(String[] args) {int[] array = {255, 1024, 1024, 0, 65536, 0, 1024, 8888, 9999, 1111, 8888};int length = 65536 + 1;flags = new byte[(int) (length >> 3) + ((length & 7) > 0 ? 1 : 0)];int index = 0;for(int num : array) {if( getFlags(num) != 1) {//未出现的元素array[index] = num;index = index + 1;//设置标志位setFlags(num);}}array = Arrays.copyOf(array, index);System.out.println(Arrays.toString(array));System.out.println(array.length);}public static void setFlags(int num) {int offset = num & (0x07);flags[num >> 3] |= 0x01 << offset;}public static int getFlags(int num) {int offset = num & (0x07);return flags[num >> 3] >> offset & 0x01;}
}
/*
*图片存入内存中可以用软引用SoftReference<E>内存不够,会被GC回收
*
*/
private Map<String, SoftReference<Bitmap>> imageMap = new HashMap<String, SoftReference<Bitmap>>();public Bitmap loadBitmap(final String imageUrl,final ImageCallBack imageCallBack) {SoftReference<Bitmap> reference = imageMap.get(imageUrl);if(reference != null) {if(reference.get() != null) {return reference.get();}}final Handler handler = new Handler() {public void handleMessage(final android.os.Message msg) {//加入到缓存中Bitmap bitmap = (Bitmap)msg.obj;imageMap.put(imageUrl, new SoftReference<Bitmap>(bitmap));if(imageCallBack != null) {imageCallBack.getBitmap(bitmap);}}};new Thread(){public void run() {Message message = handler.obtainMessage();message.obj = downloadBitmap(imageUrl);handler.sendMessage(message);}}.start();return null ;
}// 从网上下载图片
private Bitmap downloadBitmap (String imageUrl) {Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(new URL(imageUrl).openStream());return bitmap ;} catch (Exception e) {e.printStackTrace();return null;}
}
public interface ImageCallBack{void getBitmap(Bitmap bitmap);
}

位图BitMap大数据筛选相关推荐

  1. 算法笔记(三)特殊数据结构——哈希表、有序表、并查集、KMP、Manacher、单调栈、位图、大数据类题

    layout: post title: 算法笔记(三)特殊数据结构--哈希表.有序表.并查集.KMP.Manacher.单调栈.位图.大数据类题 description: 算法笔记(三)特殊数据结构- ...

  2. vba筛选出满足条件的数据_大数据筛选出可疑账户!工商银行济源分行助力警方侦破一“地下钱庄”案件...

    大河报·大河客户端记者李岩 崔峰 通讯员 樊梦琦 近日,工商银行济源分行收到了来自济源产城融合示范区公安局的一封表扬信.信中除了对该行一直以来对公安机关的支持和帮助表达了感谢,同时对该行反洗钱工作和在 ...

  3. 电商试水“先白拿后付费” 大数据筛选信用买家

    尺码拿不准,当季新品购买量少.无评价,东西小贵不知道是不是自己的style--有电商近日试水的"先试后买"一扫你的纠结. 近日,有电商对"达人会员"发出邀请,推 ...

  4. 位图排序 大数据_干货分享:大话12种排序算法

    干货分享:大话12种排序算法 常见的排序算法: 快速排序.堆排序.归并排序.选择排序 插入排序.二分插入排序 冒泡排序.鸡尾酒排序 桶排序.计数排序.基数排序.位图排序 技能点: 1.归并排序在O(N ...

  5. 床上用品喊你“先睡后买” 大数据筛选后厂家不怕你退货

      在网上买床上用品,不用先付钱,就能收到商品,先试睡体验,喜欢就付钱,不喜欢也不用想各种理由,直接退回去,就算洗过也可以,连运费都不用出.这种好事,本月起就可以成真. 推出"先睡后买&qu ...

  6. 大数据十三五规划将出台 激活相关行业万亿产值

    "未来最有价值的资源就是经过分析后的一系列数据,大数据产业'十三五'规划年内发布之后,会推动制造业.服务业等全产业链的革新,不亚于蒸汽机.电的发明对工业革命的推动."经济学家宋清辉 ...

  7. 大数据时代BI平台何去何从

    信息化时代的高速发展,使得大数据的作用深入人心.大数据也成为当下几大热点词汇之一,企业每天产生数以万计的数据都需要对数据进行处理,数据处理的方法也在不断地与时俱进.就现如今的发展趋势而言,大数据技术的 ...

  8. 大数据BI平台建设需注意什么问题

    大数据是新资源.新技术和新理念的混合体.从资源的角度看,大数据是一种新的资源,反映了一种新的资源观.因此,处理好大数据的问题,就拥有了提前了解市场的能力.但是,大数据分析技术也面临着一些问题,大数据B ...

  9. 智慧校园大数据云平台(1)

    目录 第1章 建设思路和建设目标 1.1. 总体建设内容概述 1.2. 总体建设理念 1.2.1. 搭平台 1.2.2. 定标准 1.2.3. 上应用 1.2.4. 成体系 1.2.5. 集中管 1. ...

最新文章

  1. 群晖共享文件夹局域网通过SMB本地访问
  2. 雷林鹏分享:PHP 5 Directory 函数
  3. Makefile:条件编译
  4. MYSQL创建一个function用来计算经纬度距离
  5. android开机启动service
  6. hdu 5172(RMQ+前缀和)
  7. wav音量和分贝转换关系_Permute 3 for mac(音视频格式转换器) 最新版
  8. appnode php,环境软件路径参考
  9. 包含6大数据领域,531个知识点,这张数字化图谱,分享给你
  10. [转贴]原创控件代码共享--日期选择控件
  11. 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
  12. CUDA memory
  13. grid autosport额外内容下载慢_世界土壤数据库(HWSD)全球土壤数据下载处理
  14. eclipse JSP页面中的JS代码为黑色,JS单独文件是OK的
  15. libcurl的封装,支持同步异步请求,支持多线程下载,支持https
  16. 《编程珠玑》——读书笔记1
  17. android gif图片压缩,10种GIF压缩方法
  18. 【2021LaTeX模板分享】数学建模竞赛国赛
  19. linux下nfs安装配置
  20. Tilera--100核cpu

热门文章

  1. 使用JavaScript判断用户是否为手机设备
  2. UITableViewDataSource Protocol Reference
  3. 11gR2集群件任务角色分离(Job Role Separation)简介
  4. 数据库 事务提交和回滚
  5. 普惠科技助力智能升级 天猫精灵新品直指家庭IoT生态
  6. !heap 和 _HEAP_ENTRY
  7. mac下mysql无法启动问题
  8. [Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题
  9. 判断用户是否开启定位功能 / 判断用户是否为应用程序开启定位功能
  10. 深度学习知识点全面总结