java序列化Protostuff和Serializable的区别

关注:146  答案:1  mip版

解决时间 2021-01-25 06:11

提问者你若离去丶巴掌扇去

2021-01-24 09:03

java序列化Protostuff和Serializable的区别

最佳答案

二级知识专家魔法小仙子

2021-01-24 09:10

序列化就是将Java Object转成byte[];反序列化就是将byte[]转成Java Object。

Java自带序列化机制java.io.Serializable

标识一个对象需要系列化,该对象类型需要实现 Serializable 接口。

1,序列化的类型和反序列化的类型的序列化ID必须一致(远程信息交换时)。

2,静态数据不会被序列化,Transient关键字修饰的字段不会被序列化。

3,对象序列化存储时,两次存储相同值对象会有优化(第二次对象写入会只存储引用)。

Protostuff是一个序列化库,支持一下序列化格式:

protobuf

protostuff (native)

graph (protostuff with support for cyclic references. See Serializing Object Graphs)

json

smile (binary json useable from the protostuff-json module)

xml

yaml (serialization only)

kvp (binary uwsgi header)

序列化

@SuppressWarnings("unchecked")

public static byte[] serialize(T obj) {

Class cls = (Class) obj.getClass();//获得对象的类;

LinkedBuffer buffer = LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE);//使用LinkedBuffer分配一块默认大小的buffer空间;

try {

Schema schema = getSchema(cls);//通过对象的类构建对应的schema;

return ProtostuffIOUtil.toByteArray(obj, schema, buffer);//使用给定的schema将对象序列化为一个byte数组,并返回。

} catch (Exception e) {

throw new IllegalStateException(e.getMessage(), e);

} finally {

buffer.clear();

}

}

反序列化

public static T deserialize(byte[] data, Class cls) {

try {

T message = objenesis.newInstance(cls);//使用objenesis实例化一个类的对象;

Schema schema = getSchema(cls);//通过对象的类构建对应的schema;

ProtostuffIOUtil.mergeFrom(data, message, schema);//使用给定的schema将byte数组和对象合并,并返回。

return message;

} catch (Exception e) {

throw new IllegalStateException(e.getMessage(), e);

}

}

优缺点比较:

优点 缺点

Serializable 使用方便,可序列化所有类 速度慢,占空间

Protostuff 速度快,基于protobuf 需静态编译

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

java protostuff 好处,java序列化Protostuff和Serializable的区别相关推荐

  1. java protostuff 好处_Java 序列化框架性能对比(kryo、hessian、java、protostuff)

    简介: 优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Protostuff 速度快,基于protobuf 需静态编译 Protostuff-Ru ...

  2. java kiwi_【Java拾遗】不可不知的 Java 序列化

    [Java拾遗]不可不知的 Java 序列化 前言 在程序运行的生命周期中,序列化与反序列化的操作,几乎无时无刻不在发生着.对于任何一门语言来说,不管它是编译型还是解释型,只要它需要通讯或者持久化时, ...

  3. Kryo,Hessain,Protostuff三种序列化方式对比

    前言 前段时间在写RPC框架的时候用到了Kryo.Hessian.Protostuff三种序列化方式.但是当时因为急于实现功能,就只是简单的的看了一下如何使用这三种序列化方式,并没有去深入研究各自的特 ...

  4. day04--java高级编程:API:Object、String,Buffer、包装类、日期、java比较器、BigInteger、进制、length区别,IO流,路径,序列化id,编码

    1 API 1.1 Api文档下载 1.API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口,一切可以调用的东西都是API. ...

  5. Java中的对象序列化操作

    文章目录 1 Java中的对象序列化操作 1 Java中的对象序列化操作 首先看一下对象序列化的操作步骤: 创建一个类,继承Serializable接口 创建对象 将对象写入文件 从文件读取对象信息 ...

  6. 【译】Java中的对象序列化

    前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...

  7. Java最佳实践–高性能序列化

    在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论并演示如何将对象序列化用于高性能应用程序. 所有讨论的主题均基于用例,这些用例来自于电信行业的关键任务超高性能生产系统的开 ...

  8. JAVA中对象的序列化的作用?

    1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比 ...

  9. Java实体对象为什么一定要实现Serializable接口呢?

    文章目录 Java对象为什么要实现Serializable接口? Serializable接口概述 Java对象为什么要实现Serializable接口? 最近这段时间一直在忙着编写Java业务代码, ...

最新文章

  1. 使用Spring boot,Thymeleaf,AngularJS从零开始构建新的Web应用程序–第3部分
  2. servlet异步_关于Servlet和异步Servlet
  3. python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的
  4. Android QA
  5. 转:如何把 SQL Server 的自增标志列清零
  6. 我有十万块,想自己创业,是做电商还是做实体店?
  7. Unity(TransForm)
  8. MySQL 添加列 修改列 删除列
  9. IOS--多线程--GCD--在CGD中快速实现多线程的并发控制
  10. linux系统调用的使用例子,Linux增加系统调用步骤和实例
  11. 生活杂谈-简单电器维修知识-3
  12. 如何学习有限元分析 有限元分析学习心得
  13. style.left不起作用的问题
  14. PDF编辑方法,怎么删除PDF中的一页
  15. 微信小程序点击查看大图
  16. 安卓高仿京东淘宝的筛选功能,全网最简单方便
  17. 关于Too many re-renders. React limits the number of renders to prevent an infinite loop.的解决方案
  18. android游戏开发实例-可局域网对战的飞行棋(二)
  19. VirtualBox VBoxManage修改BIOS信息
  20. 汇编语言的C状态寄存器,汇编指令-状态寄存器、cmp、test、jz等指令详细说明

热门文章

  1. Nexus9000 版本ACI和nxos切换
  2. 127.0.0.1的1521端口通,固定IP1521端口不通
  3. 【UC浏览器】Java平台7.0正式版发布啦
  4. windows api 扫雷游戏
  5. 2022.1.31-2022.2.6 AI行业周刊(第83期):如何快速找到人工智能对标公司及产品模式?
  6. element plus 日期选择器,禁用今天之前的时间
  7. UE4(虚幻4)里面的物体编辑
  8. 王慧文因个人健康问题暂时休养;掌趣科技与悠米合作开发AI游戏创作平台;全国人大法工委回应“AI换脸”现象丨每日大事件...
  9. 三种常用的直线裁剪算法
  10. 是不是不能用茶水喝药?