好贷网好贷款

Java对象序列化给分布式计算带来的方便 (转)

发布时间:2016-12-5 2:26:32 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Java对象序列化给分布式计算带来的方便 (转)",主要涉及到Java对象序列化给分布式计算带来的方便 (转)方面的内容,对于Java对象序列化给分布式计算带来的方便 (转)感兴趣的同学可以参考一下。

在面向对象程序语言中做分布式计算的时候,经常需要将对象在不同的主机之间传输,我这次在实现分布式计算的时候,需要将一个计算对象从中央服务器Server分发给所有的客户端client。 通过网络TCP,建立Socket,传输一个对象,就需要将对象转换成一段字节流,也就叫做对象的序列化。同时,也要求可以从这段字节流,创建出对应的对象出来。 C++里面的做法就是在每个类里面实现两个接口函数,自己通过写读和写对象的方法,来实现序列化。因为每个类的成员变量的值和成员变量的类型作者自己肯定晓得,所以就需要自己来通过把一个个成员变量写到流里面,最终实现了对象到字节流的转换。 C++里面针对纯数据类型的结构体,就是成员变量没有指针的对象的话,还可以通过拷贝内存块到字节流的方法memcpy,也可以很容易实现序列化,但是这只能是针对成员变量都是数据类型,没有指针类型的对象。 在Java里面就比较方便了,直接通过实现java.io.Serializable接口,JVM就能自动来将类实现序列化。同时,java.io.Serializable接口没有任何接口函数,只是一个空接口,唯一的作用就是标志一下这个类是可以序列化。 其实,Java里面的对象序列化,是JVM在做的,因为JVM可以掌控整个对象的内部数据结构,就可以简单遍历树的方法,来实现把一个对象的所有成员变量写到字节流里面。当然,居然怎么做的,我也不太清楚,但是所有JVM来说,要做这一点还是很容易的。 Java里面,几乎所有的类只要实现了java.io.Serializable接口,就可以实现序列化。但是要求这个类里面的所有成员变量也是可以序列化的。比如类A有个成员变量对象是类B,如果A能序列化,要求B也要能够序列化,也就是A实现了java.io.Serializable,要求B也一定实现java.io.Serializable。 网上关于具体实现序列化的Sample代码很多了,我这里只是贴出一段参考: 序列化对象都是通过Java的ObjectInputStream和ObjectOutputStream来实现的。 写:         ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(A);        读:   ObjectInputStream ios =new ObjectInputStream(is);A a=(A)ios.readObject();

上一篇:在可执行jar中动态载入第三方jar(转贴)
下一篇:利用WinInet实现网页代码截取

相关文章

相关评论