一、 为什么要JAVA序列化
Java序列化机制是解决Java对象本身在网络中传输的问题的,所以序列化的重点是描述了类的内容,这个内容具体包括那些内容取决于使用的场景,不是越多越好,越详细越好,在技术的选型中往往最适合自己的才是最好,本文介绍常见的序列化方法。
有序列化当然有反序列化,序列化本身是一种编码和解码的过程。
二、常用的序列化方法
1. JDK自带的序列化方法
JDK中序列化的方法是通过让你的类实现Serializable接口来完成, 然后通过ObjectOutputStream和ObjectInputStream来写入和读出。
谈到JDK的序列化要注意序列化的serialVersionUID同时还有禁止字段序列化的关键字Transient。
真正使用的时候我们很少用到自带的的序列化方法,总结下来原因主要有两个。
1) 序列化中含有太多的信息,这些信息通常不会被使用,但是会带来效率和流量的额外开销。
2) 使用较为复杂,有比较多的约束和坑如ID问题,版本问题。
2. JSON序列化(格式化)
利用现有的JSON工具把java对象转换成json字符串,然后使用的时候再把字符串转换成java对象。XML也是属于对象与文本的方式,一些古老的系统还用着这类方法。
典型的json序列化,包括但不局限与jackson,fastjson,gson,jsonp等。
3. 二进制序列化
随着系统的复杂度提高,系统通信变得越来越复杂,对性能越来越高,虽然json序列化性能不错,但是字符串的开销还是会比直接存二进制的开销大很多,所以就出现了很多二进制的序列化方案。
如dubble 默认的 hessian2,kryo, fst。
4. 中间件自己的序列化方案
尽管序列化技术越来越成熟了,但是很多中间件仍然选择自己的序列化方案,如消息系统kafka 等。
三、性能对比
下表是网络上找的集中序列化方法的对比,可以简单了解下,但是不能作为具体的技术选型的依据,因为对比没有时间版本的维度,没有具体场景所以真正选择的时候还需要自己做一些实验。
Kryo | 272 | 90 |
FST | 288 | 96 |
Dubbo Serialization | 430 | 186 |
Hessian | 546 | 329 |
FastJson | 461 | 218 |
Json | 657 | 409 |
Java Serialization | 963 | 630 |
相关推荐
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
java 序列化详细解释 很详细 适用于高级软件开发者
java序列化代码示例,详细讲解序列化作用于使用注意规则项!!!
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例...虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
大家请看Java的序列化结构有不足的地方请指教也希望指出不足的地方。
java序列化和反序列化java序列化和反序列化java序列化和反序列化
将java数据 序列化成PHP的格式 a:4:{s:6:"title2";s:13:"这是标题2";s:6:"title3";s:13:"这是标题3";s:5:"title";s:13:"这是标题1";s:6:"title4";s:13:"这是标题4";} 或者a:1:{i:0;a:1:{s:4:"name";s:10:"这是1321";...
在应用java进行c-s开发的时候,尤其涉及到图片和视频之间的传输时,需要用序列化和反序列化技术,希望对您有帮助
该资源提供了java常见的三个序列化框架,分别是:JBoss Marshalling,messagePack,protobuf-java
07-Java序列化面试题(10题)-新增
java 序列化,java 序列化,java 序列化,java 序列化,java 序列化,java 序列化
NULL 博文链接:https://hw1287789687.iteye.com/blog/2190768
E043-服务漏洞利用及加固-利用Java序列化漏洞进行渗透测试
java序列化是面试中经常涉及的重要主题之一。对Java序列化的深入了解不仅可以展示你的编程技能,还能体现出你对Java核心概念的掌握。本文精选了20道复杂的Java序列化面试题,并提供了详细的解析,旨在帮助你更好地...
Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化
Java序列化机制(2)- serialVersionUID 实验 http://blog.csdn.net/suileisl/article/details/16991753
android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...
详细讲解了java的序列化用处、原理、算法、如何实现。希望能帮到大家。