为什么java需要序列化对象
- 序列化是一种用来处理对象流的机制
- 所谓对象流:就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网络之间
- 序列化是为了解决在对象流进行读写操作时所引发的问题
- 序列化的实现:将需要被序列化的类实现Serializable接口(标记接口) ,该接口没有需要被实现的方法,implement Serializable 只是为了标注该对象是可被序列化的,而后使用一个输出流(如 FileOutPutStream)来构造出一个ObjectOutPutStream对象,接着,是用writerObject方法就可以参数为Obj的对象写出(即保存其状态),要是恢复的要使用相应的输入流ObjectInputStream
什么时候使用序列化?
- 对象序列化可以实现分布式对象,
主要用于如RMI(远程调用 Remote method invocation) 用利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样
2.java对象序列化不仅保留一个对象数据,而且递归保存对象引用的每个对象的数据
可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递,利用对象序列化可以进行对象的深复制,即复制对象本身及引用的对象本身,序列化一个对象可能得到整个对象序列
3.序列化可以将内存中的类写入文件或者数据库
比如,将某个类序列化后保存为文件,下次读取时只需要将文件中的数据反序列化就可以将原来的类还远到内存中,也可以将类序列化为流进行传输,总的来说就是将一个已经实例的类转换为文件储存,下次需要实例化的时候只要反序列化既可以将实例化的内存中保留序列化时类中锁有变量和状态
序列化以后都是字节流了,无论他原来是什么东西,都能变成一样东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化,这样对象还是对象,文件还是文件
- 因为JAVA中要将对象序列化为流的形式进行传输
- 对象的序列化就是为了数据传输,在你的代码里是对象格式,而在传输的时候不可能还保持对象的样子
- 当两个进程在进行通信时,彼此可以发送各种类型的数据,无论是何种类型的数据,都会以二进制序列额形式在网络上传输,发送方需要把这个JAVA对象转换为字节序列化,才能在网络上传送,接收方则需要把字节序列在恢复成java对象
1.概念
序列化:吧Java对象转换为字节序列的过程反序列化:把字节序列恢复为java对象的过程
吧对象的字节序列永久保存在硬盘上,通常存放在一个文件中
在网络上传送对象的字节序列
- 所谓的Serializable,就是java提供的通用数据保存和读取的接口,至于从什么地方读出来和保存到哪里都被隐藏在函数参数的背后,这样子任何类型只要实现了Serializable接口,就可以保存到文件中,或者座位数据流的方式通过网络发送到别的地方,也可以用管道来传输到系统其它程序中,这样子极大简化类的设计,只要设计一个读取功能就能解决上面所说的问题
- java的对象序列化能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用到这个对象时候,就能把这些byte数据恢复出来,并据此重新构建那个几个对象了
- 工作流中流程变量的几种类型:String Integer short long double boolean date binary serializable ,这就是什么将javabean实现序列化的原因了,因为你讲对象设置到流程变量中必须要实现序列化,否者报错找不到类型
- java对象序列化机制就是把内存中的java对象(User之类的javabean)转换成为二进制流,java对象序列化以后可以很方便的储存或者在网络中传输
- java的序列化机制是通过运行时判断类的序列化ID来判定版本是否一致
- 在反序列化是,java虚拟机会通过二进制流中serialVersionID与本地的对应的实体类进行比较,如果相同就认为一致的,可以进行反序列化,正确获得信息,否则抛出序列化版本不一致的异常
- 所以设计到数据传输或者储存类,严格意义上来说都要加上序列化ID,这也是一种良好的编程习惯.
为什么java需要序列化对象的更多相关文章
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
- 【译】Java中的对象序列化
前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...
- java序列化对象 插入、查询、更新到数据库
java序列化对象 插入.查询.更新到数据库 : 实现代码例如以下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java IO(Properties/对象序列化/打印流/commons-io)
Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...
- Java I/O - 对象的输入输出与序列化
先说概念: 一.相关概念 序列化是Java提供的一种将对象写入到输出流.并在之后将其读回的机制. 序列化:把内存中的java对象转换成与平台无关的二进制字节序列,以便永久保存在磁盘上或通过网络进行传输 ...
- 序列化+fastjson和java各种数据对象相互转化
序列化的定义 序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是将对象转换为容易传输的格式的过程 例 ...
- Java 序列化对象工具类
SerializationUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.Byt ...
- Java基础之对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...
随机推荐
- 编码CODING
摘自(复制)于海燕博客: http://www.cnblogs.com/haiyan123/p/7230533.html 1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器 ...
- Python 获取秒级时间戳与毫秒级时间戳
原文:Python获取秒级时间戳与毫秒级时间戳 1.获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间 ...
- hdu-5875
题目大意: f(l,r)=a[l] l==r f(l,r)=f(l,r-1)%a[r] l<r 思路: 由此可以推出f(l,r)=a[l]%a[l+1]%a[l+2]%....%a[r] ...
- python操作mongodb实例
安装pymongo扩展 import pymongo; client = pymongo.MongoClient(host='10.48.176.170',port=27017); db = clie ...
- php curl 伪造IP来源的实例代码
来源:http://www.jb51.net/article/31694.htm curl 它不但可以模仿用户登录,还可以模仿用户IP地址哦,为伪造IP来源,本实例仅供参考哦 //伪造ip ; $i ...
- 如何通过Python暴力破解网站登陆密码
首先申明,该文章只可以用于交流学习,不可以用于其他用途,否则后果自负. 现在国家对网络安全的管理,越来越严,但是还是有一些不法网站逍遥法外,受限于国内的人力.物力,无法对这些网站进行取缔. 今天演示的 ...
- Swift 里字符串(三)small String
 small string, 只有两个 UInt64 的字,这里面存储了所有的信息. 内存布局如下:  第二个 UInt64 存储了标记位和长度信息,以及部分字符串的值 // Get an int ...
- python的 del 函数是删对象还是删引用
1.首先介绍下python的对象引用 1)Python中不存在传值调用,一切传递的都是对象引用,也可以认为是传址调用.即Python不允许程序员选择采用传值或传引用.Python参数传递采用的是“传对 ...
- Linux vim 编辑命令
vi命令命令模式:yy:复制 光标所在的这一行 4yy:复制 光标所在行开始向下的4行p: 粘贴dd:剪切 光标所在的这一行2dd:剪切 光标所在行 向下 2行D:从当前的光标开始剪切,一直到行末d0 ...
- 微服务Kong(十)——负载均衡参考
KONG为请求多个后端服务提供了多种负载均衡方案:一种是简单的基于DNS,另一种是更加动态的环形均衡器,他在不需要DNS服务器的情况下也允许服务注册. 一.基于DNS的负载均衡 当使用基于DNS的负载 ...