XSON,高性能的Java序列化框架

XSON是一个Java序列化和反序列化框架,提供高速度和低内存消耗。支持对象到字节数组的转换,以及字节数组到对象的还原。新版本增加了byte[]管理,提升性能并减少Full GC。本文介绍XSON的项目背景、新特性、使用教程、技术设计,以及数据结构和性能评测。
摘要由CSDN通过智能技术生成

1. 项目介绍

Xson

Xson是一个Java对象序列化和反序列化框架。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。

官网地址:http://xson.org

项目地址:https://github.com/xsonorg/xson

2. 新版本特性

  1. 新增buffer包,此包中的相关类提供对序列化过程中的byte[]进行分配、使用、回收的管理;进一步提供序列化的速度,并减少Full GC。
  2. 提供带有偏移内容的API支持;
  3. 提供XCO对象序列化和反序列的支持;
  4. 提供扩展配置文件的支持;

3. 使用教程

3.1 基本使用

a. 添加依赖

<dependency>
    <groupId>org.xson</groupId>
    <artifactId>xson</artifactId>
    <version>1.0.2</version>
</dependency>

b. 序列化

User user = new User();
// set...
byte[] data = XSON.encode(user);

c. 反序列化

// byte[] data
User user = XSON.decode(data);

d. 带有偏移内容的序列化和反序列化

偏移内容

int x = 6;

User user = new User();
// set...
byte[] data = XSON.encode(x, user);

// byte[] data
User user = XSON.decode(x, data);

3.2 配置文件

1.xson.properties文件配置示例:

# Support for XCO
xco=true

# ByteArrayManager configuration
byteArray.number=100
byteArray.capacity=512

# User classname mapping configuration
java.util.ArrayList=0
java.util.EnumSet=1
java.util.HashSet=2
java.util.LinkedHashSet=3
java.util.LinkedList=4
java.util.Stack=5
java.util.TreeSet=6
java.util.Vector=7
java.util.EnumMap=8
java.util.HashMap=9
java.util.Hashtable=a
java.util.IdentityHashMap=b
java.util.LinkedHashMap=c
java.util.Properties=d
java.util.TreeMap=e
java.util.concurrent.ConcurrentHashMap=f

2.配置说明

xco=true 开启对XCO对象的支持,默认不开启;

byteArray.numberByteArrayManager管理的byte[]数量,默认100;

byteArray.capacityByteArrayManager管理的每个byte[]的容量,默认512;

java.util.ArrayList=0 用户类名自定义映射;比如:当XSON序列化的User对象时,序列化结果的类信息描述区中会记录User类的全类名,如org.xson.User,如果我们通过此处配置org.xson.User=user,那么类信息描述区中将只记录user,此处配置可缩小序列化后数据的体积;

注意 配置文件使用固定名称xson.properties,使用时请放入classpath根路径下。

3.3 自定义序列化处理器

1.用户自定义Serializer和Deserializer

public class CustomerSerializer implements XsonWriter {

    @Override
    public void write(Object target, ByteModel model) {
        // Implementation code
    }
}

public class CustomerDeserializer implements XsonReader {
    @Override
    public Object read(ReaderModel model) {
        // Implementation code
        return null;
    }
}

2.添加用户自定义的Serializer和Deserializer

XsonSupport.addCustomSerializer(User.class, new CustomerSerializer(), new CustomerDeserializer());

注意: Serializer和Deserializer必须成对设置.

4. 技术设计

4.1 类图设计

类图设计

  1. XSON:用户入口类,提供序列化和反序列化方法;
  2. WriterModel:序列化写入模型类;
  3. XsonWriter:序列化接口;
  4. ArraySerializer:对象数组序列化类;
  5. CollectionSerializer:集合对象序列化类;
  6. EnumSerializer:枚举对象序列化类;
  7. MapSerializer:Map对象序列化类;
  8. Other Serializer:其他类型对象序列化类,详见源码;
  9. ReaderModel:反序列化读取模型类;
  10. XsonReader:反序列化接口;
  11. CurrencyDeserializer:货币对象反列化类;
  12. DateUtilDeserializer:时间对象反列化类;
  13. LocaleDeserializer:地区对象反列化类;
  14. LongDeserializer:Long包装对象反列化类;
  15. Other Deserializ
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值