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

网站开发付款方式项目分享网

网站开发付款方式,项目分享网,江山企业自适应网站建设首选,四川省建设工程信息网查询一、 序列化(Serialization) 将 Java 对象转换为‌字节流‌的过程,使其能够被存储(如保存到文件、数据库)或传输(如网络通信)。 作用:持久化对象状态、跨平台传输、支持分布式计算&a…

一、 序列化(Serialization)

     将 Java 对象转换为‌字节流‌的过程,使其能够被存储(如保存到文件、数据库)或传输(如网络通信)。

作用:持久化对象状态、跨平台传输、支持分布式计算(如 RPC)

技术要求‌:

  • 类需实现 java.io.Serializable 标记接口(无方法,仅标识可序列化)。
  • 使用 ObjectOutputStream.writeObject() 将对象写入字节流。
  • 可通过 transient 关键字排除敏感或临时字段。

二、反序列化(Deserialization)

将‌字节流‌恢复为内存中的 Java 对象的过程。

作用:重建对象状态、接收远程数据、恢复持久化数据

技术要求‌:

  •  使用 ObjectInputStream.readObject() 从字节流读取对象。
  •  反序列化的类需与序列化时的类结构兼容(否则抛出 InvalidClassException)。
  •   显式定义 serialVersionUID 控制版本一致性,避免类定义变更导致兼容性问题。

三、两者关系

维度序列化反序列化
目的对象 → 字节流(存储/传输)字节流 → 对象(恢复/使用)
接口依赖类必须实现 Serializable同序列化要求,且需保证类定义兼容性
核心方法ObjectOutputStream.writeObject()ObjectInputStream.readObject()
数据控制transient 字段不参与序列化依赖序列化时的字段值重建对象
安全风险暴露敏感字段(若未用 transient不可信数据可能导致代码执行漏洞(需验证来源或使用白名单)
典型应用保存对象到文件、发送网络请求、缓存数据读取文件恢复对象、接收网络数据、反序列化缓存

注意事项

  1. 兼容性‌:若序列化后修改类结构(如增删字段),需保持 serialVersionUID 一致,否则反序列化失败。
  2. 性能‌:Java 原生序列化可能效率较低,跨语言场景建议使用 JSON/XML 或高效二进制协议。
  3. 安全性‌:避免反序列化不可信数据,防止攻击者构造恶意字节流触发漏洞。

通过序列化与反序列化,Java 实现了对象状态的持久化和跨环境交互,是分布式系统、缓存机制等场景的底层基础技术。

 

四、数据持久化应用 

1、封装序列化和反序列化方法(使用泛型

package org.ser;import java.io.*;public class InitSerialize {/*** 序列化对象** @param obj  对象* @param path 路径*/public <T> void serializeObject(T obj, String path) {// 序列化对象到文件try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));) {// 写入对象到文件oos.writeObject(obj);} catch (IOException e) {throw new RuntimeException(e);}}/*** 反序列化对象** @param path 路径* @param <T>  泛型类型* @return*/public <T> T deserializeObject(String path) {// 反序列化对象try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path))) {// 读取对象return (T) ois.readObject();} catch (IOException | ClassNotFoundException e) {throw new RuntimeException(e);}}}

2、用户类实现序列化接口

public class User implements Serializable {private static final long serialVersionUID = 1L;private String name;
//    private transient int age; // 不会被序列化private  int age; //public User(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "User{name='" + name + "', age=" + age + "}";}
}

3、测试类

package org.ser;import java.util.Arrays;
import java.util.List;public class TestSer {public static void main(String[] args) {//实例化对象InitSerialize initSerialize = new InitSerialize();//单个对象的操作one(initSerialize);//多个对象的操作
//        more(initSerialize);}private static void one(InitSerialize initSerialize) {//用户对象User user = new User("Sergey", 25);//序列化对象到文件initSerialize.serializeObject(user, "user.ser");//反序列化对象从文件User user1 = initSerialize.deserializeObject("user.ser");System.out.println(user1);}private static void more(InitSerialize initSerialize) {//多个对象的操作User user2 = new User("mike", 20);User user3 = new User("boy", 18);User user4 = new User("girl", 19);User user5 = new User("little", 17);//对象数组User[] users = new User[]{user2, user3, user4, user5};//序列化对象数组到文件initSerialize.serializeObject(users, "users.ser");//反序列化对象数组从文件User[] users1 = initSerialize.deserializeObject("users.ser");//将数组转换为列表List<User>  list = Arrays.asList(users1);//Lambda表达式遍历并打印用户信息list.forEach(System.out::println);}
}

4、运行


文章转载自:

http://xuaYx6M7.snnkt.cn
http://jkI70zEv.snnkt.cn
http://Nibb585M.snnkt.cn
http://2r5xtut8.snnkt.cn
http://a8BThY6k.snnkt.cn
http://eV9P85Xc.snnkt.cn
http://VfF8Bc0e.snnkt.cn
http://1eC1Vwve.snnkt.cn
http://6PHDdzYB.snnkt.cn
http://EpYiVI0j.snnkt.cn
http://y01DIVnB.snnkt.cn
http://a587R86y.snnkt.cn
http://oZy6rFat.snnkt.cn
http://2VCCy3xz.snnkt.cn
http://8oL3TwUU.snnkt.cn
http://Rs9H4A3u.snnkt.cn
http://yRVHzXRG.snnkt.cn
http://BRSTvbQ7.snnkt.cn
http://hoGOQ4i4.snnkt.cn
http://psmJiYfW.snnkt.cn
http://x3BSwFCH.snnkt.cn
http://nhoBEuGJ.snnkt.cn
http://gwYkTe6k.snnkt.cn
http://48uiSUPD.snnkt.cn
http://kZVho3GI.snnkt.cn
http://qO7iZPLM.snnkt.cn
http://32jGReTB.snnkt.cn
http://NnWnNCJV.snnkt.cn
http://WyqbXiOM.snnkt.cn
http://m6NrhET0.snnkt.cn
http://www.dtcms.com/wzjs/778251.html

相关文章:

  • 石家庄网站开发费用网站的内容管理系统
  • 明年做啥网站能致富渝水区城乡建设局网站
  • 网站建设的代码做医学网站
  • 免费下载图片的网站有哪些哪里可以做网站开发
  • 做电影网站都需要什么手续亚马逊网站网址是多少
  • 南京学网站建设网站优化 网站建设公司
  • seo 网站分析建网站怎么赚流量
  • 做网站都需要什么贴吧网站icp备案证明文件
  • 开展网络营销的企业网站有哪些专业定制网站
  • 个人备案 可以做企业网站吗电商设计行业前景
  • 包头市做网站公司注册劳务公司注册条件及费用
  • 福州阳楠科技网站建设有限公司建设网站建设网页制作0402高设计词
  • 郑州高端网站定制网站维护团队
  • 新乡网站建设哪家公司好公众号排版怎么做
  • 做网站 广告收入wordpress插件去除google
  • 网站建设 网址导航上海微盟企业发展有限公司
  • 个人网站html源码vi设计方案
  • 网站生成手机版金华网站设计公司
  • 网站的模版亚马逊入驻费用及条件
  • 网站策划的工作职责东营聊城网站建设
  • 易龙天做的网站怎么样网站建设 诺德中心
  • 可以查授权的网站怎么做鞍山人才网档案查询
  • 石家庄网站优化多少钱asp网站开发教案
  • 宁德市蕉城区建设局网站ui模板免费下载
  • 站长查询做现货黄金看什么网站
  • 甘肃肃第八建设集团网站制作游戏需要什么技术
  • 网站播放视频插件广东省建设工程交易中心
  • 公司做网站的费用php 视频网站开发
  • asp网站安装到空间最好的开发网站建设
  • 网站建设都需要网站建设成为