Netty常问面试题

Netty的使用其实需要开发人员定义各种Handler,合理的运用ChannelPipeline中各种入站、出站的Handler处理业务逻辑,在不同的Handler流转中就涉及粘包半包、序列化反序列化、编解码问题。Netty是一个很强大的网络交互框架,具体的使用还得参考其源码学习相关知识,我这里只是简单的记录下面试过程中面试官问到的一些相关问题(简历上写用过Netty)

1.解决粘包半包问题:

a.在包尾增加分隔符;netty自带的回车换行分隔符,或者自定义分隔符

b.消息定长;例如每个报文长度大小200,长的只截取200,不够的填充空格

c.消息头+消息体的报文形式进行传输;使用LengthFiledBasedFrameDecoder

2.序列化和反序列化

序列化的目的:

1.网络传输

2.对象持久化

JDK有自带的序列化-java.io.Serializable,首先无法跨语言,其次序列化后的码流太大,最后序列化效率过低,因此分布式架构系统下不会采用;

Netty中有自带的序列化和反序列化:JBoss Marshalling 和 Portocol Buffers

基于第三方的MessagePack序列化和反序列化

3.编解码器

将字节解码为消息:ByteToMessageDecoder

将一种消息类型解码为另一种:MessageToMessageDecoder

相反,Netty也提供了一套编码器

将消息编码为字节:MessageToByteEncoder

将消息编码为消息:MessageToMessageEncoder<T>,T代表数据源的类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

you are so cute

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值