当前位置: 首页 > news >正文

Java 序列化与反序列化

Java 序列化是一种将对象的状态转换为字节流的机制,以便可以将该对象的状态保存到文件、数据库或通过网络传输。在反序列化过程中,这些字节流可以被重新转换为对象。序列化主要用于以下几种情况:

  1. 持久化存储:将对象的状态保存到文件或数据库,以便在以后恢复。
  2. 网络传输:在分布式系统中,通过网络传输对象时,需要将对象序列化为字节流。
  3. 深度克隆:通过序列化和反序列化,可以实现对象的深度克隆。
  4. 缓存:将对象序列化后存储到缓存中,以提高系统性能。

以下是一个简单的 Java 序列化示例代码:

序列化示例

import java.io.*;class Person implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + '}';}
}public class SerializationExample {public static void main(String[] args) {Person person = new Person("Alice", 30);// 序列化try (FileOutputStream fileOut = new FileOutputStream("person.ser");ObjectOutputStream out = new ObjectOutputStream(fileOut)) {out.writeObject(person);System.out.println("序列化后的对象保存到 person.ser 文件中");} catch (IOException i) {i.printStackTrace();}// 反序列化Person deserializedPerson = null;try (FileInputStream fileIn = new FileInputStream("person.ser");ObjectInputStream in = new ObjectInputStream(fileIn)) {deserializedPerson = (Person) in.readObject();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}System.out.println("反序列化后的对象: " + deserializedPerson);}
}

代码说明

  1. Person 类:实现 Serializable 接口,这样该类的对象就可以被序列化。
  2. SerializationExample 类:包含 main 方法来演示序列化和反序列化。
    • 创建一个 Person 对象。
    • 使用 FileOutputStreamObjectOutputStream 将对象序列化到 person.ser 文件中。
    • 使用 FileInputStreamObjectInputStreamperson.ser 文件中反序列化对象。
    • 打印反序列化后的对象。

通过上述代码,展示了如何在 Java 中进行对象的序列化和反序列化操作。

相关文章:

Java 序列化与反序列化

Java 序列化是一种将对象的状态转换为字节流的机制,以便可以将该对象的状态保存到文件、数据库或通过网络传输。在反序列化过程中,这些字节流可以被重新转换为对象。序列化主要用于以下几种情况: 持久化存储:将对象的状态保存到文…...

自定义防抖注解

问题场景 在开发中由于可能存在的网络波动问题导致用户重复提交,所以自定义一个防抖注解。设计思路:自定义注解加在接口的方法上,注解中设置了SPEL表达式,可以通过SPEL表达式从接口参数中提取Redis的Key,以这个Key作为…...

【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)

【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八)1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…...

【html】用html+css做地表最强王者荣耀辅助工具

源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>* {margin: 0;padding: 0;}body{background-color: blue;}.con {width: 300px;height: 500px;background-color: rgba(230,…...

TF-IDF、BM25传统算法总结

1. TF-IDF算法 F-IDF&#xff08;词频-逆文档频率&#xff09;是一种用于衡量文本中词语重要性的方法&#xff0c;特别适用于信息检索和文本挖掘任务。下面会拆分为两部分深入讲解TF-IDF的计算过程&#xff0c;以便更好地理解。 TF-IDF的计算过程可以分为两个主要部分&#xf…...

项目五 OpenStack镜像管理与制作

任务一 理解OpenStack镜像服务 1.1 •什么是镜像 • 镜像通常 是指一系列文件或一个磁盘驱动器的精确副本 。 • 虚拟机 所使用的虚拟磁盘&#xff0c; 实际上是 一种特殊格式的镜像文件 。 • 云 环境下尤其需要 镜像。 • 镜像 就是一个模板&#xff0c;类似于 VMware 的虚拟…...

LabVIEW回热系统热经济性分析及故障诊断

开发了一种利用LabVIEW软件的电厂回热系统热经济性分析和故障诊断系统。该系统针对火电厂回热加热器进行优化&#xff0c;通过实时数据监控与分析&#xff0c;有效提高机组的经济性和安全性&#xff0c;同时降低能耗和维护成本。系统的实施大幅提升了火电厂运行的效率和可靠性&…...

设计模式-迭代器模式

目录 一:基本介绍 二:原理说明 三:案例说明 四:优点 五:缺点 一:基本介绍 1)属于行为模式 2)如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户 端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以…...

UV胶带和UV胶水的应用场景有哪些不同吗?

UV胶带和UV胶水的应用场景有哪些不同吗? UV胶带和UV胶水的应用场景确实存在不同之处&#xff0c;以下是详细的比较和归纳&#xff1a; 一&#xff1a;按使用场景来看&#xff1a; UV胶带的应用场景&#xff1a; 包装行业&#xff1a;UV胶带在包装行业中常用于食品包装、药…...

监控员工上网软件有哪些|4款好用的员工上网行为管理软件推荐

在当今数字化办公环境中&#xff0c;确保网络安全、提升工作效率、以及规范员工上网行为成为企业管理的重要组成部分。 为此&#xff0c;一套高效的员工上网行为管理软件显得尤为关键。 本文将为您推荐五款市场上广受好评的员工上网行为管理软件&#xff0c;帮助您有效监控与管…...

【IPython的使用技巧】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

最新AI智能聊天对话问答系统源码(详细图文搭建部署教程)+AI绘画系统(Midjourney),DALL-E3文生图,TTS语音识别输入,文档分析

一、文章前言 随着人工智能技术的持续进步&#xff0c;AI绘画已经发展成为一个日益成熟的领域。越来越多的人开始尝试使用AI绘画软件来创作艺术作品。尽管这些AI绘画软件对绘画领域产生了显著影响&#xff0c;但它们并不会完全取代画师。与传统手绘不同&#xff0c;AI绘画可以…...

项目四 OpenStack身份管理

任务一 理解身份服务 1.1 •Keystone的基本概念 • 认证 &#xff08; Authentication &#xff09; —— 确认 用户身份的过程&#xff0c;又称身份验证 。 • 凭证 &#xff08; Credentials &#xff09; —— 又 称凭据&#xff0c;是用于确认用户身份的数据 。 • 令牌 …...

【后端】websocket学习笔记

文章目录 1. 消息推送常见方式1.1 轮询 VS 长轮询1.2 SSE&#xff08;server-sent event)服务器发送事件 2. websocket介绍2.1 介绍2.2 原理2.3 websoket API2.3.1 客户端【浏览器】API2.3.2 服务端API 3. 代码实现3.1 流程分析3.2 pom依赖3.3 配置类3.4 消息格式3.5 消息类 4.…...

DataWhale - 吃瓜教程学习笔记(一)

学习视频&#xff1a;第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第一章 & 第二章 文章目录 机器学习三观What&#xff1a;什么是机器学习&#xff1f;Why: 为什么要学机器学习&#xff1f;1. 机器学习理论研究2. 机器学习系统开发3. 机器学习算法迁移 &…...

Attention Is All You Need论文地址

论文地址 点击即可...

如何优雅的一键下载OpenHarmony活跃分支代码?请关注【itopen: ohos_download】

itopen组织&#xff1a;1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源&#xff0c;拥抱国产化 一、概述 为方便大家每次下载OpenHarmony不同分支/tag代码&#xff0c…...

torch.topk用法

torch.topk用法 介绍使用示例 介绍 官网介绍&#xff1a;https://pytorch.org/docs/stable/generated/torch.topk.html 在指定维度选取k个最大&#xff08;最小&#xff09;的值。 使用示例 values torch.tensor([[2, 1, 3], [1, 2, 3]]) # values # tensor([[2, 1, 3], #…...

终极版本的Typora上传到博客园和csdn

激活插件 下载网址是这个&#xff1a; https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4 解压之后这样的&#xff1a; 解压之后将plugin&#xff0c;复制到自己的安装目录下的resources 点击安装即可&#xff1a; 更改配置文件 "dependencies&q…...

洛谷:P5707【深基2.例12】上学迟到

1. 题目链接 https://www.luogu.com.cn/problem/P5707 【深基2.例12】上学迟到 2. 题目描述 学校和y的家距离s米&#xff0c;s以v的速度去学校&#xff0c;8点之前到&#xff0c;y出门前要打扫10分钟卫生&#xff0c;求s最晚的出门时间 输入&#xff1a;两个正整数路程s&…...

Windows右键菜单终极整理指南:用ContextMenuManager轻松打造高效工作流

Windows右键菜单终极整理指南&#xff1a;用ContextMenuManager轻松打造高效工作流 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经在Windows系统中为…...

2PG450x500双齿辊破碎机CAD装配图

2PG450x500双齿辊破碎机CAD装配图是机械设计领域中用于呈现设备整体结构的关键学习资料。该设备通过两个同步旋转的齿辊实现物料的破碎功能&#xff0c;其核心作用在于将大块物料均匀破碎至指定粒度&#xff0c;满足后续加工或输送需求。装配图以二维工程语言精准描述各部件的相…...

大数据核心知识全解(零基础到Hadoop专家路线)【20260324】001篇

文章目录 大数据核心知识全解(零基础到Hadoop专家路线) 一、为什么会出现大数据?(本质原因) 1. 数据来源爆炸 2. 传统技术扛不住 3. 需求倒逼 二、CNCF 是什么?(云原生核心组织) 它和大数据的关系 三、为什么 Hadoop 会流行?(3个核心原因) 1. 它解决了当时最痛的问题…...

告别重启:深入解析NVML驱动/库版本不匹配的根源与动态修复

1. 当NVML罢工时&#xff1a;理解"Driver/library version mismatch"的本质 那天深夜&#xff0c;我正在调试一个CUDA计算任务&#xff0c;突然发现nvidia-smi命令返回了令人心碎的报错&#xff1a;"Failed to initialize NVML: Driver/library version mismatc…...

SCN随机配置网络模型在多特征分类预测中的应用

SCN随机配置网络模型SCN分类预测&#xff0c;SCN分类预测&#xff0c;多特征 输入模型。 多特征输入单输出的二分类及多分类模型。 程序内注释详细&#xff0c;直接替换数据就可以用。 程序语言为matlab&#xff0c;程序可出分类效果图&#xff0c;迭代优化图&#xff0c;混淆矩…...

【Python 3.14 JIT性能跃迁指南】:实测提升327%吞吐量的7大调优指令与避坑清单

第一章&#xff1a;Python 3.14 JIT 编译器性能调优Python 3.14 引入了实验性内置 JIT&#xff08;Just-In-Time&#xff09;编译器&#xff0c;基于 LLVM 后端实现&#xff0c;旨在对热点函数进行动态编译优化。该 JIT 默认处于禁用状态&#xff0c;需通过环境变量或运行时 AP…...

实测Claude Opus 4.6:编码全流程适配,研发效率提升25%的实操技巧

实测Claude Opus 4.6&#xff1a;编码全流程适配&#xff0c;研发效率提升25%的实操技巧 一、Claude Opus 4.6核心能力定位与实测背景 Claude Opus是Anthropic推出的旗舰级大模型&#xff0c;4.6版本在长文本理解、代码逻辑推理、多语言兼容性三个维度做了针对性升级。本次实测…...

雷达式多参数水文监测站

雷达式多参数水文监测站用先进的非接触式测量技术&#xff0c;结合水库断面参数精准计算流量&#xff0c;全程无需接触水体&#xff0c;从根源上规避水体环境对监测设备的影响。不受风、环境温度、雾霾、水体泥沙、漂浮物等外界因素干扰&#xff0c;即便在汛期水流浑浊、漂浮物…...

快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集

快速部署&#xff1a;在星图AI平台训练PETRV2-BEV模型&#xff0c;支持NuScenes数据集 1. 环境准备与快速部署 1.1 激活Paddle3D环境 首先需要确保已经创建并激活了Paddle3D的conda环境&#xff1a; conda activate paddle3d_env如果尚未创建该环境&#xff0c;建议先安装M…...

ArcGIS模型构建器实战:一键加载上百个SHP文件(含子文件夹)的保姆级教程

ArcGIS模型构建器实战&#xff1a;一键加载上百个SHP文件&#xff08;含子文件夹&#xff09;的保姆级教程 当你在城市规划部门接手一个历史遗留项目&#xff0c;或是从不同合作方收到几十个分散的SHP文件时&#xff0c;是否经历过这样的崩溃瞬间&#xff1f;每个文件夹挨个点开…...