美文网首页读书
什么是Netty编解码,Netty编解码器有哪些?Protost

什么是Netty编解码,Netty编解码器有哪些?Protost

作者: 技术栈 | 来源:发表于2022-05-30 15:13 被阅读0次

一、前言

书接上回,昨天下雨没怎么上街上溜达,今天是个大晴天,准备去街上看看老头下象棋,毕竟我的象棋技术在我们人才村也排的上号的。我去给他们指点指点。.

走到街上竟然看不到下象棋的,我就纳闷了,这么好的天怎么可能没有大爷出来下象棋呢,难道大娘刚刚拿着扫帚过来扫荡过?

image.png

这时我看到路边狗蛋他们几个在玩玻璃球,他们几个平时在村里属于小间谍了,村里发生了什么肯定门清。

image.png

我:狗蛋,你们几个今天看见大爷下象棋了吗?

狗蛋:看见了,现在大爷估计正下的激烈着呢。

我:在哪呢?我怎么没看见。

狗蛋:走,我回家骑上我的坐骑带你去。

image.png

我:狗蛋大哥,咱先等会,你看这狗眼睛都压的睁不开了,咱还是走着去吧。

狗蛋:走。

狗蛋带领着我走了七八条街道,拐了十几个弯,都快走到镇上了,终于看到了我们村里下棋的大爷们了。

image.png

我:大爷啊,咱们下个棋怎么跑这么远,再走两步就出国了。。。

大爷:没办法啊,你大娘新买了一个大扫帚,打人可疼了呢,必须得跑远点。

我:得,那你们先下,谁输了就换我。

正当我给大爷支招,让他用车蹩对方的象眼的时候,我的手机响了。

我:“喂您好”。

对面:“您好,请问是小奇吗”。

我:“是我,你是?”。

对面:“我是XXX公司的,我看到hr推给我你的简历,我感觉还不错,你什么时候方便来现场面试一下”。

我:“现在不方便现场面试了”。

对面:“好吧,那你现在方便吗?我们现在线上面试一下吧”。

我:“好的”。

二、面试

面试官:我看你简历上写的精通Netty,那你能简单说什么是Netty编解码吗?

我:当我们使用Netty发送或者接收一个消息的时候,就会发生一次编码或者解码,比如我们接收外部传过来的消息,我们会将消息解码,如果发送消息,我们会将消息(例如java对象)编码成二进制发送出去,因为消息在真正传输的过程中是通过二进制格式来传输的。

面试官:Netty有哪些编解码器呢?

我:Netty提供了很多编解码器,比如对字符串编码的StringEncoder,对字符串解码的StringDecoder,对对象编码的ObjectEncoder和对对象解码的ObjectDecoder。

面试官:这些编解码器我感觉效率有点低,有没有什么效率更高的编解码器呢?

我:我们可以使用protostuff,protostuff是一个基于protobuf实现的序列化方法,他可以在损耗极低的性能情况下做到序列化。

面试官:protostuff具体怎么使用呢?

我:首先引入依赖。
···
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff‐api</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff‐core</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff‐runtime</artifactId>
<version>1.0.10</version>
</dependency>
···
我:然后新建一个序列化工具类。
···
public class ProtostuffUtil {

private static Map<Class<?>, Schema<?>> cachedSchema = new ConcurrentHashMap<Class<?>, Schema<?>>();

private static <T> Schema<T> getSchema(Class<T> clazz) {
@SuppressWarnings("unchecked")
Schema<T> schema = (Schema<T>) cachedSchema.get(clazz);
if (schema == null) {
schema = RuntimeSchema.getSchema(clazz);
if (schema != null) {
cachedSchema.put(clazz, schema);
}
}
return schema;
}
···
我:编写序列化反序列化方法。
···
/**

  • 序列化
  • @param obj
  • @return
    */
    public static <T> byte[] serializer(T obj) {
    @SuppressWarnings("unchecked")
    Class<T> clazz = (Class<T>) obj.getClass();
    LinkedBuffer buffer = LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE);
    try {
    Schema<T> schema = getSchema(clazz);
    return ProtostuffIOUtil.toByteArray(obj, schema, buffer);
    } catch (Exception e) {
    throw new IllegalStateException(e.getMessage(), e);
    } finally {
    buffer.clear();
    }
    }

/**

  • 反序列化
  • @param data
  • @param clazz
  • @return
    */
    public static <T> T deserializer(byte[] data, Class<T> clazz) {
    try {
    T obj = clazz.newInstance();
    Schema<T> schema = getSchema(clazz);
    ProtostuffIOUtil.mergeFrom(data, obj, schema);
    return obj;
    } catch (Exception e) {
    throw new IllegalStateException(e.getMessage(), e);
    }
    }
    ···

面试官:“小伙子不错呀,什么时候能回北京入职呢”

我:“额。。。等等吧,现在还有好多家公司等着谈薪资呢,我得挑一家合适的。”

面试官:“你要多少我都给你,来我这吧”

我:“额。。。那就月薪100个W吧”。

面试官:“喂,你说什么我听不见,信号不好。。。”

我:“喂喂喂”(嘟嘟嘟嘟嘟嘟嘟嘟。。。)。

三、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

相关文章

  • 什么是Netty编解码,Netty编解码器有哪些?Protost

    一、前言 书接上回,昨天下雨没怎么上街上溜达,今天是个大晴天,准备去街上看看老头下象棋,毕竟我的象棋技术在我们人才...

  • Netty之六编解码器和handler的调用机制

    个人专题目录 1. Netty编解码器和handler的调用机制 1.1 基本说明 netty的组件设计:Nett...

  • 使用Netty编写一个极简的Http服务器

    Netty是一个高性能的网络编程框架,有着简单易于使用的抽象模型。利用Netty自带的Http协议编解码器,我们可...

  • netty 相关问题

    概览: Netty 是什么?为什么要用 Netty?Netty 应用场景了解么?Netty 核心组件有哪些?分别有...

  • Netty学习之内置处理器以及编解码器

    Netty学习之内置处理器以及编解码器 前言 SSL/TLS SSL/TLS是目前广泛使用的加密,位于TCP之上,...

  • Netty编解码器

    概述 网络中数据是以二进制字节流进行传输,编码器的作用是将数据编码为二进制字节流,而解码器的作用是将二进制字节流解...

  • netty编解码器示例

    代码很简单,仅是个应用示范,无实际意义。客户端发送“长度+字节数组”形式的消息,服务器收到直接显示。客户端发送时,...

  • netty的编解码器

    编解码器指的是转换两种不同格式的数据,在网络编程中几乎是必不可少的。比如将String转成ByteBuf,将Stu...

  • Netty源码_编解码器

    每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和目标应用程序的数据格式做相互转换...

  • JAVA-每日一面 2022-01-23

    为什么选择 Netty以及Netty 的使用场景 API使用简单,开发门槛低; 功能强大,预置了多种编解码功能,支...

网友评论

    本文标题:什么是Netty编解码,Netty编解码器有哪些?Protost

    本文链接:https://www.haomeiwen.com/subject/hrmoprtx.html