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

Posted

篇首语:知识就是力量,时间就是生命。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用JID来进行Java对象的高性能序列化相关的知识,希望对你有一定的参考价值。

使用JID来进行Java对象的高性能序列化  以下文字资料是由(全榜网网www.cha138.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 的值

cha138/Article/program/Java/hx/201311/25813

相关参考

知识大全 Java对象序列化与RMI

Java深度历险:Java对象序列化与RMI  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于

知识大全 Java中的强大武器--对象的序列化

Java中的强大武器--对象的序列化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  所谓对象序列

知识大全 浅谈Java对象的序列化和反序列化

浅谈Java对象的序列化和反序列化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当两个进程在进

知识大全 ios开发如何进行对象序列化和反序列化

cha138/Article/program/yd/201404/30432

知识大全 Java程序性能优化-对象复用“池”(5)

Java程序性能优化-对象复用“池”(5)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb

知识大全 Java程序性能优化-对象复用“池”(1)

Java程序性能优化-对象复用“池”(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb

知识大全 Java程序性能优化-对象复用“池”(3)[1]

Java程序性能优化-对象复用“池”(3)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java程序性能优化-对象复用“池”(4)[2]

Java程序性能优化-对象复用“池”(4)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java程序性能优化-对象复用“池”(4)[1]

Java程序性能优化-对象复用“池”(4)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java程序性能优化-对象复用“池”(2)[2]

Java程序性能优化-对象复用“池”(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!