Nio(selector(处理消息边界问题(三种方案)))
- 若是传的数据大于buffer,我们可以将buffer扩容处理
第一种方案:传的数据小于buffer,固定消息的长度,我们再给服务器也固定长度读取(容易影响带宽)
第二种方案:我们根据分隔符拆分消息,我们创建临时buffer大小,去接收消息(有两个问题1、我们要去遍历消息找到分隔符,时间开销大2、若是其消息长度还是大于buffer长度,还是要考虑扩容问题)
第三种方案:我们传消息的时候先传我们消息的大小给我们的服务器,我们服务器就分补来接收。动态的分配buffer大小来接收消息。(我们的http也是这种方案http2.0(ltv格式))
http2.0:(ltv)先传长度,再是消息的类型,最后是消息
http1.0:(tlv)先传文本类型,在传消息大小,最后是消息
总结: