Java中 byte[]数组序列化和fastjson序列化区别

Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比。

首先看下实现方式:

1 byte数组序列化

这里由两个方法,一个是对象序列化为字节数组,一个是字节数组序列化为对象,这里需要注意的是对象的serialVersionUID 必须设置为一样才能序列化,否则哪怕两个类长得一模一样都会报错。

private static byte[] ObjectToByte(Object obj) {byte[] bytes = null;try {// object to bytearrayByteArrayOutputStream bo = new ByteArrayOutputStream();ObjectOutputStream oo = new ObjectOutputStream(bo);oo.writeObject(obj);bytes = bo.toByteArray();bo.close();oo.close();} catch (Exception e) {System.out.println("translation" + e.getMessage());e.printStackTrace();}return bytes;
}/*** byte转对象* @param bytes* @return*/
private static Object ByteToObject(byte[] bytes) {Object obj = null;try {// bytearray to objectByteArrayInputStream bi = new ByteArrayInputStream(bytes);ObjectInputStream oi = new ObjectInputStream(bi);obj = oi.readObject();bi.close();oi.close();} catch (Exception e) {System.out.println("translation" + e.getMessage());e.printStackTrace();}return obj;
}

2 fastjson序列化

这里选择了fastJson来序列化对象,实现方式如下:

public static <T> T get(String data, Class<T> clazz) {T body = JSON.parseObject(data, clazz);return body;
}public static String toJson(Object o) {return JSONObject.toJSONString(o);
}

fastJson实现方法比较简单。

下面对性能进行了对比:

类别 1000次 5000次 10000次 100000次 1000000次
byte数组 82ms 147ms 213ms 827ms 5707ms
fastJson 114ms 157ms 146ms 174ms 412ms

此数据来自i7 16g内存windows eclipse软件测试得来。

可以看出来在大规模数据的情况下fastJson还是非常快的。

Java中 byte[]数组序列化和fastjson序列化区别相关推荐

  1. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  2. java中byte数组与int类型的转换(两种方式)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  3. java map byte[],java中byte数组不能作为map的key使用

    今天在使用java写代码的时候,用byte数组作为map的key来使用,发现在遍历的时候get到之前传进去的值总是为空,很是困惑,后来查了下资料发现java中的字节数组不能直接作为map的key来使用 ...

  4. java 中byte[] 数组的合并

    因工作的需要,在从事 .Net 的开发中接触到了 Java, 虽然在大学的时候学过一段Java 编程,但并没有在实际的工作中使用过, Java 和 .Net的C#语法很相似,都是面向对象的,感觉在语法 ...

  5. java short to byte_java笔记 Java中byte数组与int,long,short,char间的转换

    package com.util; public class ByteUtil { /** * 转换short为byte * * @param b * @param s * 需要转换的short * ...

  6. Java中byte[]数组和int之间的转换

    在最近的项目中需要用到byte[]和int互转,找了一些资料选了其中感觉蛮不错的一种解决方法记录一下. 转自:http://blog.csdn.net/sunnyfans/article/detail ...

  7. Java中枚举的线程安全性及序列化问题

    转载自  Java中枚举的线程安全性及序列化问题 Java SE5提供了一种新的类型-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序 ...

  8. java中定义byte数组,浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...

  9. java 打印byte数组内容_java中打印byte数组

    JAVA字节转换 字节(Byte)简称:"B",字位(Bit)简称"b", 1 个字位(Bit)=1 个二进制数, 1 个字节=8 个字位=8 个二进制数, 1 ...

最新文章

  1. OOP 面向对象 七大原则 (一)
  2. R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames
  3. 计算机原理多少学分,《计算机组成原理》学分互认复习题.doc
  4. Redux源码浅析系列(二):`combineReducer`
  5. seata-golang 接入指南
  6. 多图指南——微信小程序设计规范
  7. WINCE下的MINGW交叉编译环境下内存崩溃地址的查找方法。
  8. python使用xlrd库处理excel__API常见基本操作
  9. 原创《SQL基础知识第2版》PDF高清版,限时下载!
  10. CentOS 6 安装Hadoop 2.6 (二)配置Hadoop
  11. Abstract Factory(抽象工厂)--对象创建模式
  12. powershell快捷键_借助Windows Terminal搞一个花里胡哨的PowerShell终端
  13. 手绘导图版:深入解析机器学习在风控场景中的8大应用
  14. 一次简单易懂的多态重构实践,让你理解条件逻辑
  15. 项目管理-软件开发模式对比(瀑布、迭代、螺旋、敏捷)
  16. python nltk —— 文本预处理
  17. 安卓手机如何防盗_iphone手机换成安卓手机后如何转移便签备忘录数据?
  18. 初步使用计算机教学案列,信息技术与学科教学整合教学案例
  19. 做了6年的Java,java简历包装项目经验
  20. 系统测试(学习笔记)

热门文章

  1. 容器部署不适合文件服务器,建议使用内置容器部署War文件与可执行jar
  2. c语言实现辗除法,辗除法什么东西哦?
  3. 五十二、Python北京美团汉堡外卖数据分析实战
  4. React  学习第一天-2018-07-21
  5. 极客产品经理学习笔记
  6. 深度运用LSTM神经网络并与经典时序模型对比
  7. MindSpore感恩节重磅福利,华为Mate 40E送送送!
  8. ICCV 2021 Oral | AdaFocus:利用空间冗余性实现高效视频识别
  9. 今日arXiv精选 | 34篇顶会论文:CIKM/ ACL/ Interspeech/ ICCV/ ACM MM
  10. 基于深度学习的多目标跟踪算法——ReID与MOT的联系