msgpack的使用

我们在传输的时候都是以json格式传输TCP数据  如:

{"id":"9b51149b-62a6-4ecd-913a-03c86e4f1ee1","name":"jxd"}

但是 假如我们把key去掉 只保留value  如:

["9b51149b-62a6-4ecd-913a-03c86e4f1ee1","jxd"]

这就是 msgpack

它们的网站https://msgpack.org/   假如很长的一个报文 去掉key的话 会极大减少带宽 ,我们依据顺序来 进行 Bean的组装

上代码:

首先老规矩 引入 maven 依赖 

<dependency>
    <groupId>org.msgpack</groupId>
    <artifactId>msgpack</artifactId>
    <version>0.6.12</version>
</dependency>

建立一个MsgEntity实体类

import lombok.Data;
import org.msgpack.annotation.Message;

@Data
@Message//注意必须要有无参数构造器
public class MsgEntity {
    private String id;
    private Integer age;
    private String name;

    public MsgEntity(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public MsgEntity() {
    }

建立一个测试代码

public class test {
    public static void main(String[] args) throws IOException {
        MsgEntity msgEntity = new MsgEntity(UUID.randomUUID().toString(), "jxd");
        String json = JSONObject.toJSONString(msgEntity);
        System.out.println(json);
        MessagePack messagePack = new MessagePack();
        //将对象转换成数组
        byte[] by = messagePack.write(msgEntity);
        //反序列化
        Value read = messagePack.read(by);
        System.out.println(read);//是没有Key的
    }
}

运行结果如图所示,然后依据这个MsgEntity 顺序可以组装成Bean 对象 , 拿到这种数据之后可以用JAVA 的反射技术进行Bean的组装

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Msgpack和Protobuf都是高性能的序列化反序列化库,它们都具有良好的性能和可扩展性,但是它们的实现方式和特点略有不同。 1. 编码方式:Msgpack使用了类似于JSON的编码方式,即将数据序列化成二进制流,可以节省传输的带宽和存储空间;而Protobuf使用了二进制编码方式,采用了一些高效的编解码算法,可以提高编解码的速度。 2. 序列化反序列化性能:在序列化反序列化性能方面,Msgpack通常比Protobuf更快,因为它的编解码方式比Protobuf更简单,数据格式更轻量级。但是在实际应用中,Msgpack的性能与数据大小、数据结构复杂度等因素有关,不一定在所有场景下都比Protobuf更快。 3. 跨平台支持:Msgpack支持多种编程语言,可以在不同的操作系统和硬件平台上使用;而Protobuf也支持多种编程语言,但是在某些平台上可能存在兼容性问题。 4. 可扩展性:Msgpack的可扩展性比较好,可以通过向已有的数据结构中添加新的字段来扩展数据结构,而不会影响已有的数据结构和代码;而Protobuf的可扩展性也很好,可以通过向已有的数据结构中添加新的字段来扩展数据结构,但是需要进行版本控制,以确保数据的兼容性。 综上所述,Msgpack和Protobuf都是高性能的序列化反序列化库,可以根据具体的应用场景和需求来选择合适的库。如果需要轻量级、高效的数据交换格式,可以选择Msgpack;如果需要更多的特性和可扩展性,可以选择Protobuf。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值