学习Hadoop集群环境搭建是Hadoop入门必经之路。搭建分布式集群通常有两个办法: 要么找多台机器来部署(常常找不到机器) 或者在本地开多个虚拟机(开销很大,对宿主机器性能要求高,光是安装多个虚拟机系统就得搞半天……)。 那么,问题来了! 有没有更有可行性的办法? 提到虚拟化,Docker最近很是火热!不妨拿来在本地做虚拟化,搭建Hadoop的伪分布式集群环境。虽然有点大材小用,但是学习学习,练练手也是极好的。 文章比较长,建议先倒杯水,听我慢慢到来…… 先说一下我的思路吧: 先使用Docker构建一个Hadoop运行环境的镜像 然后使用这个镜像分别启动3个容器:1个Master节点,两个Slave节点 在Master节点上配置Slave节点信息 在Master上启动Hadoop 使用Docker搭建Hadoop环境 什么是 Docker? Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.
web.xml中的可以配置默认的欢迎页面。例如 <welecome-file> <welcome-file>index.html</welcome-file> <welecome-file> 域名为www.a.com,则访问这个网址的时候,web容器会自动定向到index.html这个页面。 但是这里有一个问题,index.html必须是一个在webapp目录下存在的静态文件,否则会出404错误!而更多的情况是,我们主页是一个动态页面,如index.action、index.do等,但是配置<welcome-file>index.action</welcome-file>是没有用的,容易依然会去webapp目录下找index.action这个静态页面,结果找不到就会出现404错误。 解决这个问题,一个方案是在webapp下放置index.html,在这个页面中用js跳转到index.
代码测试覆盖率是衡量软件质量的重要指标,但常规的Junit不能对private方法进行测试,那么就会影响我们的覆盖率。 不过有一个办法可以在Junit框架中测试private的方法,那就是反射! 我们知道可以通过反射method.invoke来调用某个方法,但如果方法前面为private怎么办呢?我们可以使用method.setAccessible(true);来跳过安全检查,就可以调用private方法了。原理就这么简单。 这里,我将这个功能封装成一个工具类,单元测试中可以直接调用即可: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class PrivateMethodTestUtils { /** * * @Description:调用只有一个参数的私有方法 * @since 1.0.0 * @Date:2013-1-23 下午2:54:00 * @param methodHostInstance * @param methodName * @param arg * @return Object */ public
都知道通过反射可以直接创建对象的实例,但我们需要得到对象的class。但如果对象是一个泛型,如何获得T.class呢? 干货: public class Test<T> { public T newInstance(){ T instance=null; Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; // …… return instance; }; } 如果有多个泛型呢? public class Test<PK,T> { public T newInstance(){ T instance=null; Class&
用java写了一个带扭曲特性的验证码程序。 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import org.springframework.stereotype.Component; /** * CheckCode.java * * @author King<br/> * * @Description 验证码生成类 * @since 1.