[原创] 如何用Jackson解析含有转义字符的JSON到Java对象?

如果一个JSON字符串里有一个字段,它的值又是一个完整的JSON字符串,那么这时候,它可能会含有转义字符。举个例子,我们有一个文件  codelast.json,它的内容为一行字符串:

{"aaa":"{\"ccc\":\"ccc\",\"ddd\":\"ddd\"}","bbb":{"ccc":"ccc","ddd":"ddd"}}

现在要用Jackson解析它为一个Java对象,怎么做?
阅读更多

[翻译] 在JAVA中,怎样周期性运行一个任务

本文是对这篇文章的翻译:《How to Schedule a Task to Run in an Interval》
我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。

在程序中通常都有在后台周期性运行某些任务的需求。例如,类似于Java垃圾收集的后台运行任务。
我将在本文中向你展示3种不同的实现方法,如下:

[原创] Java动态添加一个目录到classpath中

通常我们写程序,会用到一些配置文件,这些文件与程序在同一个父目录下,配置文件可能放在config之类的目录下,程序中会使用这些配置文件。
我遇到了这么件事情:因为一个特殊需求,需要把配置文件放到jar包中,最终部署出去的只能是一个jar包(所有东西都在jar包里,包括程序和所需的资源),然后在程序中使用 getClass().getResourceAsStream(文件在jar包中的路径) 的方式来读取配置文件。这也倒没什么不爽的,但是在单元测试中怎么办?
阅读更多

[原创](翻译)什么是Java的永久代(PermGen)内存泄漏

本文是我对这篇文章的翻译:What is a PermGen leak? 为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者表示深深的感谢:感谢你们的分享。
阅读更多

[原创]如何添加一个文件/目录到IntelliJ项目的classpath中

以下内容的背景:IntelliJ,Java项目。
在单元测试中,我们经常会使用与生产环境里不同的一些配置文件来为提供参数,而你的程序又是以类似下面的方法来读取配置文件:

String configFileName = "config.properties";
Properties properties = new Properties();
properties.load(MyClass.class.getClassLoader().getResourceAsStream(configFileName));

上面的代码中仅使用了配置文件名,而不是其完整路径,这就导致了可能在IntelliJ中运行一个单独的单元测试的时候,找不到该配置文件,因为你只提供文件名的话,该文件必须要在classpath中,否则是找不到它的。
阅读更多

[原创](翻译)Java版的各种Thrift server实现的比较

本文是我对这篇文章的翻译:Thrift Java Servers Compared,为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道github或原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者和github表示深深的感谢:感谢你们分享了这样好的文章。
       
       
       
Thrift Java Servers Compared
This article talks only about Java servers. See this page if you are interested in C++ servers.
本文仅讨论Java版的Thrift server.如果你对C++版的感兴趣,请参考 这个 页面。
阅读更多

[原创]使用C++(通过Thrift)访问/操作/读写Hbase

无奈,网上关于C++访问Hbase的文章实在太少,所以只好自己折腾一下,然后写出来了。

要使用C++访问Hbase,可以走的途径少之又少,据说当前最好的方法就是通过Thrift来实现:http://thrift.apache.org/

所以本文分成几部分:(1)安装Thrift;(2)用Thrift 生成访问Hbase所需的C++文件;(3)在程序中通过Thrift来访问Hbase。

另外,本文只包含读写Hbase数据的例子,不包含配置Hbase的方法,如需这些内容,请自行搜索。

首先声明一下,本文基于以下环境:
阅读更多

[原创]Java基础知识记录(1)

前言:本文『很傻很天真』,任何稍有Java编程经验的都不用看了。

 

(1)Java文件编译得到class文件,jar包是若干class文件(以及其他一些文件)的集合,如果要在命令行运行jar包中的一个class文件(相当于一个Java程序),可以这样做:

java -cp /root/software/tmp/XXX.jar:/root/software/tmp/lib/* com.abc.calculate.MyClass --date 20101101

其中,-cp 表示指定classpath,后面需要以分号(:)分隔的方式将所有需要用到的依赖jar包添加进来,此处添加了 /root/software/tmp/XXX.jar 包以及 /root/software/tmp/lib/ 目录下的所有jar包。

com.abc.calculate.MyClass 是要运行的jar包 XXX.jar 中的一个class文件,这么长的名字是它在jar包中的路径全名。

--date是传给 MyClass 程序命令行参数。还可以带更多的参数,要看你在Java程序中是如何写的代码。

阅读更多