本文主要是介绍java 高性能序列化,使用JID来进行Java对象的高性能序列化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用JID来进行Java对象的高性能序列化以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JID 是一个用来反序列化 更新和重新序列化 Map 对象 在 i GHz 处理器的机器上 完成 条目的操作仅需 毫秒 序列化和重新序列化的时间很大程度上依赖于表条目的大小和复杂度 增量式的序列化和反序列化用于达到高性能
今天我试验了下使用 JID 进行 Java 对象的序列化过程 现将这个过程与大家分享 至于在何种场景下使用大家自己发挥
首先 JID 依赖于 JActor 和 SLF J 你下载的 JID 压缩包中就包含这二者的 jar 文件
大家先不需要关心代码中牵扯的一些类是作何用途的 先把例子跑起来!
我们这里假设要对一个 User 对象进行序列化 User 对象如下
/**
* 序列化对象
* @author Winter Lau
*/
public static class User extends AppJid {
private StringJid getNameJid() throws Exception {
return (StringJid) _iGet( );
}
private IntegerJid getAgeJid() throws Exception {
return (IntegerJid) _iGet( );
}
public String getName() throws Exception {
return getNameJid() getValue();
}
public void setName(String name) throws Exception {
getNameJid() setValue(name);
}
public int getAge() throws Exception {
return getAgeJid() getValue();
}
public void setAge(int age) throws Exception {
getAgeJid() setValue(age);
}
}
然后每个要做序列化的对象都需要有个对应的工厂类 这里是 UserFactory
public static class UserFactory extends AppJidFactory {
final public static UserFactory fac = new UserFactory();
public UserFactory() {
super( User JidFactories STRING_JID_TYPE JidFactories INTEGER_JID_TYPE);
}
protected User instantiateActor() throws Exception {
return new User();
}
}
其中特别注意 UserFactory 构造函数里的 User 这个参数 下面需要用到
接下来就是测试程序
public static void main(String[] args) throws Exception {
JAFactory factory = new JAFactory(){{(new JidFactories()) initialize(this);}};
factory registerActorFactory(UserFactory fac);
RootJid rootJid = (RootJid) factory newActor(JidFactories ROOT_JID_TYPE);
long ct = System currentTimeMillis();
rootJid setValue( User );
User user = (User)rootJid getValue();
user setName( Winter Lau );
user setAge( );
int slen = rootJid getSerializedLength();
byte[] sdatas = new byte[slen];
rootJid save(sdatas );
rootJid load(sdatas slen);
User user = (User)rootJid getValue();
System out printf( %dms >%s:%d\n (System currentTimeMillis() ct) user getName() user getAge());
}
程序讲解
首先需要构造 JAFactory 这是使用 JID 必须的一步(第 行)
然后注册我们需要进行序列化的类(第 行)
构造 RootJid 这也是必须的一步(第 行)
rootJid setValue( User ) 这是设置要进行序列化的对象类型 这个 User 就是我们在 UserFactory 定义的字符串
对 User 对象实例进行值设置
使用 rootJid save 方法进行序列化 就是把对象转称 byte 数组
最后一步是演示从 byte 数据中加载对象并打印对象的属性
这便是一个完整的使用 JID 进行自定义对象的序列化和反序列化的过程 如果你是使用 Java 原生的一些数据类型 就不需要自行创建类对象
这里需要很注意的是 UserFactory 中构造函数的参数顺序 第一个参数是类型名称 接下来的每个参数是对应每个属性的类型 这个必须严格对应 User 类中的 _iGet(xx) 中 xx 的值 lishixinzhi/Article/program/Java/hx/201311/25813
分页:123
这篇关于java 高性能序列化,使用JID来进行Java对象的高性能序列化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!