当前位置: 首页 > news >正文

广州微信网站开发游戏企业用什么程序做网站

广州微信网站开发,游戏企业用什么程序做网站,湖南建设厅网站,专业团队怎么形容#x1f3f7;️个人主页#xff1a;牵着猫散步的鼠鼠 #x1f3f7;️系列专栏#xff1a;Java全栈-专栏 #x1f3f7;️个人学习笔记#xff0c;若有缺误#xff0c;欢迎评论区指正 目录 前言 什么是BitMap#xff1f;有什么用#xff1f; 基本概念 位图的优势 … ️个人主页牵着猫散步的鼠鼠  ️系列专栏Java全栈-专栏 ️个人学习笔记若有缺误欢迎评论区指正 目录 前言 什么是BitMap有什么用 基本概念 位图的优势 位图的劣势 BitMap和Int的区别 使用场景 BitMap在Java中的使用 1.前言 有许多方法可以用来去重比如使用列表、集合等等但这些方法通常只适用于一般情况。然而当涉及到大量数据去重时常见的 Java Set、List甚至是 Java 8 的新特性 Stream 流等方式就显得不太合适了。在处理大量数据的需求场景下我们不得不提及 BitMap。 2.什么是BitMap有什么用 2.1.基本概念 位图BitMap基本思想就是用一个bit来标记元素bit是计算机中最小的单位也就是我们常说的计算机中的0和1这种就是用一个位来表示的。 所谓位图其实就是一个bit数组即每一个位置都是一个bit其中的取值可以是0或者1 像上面的这个位图可以用来表示146 如果不用位图的话我们想要记录14,6 这三个整型的话就需要用三个unsigned int已知每个unsigned int占4个字节那么就是3_4 12个字节一个字节有8 bit那么就是 12_8 96 个bit。 所以位图最大的好处就是节省空间。 位图有很多种用途特别适合用在去重、排序等场景中著名的布隆过滤器就是基于位图实现的。 2.2.位图的优势 空间效率优势极大的节省了存储空间对于大量稀疏数据特别是当元素数量远大于实际存在的项时相比较于使用传统的列表、集合等数据结构位图的空间占用极小。查询速度由于内存访问时按字节或字进行的。因此对单个元素的存在性检查时间复杂度为O(1)即常量时间非常快速。批量操作高效对于批量插入、删除和查询操作尤其是统计范围内元素的数量位图表现出优秀的性能。 2.3.位图的劣势 但是位图也有着一定的限制那就是他只能表示0和1无法存储其他的数字。所以他只适合这种能表示true or false的场景。 3.BitMap和Int的区别 以Java中的int为例来对比观察BitMap的优势再Java中int类型通常需要32位而BitMap使用1位就可以来标识此元素是否存在所以可以认为BitMap占用的空间大小只有int类型的1/32所以有大量数据判重时使用BitMap也可以实现。 了解了什么是BitMap那么我们就可以使用BitMap来解决大量数据去重的问题 4.使用场景 假设我们有40亿个无符号整数数据并且都是10位的话如果直接使用内存来存储大约需要14.9GB 的空间。 每个无符号整数通常占用4个字节32位因此40亿个无符号整数所需要的总字节数位4*4000000000字节。 总字节数转换为GB4*4000000000 / 1024 / 1024 /1024 14.9 GB 考虑到其中有一些重复的数据即使这样1G的空间基本上也是不够的。所以想要实现这个功能可以借助BitMap。 如果使用位图的话40亿万所需要的内存大概也就是 476M 40亿无符号整数数据的总字节数是4000000000 字节在位图中1个10位的无符号整数可以使用1 bit表示然后1 字节 8 位bit。 4000000000 bit * 1/8 求出字节数再 / 1024得到占用的KB数最后/ 1024得到占用的MB数 4000000000 * 1 /8 /1024/1024 476M 这样相比于之前的14.9G来说大大的节省了很多空间。 比如要把数据714771310放到BitMap中就需要找到第714771310这个位置然后把他设置成1就可以了。 这样把40亿个数字都放到BitMap之后所有位置上是1的表示存在不为1的表示不存在相同的数据只需要设置一次1就可以了那么最终就把所有是1的数字遍历出来就行了。 5.BitMap在Java中的使用 BitMap在Java中的具体实现时java.util中的BitSetBitSet是一个可变大小的位向量能够动态增长以容纳更多的数据以下是BitSet基本使用示例 import java.util.BitSet;public class BitmapExample {public static void main(String[] args) {// 创建一个BitSet实例BitSet bitmap new BitSet();// 设置第5个位置为1表示第5个元素存在bitmap.set(5);// 检查第5个位置是否已设置boolean exists bitmap.get(5);System.out.println(Element at position 5 exists: exists); // 输出: Element at position 5 exists: true// 设置从索引10到20的所有位置为1bitmap.set(10, 21); // 参数是包含起始点和不包含终点的区间// 计算bitset中所有值为1的位的数量相当于计算设置了的元素个数int count bitmap.cardinality();System.out.println(Number of set bits: count);// 清除第5个位置bitmap.clear(5);// 判断位图是否为空boolean isEmpty bitmap.isEmpty();System.out.println(Is the bitset empty after clearing some bits? isEmpty);} }6.总结  本文简单的讲解了如何使用BitMap进行大量数据的去重BitMap的空间占用极小对单个元素的存在性检查时间复杂度为O(1)非常快速除了BitMap外我们也可以采取布隆过滤器来完成去重但是布隆过滤器存在误判问题可以根据实际场景来分析使用哪种方案
http://www.pierceye.com/news/631373/

相关文章:

  • 泉州企业制作网站wordpress上传顶部图像
  • php建立网站广州创意设计公司
  • 东营专业网站建设济南天桥区网站建设公司
  • 鹤壁做网站多少钱网站开发 简单留言板
  • 网站建设 阿里东莞seo建站优化公司
  • logo设计竞标网站wordpress攻击跳转
  • 专门做瑜伽的网站wordpress docker镜像
  • 中国航天建设集团有限公司网站wordpress建站 防攻击
  • 买邮箱的网站网站与系统对接图文方案
  • 网页和网站区别wordpress展示企业主题免费
  • 网站制作过程个人网站吗
  • gta5网站建设中温州建设局老网站
  • 凤岗仿做网站专业网站设计制作优化排名
  • 企业网站seo优化德国设计网站大全
  • 重庆网站制作公司电话whois域名查询
  • 六安网站自然排名优化价格自己做网站前端开发
  • 网站发布与推广怎么写广东省城乡建设厅网站
  • 用ipv6地址做网站访问上海网址推广
  • 手把手教你做网站 3北京网站建设是什么
  • 建设商务网站目的及功能定位惠州专业网站建设公司哪里有
  • 网站建设技术 教材迈若网站建设
  • 服务器正常网站打不开旅游app排行榜前十名
  • 网站建设服务套餐免费net网站空间
  • 导购网站怎么推广公司建多个网站
  • 做相册集什么网站电脑谷歌浏览器打开是2345网址导航
  • 做网站顾客提现金额后台私做网站名电子章
  • ps做网站素材文件打包开源软件开发
  • 焦作网站建设价格asp网站怎么运行
  • 宜昌市做网站的公司页面设计图片大全
  • 购买网站空间多少钱石家庄权威发布