# fse **Repository Path**: temper/fse ## Basic Information - **Project Name**: fse - **Description**: Java序列化框架,可以任意Java对象序列化为字节数组并且完成反序列化。支持任意Java类型,序列化的对象不需要特殊接口即可。 性能测试显示,序列化性能约为Kryo的2.3倍,反序列化性能约为Kryo的1.4倍。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://eric_ds.gitee.io/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2020-02-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # fse ## 介绍 高性能Java序列化框架,可以任意Java对象序列化为字节数组并且完成反序列化。支持任意Java类型,序列化的对象不需要特殊接口即可。 ## 性能测试 使用业务场景下常见对象进行性能验证,对象内部包含基本属性,字符串,以及其构成的数组和List、Map接口等,在收集性能数据之前首先进行一次序列化操作保证预热。对比数据如下 ![](https://markdownpic-1251577930.cos.ap-chengdu.myqcloud.com/20200204221213.png) ## 使用说明 首先在Pom文件中引入依赖,如下 ```xml com.jfireframework fse aegean-2.1 ``` API 使用方式如下 ```java Fse fse = new Fse(); TestData data = new TestData(); //创建一个二进制数组容器,用于容纳序列化后的输出。容器大小会在需要时自动扩大,入参仅决定初始化大小。 ByteArray buf = ByteArray.allocate(100); //执行序列化,会将序列化对象序列化到二进制数组容器之中。 fse.serialize(data, buf); //得到序列化后的二进制数组结果 byte[] resultBytes = buf.toArray(); //清空容器内容,可以反复使用该容器 buf.clear(); //填入数据,准备进行反序列化 buf.put(resultBytes); TestData result = (TestData) fse.deSerialize(buf); assertTrue(result.equals(data)); ``` Fse不是并发安全的。多个线程需要使用多个实例来进行调用。 ## 注意 + 2.x 版本引入了新的优化机制,产生的字节数据与 1.x 系列有一定区别,两者之间无法兼容。建议直接使用 2.0 版本,性能更好。 + 由于中央仓库对 baseutil 库 aegean-1.2 版本的缺失引用。Fse 的2.0版本依赖不全,使用2.1版本即可。