Java HttpClient 4.x的用法(Get篇)

HttpClient是一个经典的Java的HTTP客户端,当升级到4.x后,其API发生了很大变化,下面以带参数的HTTP Get为例,说说如何使用。

 

Java对象的深拷贝和克隆

在有的时候,我们希望对Java对象执行“深拷贝”。

在Java中,没有提供类似的C++的拷贝构造函数,但是提供了默认的”克隆”接口 Clonable。

如果我们要对一个只包含基础类型(int / long /String)的对象进行克隆,只需要实现Clonable并实现clone()函数即可。

如下:

如果要克隆一个引用了其他对象的Object,就要复杂一些了。
[crayon-54733385b8a875[......]

继续阅读

使用异步HTTP提升客户端性能(HttpAsyncClient)

大家都知道,应用层的网络模型有同步、异步之分。

同步,意为着线程阻塞,只有等本次请求全部都完成了,才能进行下一次请求。
异步,好处是不阻塞当前线程,可以“万箭齐发”的将所有请求塞入缓冲区,然后谁的请求先完成就处理谁。

大家也注意到了,同步模式阻塞的只是“线程”。实际上,在异步模式流行之前,人们也经常用多线程的方式处理并发请求。然而,随着数据规模的不断加大,线程开销所带来的CPU、内存剧增,因此这种方法的应用比较有限。

近几年来,随着异步处理方案在node.js、Nginx等系[......]

继续阅读

关于Maven中的version和classifier

今天,在引用mrunit的时候,第一次知道maven中除了version,还有更细粒度的classifier。

我们直接看个例子,要引用mrunit,在maven repo官网查询到gradle的写法为:

然而,在执行gradew编译的时候,报错:

这个很奇怪的…

进入http的repo看一下:

Screenshot from 2014-11-10 10:42:58

果然发现问题了,具体的jar包并[......]

继续阅读

如何拓展Hadoop的InputFormat为其他分隔符

在Hadoop中,常用的TextInputFormat是以换行符作为Record分隔符的。

在实际应用中,我们经常会出现一条Record中包含多行的情况,例如:

此时,需要拓展TextInputFormat以完成这个功能。

先来看一下原始实现:

根据上面的代码, 不难发现,换行符实际上是由”textinputformat.record.delim[......]

继续阅读