netty面试题:
https://blog.csdn.net/baiye_xing/article/details/76735113
BIO通信模型是 一个请求一个线程。
伪异步IO模型图 是在前端或者后端 加上了线程池之类的缓冲区域,其实还是一个BIO 阻塞模型。
NIO非阻塞模型:主要用到了 一个多路复用器Selector,轮询就绪的请求,使一个线程能处理多个连接请求。
图如下:
同步,异步以及阻塞,非阻塞的概念,见 老王烧水的例子:
https://blog.csdn.net/linhuaiyang/article/details/68483222
netty的服务端开发和客户端开发,相比直接使用JDK的API, 封装好很多。
解决TCP的粘包/拆包问题,有如下方法:
LineBasedFrameDecoder和StringDecoder解决,原理是遇到 "\n"或者"\r\n" 作为分隔符(StringDecoder将接收到的对象转换成字符串)。
还有两种是 分隔符和定长解码器解决这个问题。
编解码技术:java自带的编解码技术 无法跨语言, 与Google的 Protobuf相比,编码后的字符串长度更长,更占空间,编码 解码的性能 也没有Protobuf快。
TCP,FTP是有状态协议
HTTP,UDP都是无状态协议
https://blog.csdn.net/qq_14989227/article/details/78961876
https://www.cnblogs.com/jessezeng/p/5617105.html