引用官网介绍:
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. Get和Post区别(转载)

    转载自:https://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一 ...

  2. 2018年11月16日SQL Server实验内容(触发器实验)

    --注意:先把studentmanager数据库中的所有表用select into命令复制一份, --然后用复制后新表完成下面的实验,同时,对每个触发器都要进行验证. select *into dep ...

  3. 攻防世界 reverse pingpong

    pingpong  XCTF 3rd-BCTF-2017 java层代码很简单: 1 package com.geekerchina.pingpongmachine; 2 3 import andro ...

  4. java例题_05 判断分数等级

    1 /*5 [程序 5 判断分数等级] 2 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示. 3 程序 ...

  5. 【2020.02.01NOIP普及模拟4】怪兽

    [2020.02.01NOIP普及模拟4]怪兽 文章目录 [2020.02.01NOIP普及模拟4]怪兽 题目描述 输入 输出 输入输出样例 数据范围限制 提示 解析 code 题目描述 PYWBKT ...

  6. 运行ASP.NET程序(4)

    运行ASP.NET程序有两种方式: 直接点击如图标志的按钮可直接运行,还可以选择浏览器 第二种:F5 两者没区别,看个人习惯

  7. Egress-Assess-出口数据安全功能测试

    简介 Egress-Assess是一款用于测试出口数据检测功能的工具,该工具可辅助完成数据安全模型测试. 在各种情况下,我们的团队都会尝试从我们正在运行的网络中提取数据,并将其移至另一个位置以进行脱机 ...

  8. 201871010129-郑文潇 实验二 个人项目—《D{0-1}背包问题 》项目报告

    项目 内容 课程班级博客链接 课程链接 这个作业要求链接 [作业要求](https://www.cnblogs.com/nwnu-daizh/p/14552393.html) 我的课程学习目标 1.掌 ...

  9. SpringBoot+Dubbo+Zookeeper 实例

    前言 当下Java 生态环境里面,微服务占据了非常大的份额,现在大部分新开发的 Java选型的后台程序都很奇妙的会跟微服务发生一些关系.那目前市面上主流的微服务方向主要有 Spring 家族推出的Sp ...

  10. Socket 多任务(多进程/线程、I/O多路复用、事件驱动开发框架)

    0. 概述 1. 循环版实现多连接 2. threading.Thread 多线程 3. SockerServer 实现多任务 3.1 ForkingMixIn - 多进程(限 linux) 3.2 ...