论坛首页 Java企业应用论坛

Java序列化机制的基本知识

浏览 33698 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-07-18  
redlly 写道
承认错误。robbin分析得很深刻,应该动手亲自验证。
不过在这里也证实了我的说法部分还是正确,序列化还是很占资源的后的对象体积这里达到92K,数据不过是:
引用
obj.setAge(29);
                obj.setName("fankai");

而把这一系列帖子都保存下来作为文本文件也不过10来K。
所以不宜构造巨大的dto,因为其中很多属性可能根本用不着,而可以通过粒度相对较小的dto构造相对复杂的domain object.


我服了你! 请看清楚点,序列化生成的文件是92Bytes,而不是92KBytes

对比删除两个对象属性后文件体积是45Bytes,而删除前是92Bytes,两个属性的类型信息和属性值仅仅占用了47Bytes,已经少到不能再少了!
0 请登录后投票
   发表时间:2005-07-19  
序列化在 Effective Java 中讲得很清楚啊, 一般认为只声明实现 implements 接口, 不提供自定义的序列化形式是不负责任的做法, 这样可能导致比较多的问题比如类的不同版本之间的兼容性, 看看 Effective Java 中的条目吧


    谨慎地实现 Serialiable
   
    为了继承而设计的类应该很少实现 Serialiable, 接口也应该很少会扩展它. 如果违反了这条规则, 则扩展这个类或者实现这个接口的程序员会背上沉重的负担.
   
     若没有认真考虑默认序列化形式是否合适, 则不要接受这种形式
  
    即使你确定了默认序列化形式是合适的, 通常你仍然要提供一个 readObject方法以保证约束关系和约束性
  
    不管你选择了哪种序列化形式, 你都要为自己编写的每个可序列化的类声明一个显式的序列版本 UID (serialVersionUID)

   

从上面的结论看来, 实现了 Serialiable 接口并有比较好的实现的 OpenSource 代码几乎寥寥可数  , JDK 里的情况要好一些
0 请登录后投票
   发表时间:2005-07-19  
domain object要传到client端吗?如果这样,我改变了它里面的业务逻辑,起不是要更新所有的client端?假设client用SWing开发。
0 请登录后投票
   发表时间:2005-07-25  
范凯分析的不错啊...pf
0 请登录后投票
   发表时间:2007-03-28  
只要你的JVM classloader可以load到这个类,那么类方法指令自然就可以获得。序列化

能不能介绍一下JVM是如何获得指令的,毕竟系列化的时候根本就没有任何关于方法的描述.请指点
0 请登录后投票
   发表时间:2007-03-28  
........序列化的基础知识,LZ真该好好补一补了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics