面试官:什么是Netty粘包拆包?怎么解决Netty粘包拆包问题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

那我今天趁着天气好去地里干活吧,找不到工作就先下地干活吧,来到地里看见隔壁小丽姐跟他妈在地里正干活呢。

在这里插入图片描述

我:小丽姐,你怎么穿成这样就下地干活来了,你这样让别人还怎么干活?

小丽姐:我这还算正常的,你去东边地里看看你小娜姐,她穿黑丝就来掰棒子了。

我:不是吧,现在种地也这么卷了吗?我还就不信了,我偏去看看。

在这里插入图片描述

我:小娜姐,刚刚小丽姐说你穿黑丝来干活我还不信,现在看来真的是我落后了吗?怎么掰个棒子也这么卷。

小娜姐:没办法呀,以前都正常穿什么事情没有,现在有人开始不好好穿了,都开始了,我也不想卷,但是你不穿哪有男人来帮你干活呀。

我:领教了,终究还是我太年轻。。。我还是去看看张大婶活干的怎么样了,还想跟她借铁锹呢。

在这里插入图片描述

我:张大婶,活快干好了吗,借我用用铁锹呗。

张大婶:你整天就知道美女美女的,还用种地啊。

我:没办法嘛,现在形势不太好,只能弄一下这一亩三分地了。

正当我跟张大婶谈天说地的时候,我的电话响了。

我:“喂您好”。

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

我:“是我,你是?”。

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

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

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

我:“好的”。

二、面试

==================================================================

面试官:我看你简历上写的精通Netty,那你能简单说什么是粘包和拆包吗?

我:粘包和拆包是在进行TCP数据传输的时候所造成的一种现象。

因为TCP是一个流协议,他发送的数据是一个没有界限的长串的二进制数据,TCP在发送数据之前会将数据放入缓存区。

如果缓存区没有满,就会把多个数据都放入缓存区,然后共同发送出去,这就叫粘包。

如果一条数据缓存区就放不下,那么就需要将数据分为多次发送出去,这就叫拆包。

面试官:那我不能客户端发送一条数据就传过去一条数据吗?

我:不可以,客户端属于上层协议,比如我们输入一个张三,他最终会通过底层协议TCP来发送,TCP不管你上层发了几次,它只管自己的缓存区有没有满,满了就发送。

所以如果你客户端发送两个人的姓名,例如第一次发送“张三”,第二次发送“李四”。但是通过TCP这里发生粘包,最终到达服务端那里接收的只有一条消息就是“张三李四”。

面试官:嗯。那我们有什么好的解决方式吗?

我:一般有如下几种解决方式

1:消息定长度:将传输的数据大小固定长度,比如我们固定长度为100个字节,当我们发送“张三”的时候我们就要把不够的空位空格补齐,这样就直接发送出去了,不会粘包了。

2:特殊符号分割:我们用一些特殊符号,比如下划线等来将消息之间分割来开,服务端接收到消息后遇到分隔符就知道是下一条数据了,但是这个分隔符注意一定不要在发送的数据中也有,这样会造成数据不完整。

3:发送长度:每次发送一条数据就将这条数据的长度一并发送,例如可以使用消息头来存储长度,消息体来发送真正的数据,这样服务端可以根据长度来判断数据是否接收完毕。

这个时候如果我们确定了使用哪种方式解决后我们就可以使用对应的解码器了。

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
统化的资料的朋友,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中…(img-d16KKOYP-1713181994850)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值