代码改变世界

随笔档案-2013年09月

十道海量数据处理面试题与十个方法大总结(转载)

2013-09-21 19:19 by Batys, 282 阅读, 收藏,
摘要: 第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。或者如下阐述(雪域之鹰):算法思想:分而治之+Hash1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理;2. 阅读全文

设计模式简单说明

2013-09-20 10:39 by Batys, 281 阅读, 收藏,
摘要: 设计模式:一个设计模式描述了一个被证实可行的方案。这些方案非常普遍,是具有完整定义的最常用的模式。一般模式有4个基本要素:模式名称(pattern name)、问题(problem)、解决方案(solution)、效果(consequences)。 常见23种模式概述: 1) 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2) 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。 3) 桥梁模式(Bridge):将抽象部分与它的... 阅读全文

选取两个有序数组中最大的K个值,降序存入另一个数组中

2013-09-19 22:37 by Batys, 580 阅读, 收藏,
摘要: 原题:假设有两个有序的整型数组int *a1, int *a2,长度分别为m和n.试用C语言写出一个函数选取两个数组中最大的K个值(K可能大于m+n)写到int *a3中,保持a3降序,并返回a3实际的长度。函数原型为int merge(int *a3, int *a1, int m, int *a2, int n, int k)解题思路:此题为两个有序数组的合并:设置两个下标索引 i和j,逐个比较a1[i]和a2[j],大的进入a3;当a1或者a2已经全部被排序,就将另一个数组部分拷贝到a3.#includeintmerge(int*a3,int*a1,intm,int*a2,intn,in 阅读全文

程序员面试:青蛙跳台阶问题(变态跳台阶)

2013-09-19 20:31 by Batys, 3175 阅读, 收藏,
摘要: 斐波那契数列(意大利语: Successione di Fibonacci),又译费波拿契数、费波那西数列、费氏数列、黄金分割数列。在数学上,费波那西数列是以递归的方法来定义:用文字来说,就是费波那西数列由 0 和 1 开始,之后的费波那西系数就由之前的两数相加。首几个费波那西系数是(OEISA000045):0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610, 987, 1597, 2584, 4181, 6765, 10946,………………特别指出:0不是第一项,而是第零项。题目1:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳 阅读全文

贪心算法,递归算法,动态规划算法比较与总结

2013-09-15 15:05 by Batys, 7530 阅读, 收藏,
摘要: 一般实际生活中我们遇到的算法分为四类: 一>判定性问题 二>最优化问题 三>构造性问题 四>计算性问题而今天所要总结的算法就是着重解决 最优化问题《算法之道》对三种算法进行了归纳总结,如下表所示:标准分治动态规划贪心算法适用类型通用问题优化问题优化问题子问题结构每个子问题不同很多子问题重复(不独立)只有一个子问题最优子结构不需要必须满足必须满足子问题数全部子问题都要解决全部子问题都要解决只要解决一个子问题子问题在最优解里全部部分部分选择与求解次序先选择后解决子问题先解决子问题后选择先选择后解决子问题分治算法特征: 1)规模如果很小,则很容易解决。//一般问题都能满足2) 阅读全文

storm简介[ZZ]

2013-09-11 08:51 by Batys, 355 阅读, 收藏,
摘要: 场景伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样、更加便捷,同时对于信息的时效性要求也越来越高。举个搜索 场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来、点击、购买啦,相反,如果这个宝贝要等到第二天或者更 久才可以被搜出来,估计这个大哥就要骂娘了。再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是却发现系统在不遗余力 地给他推荐袜子、鞋子,根本对他今天寻找泳镜的行为视而不见,估计这哥们心里就会想推荐你妹呀。其实稍微了解点背景知识的码农们都知道,这是因为后台系统 做的是每天一次的全 阅读全文

逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习

2013-09-03 15:29 by Batys, 16069 阅读, 收藏,
摘要: Mahout学习算法训练模型mahout提供了许多分类算法,但许多被设计来处理非常大的数据集,因此可能会有点麻烦。另一方面,有些很容易上手,因为,虽然依然可扩展性,它们具有低开销小的数据集。这样一个低开销的方法是随机梯度下降(SGD)算法,Logistic回归。该算法是一个连续的(非平行)的算法,但它的速度快,因为在概念图中图13.9所示。最重要的处理大型数据,SGD算法采用恒定的内存量不管输入的大小。这里的输出包含特别感兴趣的两个值。首先,AUC值(一种广泛使用的模型的质量度量)曲线下面积的缩写有一个值0.57。AUC的范围可以从一个完全不正当的模型总是完全0错误的一个模型,1.0这是一个完 阅读全文

mahout分类

2013-09-02 09:57 by Batys, 768 阅读, 收藏,
摘要: 分类看起来比聚类和推荐麻烦多了分类算法与聚类和推荐算法的不同:必须是有明确结果的,必须是有监督的,主要用于预测和检测Mahout的优势mahout的分类算法对资源的要求不会快于训练数据和测试数据的增长速度,而且可以转换为分布式应用(数据规模如果不够大Mahout表现可能不及其他类型的系统)关键词表:Key ideaDescriptionModelA computer program that makes decisions; in classification, the output of the training algorithm is a modelTraining DataSubset 阅读全文