`

java对象序列化过程

    博客分类:
  • J2SE
 
阅读更多

一、

 http://bbs.csdn.net/topics/390300026?page=1

 在做网络传输消息的程序。为了适应不同的平台,我想将对象序列化,后再传输,另一端进行反序列化。
但是这样问题就来了,反序列化的时候,不知道反序列化的类型,而且关于多态对象,更是棘手。而且
如何确保一个对象完成的传输过来。

1、看看protobuf
google开源的库,帮你实现序列化反序列化,跨平台的

 

2、boost:serialize库可以把对象序列成二进制或xml串,然后传给socket,接收方如果是同一语言写的就能反序列,且支持继承,不过被序列的类要加一点代码...被序列的类型可以通过约定的数字符号夹在数据前面.
BOOST这种方法,比较不好用。
你一般是怎么序列化的。在SOCKET流中可能有几个对象。那么怎么反序列化?这是我最纠结的地方。

 

3、一个大类,里面有vector<>,list<>等成员,boost就能序列化,将一个协议封装成一个类,只要在前面加上这个类的类型和长度,然后接收方只要序列化一个类就可以,而不是多个,只要你不是指针对象就可以(据说也能处理)...
我曾将一幅曲线图的数据,打包成链表传递出去,用的就是boost...

 

二、

实体类实现序列化接口,才能存到数据库吗?那为什么。。
@Entity
public class Person {

@Id @GeneratedValue
private Integer id;
private String name;
private Integer age;
------------------------------------------------
可是我这个实体类,没实现序列化那个接口,也能存到数据库,这是为什么呢?
想不通!我是用的注解和hibernate框架弄的!

难道说不实现序列化接口也能保存数据?不应该啊。。

 

1、简单的说:
对象的序列化 是在 对象进行保存和传输的时候 进行的,如果没有序列化,速度和完整性都会收到影响。
而你的实体类 并没有对对象进行保存,只是对对象的成员的值进行保存

2、只是建议对实体类进行序列化
因为些软件要对对象进行保存 如果软件崩溃 可以通过保存的对象信息进行恢复

 

3、对象经常要通过IO进行传送,让你写程序传递对象,你会怎么做?把对象的状态数据用某种格式写入到硬盘,Person->“zxx,male,28,30000”?Person,既然大家都要这么干,并且没有个统一的干法,于是,sun公司就提出一种统一的解决方案,它会把对象变成某个格式进行输入和输出,这种格式对程序员来说是透明(transparent)的,但是,我们的某个类要想能被sun的这种方案处理,必须实现Serializable接口
ObjectOutputStream.writeObject(obj);
Object obj = ObjectInputStream.readObject();
假设两年前我保存了某个类的一个对象,这两年来,我修改该类,删除了某个属性和增加了另外一个属性,两年后,我又去读取那个保存的对象,或有什么结果?未知!sun的jdk就会蒙了。为此,一个解决办法就是在类中增加版本后,每一次类的属性修改,都应该把版本号升级一下,这样,在读取时,比较存储对象时的版本号与当前类的版本号,如果不一致,则直接报版本号不同的错!

 

4、当某个类需要存到文件或者通过网络传输的话就必须实现此接口
否则的话,在你存到文件时或者传输的时候就会报没有实现此接口的异常!

 

5、

分享到:
评论

相关推荐

    介绍Java对象序列化使用基础

    序列化的过程就是对象写入字节流和从字节流中读取对象。...对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。

    Java对象的序列化和反序列化实践

     把Java对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为Java对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列地保存到硬盘上,通常存放在一个文件中...

    Java对象序列化使用基础

    所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。

    深入探索Java对象的序列化

    Serializable有一个子接口Externalizable,实现Externalizable接口的类可以自行控制对象序列化荷反序列化过程。 一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。 实现了序列化接口的类,如果...

    Java对象的序列化与反序列化

     Java对象的序列化与反序列化  在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都可以复用该对象。但是,我们创建出来的这些Java对象都是存在于JVM的堆内存中的。只有JVM处于运行状态的...

    java对象映射器(基于jackson将Java对象转为json,或者将json转为Java对象)

    答:将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] 为什么用它? 答:我数据库中的主键是使用雪花算法生成的,就是因为用id的位数太多,导致在...

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    对象序列化是Java编程中的必备武器 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第4页。 5.2.2 序列化应用 当你想把内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在...

    Java序列化的机制和原理

    Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。……

    java-Hadoop序列化

     反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。  Java序列化(java.io.Serializable)  Hadoop序列化的特点  Hadoop的序列化格式:Writable  序列化格式特点:  紧凑:高效...

    java序列化和反序列化,面试必备

    意义:序列化机制允许将实现序列化的Java对象转换为字节序列,并将字节序列保存在磁盘中,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使地对象可以脱离程序的运行而独立存在。 使用场景:所有在网络上...

    java序列化和反序列化

     序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。  序列化的二种形式: 1.对象转成xml 2.对象转成二进制文件

    JSMutable:Java中对象序列化的库

    它是由迭戈(Diego)使用MIT许可证创建的Java对象序列化库,该库在主要的序列化方法和对继承jsm.Mutable的类的结构的验证中使用了反射式编程。 对于那些想知道如何使用自反编程的Java框架序列化对象的人,此项目是您...

    WEBSphere反序列化漏扫.rar

    序列化是让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信、对象持久化存储。 Java 序列化是指把 Java 对象转换为字节序列的过程,便于保存在内存、文件、数据库中,ObjectOutputStream类的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    3分钟读阿里Java手册: 序列化

    序列化:将数据对象转换为二进制的过程称之为序列化(Serialization) 反序列化:将二进制流恢复为数据对象称之为反序列化(Deserialization) 序列化方式 Java原生序列化 Java类通过实现Serializable接口实现该类对象的...

    深入浅析Java Object Serialization与 Hadoop 序列化

    序列化是指将结构化对象转化为字节流以便在网络上传输或者写到磁盘永久存储的过程。下面通过本文给大家分享Java Object Serialization与 Hadoop 序列化,需要的朋友可以参考下

    Java中对象的序列化方式克隆详解

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走...这篇文章主要给大家介绍了Java中对象的序列化方式克隆,需要的朋友可以参考借鉴,下面来一起看看吧。

    实例分析java对象的序列化和反序列化

    序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式...

    序列化和反序列化1

    序列化ID 两个类的序列化ID相同才能保证反序列的对象是一致private static final long serialVersionUID在序列化过程中,

Global site tag (gtag.js) - Google Analytics