JDK 序列化 serialVersionUID应用

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
通常,RPC调用有多种序列化方式,本文简单介绍一下JDK自带的序列化接口Serializable使用事项。

一、serialVersionUID

一般实现Serializable接口的序列化对象会要求声明一个long型的serialVersionUID(非强制,不写会有默认值),该变量有何用?

1、序列化操作时,系统会把当前类声明的serialVersionUID写入到序列化文件中,用于反序列化时系统会去检测文件中的serialVersionUID,判断它是否与当前类的serialVersionUID一致,如果一致就说明序列化类的版本与当前类版本是一样的,可以反序列化成功,否则失败。

2、当实现当前类没有显式地定义一个serialVersionUID变量

Java 序列化 对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。因为,OSI 七层协议模型中的应用层、表示层和会话层对应的都是 TCP/IP 四层模型中的应用层,所以序列化协议属于 TCP/IP 协议应用层的一部分。修饰的变量是静态变量,属于类而非类的实例,本身是不会被序列化的。,因为这通常意味着序列化的类的定义已经发生了更改,可能不再兼容。 阅读详情

相关推荐

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索

流媒体学习之路(NACK)——纯NACK方案的最高性能 文章目录流媒体学习之路(NACK)——纯NACK方案的最高性能一、NACK简介二、Nack的理解2.1 一种补救策略2.2 什么时候要?2.3 要多少?2.4 怎么要?三、计算分析3.1 rtt强相关3.2 补包次数计算3.3 Nack的定时发送3.4 nack重传限制四、实验   近期在针对纯丢包场景做一些简单的探索实验,一个让我困扰的问题就是:不使用FEC而只是通过纯NACK进行补偿,到底能在实验环境下抵抗多少的丢包呢?每一次丢包补偿的最大时长

qw225967的博客 1万+

java实体类中的序列化serialVersionUID

是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

qq_39187593的博客 1946

大模型知识边界探索:LLM设计的极限测试

最优化理论是数学中的一个分支,主要研究如何从给定的一组约束条件下找到最优解。目标函数:定义了需要优化的指标,可以是最大化或最小化。约束条件:定义了在优化过程中需要满足的限制条件。无约束优化:目标函数和约束条件都不存在。有约束优化:目标函数存在,但存在约束条件。多目标优化:同时需要优化多个目标函数。极限测试(Ultimate Test)是一种系统性的方法,用于评估大型模型(如LLM)在极端条件下的性能和稳定性。极端数据分布:与模型训练数据分布显著不同的数据集。极端计算资源。

AI天才研究院 402

jdk8源码阅读之Serializable

jdk源码Serializable接口翻译。Serializable接口仅仅是用来标识一个类是序列化的。

liuffei的专栏 2022

瞧瞧,这就是JDK序列化

今天来聊聊JDK自带的序列化,企业级软件开发过程中一定会涉及到数据落盘或者网络传输数据,由于Linux操作系统要数据落盘或者传输数据前需要将数据转为二进制数据流,因此我们需要一套规则来将Java世界中的对象(数据)转化为二进制数据流,而JDK提供的序列化就是这套转换规则。以上就是使用JDK序列化/反序列化的流程,可能工作中我们不会频繁的写序列化代码,但是通信/存储相关的组件里一般都会高频的进行序列化/反序列化操作,因此如果之后我们要自己设计通信/存储的话,掌握序列化是非常有必要的。

linchonghui888的博客 1375

java类中serialversionuid 作用 是什么?举个例子说明

serialVersionUID适用于Java序列化机制。简单来说,Java序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...

weixin_34150224的博客 370

Java对象序列化为什么要使用SerialversionUID

1、首先谈谈为什么要序列化对象把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。  在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的S

java_mdzy的博客 3万+

JDK序列化与反序列化

分享了一个JDK序列化和反序列化报错的案例,较为系统的梳理了原生JDK的用法及存在的问题等。

u012677406的博客 1531

序列化和反序列化的概念 JDK类库中的序列化API serialVersionUID

Java基础学习总结——Java对象的序列化和反序列化 一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。   在很多应用中,需要对某些对象进行序列化,让它

Solo_two的博客 869

serialVersionUID序列化和反序列化的概念

一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。   在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是

petercnmei的专栏 396

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程成为对象的序列化。--通常是输出流 把字节序列恢复为对象的过程成为对象的反序列化。--通常是输入流 对象的序列化主要有两种用途: 1)把对象的字节序列永久的保存在硬盘上,通常存放在一个文件中。 2)在网络上传输对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让他们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是WE...

风残雪的博客 230

Java对象序列化和反序列化

Java基础学习总结——Java对象的序列化和反序列化 一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。   在很多应用中,需要对某些对象进行序列化,让它

arshiar123的博客 633

The serializable class MyException does not declare a static final serialVersionUID field of type

在写自定义异常类时,出现了一个警告: The serializable class MyException does not declare a static final serialVersionUID field of type long 解决方法:在类中添加: private static final long serialVersionUID = 1L; serialVersionUID serialVersionUID被用来作为Java对象序列化中的版本标示,如果一个序列化类没有声明这样一个

weixin_44357667的博客 1376

第五章 java重要知识点(序列化和反序列化

第五章 java重要知识点(序列化和反序列化

Re_view的博客 438

JAVA序列化

对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。比较常用的序列化协议有 Hessian、Kryo、Protobuf、ProtoStuff,这些都是基于二进制的序列化协议。因为,OSI 七层协议模型中的应用层、表示层和会话层对应的都是 TCP/IP 四层模型中的应用层,所以序列化协议属于 TCP/IP 协议应用层的一部分。

2301_78714573的博客 850

序列化和反序列化的简单理解

对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。 当两个进程在进行远程通信时,彼此可以发送各种类型

新起点的博客 1055

java对象序列化和反序列化的概念

1)什么是对象序列化和反序列化        把对象转换为 字节序列的过程称为 对象的序列化。   把字节序列  恢复为对象的过程称为 对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列 永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上 传送对象的字节序列。 2)具体使用场景     在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物...

zhangkang65的专栏 380

[Android知识体系]之四大组件:activity(序列化和intent传递对象)

其实activity是最基本要掌握的,但是如果要深究,其实非常多好讲的。这篇文章是先学习序列化,再对android使用序列化传递对象进行介绍。第一小节 Serializabale一、序列化和反序列化的概念  把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存

yoxiyehei_wzx的博客 789

Java 序列化详解

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化序列化:将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。

qq_28131661的博客 145

Java对象的序列化和反序列化

一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。   把字节序列恢复为对象的过程称为对象的反序列化。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。   在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的...

TofuCai的博客 195
上一篇: Spring AOP事务管理
下一篇: Guava —— Base & Cache
钟艾伶
博客等级 码龄14年 714粉丝 228原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值