1、序列化之Java序列化工具详解

Java高性能序列化工具Kryo序列化 阅读详情

Java的序列化与反序列化工具详解

1、序列化和反序列化定义

序列化:Java序列化是指把Java对象转换为可传输的字节序列的过程;

反序列化:而Java反序列化是指把传输的字节序列恢复为Java对象的过程。这两个过程使我们非常方便的存储和传输数据。

2、工具介绍

2.1、Jackson(即ObjectMapper)

2.1.1概述:
	Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一 。 
2.1.2、优点:
	Spring MVC 的默认 json 解析器便是 Jackson。 
	Jackson 所依赖的 jar 包较少 ,简单易用。
	与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;
	Jackson 运行时占用内存比较低,性能比较好;
	Jackson 有灵活的 API,可以很容易进行扩展和定制。
2.1.3、使用方法:
jackson
//maven依赖
//该依赖同时会将如下库添加到项目路径中:
//jackson-annotations-2.9.8.jar
//jackson-core-2.9.8.jar
//jackson-databind-2.9.8.jar
<!-- json数据的解析包 -->
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.9.3</version>
  </dependency>
   
//导包: 
import com.fasterxml.jackson.databind.ObjectMapper;

//序列化
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(all);
//反序列化
ObjectMapper mapper = new ObjectMapper();
List list = mapper.readValue(categories, List.class);
2.1.4、工具类:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @author :
 * @date :Created in 19:30 2022/7/18
 * @description :
 * @version: 1.0
 */
public class ObjectMapperUtils {

    public static final ObjectMapper mapper = new ObjectMapper();

    private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);

    public static String toString(Object obj) {
        if (obj == null) {
            return null;
        }
        if (obj.getClass() == String.class) {
            return (String) obj;
        }
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            logger.error("json序列化出错:" + obj, e);
            return null;
        }
    }

    public static <T> T toBean(String json, Class<T> tClass) {
        try {
            return mapper.readValue(json, tClass);
        } catch (IOException e) {
            logger.error("json解析出错:" + json, e);
            return null;
        }
    }

    public static <E> List<E> toList(String json, Class<E> eClass) {
        try {
            return mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, eClass));
        } catch (IOException e) {
            logger.error("json解析出错:" + json, e);
            return null;
        }
    }

    public static <K, V> Map<K, V> toMap(String json, Class<K> kClass, Class<V> vClass) {
        try {
            return mapper.readValue(json, mapper.getTypeFactory().constructMapType(Map.class, kClass, vClass));
        } catch (IOException e) {
            logger.error("json解析出错:" + json, e);
            return null;
        }
    }

    public static <T> T nativeRead(String json, TypeReference<T> type) {
        try {
            return mapper.readValue(json, type);
        } catch (IOException e) {
            logger.error("json解析出错:" + json, e);
            return null;
        }
    }
}

2.2、Gson

2.2.1、概述:
	Gson是一个Java库,可用于将Java对象转换为JSON表示,它也可以用来将JSON字符串转换为等效的Java对象。使用的主要类是Gson,可以通过调用创建new Gson(),Gson实例在调用Json操作时不保持任何状态,所以,你可以自由地重复使用同一个对象来进行多个Json序列化和反序列化操作。
2.2.2、优点:
1.gson默认支持LocalData;
2.如果字段被标记为transient,(默认情况下)它会被忽略并且不包含在 JSON 序列化或反序列化中;
3.此实现正确处理空值,序列化时,从输出中跳过空字段反序列化时,JSON 中缺少条目导致将对象中的相应字段设置为 null;
4.如果字段是synthetic的,则它会被忽略并且不包括在 JSON 序列化或反序列化中。
2.2.3、使用方法:
//maven依赖
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>
       
//需要导包
import com.google.gson.Gson;

//序列化
String s = new Gson().toJson(setMealDetails);
//反序列化
Setmeal setmeal = new Gson().fromJson(json, Setmeal.class);
2.2.4、工具类:

import cn.hutool.core.date.DatePattern;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author :
 * @date :Created in 20:12 2022/7/18
 * @description :Gson序列化工具类
 * @version: 1.0
 */
@Slf4j
public class GsonSerializeUtils {

    public static final Gson gsonToJson = new GsonBuilder()
            .registerTypeAdapter(LocalDateTime.class, new JsonSerializer<LocalDateTime>() {
                @Override
                public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) {
                    return new JsonPrimitive(localDateTime.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
                }
            })
            .registerTypeAdapter(LocalDate.class, new JsonSerializer<LocalDate>() {
                @Override
                public JsonElement serialize(LocalDate localDate, Type typeOfSrc, JsonSerializationContext context) {
                    return new JsonPrimitive(localDate.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
                }
            })
            .registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
                @Override
                public JsonElement serialize(Date date, Type typeOfSrc, JsonSerializationContext context) {
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
                    String dateString = simpleDateFormat.format(date);
                    return new JsonPrimitive(dateString);
                }
            })
            .serializeNulls()
            .create();


    public static final  Gson gsonToBean = new GsonBuilder()
            .registerTypeAdapter(LocalDateTime.class, new JsonDeserializer() {
                @Override
                public LocalDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
                    return LocalDateTime.parse(json.getAsJsonPrimitive().getAsString(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
                }
            })
            .registerTypeAdapter(LocalDate.class, new JsonDeserializer() {
                @Override
                public LocalDate deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
                    return LocalDate.parse(json.getAsJsonPrimitive().getAsString(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
                }
            })
            .registerTypeAdapter(Date.class, new JsonDeserializer() {
                @SneakyThrows
                @Override
                public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
                    return simpleDateFormat.parse(json.getAsJsonPrimitive().getAsString());
                }
            })
            .create();

    public static String toString(Object obj) {
        if (obj.getClass() == String.class) {
            return (String) obj;
        }
        try {
            return gsonToJson.toJson(obj);
        } catch (Exception e) {
            log.error("json序列化出错:" + obj, e);
            return null;
        }
    }

    public static <T> T toBean(String json, Class<T> tClass) {
        if(json == null || json.equals("")){
            return null;
        }
        try {
            return gsonToBean.fromJson(json, tClass);
        } catch (Exception e) {
            log.error("json解析Bean出错:" + json, e);
            return null;
        }
    }

    public static <E> List<E> toList(String json, Class<E> eClass) {
        try {
            return gsonToBean.fromJson(json, new TypeToken<List<E>>(){}.getType());
        } catch (Exception e) {
            log.error("json解析List出错:" + json, e);
            return null;
        }
    }

    public static <K, V> Map<K, V> toMap(String json, Class<K> kClass, Class<V> vClass) {
        try {
            return gsonToBean.fromJson(json, new TypeToken<Map<K, V>>(){}.getType());
        } catch (Exception e) {
            log.error("json解析出错:" + json, e);
            return null;
        }
    }

    public static <T> T nativeRead(String json,  TypeToken typeToken) {
        try {
            return gsonToBean.fromJson(json, typeToken.getType());
        } catch (Exception e) {
            log.error("json解析出错:" + json, e);
            return null;
        }
    }

}

2.3、Fastjson

2.3.1、概述:
	JSON、JSONObject都是FastJson框架中的东西,JSON协议使用方便,越来越流行,JSON的处理器有很多,这里先介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架。
2.3.2、优点:

​ 1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast

​ 2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

​ 3.零依赖(没有依赖其它任何类库)

2.3.3、JSON、JSONObject、javabean关系的解析:

​ 首先JSON、JSONObject是属于FastJson框架的类,它们就是普通的类只不过在FastJson框架赋予了它们对json格式字符的处理能力。

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供处理对象样子的json字符的类。

2.3.4、使用方法:
//maven依赖
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.58</version>
</dependency>

//导包
import com.alibaba.fastjson.JSONObject;


//序列化
String jsonString = JSON.toJSONString(updateResponse)
//反序列化
Student student = JSON.parseObject("对象样子的json字符", new TypeReference<Student>() {});

//反序列化 json格式数据(需要是最外层为{}包裹的)转换为Map集合
//如果最外层是[]包裹的,则需要使用parseArray()方法来处理转换为List集合
Map<String, String> spec = JSON.parseObject(sku.getSpec(), Map.class);

//将json格式字符串转换成List集合, 如果json字符串最外层是方括号[]使用这个方法
//JSON.parseArray();

2.4、性能对比及选择

当数据量较小的时候(1~100),建议使用 Gson;
当数据量较大的时候,建议使用Jackson;
在大数据量的时候,虽然FastJson优势上来了,但是因为有漏洞,不得不放弃。
CTFSHOW Java反序列化实战:从CC链到ysoserial工具保姆级教程 本文提供了一份针对CTFSHOW平台的Java反序列化漏洞实战指南。文章从经典的CC链原理入手,详细拆解了利用链的构造过程,并提供了ysoserial工具的保姆级使用教程。内容涵盖环境搭建、Payload生成、编码投递以及应对CTF中常见限制的绕过技巧,旨在帮助读者深入理解漏洞原理并掌握实战利用方法。 阅读详情

相关推荐

Java序列化工具对比

1. Java序列化工具技术原理比较 Binary Formats &amp;amp; language-specific ones JavaBuiltIn(java原生)、JavaManual(根据成员变量类型,手工写)、FstSerliazation、Kryo Binary formats-generic language-unspecific ones Protobuf(Google)、Th...

吹雪的专栏 4935

100个Java工具类之42:序列化工具类Apache之SerializationUtils

众所周知:Java中序列化是指,将Java对象转换为可存储传输的字节序列的过程。序列化作用:1、网络传输:网络可以传输字节化的java对象2、数据安全:字节数据,方便在磁盘上存储3、便于存储:可以将其存储在磁盘上,以供以后使用下面介绍序列化工序SerializationUtils的使用实例。

qq_21305943的专栏 770

Java序列化的几种方式

【Java序列化的几种方式】

学无止境 3953

JAVA 序列化工具

Java 工具类

wxairn的博客 352

深度详解Java序列化

 对象序列化是将对象转换为字节序列的过程,使其可以在网络上进行传输或者保存到磁盘上。本文将详细介绍Java对象序列化的实现机制、工作原理和注意事项。希望能对学习Java的同学们有所帮助。 文章目录 1. Java对象序列化的作用 2. Java对象序列化实现机制 3. 序列化的注意事项 4. 常用的序列化协议 4.1 Java标准序列化 4.2 JSON 4.3 Protobuf 4.4 Thrift 5. 总结

weixin_43178406的博客 6万+

Claude Desktop Cowork国内实操指南:本地文件自动化办公

大语言模型正从‘问答式AI’迈向‘执行型协作者’,其核心能力在于直接操作本地文件、调用系统工具并嵌入真实工作流。Claude Desktop的Cowork模式正是这一范式的代表,它通过轻量沙箱VM实现对Excel、PPT、PDF、音视频等办公资产的读写与处理,无需手动编码即可完成数据清洗、会议纪要生成、自动化报告输出等任务。技术价值体现在权限可控、环境隔离、结果可交付;典型场景覆盖行政文秘的文档流转、销售运营的数据分析、开发者的脚本调试与环境验证。本文聚焦国内用户高频卡点——网络链路、系统权限与工作流断层,

weixin_30617737的博客 469

java序列化工具类(SerializationUtils)

是一个简单易用的 Java 工具类,极大地简化了序列化和反序列化操作。它不仅可以将对象转换为字节流,还可以进行深度复制。在日常开发中,尤其是在处理分布式系统、缓存和持久化场景时,它是一个非常实用的工具。不过,如果性能是关键因素,开发者可能需要考虑更高效的序列化框架。

Flying_Fish_roe的博客 2248

【OpenArm|Control】openarm机械臂ROS2仿真控制

openarm_ros2 存储库包含用于 ros2_control 的包集合。 它抽象化了硬件控制,将手臂公开为接收位置、速度和扭矩命令并输出关节状态的接口。 openarm_bringup 包提供了通过包与 ROS2 控制框架集成的启动文件。该软件包提供启动文件和配置,用于启动硬件接口、加载控制器以及将物理臂连接到 ROS2 生态系统。启动后,您可以使用标准 ROS2 控制工具和接口来命令手臂并接收反馈。openarm_bringup bringup 包支持模拟硬件(用于模拟/测试)和通过硬件插件的真实

ai领域探索者,欢迎一起交流,目前从事具身智能行业。 2959

java序列化详解

一、序列化与反序列化 序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的过程。 即将对象转化为二进制,用于保存,或者网络传输。 反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者...

文盲青年的博客 4万+

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1574

若依(RuoYi)项目里,Quartz定时任务踩坑实录:并发控制、事务回滚与异常处理

本文深入解析若依(RuoYi)项目中Quartz定时任务的并发控制、事务回滚与异常处理三大核心问题。通过实战案例揭示@DisallowConcurrentExecution注解的局限性和Redis分布式锁的应用,详细讲解Spring事务集成方案及多数据源事务管理,并提供生产级监控体系搭建指南,帮助开发者规避Quartz在生产环境中的常见陷阱。

weixin_28731223的博客 413

Java对象序列化详解

所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。一、定义  序列化:把Java对象转换为字节序列的过程。      反序列化:把字节序列恢复为Java对象的过程。二、用途  对象的序列化主要有两种用途:      1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)      2) 在网络上传送对象的字节序列。(网络传输对象)...

爱雨轩 4万+

实战解析:从Innovus到Calibre的LVS错误排查全流程

本文详细解析了从Innovus到Calibre的LVS错误排查全流程,涵盖物理验证关键步骤与工具链协同。通过实战案例分享,重点解决器件不匹配、连接性错误等常见问题,并提供GDS导出规范、网表修正策略等实用技巧,帮助工程师高效完成芯片设计物理验证。

9o8p7i6u5y的博客 1038

详解JAVA序列化

进来,一文给你讲明白“序列化”。

BugMan的博客 9397

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1724

人工智能大模型原理与应用实战:AI模型转换为API的步骤和方法

传统的开发模式下,构建复杂的软件系统是非常费时费力的,而通过云计算、微服务等技术手段可以实现快速部署、弹性扩展的能力。在这种背景下,越来越多的公司将重点转移到研发人员的产品思维上,希望能够将自己的AI模型转换为一个可供他人调用的API接口。但是对于许多从事AI领域的研发人员来说,如何将自己的AI模型转换为API是一个比较棘手的问题。在这篇文章中,作者将从AI模型转换为API的过程分为以下几个步骤:AI模型准备阶段——模型选择、数据准备、模型训练。

AI天才研究院 2601

Java对象的序列化(Serialization)和反序列化详解

1.序列化和反序列化 序列化(Serialization)是将对象的状态信息转化为可以存储或者传输的形式的过程,一般将一个对象存储到一个储存媒介,例如档案或记忆体缓冲等,在网络传输过程中,可以是字节或者XML等格式;而字节或者XML格式的可以还原成完全相等的对象,这个相反的过程又称为反序列化; 2.Java对象的序列化和反序列化 在Java中,我们可以通过多种方式来创建对象,并且只要对象...

OceanSky的专栏 12万+

Android 系统状态栏中实现高斯模糊背景

至此,我们已经完成了在 Android 系统的 SystemUI 中实现高斯模糊背景的过程。通过以上的布局和代码修改,我们可以在状态栏中看到具有高斯模糊效果的背景。同时,为了在不同版本的 Android 系统上适配高斯模糊效果,可能需要进行一些额外的代码调整和兼容性处理。希望本文能够帮助你理解如何在 Android 系统的 SystemUI 中实现高斯模糊背景,并通过提供的源代码进行相应的开发和调试。首先,我们需要在 SystemUI 的布局文件中添加一个用于展示高斯模糊背景的视图。属性来开启模糊效果。

CyberSparkZ的博客 871

Java序列化和反序列化(详解)

java序列化及可序列化讲解,代码清晰易懂。

qq_62414755的博客 4万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JAVA反序列化系列--CC链1分析详解

本文详细介绍了如何通过Java反序列化漏洞利用Commons Collections库中的Transformer链(CC1链)实现任意命令执行。首先,配置Maven项目并添加commons-collections依赖,准备JDK源码以便调试。接着,分析了InvokerTransformer、ChainedTransformer和ConstantTransformer三个关键类的作用及其在漏洞利用中的角色。通过反射调用Runtime.getRuntime(),绕过类型检查,并构造Transformer链

m0_74211871的博客 2722

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java序列化与反序列化详解

serialVersionUID - 0x0e 76 fa 9f 59 73 be c6 是16进制转换为二进制,就是生成的值transient修饰的变量不能被序列化;transient只作用于实现 Serializable 接口;transient只能用来修饰普通成员变量字段;不管有没有 transient 修饰,静态变量都不能被序列化;

pyth0zn的博客 4562

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Java 序列化详解

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。序列化:在序列化过程中,对象的状态被保存为一连串的字节,这些字节可以保存到文件中或通过网络传输。序列化后的字节流可以在需要时进行反序列化反序列化:与序列化相反,反序列化是指将字节流转化为对象的过程。在反序列化过程中,字节流被重新组装成对象,并恢复对象的状态。

Yaml4的博客 1286

Java序列化之Jackson详解

Jackson是一个用于处理JSON数据的开源Java库。是一种轻量级的数据交换格式,易于阅读和编写,同时也易于计算机解析和生成。在Java领域,Jackson已经成为处理JSON数据的事实标准库。它提供了丰富的功能,包括将Java对象转换为JSON字符串(序列化)以及将JSON字符串转换为Java对象(反序列化Jackson:提供了通用的数据绑定功能(将Java对象与JSON数据相互转换):提供了核心的低级JSON处理API(例如JsonParser和JsonGenerator)

上善若泪 5637

Java序列化详解

序列化是指将对象转化为字节流的过程,以便于存储或传输。在序列化过程中,对象的状态被保存为一连串的字节,可以将这些字节保存到文件中或通过网络传输。序列化后的字节流可以在需要时进行反序列化,将字节流重新转化为对象,并恢复对象的状态。在Java中,对象的序列化是通过实现接口来实现的。Serializable接口是一个标记接口,没有任何方法,只是用于标识一个类可以被序列化。当一个类实现了Serializable接口,它的对象就可以被序列化为字节流。

码灵的博客 2700
上一篇: 一次解决IDEA所有乱码情况
下一篇: 2、加密算法介绍及RSA实战
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白de成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值