什么是Java序列化?为什么序列化?序列化有哪些方式?
先普及一下,计算机中无法识别一个基本单元【字节】来表示,必须经过“翻译”才能让计算机理解人类的语言,这个翻译过程就是【编码】,通常所说的字符转换为字节。 ?有I/O的地方机就会涉及编码,现在几乎所有的应用程序都涉及网络I/O和磁盘I/O,而数据传输时都是以字节为单位的,所以所有的数据都必须能够序列化为字节。 ?
什么是Java序列化? 简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),也就是将对象的内容进行流化。 JAVA序列化有哪些方式(性能由低至高) public?void?mywriteMethod(?OutputStream?stream,?MyClass?toWrite?)?throws?IOException? java通常在什么情况下用到序列化? 我们的Java程序必须要运行在Java虚拟机中,那么在同一个Java虚拟机进程中,换句话说是在同一快内存空间里面,什么地方需要用此对象,直接传递该对象的引用就可以了,我们想调某一个对象的方法,通过该对象的引用就可以了,传过去就可以了;那么我问你,如果是不同的Java虚拟机进程呢?不同的内存空间呢?甚至我北京的计算机的Java虚拟机中的某一个类,需要使用广州的某台计算机上的某个Java对象呢?怎么办?这是不同的内存空间,你怎么调?补充:对象的序列化技术,实现的手段是通过Object流,那么我上面所说的需求,你就可以通过对象序列化,将此对象序列化之后得到一些“内容”,通过网络传输这部分“内容”,从广州的服务器上将一个对象序列化之后传过来,到了我北京的服务器上,再通过反序列化,在北京的服务器内存中“造出一个对象出来”,这个对象和你序列化之前广州服务器上的对象是一样的,ok,你可以随便调方法了;补充:对象的序列化技术在EJB3.0中得到广泛的使用,分布式的架构,远程方法调用(RMI),那肯定要用到对象序列化;客户端通过JNDI查找到某一个EJB,那么你调了该企业Bean的方法,传近去的这个参数是需要序列化的,该方法的返回值,也是要序列化传过来的;补充:对象的序列化就是可以将对象序列化之后便于在网络上传输,或者保存到物理介质上;比方说你做了个游戏,你玩了一半你想存盘,那么存盘,就可以简单理解为将当前游戏运行的所有对象序列化保存到硬盘上,然后你再次玩的时候,你读取存档,就是反序列化,“再弄出这些对象出来”,继续运行。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |