Java 生产者消费者问题



Java 生产者消费者问题

在JAVA中,一共有四种方法支持同步,其中三个是同步方法,一个是管道方法。
1. 方法wait()/notify()
2. 方法await()/signal()
3. 阻塞队列方法BlockingQueue
4. 管道方法PipedInputStream/PipedOutputStream
下面我们看各个方法的实现:
1. 方法wait()/notify()
wait()和notify()是根类Object的两个方法,也就意味着所有的JAVA类都会具有这个两个方法,为什么会被这样设计呢?我们可以认为所有的对象默认都具有一个锁,虽然我们看不到,也没[......]

Read more

Hadoop MapReduce 减小数据倾斜的性能损失



Hadoop MapReduce 减小数据倾斜的性能损失

常见的数据倾斜有以下几类:
数据频率倾斜——某一个区域的数据量要远远大于其他区域。
数据大小倾斜——部分记录的大小远远大于平均值。
在map端和reduce端都有可能发生数据倾斜。在map端的数据倾斜会让多样化的数据集的处理效率更低。在reduce端的数据倾斜常常来源于MapReduce的默认分区器。
数据倾斜会导致map和reduce的任务执行时间大为延长,也会让需要缓存数据集的操作消耗更多的内存资源。

解决方案:
在这个方案中将讨论多个减轻reduce数据倾斜的性能损失的方法。
方法1:抽样和范围分区
Ha[......]

Read more

数据挖掘十大经典算法(6) PageRank

数据挖掘十大经典算法(6) PageRank

PageRank是Google算法的重要内容。2001年9月被授予美国专利,专利人是Google创始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。
Google的 PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票, 被链接的越多,就意味着被其他网站投票越多。这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自 学术[......]

Read more

数据挖掘十大经典算法(7) AdaBoost

数据挖掘十大经典算法(7) AdaBoost

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器 (强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权 值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用adaboost分类器可以排 除一些不必要的训练数据特徵,并将关键放在关键的训练数据上面。
目前,对adaboost算法的研究以及应用大多集中[......]

Read more

数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification

数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification

邻近算法


KNN算法的决策过程

k-Nearest Neighbor algorithm
右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最[......]

Read more

数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes

数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes

贝叶斯分类器
贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。目前研究较多的贝叶斯分类器主要有四种,分别是:Naive Bayes、TAN、BAN和GBN。
贝叶斯网络是一个带有概率注释的有向无环图,图中的每一个结点均表示一个随机变量,图中两结点 间若存在着一条弧,则表示这两结点相对应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的。网络中任意一个结点X 均有一个相应的条件概率表(Conditional[......]

Read more

数据挖掘十大经典算法(10) CART: 分类与回归树

数据挖掘十大经典算法(10) CART: 分类与回归树

如果一个人必须去选择在很大范围的情形下性能都好的、同时不需要应用开发者付出很多的努力并且易于被终端用户理解的分类技术的话,那么Brieman, Friedman, Olshen和Stone(1984)提出的分类树方法是一个强有力的竞争者。我们将首先讨论这个分类的过程,然后在后续的节中我们将展示这个过程是如何被用来预测连续的因变量。Brieman等人用来实现这些过程的程序被称为分类和回归树(CART, Classification and Regression Trees)方法。
分类树
在分类树下面有两个关键的思想。第一个是关于[......]

Read more

win7如何安装maven、安装protoc

win7如何安装maven、安装protoc一、安装mvaven包

1.首先我们下载maven包

apache-maven-3.2.1.zip
链接:http://pan.baidu.com/s/1jG9QhWa 密码:vmee

2.配置maven

(1)解压到E盘

(2)进入环境变量

(3)配置环境变量

配置M2_HOME
变量名:

  1. M2_HOME

复制代码

变量值

  1. E:\apache-maven-3.2.1

复制代码

配置path
在pat[......]

Read more

Hadoop2.4.0 Eclipse插件制作及问题记录

Hadoop2.4.0 Eclipse插件制作及问题记录

参考hadoop2x-eclipse-plugin
说说我的整个制作过程吧:
想导入到eclipse中制作,但是导入进去之后觉得麻烦就算了,直接在win7 64位、JDK1.6、ANT1.8的环境下以命令行运行
依葫芦画瓢,设置eclipse的目录和hadoop的目录,在没有修改任何文件的情况下直接运行

D:\SDK\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin>ant jar -Dversion=2.4.0 -Declipse.home=D:[......]

Read more

如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码

如何获取hadoop2.4源码并使用eclipse关联hadoop2.4源码我们如果想搞开发,研究源码对我们的帮助很大。不明白原理就如同黑盒子,遇到问题,我们也摸不着思路。所以这里交给大家
一.如何获取源码
二.如何关联源码

一.如何获取源码

1.下载hadoop的maven程序包

(1)官网下载
这里我们先从官网上下载maven包hadoop-2.4.0-src.tar.gz。
官网下载地址

对于不知道怎么去官网下载,可以查看:新手指导:hadoop官网介绍及如何下载hadoop(2.4)各个版本与查看hadoop API介绍

(2)网盘下载
也可以从[......]

Read more