我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java序列化与hessian序列化的区别有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java序列化与hessian序列化的区别有哪些

Java序列化与hessian序列化的区别有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

        在远程调用中,需要把参数和返回值通过网络传输,这个使用就要用到序列化将对象转变成字节流,从一端到另一端之后再反序列化回来变成对象。

        既然前面有一篇提到了hessian,这里就简单讲讲Java序列化和hessian序列化的区别。

        首先,hessian序列化比Java序列化高效很多,而且生成的字节流也要短很多。但相对来说没有Java序列化可靠,而且也不如Java序列化支持的全面。而之所以会出现这样的区别,则要从它们的实现方式来看。

        先说Java序列化,具体工作原理就不说了,Java序列化会把要序列化的对象类的元数据和业务数据全部序列化从字节流,而且是把整个继承关系上的东西全部序列化了。它序列化出来的字节流是对那个对象结构到内容的完全描述,包含所有的信息,因此效率较低而且字节流比较大。但是由于确实是序列化了所有内容,所以可以说什么都可以传输,因此也更可用和可靠。

        而hessian序列化,它的实现机制是着重于数据,附带简单的类型信息的方法。就像Integer a = 1,hessian会序列化成I 1这样的流,I表示int or Integer,1就是数据内容。而对于复杂对象,通过Java的反射机制,hessian把对象所有的属性当成一个Map来序列化,产生类似M className propertyName1 I 1 propertyName S stringValue(大概如此,确切的忘了)这样的流,包含了基本的类型描述和数据内容。而在序列化过程中,如果一个对象之前出现过,hessian会直接插入一个R index这样的块来表示一个引用位置,从而省去再次序列化和反序列化的时间。这样做的代价就是hessian需要对不同的类型进行不同的处理(因此hessian直接偷懒不支持short),而且遇到某些特殊对象还要做特殊的处理(比如StackTraceElement)。而且同时因为并没有深入到实现内部去进行序列化,所以在某些场合会发生一定的不一致,比如通过Collections.synchronizedMap得到的map。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java序列化与hessian序列化的区别有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java序列化与hessian序列化的区别有哪些

Java序列化与hessian序列化的区别有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 在远程调用中,需要把参数和返回值通过网络传输,这个
2023-05-31

Java 中对象的序列化和反序列化有什么区别

本篇文章给大家分享的是有关Java 中对象的序列化和反序列化有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。主要内容如下:简洁的代码实现序列化实现的基本算法两种特殊的情
2023-05-31

java序列化方式有哪些

Java序列化方式有以下几种:1. Java默认的序列化:通过实现Serializable接口来实现,默认使用ObjectOutputStream和ObjectInputStream进行对象的序列化和反序列化。2. 自定义序列化:通过实现E
2023-08-15

java序列化的方式有哪些

Java序列化的方式有:1. 实现Serializable接口:在需要序列化的类中实现Serializable接口,该接口没有任何方法,只是起到一个标记作用,表示该类可以被序列化。2. 实现Externalizable接口:与Seriali
2023-09-27

Java对象的序列化与反序列化详解

一、序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种途径:Ⅰ . 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中Ⅱ. 在网络上传送对象的字节序
2023-05-31

Java的序列化与反序列化怎么实现

本篇内容介绍了“Java的序列化与反序列化怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java对象的序列化Java平台允许我们在内
2023-07-04

java类序列化的原因有哪些

Java类序列化的原因有以下几个:1. 数据持久化:将对象转化为字节流的形式,可以将其保存到磁盘文件或者通过网络传输,以实现数据的持久化。在系统重启或者网络断开之后,可以从序列化的文件或者字节流中读取对象,并恢复到内存中使用。2. 分布式计
2023-08-24

深入浅析Java中的序列化与反序列化

这篇文章将为大家详细讲解有关深入浅析Java中的序列化与反序列化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java 序列化和反序列化实例详解在分布式应用中,对象只有经过序列化才能在各个分
2023-05-31

Java中序列化与反序列化的示例分析

这篇文章将为大家详细讲解有关Java中序列化与反序列化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言序列化:将对象转换为二进制序列在网络中传输或保存到磁盘反序列化:从网络或磁盘中将二进制
2023-06-15

关于Java序列化的问题有哪些

本篇内容主要讲解“关于Java序列化的问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于Java序列化的问题有哪些”吧!问题一:什么是 Java 序列化?序列化是把对象改成可以存到磁盘
2023-06-02

java对象序列化的方法有哪些

Java对象序列化的方法有以下几种:1. 实现Serializable接口:该接口是Java提供的序列化接口,只需要让类实现该接口即可实现序列化。这是最常用的方法。```javapublic class MyClass implements
2023-08-24

java中序列化与反序列化的作用是什么

Java中的序列化和反序列化是用来实现对象的持久化存储和网络传输的机制。序列化的作用:1. 对象持久化存储:将Java对象转换为字节流,可以将这些字节流保存到磁盘或数据库中,以便后续可以从中读取并恢复对象。2. 对象网络传输:将Java对象
2023-09-15

Java序列化与字典功能的序列化实例分析

这篇文章主要介绍了Java序列化与字典功能的序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java序列化与字典功能的序列化实例分析文章都会有所收获,下面我们一起来看看吧。两种解决方案前端查询字典数
2023-07-02

springcloud序列化方式有哪些

Spring Cloud 提供了多种序列化方式,包括:1. Jackson:Spring Boot 默认使用的序列化方式,可以将对象转换为 JSON 格式。2. Gson:Google 提供的一个 Java 序列化/反序列化库,可以将对象转
2023-10-21

springmvc序列化参数有哪些

Spring MVC支持以下几种方式来序列化参数:1. 表单参数:在表单提交时,可以将表单中的参数自动绑定到Controller方法中的参数上。可以使用@RequestParam注解将表单参数绑定到方法的参数上。2. 路径参数:可以将URL
2023-10-20

Java对象的XML序列化与反序列化实例解析

上一篇文章我们介绍了java实现的各种排序算法代码示例,本文我们看看Java对象的xml序列化与反序列化的相关内容,具体如下。XML是一种标准的数据交换规范,可以方便地用于在应用之间交换各类数据。如果能在Java对象和XML文档之间建立某种
2023-05-30

php序列化的方式有哪些

本篇内容介绍了“php序列化的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php序列化的方式:1、使用serialize()函数
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录