随笔分类 -  海量数据处理

摘要:常见的问题有以下几类:问题一:有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?方法:利用和sum1=1+2+3+.....99;sum2=a[0]+a[1]+.....a[99];sum2-sum1=重复的那个值int OnlyOneRepeate(int *iArray,int length){ int i,sum = 0,sumMax = 0; for(i = 0;i < length; i++) { sum += i; sumMax += iArray[i]; } ... 阅读全文
posted @ 2013-08-23 21:10 一枚程序员 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:何谓海量数据处理? 所谓海量数据处理,其实很简单,海量,海量,何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie/,针对空间,无非就一个办法:大而化小:分而治之/hash映射,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。 至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式 阅读全文
posted @ 2013-08-18 21:36 一枚程序员 阅读(2108) 评论(0) 推荐(0) 编辑
摘要:当一个应用的数据量大的时候,我们用单表和单库来存储会严重影响操作速度,如mysql的myisam存储,我们经过测试,200w以下的时候,mysql的访问速度都很快,但是如果超过200w以上的数据,他的访问速度会急剧下降,影响到我们webapp的访问速度,而且数据量太大的话,如果用单表存储,就会使得系统相当的不稳定,mysql服务很容易挂掉。所以当数据量超过200w的时候,建议系统工程师还是考虑分表.以下是几种常见的分表算法: 1.按自然时间来分表/分库; 如一个应用的数据在一年后数据量会达到200w左右,那么我们就可以考虑用一年的数据来做为一个表或者库来存储,例如,表名为app,那... 阅读全文
posted @ 2013-04-26 22:26 一枚程序员 阅读(1743) 评论(0) 推荐(0) 编辑
摘要:题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。 关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了)。分析:明显是一道工程性很强的题目,和一般的查找中位数的题目有几点不同。 1. 原数据不能读进内存,不然可以用快... 阅读全文
posted @ 2013-04-23 16:37 一枚程序员 阅读(3306) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示