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

中国铁路监理建设协会网站济南网站建设公司

中国铁路监理建设协会网站,济南网站建设公司,如何建一个商业网站,钢结构网站序列化反序列化的定义: 序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。 反序列化就是将收到字节序列(或其他数据传输协议)或…

序列化反序列化的定义:

序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。 

反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。

先写一个类

public class Student {
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
    String name;
    int age;
}

在java中,对应的序列化和反序列化的方法是:

1.让这个类实现 Serializable 接口,也就是在代码中补充implements Serializable。

public class Student implements Serializable {
    // 省略其他...
}

2.序列化。新建文件输出流对象,并写入要实例化的实例。

  Student student = new Student("xiaohua", 10);
   // java序列化
   ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student_java"));
   oos.writeObject(student);
   oos.close();

反序列化。通过文件输入流读入文件,并使用ObjectInputStream来进一步实例化对象,然后调用readObject来生成对象。对应的代码如下

   // 反序列化:将字节序列转换为内存中的对象
   // 1. 创建一个ObjectInputStream对象,构造方法中传入一个InputStream对象
   ObjectInputStream studentJava = new ObjectInputStream(new FileInputStream("student_java"));
   // 2. 使用ObjectInputStream对象中的readObject方法,读取文件中的对象
   Student student1 = (Student) studentJava.readObject();
   System.out.println(student1.name + " " + student1.age);
   // 3. 关闭ObjectInputStream对象
   studentJava.close();

常用的Java的数据类型与Hadoop的序列化的类型对比。

完整代码如下

Student

public class Student implements Writable{
 public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
    public Student() { }
    public String name;
    public int age;
    @Override
    public void write(DataOutput dataOutput) throws IOException {
        dataOutput.writeUTF(name);
        dataOutput.writeInt(age);
    }
    @Override
    public void readFields(DataInput dataInput) throws IOException {
        name = dataInput.readUTF();
        age = dataInput.readInt();
    }
 
}

TestStudent

package com.example.serial;
 
import java.io.*;
 
public class TestStudent {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Student student = new Student("小花", 18);
 
        // hadoop序列化
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("Student_hadoop.txt"));
        student.write(dos);
 
        // hadoop 反序列化
        DataInputStream dis = new DataInputStream(new FileInputStream("Student_hadoop.txt"));
        Student student1 = new Student();
        student1.readFields(dis);
        System.out.println(student1.name+ " "+student1.age);
    }
}

http://www.dtcms.com/a/410191.html

相关文章:

  • 解析UART空闲中断与DMA接收机制
  • 重庆网站建设百度推广wordpress 随机一句话
  • 企业数据采集实战(二):设备多样性与异构性问题的挑战
  • Android Handler源码阅读
  • JavaWeb项目部署02(Docker)
  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s+calico BGP网络 自用 实践笔记(底稿)
  • 意力机制 | 添加Deformable-LKA可变形大核注意力
  • Android Automotive OS架构
  • 企业网站访问量的第一来源是( )上海兼职网站制作
  • 《AI协同开发深潜:从架构迷雾到系统澄明的实战路径》
  • 专业的营销型网站建设企业方案项目策划书怎么写
  • 光环状态类型释义
  • Doris数据库-常用功能
  • MySQL中的空间碎片率计算分析
  • Python爬虫实战:获取东方财富网游戏板块数据与市场趋势分析
  • 【深度学习计算机视觉】07:单发多框检测(SSD)
  • 提取网站子页面邮箱文化馆建设网站
  • 大数据安全解决方案(PPT)
  • AI大模型学习(14)AI 小白入门!用 OpenCV+Python 打造人体姿态识别系统,超详细教程来了
  • 使用 Azure AD 实现认证与权限管理:原理解析与操作指南
  • 莆田网站建设收费标准广州金山大厦 网站建设
  • Lombok注解使用无效的情况(未能获得后端数据)
  • 网络原理-网络层
  • Flink 容错从状态后端到 Exactly-Once
  • 怎样做门窗网站网站首页被k还有救吗
  • 一体化DevOps平台选型新思维:如何打破研发与运维的壁垒?
  • 2025年14款DevOps理念的项目管理软件促进高效协同
  • 【音视频】pjsua2库:Account 用户注册详解
  • (Arxiv-2025)Lynx:迈向高保真个性化视频生成
  • 学习项目movie-web:构建本地电影、电视视频中心