2013年1月月 发布的文章

eclipse的 checkstyle插件的安装

软件准备

IDE:Eclipse
Checkstyle插件:
net.sf.eclipsecs-updatesite_5.6.0.201209221626-bin.zip
注意:checkstyle不同版本的自定义规则写法不同,我们使用统一版本,方便统一修改和升级。
其他:CreatePluginsConfig工程(协助安装插件的)
youku_Checkstyle_Checks.xml(自定义checkstyle检查规则配置文件)

安装步骤

在eclipse安装文件夹内创建myplugins文件夹(路径、文件夹名称可以随便定义,这里建议),如下图:

创建myplugins文件夹

创建myplugins文件夹


在myplugins文件夹下创建checkstyle文件夹,并将net.sf.eclipsecs-updatesite_5.6.0.201209221626-bin.zip解压到该文件夹内
解压checkstyle包

解压checkstyle包


导入CreatePluginsConfig工程,打开类CreatePluginsConfig.java
修改下图所示路径,
修改checkstyle插件路径

修改checkstyle插件路径


运行该main方法,控制台会输出一段字符
输出一段字符

输出一段字符


将该段字符添加到bundles.info文件末尾
添加到bundles.info

添加到bundles.info


重启eclipse,查看window->preferences下是否出现checkstyle,下图为安装正确
验证安装成功

验证安装成功

checkstyle的配置

在上图打开的checkstyle界面中,点击new按钮,按照图中所示配置,完成后点击OK。在上图的界面中将刚配置的自定义规则选择为默认。

验证安装成功

验证安装成功


选择某一工程,右键选择properties,按照下图,选择适当项。
开启checkstyle的检查

开启checkstyle的检查

验证配置是否正确

打开java文件,如下图所示,黄色部分就是checkstyle检查出来的问题

验证checkstyle是否开启

验证checkstyle是否开启

HDFS开发MapReduce开发-Hadoop入门三

HDFS开发
Java API详解
FuseHDFS
WebHDFS Restful API
MapReduce实战
第一个MapReduce项目
如何用其它语言开发MapReduce应用
MapReduce常用算法(Sort、Index、Join、IF-IDF等)

认识hdfs和MapReduce-Hadoop入门二

Hadoop分布式文件系统(HDFS)
什么是HDFS
HDFS设计目标
HDFS系统特点
HDFS工作原理
HDFS服务进程
HDFS实战
Hadoop安装
HDFS命令行工具
启动、停止HDFS服务
如何查看HDFS日志
查看HDFS Web控制台
HDFS配置参数
MapReduce分布式计算框架
什么是MapReduce
MapReduce服务
MapReduce工作机制
MapReduce调度管理
MapReduce实战
运行MapReduce任务
MapReduce参数设置
启动、停止MapReduce服务
如何查看MapReduce日志
查看MapReduce Web控制台
集群规划
系统及硬件推荐配置
集群性能评估
集群维护与管理
查看集群状态
模拟集群失效
添加删除节点
数据平衡
元数据备份
文件数据跨集群拷贝
集群升级
Ganglia(运维工具)
Ganglia简介
Ganglia与Hadoop的集成
Hadoop中可监控的项目介绍

eclipse注释模板及导入

java代码规范中要求必须写必需的注释,利用eclipse,导入注释模板,可以简化我们日常的开发工作。准备好注释配置文件commentTemplate.xml,下面给出的一个注释的模板:

<?xml version="1.0" encoding="UTF-8"?><templates><template autoinsert="true" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**
 * @return the ${bare_field_name}
 */</template><template autoinsert="true" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**
 * @param ${param} the ${bare_field_name} to set
 */</template><template autoinsert="true" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**
 * ${tags}
 */</template><template autoinsert="true" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/**
 * ${user}
 */</template><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment">/**
 * ${todo}:
 *
 * @author ${user}
 * @version 1.0, ${date}/${time}
 *
 */</template><template autoinsert="false" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment">/**
 *
 */</template><template autoinsert="false" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/**
 * ${todo}:
 *
 * ${tags}
 */</template><template autoinsert="true" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment">/* (non-Javadoc)
 * ${see_to_overridden}
 */</template><template autoinsert="true" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/**
 * ${tags}
 * ${see_to_target}
 */</template><template autoinsert="false" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">${filecomment}
${package_declaration}
/**
 * ${todo}:
 *
 * @author ${user}
 * @version 1.0, ${date}/${time}
 *
 */
${typecomment}
${type_declaration}</template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">
</template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">
</template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">
</template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">
</template><template autoinsert="false" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">// ${todo} Auto-generated catch block&#13;
${exception_var}.printStackTrace();</template><template autoinsert="true" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody">// ${todo} Auto-generated method stub
${body_statement}</template><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">${body_statement}
// ${todo} Auto-generated constructor stub</template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};</template></templates>

导入步骤:

上传配置文件

上传配置文件


上传配置文件

上传配置文件


注意:commentTemplate.xml中的${user}会获取到本机的电脑的用户,可以将${user}在xml文件中换成自己的姓名,如下图:
修改用户信息

修改用户信息


另,Version信息在代码的类或方法自己修改

java内部类及四种内部类的实现方式

一、内部类定义:
内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。
二、为何要内部类?
a、内部类提供了某种进入外围类的窗户。
b、也是最吸引人的原因,每个内部类都能独立地继承一个接口,而无论外围类是否已经继承了某个接口。
因此,内部类使多重继承的解决方案变得更加完整。
在项目中,需要多重继承,如果是两个接口,那么好办,接口支持多重继承。
如果是两个类呢?这时只有使用内部类了。
三、四种内部类:
1)静态内部类:
1.必须以static关键字标注
2.只能访问外部类中的静态的成员变量或者是静态的方法
3.访问一个内部类使应该这样outerClass.innerClass inter = new outerClass.innerClass();不能直接实例化内部类
2)成员内部类:
1.定义在一个类的内部,但是没有static关键字修饰
2.生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
3.对外部类变量的引用outClass.this.variale
4.可以访问外部类的静态与非静态方法
3)局部内部类:
1.局部内部类指的是定义在一个方法中的类
2.只有在当前方法中才能对局部内部类里面的方法以及变量进行访问
3.局部内部类只能访问其所在方法的final类型变量
4)匿名内部类:
隐式的继承一个父类或者是实现某个接口