位图

如何对mfc窗体背景图片的设置

不问归期 提交于 2019-12-09 09:43:55
打开vc+的mfc工程,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(), 添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; } 按照上面的方法一路COPY下来运行,OK!并且由于图片是做为背景显示的

海量数据处理问题分析

喜欢而已 提交于 2019-12-08 19:20:56
哈希切割top K问题 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 将 100 G的 log file 哈希切分成 1000 份,为什么不切成 100 份 因为 100 份中不一定每个文件大小都是 1 G,有的文件可能要 5 , 6 个G的,因为有哈希冲突,可能某个文件哈希冲突多 文件大小要 10 G左右了,因此哈希切分成 1000 份,每份 100 M 这样最多IP大小也就 1 到 2 个G,哈希表可以进行处理。 切分时:先把IP字符串转为整型,再取模Ip %1000 进行哈希切分存储。因为相同的IP一定会进入同一个文件 然后 1000 份中用哈希表KV模型进行统计每个IP的次数 用第一个文件中IP次数和第二个最多IP次数比较,大的保留 小的销毁,依次向后比较,直到统计完 1000 份中最大的IP次数。 如果某一个文件IP值过多,导致文件过大,可以用不同的哈希 算法进行切分来实现分流。 位图应用 给定100亿个整数,设计算法找到只出现一次的整数 要知道 100 亿个整数占多少空间, 10 亿个整数大概占一个G 100 亿大概占 10 个G,但是一百亿个整数,所以要大概占 40 个G 很明显内存中是存不下的,位图只需要用位来表示一个数在或者 不在,一个字节为 8 个比特,现在用 32 个比特位表示,则 40 G

海量数据处理方法及应用

[亡魂溺海] 提交于 2019-12-08 18:22:06
一、哈希切割top K问题 1. 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? (1)首先使用散列函数HashFunc(ip)将每一个IP地址转化为整型,再通过HashFunc(ip)%1000使得每一个IP各自进入到所切分的1000个小文件中,余数是多少就映射到多少号文件中,这样做能保证相同IP进入到同一文件中; (2)接着在每一个小文件中建立Key-Value模型的哈希表,各自统计出Value(出现次数)最大的IP; (3)最后依次比较这1000个小文件中出现次数最多的IP,找到最终出现次数最多的IP地址。 2. 与上题条件相同,如何找到top K的IP? 先对第一个小文件的数据建立小堆(大小为K),存入出现次数最多的前K个IP,再依次读入每一个文件,将每一个IP的出现次数与堆中IP次数比较,如果大于堆顶的IP,则替换堆顶,并更新堆,依次执行下去,直到1000个文件全部读完,整个堆的数据即为出现次数最多的前K个IP。 二、位图应用 1. 给定100亿个整数,设计算法找到只出现一次的整数 所有整数的范围是从0到42亿9千万,每个整型占用4字节,这样存放这些整数至少需要16G的内存空间,太耗费空间了,如果用位图的思想来解决这个问题,就可以大幅度节省空间。 在该题中需要注意的是要统计次数

海量数据问题总结

南楼画角 提交于 2019-12-08 17:57:29
本博客已弃用,当时存在一些小细节错误后期也不再修改了 欢迎来我的 新博客 前言:在这个用户量爆炸、并发极高的互联网时代,对于如今的IT行业,在极大量的数据处理这一块的能力,无疑某些程度上是其技术实力的体现。例如淘宝、支付宝在双十一这天的峰值时期,每秒要处理的数据量几乎都是百亿级别,新浪微博在春晚将要处理一亿左右人的抢红包活动。海量数据处理能力是一家大公司必须要做得非常硬的一个技术块,这样才能在互联网行业的激烈竞争中站稳脚跟。因此,海量数据问题在面试中也是经常问到的,并且也是很能体现你的知识底蕴的一个方面。 下面我们通过七个问题来进行讲解。 Ps:本文需要堆、哈希、位图、布隆这些知识基础,若你不明白这些目前还是先不要看下去了,当然,没有耐心去一个一个方法看的肯定也看不下去。 正文: 海量数据的定义:内存里存不下或者会占用太多内存的数据量。(注意:我们说的是内存,因为这些数据都是要拿来直接用的) 注意:在这里讲的是方法,因为别人问你也不是要你自己能实现一个处理海量的数据的轮子,重要的是能表述清楚原理,因此无关紧要的细节各位自行忽略(比如下面的log file怎么取模,log file中的IP怎么提取 之类的问题 ) 1)给⼀一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址。如何找到top K的IP?

浅析海量数据处理问题

百般思念 提交于 2019-12-08 17:52:55
生活中我们经常会遇到一些海量数据处理的问题,那么怎样的问题就算是海量数据了呢?来看以下这几个问题: 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址 。 给定100亿个整数, 找到其中只出现一次的整数(位图变形, 用两位来表示次数)。 有两个文件, 分别有100亿个query(查询词, 字符串), 只有1G内存, 找到两个文件的交集。 给上千个文件, 每个文件大小为1K - 100M, 设计算法找到某个词存在在哪些文件中。 首先第一个问题很明确有100G的数据;第二个问题100亿个整数所占的空间大小是:100亿*4byte = 40G;第三个问题100亿也就是10G……要知道我们日常使用的电脑也就是4G、8G的内存大小,远不能满足这里的100G、40G……的数据处理的需求。但是我们又必须要处理类似这样的问题,难道就束手无策了么!!! 为了解决类似这样的问题,我们可以借助之前学的哈希表,位图,布隆过滤器这样的数据结构,接下来我们来了解一下相关知识。 哈希表 详情请移步: 哈希表 位图 详情请移步: 位图 布隆过滤器 详情请移步: 布隆过滤器 哈希切分 所谓的切分就很好理解,就是将一个东西切分开,将一个整体划分为多个更小的小整体。那么这里的哈希切分又是什么操作呢?提到哈希我们就要想到这其中使用了哈希函数,同样 的哈希切分

哈希面试题--海量数据

妖精的绣舞 提交于 2019-12-08 17:43:31
哈希切割top K问题 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 与上题条件相同,如何找到top K的IP? (1)文件太大,100g,肯定不可能一次加载到内存进行处理,这里就必须将文件进行切割了,可是依据哪种方法进行切割呢?假设只是从前到后等份切割的话,将文件切割n份(切割的份数依据所给的内存大小),第一份中假设IP地址为a出现次数最多,第二份中b出现的次数最多,这样比较出来,假设a比b大,那得出的结果就是IP地址为a的出现次数多,可是?假设第一份中也有地址为b的IP呢?这样分割出来的文件,不能保证相同IP地址被分到同一个文件当中,这样算出的结果就肯定不正确了。这里我们应该想到使用哈希的思想,我们可以给出n个文件,(n的取值取决于给定的内存大小),将点分十进制的IP地址转化为整数,利于哈希函数(哈希函数采用直接定址法),求出IP地址所对应文件的编号,这样将所有地址分派到不同编号的文件中,相同的地址一定在同一个文件当中,依次遍历每个文件,统计出每个IP地址出现的次数,这样就可以找到出现次数最多的IP地址。 (2)top K问题的解决办法我们很容易想到用堆,首先,搞清楚是要出现次数最多的K个IP还是出现次数最少的K个IP,如果是最多的,可以给小堆,如果最少的,给的就是大堆;假设这里我们要的是出现次数最多的K个IP

理解bitmap位图原理并实现

旧时模样 提交于 2019-12-07 10:59:28
引子 首先通过一道题来理解什么是bitmap。 题目:我有40亿个整数,再给一个新的整数,我需要判断新的整数是否在40亿个整数中,你会怎么做? 分析: 假设一个int占4个字节(32位),40个亿个整数就是160亿个字节,大概相当于16GB,假设一台计算机只有2GB内存,则16GB一次加载不完,需要分8次加载,从磁盘加载数据是磁盘io操作,是非常慢的(比内存中的操作要慢100倍),每次加载这么大的数据,并且要8次,那么查找的时间可以达到分钟甚至小时级。 还有一个办法是把数据分散在8台计算机上,然后来一个新数据,8台计算机同时找,然后再汇总结果。这样每台计算机都可以一次性把数据读入内存中,查找就不用来回加载数据,省去了加载数据的开销,是个好方法。 但是否还有其他更好的方法呢?那就是bitmap。bitmap存值的思路:每一个int有32位,int整数的范围是-2147483648 ~ 2147483647。为简化理解,这里先假设每一个整数位均为正整数(如果存在负整数需分开处理),2147483647/32 = 67108863,即只需要67108863个int型整数就可以表示 [0,2147483647] 范围的数字,即需要67108863*4 = 268,435,452‬个字节的内存,相当于0.2GB,即使加上负整数部分也才需要0.4GB的内存,一台计算机完全足够

Android Bitmap和Canvas

只谈情不闲聊 提交于 2019-12-06 21:45:58
位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。 1. 从资源中获取位图 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。 当然,首先需要获取资源: Resources res=getResources(); 使用BitmapDrawable获取位图 使用BitmapDrawable (InputStream is)构造一个BitmapDrawable; 使用BitmapDrawable类的getBitmap()获取得到位图; // 读取InputStream并得到位图 InputStream is=res.openRawResource(R.drawable.pic180); BitmapDrawable bmpDraw= new BitmapDrawable(is); Bitmap bmp=bmpDraw.getBitmap(); 或者采用下面的方式: BitmapDrawable bmpDraw=(BitmapDrawable)res.getDrawable(R.drawable.pic180); Bitmap bmp=bmpDraw.getBitmap(); 使用BitmapFactory获取位图 (Creates Bitmap objects from various sources, including

iconfont1_图片分类及图标格式

余生颓废 提交于 2019-12-06 13:06:21
一、图片分类 1、位图图片:最小单位由像素构成的图,缩放会失真。常用格式bmp,jpg,gif,png。 2、矢量图图片:矢量图纪录了元素形状及颜色的算法,以数学函数来实现。以svg格式为代表,可缩放矢量图形(scalable vector graphics)。其他格式cdr、ai、SWF、SVG、WMF、 EMF、EP、DXF格式等。 优缺点: 1、位图的好处是,色彩变化丰富,编辑上,可以改变任何形状的区域的色彩显示效果。缺点位图占用空间较大; 2、矢量的好处是,无论放大、缩小或旋转等都不会失真;缺点是难以表现色彩层次丰富的逼真图像效果,而且显示矢量图也需要花费一些时间。矢量图形主要用于插图、文字和可以自由缩放的徽标等图形。另外,支持矢量格式的应用程序也远远没有支持位图的多,很多矢量图形都需要专门设计的程序才能打开浏览和编辑。 3、矢量图很容易转换为位图。反之则很困难。 二、图标格式 1、采用图片格式,有bmp,jpg,gif,png等文件格式。 缺点:大小改变后,可能会出现锯齿效果,影响美观。 引申: Css Sprite(雪碧图)是网页中图片的一种处理方式。将应用的比较小的图片合并为个大图片。 优点:减少http请求次数。 缺点:需要设置背景图的宽高和位置。当然我们也可以使用对应的工具获取大小和位置信息。 2、字体图标,可以使用color,font

图片及图标分类

十年热恋 提交于 2019-12-06 11:03:17
图片分类 1、位图图片:最小单位由像素构成的图,缩放会失真。常用格式bmp,jpg,gif,png。 2、矢量图图片:矢量图纪录了元素形状及颜色的算法,以数学函数来实现。以svg格式为代表,可缩放矢量图形(scalable vector graphics)。其他格式cdr、ai、SWF、SVG、WMF、 EMF、EP、DXF格式等。 优缺点: 1、位图的好处是,色彩变化丰富,编辑上,可以改变任何形状的区域的色彩显示效果。缺点位图占用空间较大; 2、矢量的好处是,无论放大、缩小或旋转等都不会失真;缺点是难以表现色彩层次丰富的逼真图像效果,而且显示矢量图也需要花费一些时间。矢量图形主要用于插图、文字和可以自由缩放的徽标等图形。另外,支持矢量格式的应用程序也远远没有支持位图的多,很多矢量图形都需要专门设计的程序才能打开浏览和编辑。 3、矢量图很容易转换为位图。反之则很困难。 图标格式 1、采用图片格式,有bmp,jpg,gif,png等文件格式。 缺点:大小改变后,可能会出现锯齿效果,影响美观。 2、字体图标,可以使用color,font-size等字体样式来设置图片 (1)使用font+html方式,又称unicode引用 (2)使用font+css方式,又称font class方式引用 (3)使用symbol方式(彩色图标) Css Sprite(雪碧图)是网页中图片的一种处理方式