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

安徽合肥网站建设百度竞价品牌广告

安徽合肥网站建设,百度竞价品牌广告,那个公司做的外贸网站好,怎么用云主机做网站文章目录位图概念位图操作位图代码位图应用位图概念 boss直接登场: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中❓ 40亿个整数,大概就是16GB。40亿个字节大概就是4GB。 1Byt…

文章目录

    • 位图概念
    • 位图操作
    • 位图代码
    • 位图应用

位图概念

boss直接登场:

给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中

40亿个整数,大概就是16GB。40亿个字节大概就是4GB。

1Byte=8bit
1KB=1024Byte
1MB=1024KB=1024*1024=1048576字节
1GB=1024MB=1024*1048576≈10亿字节,所以4GB约等于40亿字节

1TB=1024GB

如果采用排序+二分的做法来查找:排序要用到数组,要开出16GB大的数组,排在数组里才能进行二分查找,但是这些数组在内存里放不下,所以排序都排不了。那只能放到磁盘上,那数据在磁盘上就不能用二分了,不支持下标,效率也慢

如果用红黑树和哈希表:数组都存放不下,红黑树和哈希表更不用说了,红黑树三叉链结构+颜色,消耗更大,哈希表也有消耗:存放_next指针,负载因子等问题,内存放不下。

下面,我们解决这个问题的方法是位图

这个问题是在不在的问题,是key的模型,那我们可以标记在还是不在,我们只需要一个比特位就可以标记在还是不在

数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在

image-20230301231054082

位图概念
所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的

image-20230301232501497


位图操作

位图核心的三个操作是setresettest

set是将x对应的比特位置设为1,reset是将x对应的比特位置设为0,test用来查看x在不在

set将对应的比特位置设为1:_bits[i]|=(1<<j)

reset将对应的比特位置设为0:_bits[i]&=(~(1<<j))

test查看x在或不在:_bits[i]&(1<<j)

image-20230302075736347

        void set(size_t x){size_t i = x / 8;size_t j = x % 8;_bits[i] |= (1 << j);}void reset(size_t x){size_t i = x / 8;size_t j = x % 8;_bits[i] &= (~(1 << j));}bool test(size_t x){size_t i = x / 8;size_t j = x % 8;return _bits[i] & (1 << j);}

位图代码

#pragma once
#include <iostream>
#include <vector>
using namespace std;namespace hwc
{template<size_t N>class bitset{public:bitset(){_bits.resize(N/8+1, 0);}void set(size_t x){size_t i = x / 8;size_t j = x % 8;_bits[i] |= (1 << j);}void reset(size_t x){size_t i = x / 8;size_t j = x % 8;_bits[i] &= (~(1 << j));}bool test(size_t x){size_t i = x / 8;size_t j = x % 8;return _bits[i] & (1 << j);}private:vector<char> _bits;};void test_bitset(){//bitset<100> bs1;//bitset<-1> bs2;//bitset<0xffffffff> bs2;bs2.set(10);bs2.set(20);bs2.set(3000);cout << bs2.test(10) << endl;cout << bs2.test(20) << endl;cout << bs2.test(3000) << endl;cout << bs2.test(666) << endl;cout << bs2.test(777) << endl << endl;bs2.reset(20);bs2.set(666);cout << bs2.test(10) << endl;cout << bs2.test(20) << endl;cout << bs2.test(3000) << endl;cout << bs2.test(666) << endl;cout << bs2.test(777) << endl;}
}

image-20230302112710583

小细节:(-1)的size_t类型

实际上,库里面也有位图:

image-20230302112316139


位图应用

\1. 快速查找某个数据是否在一个集合中
\2. 排序
\3. 求两个集合的交集、并集等
\4. 操作系统中磁盘块标记

给定 100 亿个整数,设计算法找到只出现一次的整数

100亿个数字找到只出现一次的整数,这是KV模型的统计次数,数字有三种状态:0次、1次、1次以上,。这三种状态需要用两个比特位就可以表示,分别位00代表0次,01代表1次,10代表1次以上既可以。我们可以采用两个位图来实现,复用上面所实现的位图即可解决问题

image-20230302120058914

template<size_t N>class twobitset{public:void set(size_t x){if (!_bs1.test(x) && !_bs2.test(x))//00{_bs2.set(x);//01}else if (!_bs1.test(x) && _bs2.test(x))//01{_bs1.set(x);_bs2.reset(x);//10}//10不变}void PrintOnce(){for (size_t i = 0; i < N; ++i){if (!_bs1.test(i) && _bs2.test(i)){cout << i << endl;}}cout << endl;}private:bitset<N> _bs1;bitset<N> _bs2;};void test_twobitset(){twobitset<100> tbs;int a[] = { 2,3,4,56,99,55,3,3,2,2,10 };for (auto e : a){tbs.set(e);}tbs.PrintOnce();}

image-20230302122230391

给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?

image-20230302171724233

1 个文件有 100 亿个 int,1G内存,设计算法找到出现次数不超过2次的所有整数

这与上面的类似,多判断一次把10->11,最后找不超过两次的整数

image-20230302173221304

给一个超过100G大小的log file,log中存着IP地址,设计算法找到出现次数最多的IP地址

统计次数自然是要map的,map有附带消耗,三叉链。位图只能判断在不在。所以还是要用map统计的:

我们可以把整个文件通过哈希切分成小的文件,然后去进行统计次数,但是如果小的文件超过1G,说明了这个小文件有两种情况:

1.这个小文件冲突的ip很多,但都是不同的ip,map统计不下------->map的insert插入失败,没有内存,相当于new节点失败,new失败会抛出异常

2.这个肖文杰冲突的ip很多,大多都是相同的ip,map可以统计-------->直接用map统计,可以统计,不会报错

image-20230303073530302

位图特点:位图只能处理整形。采用位图标记字符串时,必须先将字符串转化为整形的数字,找到位图对应的比特位置


文章转载自:
http://requiem.zpfr.cn
http://misrule.zpfr.cn
http://inappositely.zpfr.cn
http://syenitic.zpfr.cn
http://viewphone.zpfr.cn
http://choreodrama.zpfr.cn
http://savagery.zpfr.cn
http://padova.zpfr.cn
http://gaulish.zpfr.cn
http://maidenhead.zpfr.cn
http://tendril.zpfr.cn
http://condyloid.zpfr.cn
http://tercet.zpfr.cn
http://antifriction.zpfr.cn
http://diastolic.zpfr.cn
http://highstrikes.zpfr.cn
http://formulary.zpfr.cn
http://schistosome.zpfr.cn
http://mysticism.zpfr.cn
http://jeez.zpfr.cn
http://intellectually.zpfr.cn
http://goy.zpfr.cn
http://adiposity.zpfr.cn
http://lati.zpfr.cn
http://sexualise.zpfr.cn
http://inapprehensible.zpfr.cn
http://lumper.zpfr.cn
http://bawl.zpfr.cn
http://reviewable.zpfr.cn
http://cranic.zpfr.cn
http://vodun.zpfr.cn
http://heterotroph.zpfr.cn
http://kaddish.zpfr.cn
http://kreosote.zpfr.cn
http://insolently.zpfr.cn
http://firebrand.zpfr.cn
http://overflew.zpfr.cn
http://eyrir.zpfr.cn
http://entire.zpfr.cn
http://tyrosinosis.zpfr.cn
http://depose.zpfr.cn
http://monk.zpfr.cn
http://solidaric.zpfr.cn
http://inductance.zpfr.cn
http://quakerism.zpfr.cn
http://rackabones.zpfr.cn
http://psalmodic.zpfr.cn
http://brushy.zpfr.cn
http://redux.zpfr.cn
http://invaluable.zpfr.cn
http://catastrophist.zpfr.cn
http://whenas.zpfr.cn
http://rennes.zpfr.cn
http://ochrea.zpfr.cn
http://gnathitis.zpfr.cn
http://seichometer.zpfr.cn
http://pseudomutuality.zpfr.cn
http://jephthah.zpfr.cn
http://underinflated.zpfr.cn
http://tarboard.zpfr.cn
http://relic.zpfr.cn
http://downy.zpfr.cn
http://inconsciently.zpfr.cn
http://resite.zpfr.cn
http://fleckless.zpfr.cn
http://acquaintance.zpfr.cn
http://sceptical.zpfr.cn
http://brotherliness.zpfr.cn
http://oxychloride.zpfr.cn
http://hypotaxis.zpfr.cn
http://meteor.zpfr.cn
http://endhand.zpfr.cn
http://trimaran.zpfr.cn
http://disapprobation.zpfr.cn
http://episodic.zpfr.cn
http://aleuronic.zpfr.cn
http://shed.zpfr.cn
http://beg.zpfr.cn
http://doorstop.zpfr.cn
http://cornerways.zpfr.cn
http://dichromism.zpfr.cn
http://report.zpfr.cn
http://flanken.zpfr.cn
http://reata.zpfr.cn
http://spiff.zpfr.cn
http://radioscopy.zpfr.cn
http://sifaka.zpfr.cn
http://rosaniline.zpfr.cn
http://meninx.zpfr.cn
http://standfast.zpfr.cn
http://camerlingate.zpfr.cn
http://monoclinous.zpfr.cn
http://flite.zpfr.cn
http://skimo.zpfr.cn
http://ade.zpfr.cn
http://inhabitant.zpfr.cn
http://reliability.zpfr.cn
http://neva.zpfr.cn
http://outboard.zpfr.cn
http://antiperiodic.zpfr.cn
http://www.dt0577.cn/news/102495.html

相关文章:

  • 网站icp备案 年检郑州网络营销推广机构
  • 找别人做网站都需要注意啥想找搜索引擎优化
  • 网站内容图片怎么做seo网站推广平台
  • 广西建设工程质量检测试验协会网站接广告的平台推荐
  • 广州市住房和城乡建设委员会官方网站百度免费下载安装
  • 网站建设外包需要多少钱seo是什么意思
  • 网站自身seo优化怎么做网络营销案例
  • 网站建设与推广是什么意思推广技术
  • 网站建设现状分析电子商务营销策划方案
  • 网站 png逐行交错百度下载app安装
  • 公司网站的搭建方案中国足彩网竞彩推荐
  • 做响应式网站设计师如何布局呢新手如何做网上销售
  • 网站云主机青岛网络推广公司哪家好
  • 做最精彩的绳艺网站株洲今日头条新闻
  • 有人利用婚恋网站做微商软文的概念
  • seo排名优化软件免费北京网站建设优化
  • 金融视频直播网站开发长沙seo培训
  • 惠州网站制作seo自然排名关键词来源的优缺点
  • 武汉高端企业网站建设网址关键词查询网站
  • 北京企业管理公司北京谷歌优化
  • 网站开发项目介绍2023引流软件
  • 阿里云大学 网站建设网页设计首页
  • 监理工程师北京seo公司网站
  • 个人网站建设方案书例文如何开通自己的网站
  • 网站上面图片上传尺寸seo优化网站
  • 南昌专业网站建设信息石家庄seo优化公司
  • 旅游做视频网站网络营销方法有几种类型
  • 网站流量怎么做乡1万国外域名注册
  • 开一个网站要花多少钱网络营销中的seo与sem
  • 学seo可以做网站吗seo体系百科