
netty
文章平均质量分 94
Dr.劳菠萝
这个作者很懒,什么都没留下…
展开
-
Netty(八) Netty心跳检测机制
1.什么是长链接和短链接 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码: Connection:kee...原创 2021-12-15 11:26:16 · 805 阅读 · 0 评论 -
Netty(七) Netty编解码与TCP粘包,拆包
在我们了解了netty的基本组件之后,我们来了解netty一下使用netty带来的问题以及如何解决.1.Netty编解码1.1 Netty涉及到编解码的组件有Channel、ChannelHandler、ChannelPipe,我们再来复习一下一个 Channel 包含了一个 ChannelPipeline,而 ChannelPipeline 中又维护了一个由 ChannelHandlerContext 组成的双向链表,并且每个 ChannelHandlerContext...原创 2021-12-12 03:05:09 · 771 阅读 · 0 评论 -
Netty(六) 初探Netty与Netty线程模型
1.为什么我们使用NettyNIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。开发工作量和难度都非常大: 例如客户端面临断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等等。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。且Netty拥有高性能、 吞吐量更高,延迟更低,减少资源消耗,最小化不必要的内存复制等优点。..原创 2021-12-06 22:55:56 · 1031 阅读 · 0 评论 -
Netty(五) Reactor模型与事件驱动
前几章我们了解了nio以及epoll,在我们了解netty之前,我们还需要了解什么是Reactor编程模型,netty则是这个模型的实现. 1.事件驱动 在很久以前我们使用JWT的时候,我首先需要把点击或者滚动事件注册在按钮上,然后当我鼠标点击或者滚动的时候会触发事件,会告诉监听者,这个时候我的监听者就会进行一系列的逻辑操作.2.观察者设计模式 观察者设计模式其实就是事件驱动,两者其实本质上可以认为是一致的. 简单来说就是我有一个Subject主题...原创 2021-12-05 02:49:39 · 990 阅读 · 0 评论 -
Netty(二):一文看懂Bio,Nio,Aio
基础概念基础概念不了解的同学可以去看上一章,非常重要.BIO(Blocking IO)同步阻塞模型,一个客户端连接对应一个处理线程 .在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信.服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。应用场景:BIO 方式适用于连接数目比较小且固定的架构, 这种方式对服务器资源要求比较高, 但程序简...原创 2021-09-14 16:33:57 · 393 阅读 · 0 评论 -
Netty(四)select,poll,epoll区别
经过上一章我们可以发现jdk1.8中他对selector的操作实际上调用了epoll的三个函数,分别是,epoll_create,epoll_ctl,epoll_wait.这就说明了我们我们java底层使用了epoll的多路复用机制.而在jdk1.4版本之前IO多路复用的实现还有select和poll.Linux内核事件机制 在Linux内核中存在着等待队列的数据结构,该数据结构是基于双端链表实现,Linux内核通过将阻塞的进程任务添加到等待队列中,而进程任务被唤醒则是在队...原创 2021-11-25 01:35:11 · 2341 阅读 · 0 评论 -
Netty(三) 浅析Nio源码
前面我们介绍了BIO,NIO还有AIO,这一篇我们来简单看一下Nio的底层是怎么实现的.要是不想看这一篇可以直接看结论:Nio底层实际调用的epoll的三个函数,分别是epoll_create(创建epoll对象),epoll_ctl(把channel关联到epoll对象),epoll_wait(等待事件就绪),下一篇我们降介绍select,poll和epoll的区别.1.前置条件:看NIO的源码,必须下载openJdk源码,因为windos上面的实现和linux上面的实现不一样,都是调用...原创 2021-11-24 22:25:36 · 975 阅读 · 0 评论 -
Netty(一) 网络基础概念与5种IO模型
学习netty之前 我们首先需要知道一些基础概念.一.基础概念1.什么是文件Linux下面万物皆文件,linux将文件作为一切可用资源的使用接口.“一切资源”包括内存、磁盘、其他各种设备、进程间的通信,还有网络通信。这是一种简化的思想,把一切资源都简化为文件展示出来,将这些对资源的操作简化为对文件的操作。2.Socket在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据.原创 2021-11-23 23:35:34 · 636 阅读 · 0 评论