在JAVA中什么叫序列化和反序列化?

Python018

在JAVA中什么叫序列化和反序列化?,第1张

java对象实现了序列化就可以以对象的形式在流中传输。不管是文件流,还是Socket流都可以\x0d\x0a用ObjectInputStream ObjectOutputStream 来读写对象。\x0d\x0a并不是所以类都可以序列化,一般需要序列化的对象是那些实体类。什么Bean,pojo,vo貌似都是一个意思吧。。。还是有一些对象是不能序列化的,Socket对象是不能的。还有一些忘记了,还有一些不知道···呵呵~~\x0d\x0a 实现序列化只要实现一个Serializable的接口就行,这是个标志接口,里面没有方法需要实现,主要的作用就是标识这儿类可以序列化·····

序列化的意义

客户端访问了某个能开启会话功能的资源,

web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。

如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用web服务器内存资源。

web服务器通常将那些暂时不活动但未超时的HttpSession对象转移到文件系统或数据库中保存,服务器要使用他们时再将他们从文件系统或数据库中装载入内存,这种技术称为Session的持久化。

将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中将HttpSession对象从文件系统或数据库中装载如内存时,需要采用反序列化的方式,恢复HttpSession对象中的每个属性对象。

所以存储在HttpSession对象中的每个属性对象必须实现Serializable接口

一、什么是序列化:\x0d\x0a序列化理解成“打碎”是可以的,不过在书本上的名词就是将对象转换成二进制。\x0d\x0a\x0d\x0a二、在java中如何实现序列化:\x0d\x0a首先我们要把准备要序列化类,实现 Serializabel接口\x0d\x0a例如:我们要Person类里的name和age都序列化\x0d\x0aimport java.io.Serializable\x0d\x0a\x0d\x0apublic class Person implements Serializable { //本类可以序列化\x0d\x0a private String name \x0d\x0a private int age \x0d\x0a \x0d\x0a public Person(String name,int age){\x0d\x0a this.name = name \x0d\x0a this.age = age \x0d\x0a }\x0d\x0a public String toString(){\x0d\x0a return "姓名:" + this.name + ",年龄" + this.age \x0d\x0a }\x0d\x0a}\x0d\x0a\x0d\x0a然后:我们将name和age序列化(也就是把这2个对象转为二进制,统族理解为“打碎”)\x0d\x0apackage org.lxh.SerDemo\x0d\x0a\x0d\x0aimport java.io.File\x0d\x0aimport java.io.FileOutputStream\x0d\x0aimport java.io.ObjectOutputStream \x0d\x0a\x0d\x0apublic class ObjectOutputStreamDemo { //序列化\x0d\x0a\x0d\x0a public static void main(String[] args) throws Exception {\x0d\x0a//序列化后生成指定文件路径\x0d\x0a File file = new File("D:" + File.separator + "person.ser")ObjectOutputStream oos = null \x0d\x0a//装饰流(流)\x0d\x0a oos = new ObjectOutputStream(new FileOutputStream(file)) \x0d\x0a//实例化类\x0d\x0a Person per = new Person("张三",30) oos.writeObject(per) //把类对象序列化\x0d\x0a oos.close() \x0d\x0a }\x0d\x0a}