Netty常用类与接口

news2024/11/18 18:31:48

netty架构图

在这里插入图片描述

ServerBootstrap 、 Bootstrap

ServerBootstrap :服务器的引导类,可以绑定服务器和端口,配置 Channel、ChannelHandler等。

Bootstrap:客户端的引导类。可以开启客户端,连接服务端的端口,配置 Channel、ChannelHandler等。

EventLoopGroup

EventLoopGroup 用于处理 基于 Channel 的 NIO Selector ,处理各种网络 IO 事件。

EventLoopGroup 底层是个 Executor, 可以执行线程。

EventLoopGroup 常见的实现类有 NioEventLoopGroup。

Netty使用 主从 Reactor 多线程模式,会有多个 EventLoopGroup,包括 bossGroup和 workerGroup 。

bossGroup是 主 Reactor,bossGroup 用于连接请求。

workerGroup是 从Reactor,workerGroup 用于处理业务。

TaskQueue

Netty 的每一个 NioEventLoop 中都有一个 TaskQueue,用于异步地处理监听到的 IO 事件。

EventLoop

一个 EventLoopGroup 包含一个或者多个 EventLoop。

一个 EventLoop 在它的生命周期内只和一个 Thread 绑定。

一个 EventLoop 可以处理多个 Channel。

Channel

Channel 对应 Java 的网络编程中的 Socket。

Channel 可以处理 所有的网络 I/O 操作(包括 bind()、connect()、read()和 write())。

ChannelHandler

ChannelHandler,用于处理 Channel,实现对接收的数据的处理,实现业务逻辑。

ChannelHandler,它充当了所有处理入站和出站数据的应用程序逻辑的容器。

ChannelHandlerContext

能让 ChannelHandler 跟 所属的ChannelPipeline以及其他的ChannelHandler沟通。

ChannelPipeline

ChannelPipeline,基于责任链模式,可以添加多个 ChannelHandler。

ChannelFuture

在Netty 中,所有的 网络IO 操作都是异步的。

Channel 可以处理 所有的网络 I/O 操作, 而 Channel 的结果,通过 ChannelFuture 接收。

Netty 提供了ChannelFuture 接口,其 addListener()方法注册了一个 ChannelFutureListener,以便在某个操作完成时(无论是否成功)得到通知。

参考资料:

《netty实战》
https://mp.weixin.qq.com/s?__biz=MzI5MTU1MzM3MQ%3D%3D&chksm=ec0fb874db783162d60a288a1b4e4ef008852d773693a77bfc58608fae380fd0a14a40e96195&idx=1&mid=2247487808&scene=21&sn=043e5e674b798d0f02d13639cba547b6#wechat_redirect

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

矩阵系统功能介绍

数据大屏:监测读取后台数据 AI素材库:一键去水印功能 将视频做出自己的 AI智能文案:一键生成各种文案,解决文案编写困难的问题 视频剪辑:一键剪辑多个视频

vue3引入全局js

main.js中引入js,设置全局属性 m a p : a p p . c o n f i g . g l o b a l P r o p e r t i e s . map:app.config.globalProperties. map:app.config.globalProperties.map引入js对象 vue页面中使用。引入vue实例: import {getCurrentInstance} from “…

VS2022更换背景壁纸逐步图示教程

🦄个人主页:修修修也 ⚙️操作环境:Visual Studio 2022 目录 一.下载壁纸插件 二.更改自定义壁纸 三.调整壁纸布局 一.下载壁纸插件 因为更改自定义壁纸需要一个插件的辅助,所以我们要先下载一个小插件 首先,打开VS2022,点击"扩展"->"管理扩…

无人机电力巡检:国网安徽实际案例解析

在科技快速发展的今天,传统行业正在经历前所未有的转型。电力巡检,这一看似传统且乏味的任务,却因为无人机技术的介入而焕发新生。今天,让我们深入了解一个具体的案例,探索无人机如何革新电力巡检。 案例背景&#xff…

Postman —— postman的介绍和安装

Postman的介绍 Postman 是一款谷歌开发的接口测试工具,使API的调试与测试更加便捷。 它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT..),附带任何数量的参数 headers postman是一款支持http协议的接口调试与…

【试题020】C语言自减运算符例题

1.题目&#xff1a;设int a1&#xff0c;b6;&#xff0c;执行表达式--all(b8)后&#xff0c;a和b的值分别是 &#xff1f; 2.代码分析&#xff1a; #include <stdio.h> int main() {//设int a1&#xff0c;b6;执行表达式--all(b8)后&#xff0c;a和b的值分别是?int a …

【手写数字识别】CNN卷积神经网络入门案例

安装Anaconda 下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 安装完成后&#xff0c;在CMD窗口 输入conda --help 查看是否安装成功 使用conda创建环境 conda create --name tf python3.7conda activate tf在 tf 环境中安装TensorFlow pip in…

基于SpringCloud实现房产销售平台的设计与实现项目【项目源码+论文说明】

摘要 信息技术的发展推动了管理系统的进步&#xff0c;目前各种行业都积极参与管理系统的建设工作。特别是疫情带来的影响&#xff0c;让传统行业逐渐认识到只有通过在线管理才能继续的发展。房产销售平台是为求租者提供房源必备的平台&#xff0c;如何找到一个好的房源是生活…

PostgreSQL数据库结合内网穿透实现公网远程连接本地

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;,下…

某马机房预约系统 C++项目(一)

机房预约系统 1、项目介绍 本项目来源于哔哩哔哩 c机房预约系统&#xff0c;本系统采用文件存储。 2、项目流程图 3、创建新项目 首先&#xff0c;我们来新建一个新项目&#xff0c;创建一个.cpp文件 4、创建主菜单 功能描述&#xff1a; 提供设计主菜单&#xff0c;与用…

WGCNA分析教程五 | [更新版]

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 往期WGCNA分析教程 WGCNA分析 | 全流程分析代码 | 代码一 WGCNA分析 | 全流程分析代码 | 代码二 WGCNA分析 | 全流程分析代码 | 代码四 关于WGCNA分析教程日常更新 学习无处不在&#xff0c;我们的教程会在…

zabbix监控nginx的状态页面

zabbix监控nginx的状态页面 文章目录 zabbix监控nginx的状态页面1.环境说明2.所涉及到的知识点3.在nginx主机上安装zabbix_agent4.开启nginx状态显示页面5.进入zabbix的web页面配置主机&#xff0c;监控项&#xff0c;触发器5.1.添加主机5.2.创建监控项5.3.创建触发器 1.环境说…

Android高版本读取沙盒目录apk解析安装失败解决方案

bug场景&#xff1a; 应用内升级下载apk完成后安装&#xff0c;vivo&#xff08;Android13&#xff09;手机会报解析包错误&#xff0c;7.0及以上的手机是没问题的。开始以为是v1,v2签名问题导致的&#xff0c;但是我用浏览器下载下来的安装包是能够正确安装的。排除v1,v2签名的…

蓝桥杯(刷题统计,特别数的和 C++)

思路&#xff1a; 1、这题很简单&#xff0c;分两种情况累加和 &#xff0c;&#xff08;day%60||day%70&#xff09;即周六周天加上b&#xff0c;其它时候加上a。 2、注意的点在于数据可能达到&#xff0c;所以数据类型首先要开long long。 3、因为数据达到&#xff0c;所以直…

上海市通过区块链技术攻关 构建数字经济可信安全技术底座

日前&#xff0c;上海市印发《上海区块链关键技术攻关专项行动方案&#xff08;2023—2025年&#xff09;》&#xff08;以下简称《行动方案》&#xff09;&#xff0c;提出到2025年&#xff0c;在区块链体系安全、密码算法等基础理论以及区块链专用处理器、智能合约、跨链、新…

Canvas系列绘制图片学习:绘制图片和渐变效果

我们现在已经可以绘制好多东西了&#xff0c;不过在实际开发中&#xff0c;绘制最多的当然是图片了&#xff0c;这章我们就讲讲图片的绘制。 绘制图片 绘制图片的API是drawImage&#xff0c;它的参数有三种情况&#xff1a; // 将图片绘制在canvas的(dX, dY)坐标处 context.…

搭建react项目

一、环境准备 1、安装node 官网下载安装&#xff1a;https://nodejs.org/en 注&#xff1a; npm5.2以后&#xff0c;安装node会自动安装npm和npx 2、安装webpack npm install -g webpack3、安装create-react-app npm install -g create-react-app二、创建react项目 1、初…

宏offsetof的使用及其模拟实现

使用宏offsetof的时候需要包含<stddef.h>这个头文件。 宏offsetof有两个参数&#xff0c;第一个参数是结构体类型&#xff0c;第二个参数是结构体成员&#xff0c;计算的是结构体成员相较于结构体起始位置的偏移量&#xff0c;我们来看一个例子&#xff1a; 在这个例子中…

【试题027】C语言宏定义小例题

1.题目&#xff1a; #define MOD(a,b) a%b int main() { int x4,y16,z; zMOD(y,x); printf("%dn".z)&#xff1b;} 则程序执行的结果是? 2.代码分析&#xff1a; #include <stdio.h> #define MOD(a,b) a%b int main() {int x 4, y 16, z;z MOD(y, …

02、Python ------- 简单爬取下载小视频

简单爬取小视频 1、装模块 按键盘 winr 输入cmd , 输入命令&#xff1a; pip install requests 也有说在这个目录下面执行命令 pip install requests 执行失败 执行如果失败&#xff0c;在命令后面添加镜像 pip install requests -i https://mirrors.aliyun.com/pypi/sim…