Netty入门学习

news2025/7/19 4:51:58

同步:当调用方法的线程和接收结果的线程是同一个,这意味着阻塞,那么是同步。

异步:当调用方法的线程和处理结果的线程不是同一个,这意味着不是阻塞,是异步。

下图是一个简单的Netty的客户端和服务器端

 

 【执行步骤】

1、Server 创建引导启动器

2、Server创建事件循环组--里面是事件循环对象--事件循环对象包含(单线程+selector)

3、Server 创建ServerSokcetChannel

4、Server添加处理器,处理client的事件

5、Server创建连接通道,但是没有进行初始化,初始化是在与Client建立连接后才执行的。

6、Server绑定端口,等待Client访问。

7、Client 创建引导启动类

8、Client添加时间循环组

9、Client创建SocketChannel通道

10、Client 添加处理器。

11、Client建立连接

12、Client和Server 进行处理器初始化。

13、Client 的sync阻塞(同步等待)连接建立成功

14、Client 通过channel 将数据发送给Server

15、Client的处理器将数据转换为Bytebuf发送给客户端

16、Server的某一个EventLoop接收到这个read事件,将数据传送给Server的处理器

17、Server 将ByteBuf中的数据进行解码,得到String类型数据

18、读事件处理器。将数据进行处理,即打印。

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

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

相关文章

论文阅读笔记 | 三维目标检测——VoxelNet算法

如有错误,恳请指出。 文章目录1.背景2. 网络结构2.1 体素特征表示2.2 卷积特征提取2.3 RPN网络3. 实验结果paper:《VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection》 1.背景 以往的3d检测器都难免利用了手工设计特征(hand-…

ES6 入门教程 29 ArrayBuffer 29.1 ArrayBuffer 对象

ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录ES6 入门教程29 ArrayBuffer29.1 ArrayBuffer 对象29.1.1 概述29.1.2 ArrayBuffer.prototype.byteLength29.1.3 ArrayBuffer.prototype.s…

善网ESG周报(第二期)

ESG报告: 聚焦五大战略,信公股份首次披露ESG报告 近日,信公股份发布首份ESG报告,报告主要涵盖可持续发展战略、高效现代的公司治理、可持续的商业模式与创新、传递社会影响力和守护地球家园等几个维度。 能链智电发布ESG报告&a…

SpringBoot——指标监控,自定义指标监控

为什么要进行指标监控? 在微服务架构中多个组件部署以后,我们需要能够监控到每个组件的健康情况,因此SpringBoot抽取了Actuator用于监控组件。 1.Java自带的监控工具(不推荐) 步骤: winr输入cmd 回车 进…

广告机联物联卡联网的优势?

广告机联物联卡联网的优势? 随着技术的发展、物联网技术的应用、物联网卡的授权,广告模式也在悄然发生变化,从传统的电视、报纸、杂志等广告模式逐渐转变为建筑之间的广告机。最常见的是地铁、公交车等公共区域设置的广告机或广告屏幕。 一…

67. SAP ABAP 监控用户事物码和程序执行的工具介绍

本文咱们不谈 ABAP 代码编写,而是介绍 SAP ABAP 系统里,如果想查找某个用户在某个时间段之内,在系统干了哪些事情,应该具体如何去做,SAP 又是提供了哪些工具来满足这种监控需求。 本文写作动机来源于一位朋友向我发起的咨询: 我们抛开 SAPGUI Script 这个因素不谈,本文…

第七章《Java的异常处理》第2节:异常的分类及处理方法

异常可以分为多种类型,Java语言允许程序员使用不同的方式来处理不同种类的异常,这样可以实现对异常的精细化处理。 7.2.1异常的分类 7.1小节中提到Exception是用来表示异常的类,但Exception并非Java语言中唯一用来表示异常的类,它只是庞大的异常类家族中的一员。下图7-7就…

[附源码]java毕业设计游戏网站设计

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

第八章 动态规划 5 AcWing 1591. 快速排序

第八章 动态规划 5 AcWing 1591. 快速排序 原题链接 AcWing 1591. 快速排序 算法标签 DP 思路 直接枚举a[i]之前所有元素与a[i]之后所有元素 判断 时间复杂度 O(N2)O(1010)O(N^2)O(10^{10})O(N2)O(1010) 超时 a[i]之前所有元素小于a[i] ,即小于a[i]之前所有元…

YOLO算法(You Only Look Once)系列讲解与实现(待完善)

文章目录前言一、指标分析1.mAP (mean Average Precision)2.IOU二、YOLO1.YOLO-v1(1)步骤(2)网络结构(3)损失函数(4)存在问题2.YOLO-v2(1)新的尝试-Better&am…

Pod的生命周期

Pod的生命周期 与容器一样,Pod也有生命周期,Pod在整个生命周期中被定义为各种状态。了解这些状态对于后面我们学习Pod的调度是有帮助的。 Pending 挂起状态,Pod已经被K8s系统所认可,但是目前还有一个或多个容器镜像还没有被创建&…

Git错误:Incorrect username or password (access token)

目录 问题描述: 解决办法: 步骤一:进入电脑控制界面 步骤二:进入用户账户 步骤三:管理你的凭据 步骤四:选择Windows凭据 步骤五:找到gitee 步骤六:修改正确的用户名和密码 问…

【学习笔记23】JavaScript数组的遍历方法

笔记首发 1、forEach 语法: 数组.forEach(function(item, index, origin){})参数: item: 数组实际每一项的值index: 数组每一项对应的下标origin:原数组 作用: 遍历数组返回值: 返回值是undefined,哪怕你手写了return,也是undefined var arr…

springboot 使用shiro集成阿里云短信验证码

目录 1.阿里云短信验证码服务 2.发送短信验证码 3.多个realm配置 4.验证短信验证码 5.一些拓展思路 引言:短信验证码是通过发送验证码到手机的一种有效的验证码系统,主要用于验证用户手机的合法性及敏感操作的身份验证。在注册和修改密码时需要用到…

手摸手教会你在idea中配置Tomcat进行servlet/jsp开发(多图超详)

1. 下载安装idea,创建project,如果没有JDK可以通过idea指定文件夹并下载JDK。工程就是普通的Java工程,名字为webdemo 2.因为是Web项目,所以要对这个普通的项目进行WEB扶持^^,在项目名称webdemo上右键单间选择菜单项&qu…

Hive搭建

Hive系列第二章 第二章 Hive搭建 2.1 MySQL5.6安装 1、检查删除已有的 有就删除,没有就不用管。 rpm -qa | grep mysql rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodepsrpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_642、删除mysql分…

Windows下Labelimg标注自己的数据集使用(Ubuntu18.04)Jetson AGX Orin进行YOLO5训练测试完整版教程

一、环境配置介绍 整个实现过程所涉及的文件目录,其中,自备表示自己需要准备的,生成表示无需自己准备。 使用yolov5时出现“assertionerror:no labels found in */*/*/JPEGImages.cache can not train without labels”问题 很多朋友都会遇…

SpringBoot+Vue项目医疗管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

待办事项是什么意思,怎么用?

待办事项是什么意思,为什么要用?待办事项工具怎么设置?这里一文给你讲清! 废话不多说,下面直接教你:梳理待办事项清单的方法,以及待办工具的操作实操步骤。想要快速提升工作效率的小伙伴&#…

第三十七篇 Vue中封装Swiper组件

在上一篇内容的结尾讲到了将swiper初始化从mounted生命周期转移到updated中来能够让swiper动起来,但同时是否会造其他的一个问题?什么问题呢?在每次data中的状态发什么改变,updated中的内容会又重新执行,这样会导致swi…