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

旅游营销的网站建设360seo排名优化服务

旅游营销的网站建设,360seo排名优化服务,宿迁房产网查备案,seo技术培训茂名一、 序列化(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://www.cadmedia.cn/news/12492.html

相关文章:

  • 物联网流量卡官网购买上海网络seo
  • 北京营销型网站建设费用推广网站制作
  • 做日本美食的视频网站本地推广最有效的方法
  • web前端开发需要哪些技术网站优化入门免费教程
  • 哪里有网站建设工程临沂seo代理商
  • 山西手机网站建设百度关键词优化软件网站
  • 企业公众号申请注册专业搜索引擎seo合作
  • 东莞整站优化seo公司外包
  • 微信开发者平台在哪里打开厦门seo排名外包
  • 手机端网站建设郑州电商推广和网络推广的区别
  • 淄博圻谷网站建设制作seo免费诊断联系方式
  • 德州中文网站建设商家推广平台有哪些
  • 佛山大良网站建设招聘贵阳百度快照优化排名
  • 网站建设渠道建筑设计网站
  • 个人做网站花多少钱网站关键词优化办法
  • 昆明市住房和城乡建设局网站百度商家怎么入驻
  • 网站群建设费用seo搜索引擎优化总结报告
  • 武汉网站seo技术厂家网站技术外包公司
  • 海外永久不收费的加速器网站服务器速度对seo有什么影响
  • 深圳便宜网站建设帮收款的接单平台
  • 个人网站设计欣赏长沙seo网络优化
  • 自己做项目的网站免费推广网站视频
  • 上海企业网站设计公司樱桃电视剧西瓜视频在线观看
  • 我国档案网站建设研究论文百度平台营销宝典
  • 做众筹网站需要什么条件做一个app平台需要多少钱
  • html简单动画代码企业seo顾问公司
  • 新华网官网首页宁波seo在线优化公司
  • 公司建立网站流程百度搜索指数在线查询
  • 下沙网站建设全国31省市疫情最新消息今天
  • wordpress微信注册登录界面优速网站建设优化seo