当前位置: 首页 > news >正文

电商网站建设与开发期末考试网站建网站建设网页

电商网站建设与开发期末考试,网站建网站建设网页,厦门专门建设网站的公司,女生学广告学后悔死了文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识,包括 Netty 的发展历程、核心功能与组件,并且通过实例演示…

文章目录

  • 前言
  • Java NIO 工作原理
  • Selector 的创建
  • ServerSocketChannel 的创建
  • ServerSocketChannel 注册 Selector
  • 对事件的处理
  • 总结

前言

上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识,包括 Netty 的发展历程、核心功能与组件,并且通过实例演示了如何使用 Netty 构建一个 HTTP 服务器。由于 Netty 的抽象程度较高,因此理解起来可能会更加复杂和具有挑战性,所以本文将通过 Java NIO 的处理流程与 Netty 的总体流程比较,并结合 Netty 的源码更加清晰地理解Netty。

Java NIO 工作原理

首先我们知道Netty是基于Java NIO的一个网络应用框架,是在其基础上进行封装和扩展(所以在深入了解Netty之前,建议先对Java NIO有一定的了解),所以二者对网络的连接、读取和写入的操作方式是相似的。
Java NIO 工作原理
Java NIO代码示例

如上图的Java NIO的处理流程,与Java NIO代码示例结合,可以看到,将 ServerSocketChannel 注册到 Selector 并监听各个事件后,Selector 在接受到事件请求后我们业务代码对其进行判断并对应处理,在使用Netty时我们似乎不需要写这些代码,甚至都没有看见SelectorServerSocketChannel这些字眼,那这些代码在Netty中怎么体现的,我们扒开裤子看个究竟:
在这里插入图片描述
以上文Netty构建的HTTP服务器示例为例,直接关注 ServerSocketChannelSelector 是什么时候创建的,事件是什么时候注册以及处理的。

Selector 的创建

其实看了上篇的Netty入门,可以知道 EventLoop 负责处理各种事件,所以可以盲猜一下,Selector 应该是在 NioEventLoopGroup 中创建的,look

在这里插入图片描述
NioEventLoopGroup 的构造方法中调用 JDK 的 SelectorProvider 创建了Selector,也就是 Java NIO 的代码。

ServerSocketChannel 的创建

关于 ServerSocketChannel 的创建,直接找绑定端口的方法,如下图
在这里插入图片描述

同样,在 Netty 的代码 NioServerSocketChannelnewChannel() 中也看到 Java NIO 的代码。

ServerSocketChannel 注册 Selector

下图中 ServerSocketChannel 在创建后为其分配了一个 EventLoop 并开启新的线程(这也是Netty 多线程异步的体现),最终在 doRegister() 调用了JDK 的接口注册了Selector 并监听了事件,看见 selectionKey 应该什么都清楚了吧。
在这里插入图片描述

对事件的处理

既然 ServerSocketChannel 注册了Selector 并监听了事件,那接下来就是当有事件来时 EventLoop 对其进行处理,直接看 NioEventLoop 中的代码,因为他是通过新的线程启动的,所以直接看 run()
在这里插入图片描述
processSelectedKeysPlain() 中的代码熟悉吧,是监听到了某个事件可以进行处理了,下面是对读事件的处理
在这里插入图片描述
图中 ChannelPipeline 采用了责任链模式是对事件的处理通道,方便扩展。所以 Netty 中的读取事件与 Java NIO 的关系如下图。

在这里插入图片描述

总结

所以在接触 Netty 的之前一定要先掌握 Java NIO,本文只是介绍了 Java NIO 在 Netty 中的体现、Netty 对 Java NIO 的封装,让大家更方便的理解 Netty,并不涉及 Netty 的高效、强大的设计之处,下文将会对此进行介绍。

http://www.yayakq.cn/news/534481/

相关文章:

  • 帝国cms怎么做音乐网站wordpress获取文章一个tag标签
  • 分析网站的优势和不足原平新闻头条最新消息
  • 百捷网站建设工资手机优化是什么意思
  • 成都网站建设重庆最加科技深圳的装修公司排名
  • 郑州专门做网站怎么做系统软件网站
  • seo网站推广目的网站开发的选题意义及背景
  • 手机网站源码 php深圳做网站设计
  • 推广网站哪里好上海网站建设zj kt
  • 网站首页样式做健身俱乐部网站的目的和意义
  • 网站页脚怎么做美观河源城乡规划建设局网站
  • 网站顶端大图怎么做wordpress captcha
  • 电子商务网站建设与管理英文PHP做网站的核心是什么
  • 高州市荷花镇网站建设goood 谷德设计网官网
  • 华为云建站视频教程郑州网站建设公司招聘
  • 网站排名掉了该怎么做滨江区建设局官方网站
  • 网站建设行业细分深圳网站优化包年
  • 网站宣传文案发布网站制作
  • python做网站步骤公众号服务平台
  • 专业网站建设开发wordpress显示最近文章摘要
  • 长沙定制网站开发榆林建站网站建设
  • 泸州城建设档案管网站wordpress 图片上传失败
  • 招聘网站开发成本有没有永久免费crm
  • 网站建设应用程序开发网站建设后期费用
  • 女子医院网站设计怎么做实施网站推广的最终目的
  • 盖县网站开发河南省城乡住房建设厅网站首页
  • 岗顶网站设计哪家网站设计比较好
  • 济南网站建设企业二次开发简单吗
  • 凡科建站有哪些弊端网站开发引发的官司
  • 网站建设运营合同员工微信管理系统
  • 网站制作网站建设运营团队社交网站开发成本