引用官网介绍:
Hessian is a dynamically-typed, binary serialization and Web Services protocol designed for object-oriented transmission.
  Hessian 是动态类型、二进制、紧凑的,并且可跨语言移植的一种序列化框架。Hessian 协议要比 JDK、JSON 更加紧凑,性能上要比 JDK、JSON 序列化高效很多,而且生成的字节数也更小。
代码示例如下:
 1 @Data
2 public class SimplePOJO implements Serializable {
3 String field1;
4 String field2;
5 public SimplePOJO(String s1, String s2) {
6 field1 = s1;
7 field2 = s2;
8 }
9 // fastjson逆序列化时要求对象必须要有一个默认的构造函数
10 public SimplePOJO(){}
11 }
12 public static void main(String[] args) throws IOException, ClassNotFoundException {
13 SimplePOJO student = new SimplePOJO("16","张三");
14 //把student对象转化为byte数组
15 ByteArrayOutputStream bos = new ByteArrayOutputStream();
16 Hessian2Output output = new Hessian2Output(bos);
17 output.writeObject(student);
18 output.flushBuffer();
19 byte[] data = bos.toByteArray();
20 bos.close();
21
22 // 把字节流存入文件
23 FileOutputStream fos = new FileOutputStream("C:\\Users\\user\\Desktop\\student.dat");
24 fos.write(data);
25 fos.close();
26 // 从文件中读取字节流
27 FileInputStream fis = new FileInputStream( "C:\\Users\\user\\Desktop\\student.dat");
28 byte[] bytes = new byte[fis.available()];
29 fis.read(bytes);
30
31 // 转化为student对象
32 ByteArrayInputStream bis = new ByteArrayInputStream(data);
33 Hessian2Input input = new Hessian2Input(bis);
34 SimplePOJO deStudent = (SimplePOJO) input.readObject();
35 input.close();
36 System.out.println(deStudent);
37 }
  打开保存的中间文件看看:

  可以看到有类名以及属性名和对应值
  具体的数据-byte类型的映射可以参考官网http://hessian.caucho.com/doc/hessian-serialization.html
  对于上述代码,其数据类型为Object类型。Object类型转换格式为(官网):
 1 class Car {
2 String color;
3 String model;
4 }
5
6 out.writeObject(new Car("red", "corvette"));
7 out.writeObject(new Car("green", "civic"));
8
9 ---
10
11 C # object definition (#0)
12 x0b example.Car # type is example.Car
13 x92 # two fields
14 x05 color # color field name
15 x05 model # model field name
16
17 O # object def (long form)
18 x90 # object definition #0
19 x03 red # color field value
20 x08 corvette # model field value
21
22 x60 # object def #0 (short form)
23 x05 green # color field value
24 x05 civic # model field value

序列化-Hessian的更多相关文章

  1. Netty学习二:Java IO与序列化

    1 Java IO 1.1 Java IO 1.1.1 IO IO,即输入(Input)输出(Output)的简写,是描述计算机软硬件对二进制数据的传输.读写等操作的统称. 按照软硬件可分为: 磁盘I ...

  2. Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!

    环境: win10 + jdk 1.8 + dubbo 2.5.10 问题描述: 当一个对象(此对象内包含多个CopyOnWriteArrayList对象) 作为参数调用RPC接口后, 服务提供者拿到 ...

  3. dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决

    dubbo序列化,hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决 转载声明: ...

  4. 常见的序列化框架及Protobuf序列化原理

    原文链接:https://www.jianshu.com/p/657fbf347934 https://www.cnblogs.com/javazhiyin/p/11375553.html https ...

  5. 分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器

    Dubbo+Kryo实现高速序列化 Dubbo RPC是Dubbo体系中最核心的一种高性能,高吞吐量的远程调用方式,是一种多路复用的TCP长连接调用: 长连接: 避免每次调用新建TCP连接,提高调用的 ...

  6. JAVA - 序列化的方式

    JAVA - 序列化的方式 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读 ...

  7. JAVA复制

    复制 直接赋值 直接赋值.在 Java 中, A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说 a1 和 a2 指向的是同一个对象.因此,当 a1 变化的时候, a2 里面的成员变量 ...

  8. [Java复习] 微服务

    1. 怎么样定义一个微服务,或划分服务比较合理?业务导向的共性? 对应服务拆分,先设计高内聚低耦合的领域模型(DD),再实现相应的分布式系统是一种比较合理的方式. 微服务是手段,不是目的.目的是为了让 ...

  9. Java 面试知识点【背诵版 240题 约7w字】

    -- 转载自牛客网 是瑶瑶公主吖 Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理 ...

随机推荐

  1. python 集合详解

    字符串 一个个字符组成的有序的序列,时字符的集合 使用单引,双引,三引 引住的字符序列 字符时不可变的对象 bytes定义 bytes不可变字节序列 使用b前缀定义 只允许基本ASCII使用字符形式 ...

  2. reverseLinkedList(翻转链表)

    ReverseLinkedList(翻转链表) 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.非连续.非顺序指的是,通过指针把一组零散的内存块串 ...

  3. Java8 Stream 中 List 转 Map 问题总结

    在使用 Java 的新特性 Collectors.toMap() 将 List 转换为 Map 时存在一些不容易发现的问题,这里总结一下备查. 空指针风险 java.lang.NullPointerE ...

  4. Spring基于XML的IoC

    Maven导入Spring依赖 <dependency> <groupId>org.springframework</groupId> <artifactId ...

  5. c++ 反汇编 局部静态变量

    vs2017下测试 34: for (int i = 0; i < 5; i++) 0029734E C7 45 F8 00 00 00 00 mov dword ptr [ebp-8],0 0 ...

  6. PTA 求二叉树的深度

    6-7 求二叉树的深度 (6 分)   本题要求实现一个函数,可返回二叉树的深度. 函数接口定义: int Depth(BiTree T); T是二叉树树根指针,函数Depth返回二叉树的深度,若树为 ...

  7. C++中的间接宏函数

    宏函数对于每个C++程序员都决不陌生,就算是初出茅庐的C++程序员也知道如何定义.使用宏函数.   但是当初学者看到类似于以下这种宏函数嵌套的时候,可能还是会比较嘀咕, #define CONVERT ...

  8. CSS3常见动画

    一.是什么 CSS动画(CSS Animations)是为层叠样式表建议的允许可扩展标记语言(XML)元素使用CSS的动画的模块 即指元素从一种样式逐渐过渡为另一种样式的过程 常见的动画效果有很多,如 ...

  9. CMD控制台(命令提示符)的打开方式

    打开CMD的方式 打开+系统+命令提示符 Win键 +R 输入cmd 打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击+在此处打开命令行窗口 资源管理器的地址栏前面加上cmd ...

  10. SQL Server如何将查询的内容保存到新的sql 表中

    我是采用语句将 查询后的数据保存到一个新表中 1)采用into table 语句,需要保存到的这个新表不需要提前创建 select *into NewTable from Table --插入新表的语 ...