序列化介绍到后面,必然会开始解释其中的存储机制。这里面我想也没什么好讲的,无非是定义一种数据格式,然后按照这个格式存取罢了。
比如,字符串对象Harry会被存为 74 00 05 Harry (00 05是长度,74我想应该是L java/lang/String的简写吧,猜的。和后面的Harry Hacker对应的起来)
类标示符,则以72开头,比如下面的Employee类的完整类描述符:
72 00 08 Employee
E6 D2 86 7D AE AC 18 18 02 (一个唯一标示符,SHA的前8字节)
00 03 (对象个数)
D 00 06 salary(double的 salary对象, 和JNI的类型描述一样一样的)
L 00 07 hireDay (L出现了,具体类型在下面)
74 00 07 Ljava/util/Date; (74也是规定,分号别忘了,呵呵)
L 00 04 name
74 00 12 Ljava/lang/String;
78 (结束了)
70 (无超类)
这事第一次表示的类,如果文件中会再次使用,可以使用一种缩写版:(后面代码跟上部分代码)
40 E8 6A 00 00 00 00 00 (salary的值,double的)
73 (73为规定,后面跟 类描述符 对象数据)
71 00 7E 00 08 (71代表已经已经声明的类,后面跟的序列号,没错,序列化的序列号)
77 08 00 00 00 91 1B 4E B1 80 78 (外部存储,这个后面讨论细节)
74 00 0C Harry Hacker (name的String赋值)
这样,Employee就能被完整复原了。还有一些规定,如75为数组,70为空引用。(有一些是需要上下文解释的,代表的意义可能会不同,如71后面跟的是类描述符还是对象,70是空还是无超类等)
其中,我们可以重写private void readObject(ObjectInputStream in)还有writeObject方法来做一些适配性的动作。而且,我们可以实现External接口,来对序列化进行全权负责,只需实现接口readExternal,writeExternel就可以了。
分享到:
相关推荐
C# xml序列化及反序列化(解析xml为对象及对象转xml保存),方法一反序列化取节点KV值,方法二反序列化取节点标签值,方法三取节点KV值,并增加节点对象数组及节点标签组合反序列化
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven: <groupId>com.github.xsonorg</groupId> <artifactId>xson-core <version>1.0.1 ...
Unity 中使用Protobuf进行序列化和反序列化的Demo
1、包含文件和二进制两种序列化的方式 2、支持类的序列化和STL容器的序列化 3、支持序列化的流自定义(示例中使用的是std::stringstream,也可以使用其他的流)
C#或.net json序列化反序列化,适用于与第三方系统做接口用,实体自动转json字符串,json自动转视图
实现了用三种序列化方式(binary,soap,xml)序列化对象,其中Student对象中还包含图片(用binary和soap),School中没有图片(用XML)。
XML序列化/反序列化类,放到项目中直接使用,很方便。 SerializationHelper
C# 后台序列化Json序列、反序列化Json序列(三种方法)
通过一个章节来讲解序列化与反序列化,对binaryformatter soapformatter xmlserializer这三种序列化的详情讲解,希望对大家有所帮助。
序列化和反序列化的三种形式,C#者必学三种转换
C#Xml序列化与反序列化,适用于与第三方系统做接口,入参和出参为XML,XML自动转实体,实体自动转Xml
10万次序列化,1万次反序列化,毫秒。 阿里序列化时间 1122 1054 1115 阿里反序列化时间 409 423 412 HZS序列化时间 884 864 880 HZS反序列化时间 392 375 394 JAVA7版已经逼近阿里的速度,JAVA8版利用了闭包技术...
海尔2307户户通直播星序列化工具为工厂维修机器使用使用场景:(1)更换flash需要重新进行序列化, 更改stbid或保留stbid不变1.本工具不需要连接工厂数据库,而是直接从HIC2307_NDSCA_xxxxxxxx_xxxxxxxx.dat文件里...
之前自己开发了一个类似于QQ的程序,服务端和客户端之间以 NetWorkStream 来发送数据,但数据这边整个类对象要发送怎么发送呢 ...我觉得 这三套代码 可以解决一切序列化和反序列化问题了!! 都测试过了,都可以!!!
序列化 (serialization):将对象的状态信息转换为可以存储或传输的形式的过程。 与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。 序列化的目的 1、以某种存储形式使...
NET 三种 序列化方式
此程序用到了三层架构,抽象工厂,序列化,反序列化,读写XML文件,一个招聘信息管理系统
weblogic反序列化全版本漏洞利用工具,可执行命令
1、xml序列化的Java3种实现方法 1)Serializable和Externalizable接口Xstream框架2)Simple框架 3)Apache的AXIOM框架 2、XML验证文档的生成工具 trang.jar 3、利用XSD文件的XML3种验证方法 1)Dom4j的SAXValidator ...
1)用泛型结合存储不同的子类对象 2)自定义接口实现功能 3)用序列化和反序列化对对象进行存取