引用官网介绍:
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基础学习之集合set

    .集合:set 特点:无序,不可重复(自动去重),可更改,可以与元组.列表互相转换 格式:s = {'x','y','z'} 转换:(转回用set) s = {'x','y','z'}        ...

  2. ACM常用的C++ && STL

    内容 c++输入输出 c++ string vector:不定长数组 map:映射 queue:队列 sort:排序 priority_queue:优先队列 c++输入输出 1 #include &l ...

  3. elf.h

    1 /* This file defines standard ELF types, structures, and macros. 2 Copyright (C) 1995-2019 Free So ...

  4. effective解读-第一条 静态工厂创建对象代替构造器

    好处 有名称,能见名知意.例如BigInteger的probablePrime方法 享元模式.单例模式中使用 享元模式:创建对象代价很高,重复调用已有对象,例如数据库连接等.享元模式是单例模式的一个拓 ...

  5. .NET Core 环境变量详解

    一.概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发.测试.以及上线等.每个阶段对应的环境参数配置我们会使用不同的参数.比如数据库的连接字符串,开发环境一般我们都是连接的测试库 ...

  6. MongoDB 那些事(一文以蔽之)

    前言 身边一直都有小伙伴在问:MongoDB到底是什么?它有到底什么特性?有什么与众不同?在什么情况下使用MongoDB最合适?以什么样的姿势是最好的?难道就一定要用吗?....说实话,这些问题都问到 ...

  7. Java 并发编程 Executor 框架

    本文部分摘自<Java 并发编程的艺术> Excutor 框架 1. 两级调度模型 在 HotSpot VM 的线程模型中,Java 线程被一对一映射为本地操作系统线程.在上层,Java ...

  8. Python基础(十八):面向对象“类”第一课

    记住:编写函数就是"面向过程",编写类就是"面向对象".类也是很多同学的一大学习难点,因此我这里还是准备带着大家学习一下. 类和对象对比 对象 : 具有行为和属 ...

  9. 从零玩转SpringSecurity+JWT整合前后端分离

    从零玩转SpringSecurity+JWT整合前后端分离 2021年4月9日 · 预计阅读时间: 50 分钟 一.什么是Jwt? Json web token (JWT), 是为了在网络应用环境间传 ...

  10. 如果你的application.properties中还存在明文密码----加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? 虽然是小项目,明文也没人看. 明文简单快捷方便啊!!! 你看直接用户名root密码123456多么简单!!! ... ...