关闭

使用JID来进行Java对象的高性能序列化

发表于:2013-3-04 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:红薯    来源:51Testing软件测试网采编

  JID 是一个用来反序列化、更新和重新序列化 Map 对象,在 i5 2.53GHz 处理器的机器上,完成 10000 条目的操作仅需 4 毫秒。序列化和重新序列化的时间很大程度上依赖于表条目的大小和复杂度,增量式的序列化和反序列化用于达到高性能。

  今天我试验了下使用 JID 进行 Java 对象的序列化过程,现将这个过程与大家分享,至于在何种场景下使用大家自己发挥。

  首先 JID 依赖于 JActor 和 SLF4J ,你下载的 JID 压缩包中就包含这二者的 jar 文件。

  大家先不需要关心代码中牵扯的一些类是作何用途的,先把例子跑起来!

  我们这里假设要对一个 User 对象进行序列化,User 对象如下:

  1. /**  
  2.  * 序列化对象  
  3.  * @author Winter Lau  
  4.  */ 
  5. public static class User extends AppJid {  
  6.     private StringJid getNameJid() throws Exception {  
  7.         return (StringJid) _iGet(0);  
  8.     }  
  9.       
  10.     private IntegerJid getAgeJid() throws Exception {  
  11.         return (IntegerJid) _iGet(1);  
  12.     }  
  13.       
  14.     public String getName() throws Exception {  
  15.         return getNameJid().getValue();  
  16.     }  
  17.       
  18.     public void setName(String name) throws Exception {  
  19.         getNameJid().setValue(name);  
  20.     }  
  21.       
  22.     public int getAge() throws Exception {  
  23.         return getAgeJid().getValue();  
  24.     }  
  25.       
  26.     public void setAge(int age) throws Exception {  
  27.         getAgeJid().setValue(age);  
  28.     }  
  29. }

  然后每个要做序列化的对象都需要有个对应的工厂类,这里是 UserFactory:

  1. public static class UserFactory extends AppJidFactory {  
  2.     final public static UserFactory fac = new UserFactory();  
  3.     public UserFactory() {  
  4.         super("User", JidFactories.STRING_JID_TYPE, JidFactories.INTEGER_JID_TYPE);  
  5.     }  
  6.     protected User instantiateActor() throws Exception {  
  7.         return new User();  
  8.     }  
  9. }

  其中特别注意 UserFactory 构造函数里的 "User" 这个参数,下面需要用到。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号