- 浏览: 18631 次
最新评论
1、首先一点,对于海量数据处理,思路基本上是确定的,必须分块处理,然后再合并起来。
2、对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大。
3、分块处理,再合并。也就是Google MapReduce 的基本思想。Google有很多的服务器,每个服务器又有很多的CPU,因此,100亿个数分成100块,每个服务器处理一块,1亿个数分成100块,每个CPU处理一块。然后再从下往上合并。注意:分块的时候,要保证块与块之间独立,没有依赖关系,否则不能完全并行处理,线程之间要互斥。另外一点,分块处理过程中,不要有副作用,也就是不要修改原数据,否则下次计算结果就不一样了。
4、上面讲了,对于海量数据,使用多个服务器,多个CPU可以并行,显著提高效率。对于单个服务器,单个CPU有没有意义呢?
也有很大的意义。如果不分块,相当于对100亿个数字遍历,作比较。这中间存在大量的没有必要的比较。可以举个例子说明,全校高一有100个班,我想找出全校前10名的同学,很傻的办法就是,把高一100个班的同学成绩都取出来,作比较,这个比较数据量太大了。应该很容易想到,班里的第11名,不可能是全校的前10名。也就是说,不是班里的前10名,就不可能是全校的前10名。因此,只需要把每个班里的前10取出来,作比较就行了,这样比较的数据量就大大地减少了。
2、对于每一块必须找出10个最大的数,因为第一块中10个最大数中的最小的,可能比第二块中10最大数中的最大的还要大。
3、分块处理,再合并。也就是Google MapReduce 的基本思想。Google有很多的服务器,每个服务器又有很多的CPU,因此,100亿个数分成100块,每个服务器处理一块,1亿个数分成100块,每个CPU处理一块。然后再从下往上合并。注意:分块的时候,要保证块与块之间独立,没有依赖关系,否则不能完全并行处理,线程之间要互斥。另外一点,分块处理过程中,不要有副作用,也就是不要修改原数据,否则下次计算结果就不一样了。
4、上面讲了,对于海量数据,使用多个服务器,多个CPU可以并行,显著提高效率。对于单个服务器,单个CPU有没有意义呢?
也有很大的意义。如果不分块,相当于对100亿个数字遍历,作比较。这中间存在大量的没有必要的比较。可以举个例子说明,全校高一有100个班,我想找出全校前10名的同学,很傻的办法就是,把高一100个班的同学成绩都取出来,作比较,这个比较数据量太大了。应该很容易想到,班里的第11名,不可能是全校的前10名。也就是说,不是班里的前10名,就不可能是全校的前10名。因此,只需要把每个班里的前10取出来,作比较就行了,这样比较的数据量就大大地减少了。
发表评论
-
aaa
2018-03-26 17:23 01、前后端安全方案(防篡改、防重放、敏感信息加解密、防XSS攻 ... -
ssssss
2018-03-26 16:16 02015年年度计划 1、熟悉环境、架构、开发流程 2、业务模 ... -
golsing
2018-03-26 16:14 02015年年度计划 1、熟悉环境、架构、开发流程 2、业务模 ... -
ClientServiceRestTemplateImpl
2018-03-10 17:23 628package com.pingan.ff.btoam.dem ... -
ClientService
2018-03-10 17:34 498package com.pingan.ff.btoam.dem ... -
ClientConfig
2018-03-10 17:33 447package com.pingan.ff.btoam.dem ... -
responseDTO
2018-03-10 17:32 572package com.pingan.ff.btoam.dem ... -
配置项
2018-03-10 17:31 497client.connectTimeout=60000 cli ... -
HttpsClientRequestFactory
2018-03-08 20:48 1472package com.pingan.ff.btoam.dem ... -
HttpsTest
2018-03-08 20:23 864package com.pingan.ff.btoam.dem ... -
dfdfdf
2018-03-08 20:22 543<!--连接池管理 --> <bean ... -
sdds
2018-03-08 20:19 54package com.pingan.ff.esb.proxy ... -
ddsd
2018-03-08 20:29 711import java.security.cert.Certi ... -
测试一下
2017-08-23 13:50 589测试测试测试测试测试测试测试 -
面经面经
2017-03-29 19:13 558一、简历 简历里面需要 ... -
浅谈https\ssl\数字证书
2015-03-03 11:15 529http://www.cnblogs.com/P_Chou/a ... -
Java多线程总结之线程安全队列Queue
2015-01-07 15:20 864在Java多线程应用中,队列的使用率很高,多数生产消费模型的 ... -
面试问题
2015-01-07 14:45 587今天被架构师问了一连串的问题,估计问了有一个多小时 ... -
http长连接与短连接
2015-01-05 17:34 5731. HTTP协议与TCP/IP协议的关系 HTTP的长 ... -
ZooKeeper原理
2014-12-30 09:33 650ZooKeeper是一个分布式的,开放源码的分布式应用 ...
相关推荐
从一亿个数中找出最大的100个 或者n个 用了个堆从一亿个数中找出最大的100个 或者n个 用了个堆
在这个场景中,我们需要从一亿个数字中快速找出前100个最小的数字。这通常涉及到排序算法和数据结构的运用,以达到在短时间内找到目标结果。以下是实现这个任务的一些关键知识点: 1. **优先队列(Priority Queue)...
在这个场景中,我们需要从一个包含一亿个数字的集合中快速找出最大的前100个数字,并要求整个过程在3秒钟内完成。这涉及到算法设计、数据结构优化以及Java性能调优等多方面的知识。 首先,我们可以采用优先队列...
在这个场景下,我们需要在包含一亿个数字的集合中找出最大的100个数字,并且要在3秒钟内完成,这对算法的效率提出了极高的要求。 传统的解决方案,如使用冒泡排序或选择排序,时间复杂度至少为O(n^2),对于如此庞大...
而最接近100亿的数,需要将99亿9千万这个数与给定的数字进行比较,找出最接近的组合,即8765300000。 综上所述,理解和掌握数的产生、十进制计数法以及亿以上数的读写,是学习数学和计算机科学的基础,它不仅帮助...
方法2是采用分块策略,比如每100万个数作为一个块,分别找出每个块的最大1万个数,最后再处理剩余的数据找出最大的1万个数。在寻找每个块中第k大的数时,可以利用快速排序的变种,例如“堆排序”或“快速选择”,...
5. 组合数字:利用给定的数字组合出最大和最小的数,要组成最大的数,需将数字按从大到小排列;反之,组成最小的数,则按从小到大的顺序排列。如3、7、1、5、0、8组成的最大六位数是875310,最小五位数是10357。 6....
11. **数的性质**:例如一个四位数,个位数字与百位数字的和为12,十位数字与千位数字的和为9,若个位上和百位上的数字互换,千位上与十位上的数字互换,新数比原数增加2376,通过分析可以找出原数。但此问题的具体...
10个一万是10万,一百万里面有10个十万,10个一千万是一亿。 - 2. 数字由6个百万、7个万和8个一组成,写作6,070,008,读作六百零七万零八。 - 3. 37286754是7位数,4在万位上,表示4万个,2在十万位上,表示20个...
9. **判断题**:涉及到了亿位的概念(1亿包含10个千万或100个百万)、比较数的大小(看最高位不全面)、数位的值(770000中两个7的差值)、多位数的读法(0的读法)以及近似数的估算。 10. **读写题**:要求学生能...
比较数的大小时,从最高位开始比较,如果最高位相同,则比较下一位,直到找出大小关系。例如,10000 > 9999,因为它们都是五位数,而最高位1大于9。 7. **近似数的界限**: 当一个数省略万位后面的尾数后是4万,...
- 通过观察9999乘以1、2、9等的计算结果,找出规律。 12. **数字的读写与排列**: - 如何用给定的数字组合成最大、最小以及特定读法的数。 13. **作图题**: - 画线段、射线和直线的基本操作。 14. **角度计算...
1. 整数的构成与读法:题目中提到的数如“二十九个亿,四百个万,五个千”,这涉及到亿、万、千等数位的概念,以及如何将这些数值组合成一个完整的数并正确读出。 2. 数位的理解:例如,“600600600”中三个6分别...
5. 互质数与积:互质数指的是两个数的最大公约数为1,小表妹和哥哥的岁数乘积为144,需要找出两个互质的数,它们的乘积是144。 6. 百分数应用:男生占全班人数的74%,女生是男生人数的百分比可以通过全班人数减去...
4. 时间与速度的理解:比较四位同学100米赛跑的成绩,找出最快和第三快的选手。 5. 三角形边长关系:构建一个三角形需要满足边长条件,给出两根小棒长度后,求第三根小棒的最短和最长长度。 6. 小数的组合与差值:...
10. **解决问题**:例如找出四舍五入到万位为40万的最大六位数是404999,最小的是395000。对于算式规律题,可以通过观察前几个例子找到规律,如1111×1111=1234321,11111×11111=123454321,推断出111111×111111的...
- 使用特定的数字卡片(如7,5,4,1,0,0)构建不同类型的数,这涉及到数的组合知识,比如找出最大的五位数、最小的五位数,以及需要读出零的数。 9. **角度与几何概念**: - 1周角等于360度,1平角等于180度,...
3. 题目要求找出只读一个零的数,根据中文数字的读法,C选项50000005读作五千万零五,符合要求。 4. 题目要求读出数字149600000,正确读法是一亿四千九百六十万,答案为A。 5. 题目比较数的大小,通过比较每个数的...
通过使用`If...Then`语句,首先比较第一个数`x`与第二个数`y`,然后比较`x`与第三个数`z`,找出最大值并打印。 2. **一元二次方程的实根判断**: 该代码用于判断输入的一元二次方程`ax^2 + bx + c = 0`是否有实根...