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

面试准备-6

NIO底层是用Selector、Channel和ByteBuffer来实现的。主线程在循环使用select方法进行阻塞等待,当有acceptable(可连接)、readable(可读)或者writable(可写)事件发生的时候,循环就会往下走,将对应的事件交给对应的事件处理器进行处理。

他可以多线程的,可以有多个accept()线程和多个worker线程。

解释

  • Channel(通道):是Java NIO中的一个核心概念,用于数据的读写操作。它是双向的,但具体使用时可能只关注读或写操作。常见的Channel有SocketChannel(用于TCP连接)、ServerSocketChannel(用于监听TCP连接)、DatagramChannel(用于UDP连接)和FileChannel(用于文件操作)等。

  • Selector(选择器):是Java NIO中的一个可以检查一个或多个NIO Channel,并确定哪些Channel已经准备好进行读、写或其他I/O操作的组件。一个Selector可以管理多个Channel,因此,单个线程可以使用Selector来管理多个Channel的I/O事件。

  • SelectionKey(选择键):代表了一个特定的Channel和它的Selector之间的注册关系。SelectionKey包含了Channel的状态信息,如是否可读、可写或连接就绪等。

工作流程

  1. 创建Selector:首先,需要创建一个Selector实例。

  2. 注册Channel到Selector:将Channel注册到Selector上,并指定该Channel感兴趣的事件(如读、写、连接等)。这个注册过程会返回一个SelectionKey,它代表了Channel和Selector之间的注册关系。

  3. 选择已就绪的Channel:通过Selector的select()selectNow()等方法来检查是否有Channel已就绪(即已经准备好进行读、写或其他操作)。如果有,则将这些Channel的SelectionKey放入到已选择键集合中。

  4. 处理已就绪的Channel:遍历已选择键集合,根据每个SelectionKey的状态(如是否可读、可写等)来处理对应的Channel。

  5. 重复步骤3和4:不断重复检查和处理过程,以持续管理多个Channel的I/O操作。

相关文章:

面试准备-6

NIO底层是用Selector、Channel和ByteBuffer来实现的。主线程在循环使用select方法进行阻塞等待,当有acceptable(可连接)、readable(可读)或者writable(可写)事件发生的时候,循环就会…...

context canceled 到底谁在作祟?

一、背景 在工作中,因报警治理标准提高,在报警治理的过程中,有一类context cancel报警渐渐凸显出来。 目前context cancel日志报警大致可以分为两类。 context deadline exceeded 耗时长有明确报错原因 context canceled 耗时短无明确报错…...

windows C++ 虚拟内存的按需调拨

虚拟内存的按需调拨 windows C 虚拟内存的按需调拨 文章目录 虚拟内存的按需调拨虚拟内存的按需调拨 虚拟内存的按需调拨 /*------------------------------------------------------------------------24-SEHAndMemory.cpp演示虚拟内存的按需调拨--------------------------…...

[杂项]pugi::xml获取xml中的注释节点

前言 想到学习xml时的一句话&#xff0c;xml中注释也会被算作一个节点。那么我们就可以通过 pugixml 把注释节点获取出来&#xff0c; <?xml version"1.0"?> <mesh name"mesh_root"><!--这是一个注释节点-->some text<![CDATA[so…...

Spring Boot Admin集成与自定义监控告警

目录 一.Spring Boot Admin集成 1.引入依赖 2.添加配置 3.监控界面 二.Spring Boot Admin告警机制 1. 基本告警机制 2. 配置告警 2.1 triggers触发器讲解 3. 自定义通知 3.1 Instance 对象 三.Spring Boot Admin支持的监控属性 1.常见的Spring Boot Admin监控属性 …...

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件&#xff1f;是否可以恢复永久删除的文件&#xff1f;或者最糟糕的是&#xff0c;如果文件直接被删除怎么办&#xff1f;本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件&#xff1f; “回收站清空后…...

玩短视频素材都是在哪里找的?推荐几个热门的短视频素材下载渠道

亲爱的短视频创作爱好者们&#xff0c;你是否在寻找视频素材时感到苦恼&#xff0c;觉得选择有限&#xff1f;别担心&#xff0c;今天我要为大家介绍几个超级实用的视频素材下载平台&#xff0c;帮助你的视频创作事半功倍&#xff01; 蛙学网 我们首先要重点推荐的是蛙学网&am…...

ThinkPHP5 5.0.23-rce远程代码执行漏洞复现

启动环境&#xff0c;先关闭其他环境 启动 判断是否存在漏洞&#xff1a;访问/index.php?scaptcha页面&#xff0c;会出现报错 使用HackBar 插件发送 POST 请求 _method__construct&filter[]system&methodget&server[REQUEST_METHOD]dir 通过echo命令写入 Webshe…...

windows下安装并使用nvm

目录 一.准备工作&#xff1a;卸载node 卸载步骤 二.下载nvm 三.安装nvm 三.配置下载源【重要】 四.使用nvm安装node.js 五.nvm常用命令 六.卸载nvm 一.准备工作&#xff1a;卸载node 如果电脑上已经有node&#xff0c;那么我们需要先完全卸载node&#xff0c;再安装…...

mac m2 安装 nvm

踩坑-填坑 过程 红字都是 启动台-ohter-终端 里面直接输入就行了 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew -v 重启终端 brew uninstall nvm brew install nvm 成功提示 > Summary &#x1f37a; /o…...

通信工程学习:什么是AN接入网络

AN接入网络 AN接入网络&#xff0c;全称Access Network&#xff0c;是电信部门业务节点与用户终端设备之间的实施系统。它可以部分或全部代替传统的用户本地线路网&#xff0c;并可包括复用、交叉连接和传输功能。以下是关于AN接入网络的详细解释&#xff1a; 一、AN接入网络的…...

MSCKF7讲:特征管理与优化

MSCKF7讲&#xff1a;特征管理与优化 文章目录 MSCKF7讲&#xff1a;特征管理与优化1 Feature.h2 OptimizationConfig3 initializePosition三角化LM优化3.1 计算归一化坐标深度初值generateInitialGuess① 理论推导② 代码分析 3.2 计算归一化误差cost① 理论推导② 代码分析 3…...

C# XML 使用教程

C# XML 使用教程 目录 C# XML 使用教程XML 是什么介绍组成XML 与 HTML 的区别 C# 中如何使用 XML序列化根元素子元素序列化方法 反序列化反序列化方法 序列化与反序列化实例 XML 是什么 介绍 可扩展标记语言 (Extensible Markup Language, XML) &#xff0c;标准通用标记语言的…...

淘宝开放平台交易类API解析以及如何测试?

调用淘宝开放平台的订单接口&#xff0c;主要可以通过以下几种途径进行&#xff1a; 1. 直接使用淘宝开放平台提供的API接口 步骤概述&#xff1a; 注册淘宝开放平台账号&#xff1a;首先&#xff0c;你需要在淘宝开放平台注册一个开发者账号。创建应用&#xff1a;在注册并…...

基于聚类与LSTM对比特币价格深度分析与预测

1.项目背景 比特币作为全球最具影响力的加密货币之一&#xff0c;其价格受到多种复杂因素的共同作用&#xff0c;包括市场情绪、政策变化、大型机构的投资行为等&#xff0c;这些因素在不同的市场阶段对比特币价格波动产生直接或间接的影响。通过对比特币市场的深入分析&#…...

YOLOv9改进策略【Neck】| 使用CARAFE轻量级通用上采样算子

一、本文介绍 本文记录的是利用CARAFE上采样对YOLOv9的颈部网络进行改进的方法研究。YOLOv9采用传统的最近邻插值的方法&#xff0c;仅考虑子像素邻域&#xff0c;无法捕获密集预测任务所需的丰富语义信息&#xff0c;从而影响模型在密集预测任务中的性能。CARAFE通过在大感受…...

SpringMVC上

SpringMVC介绍 MVC模型 MVC全称Model View Controller&#xff0c;是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分&#xff1a; Model&#xff08;模型&#xff09;&#xff1a;指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用…...

嵌入式软件--51单片机 DAY 2

一、数码管 1.数码管概况 2.设计 &#xff08;1&#xff09;硬件设计 我们可以通过阴极控制显示的位置&#xff0c;通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16个阳极引脚&#xff0c;如果所有引脚都直接接入MCU&#xff0c;会造成MCU引脚的极大浪费。 为了节省…...

高精度加法,减法,乘法,除法

加法&#xff1a; 大整数该如何储存&#xff1f; 用数组储存&#xff1a; 把个位放在数下标为0的位置&#xff0c;十位放在数组下标为1的位置&#xff08;也就是高位放在数组的后面&#xff09; 因为这样&#xff0c;如果需要增加一位最高位&#xff0c;那我们就可以直接在…...

学习计划(大三上)

第二周 总结Java并发编程的艺术 学习JVM&#xff08;博客文章&#xff09; 第三周 学习JVM&#xff08;博客文章&#xff09; 图解TCP/IP 4章 第四周 完成简历项目 学习JVM&#xff08;博客文章&#xff09; 图解TCP/IP 4章 第五周 完成简历项目 深入学习RocketMQ底层…...

第一次了解昇腾 NPU 的图编译?从 ge 开始

前言 当你第一次尝试把 PyTorch 模型放到昇腾 NPU 上跑的时候&#xff0c;大概率会遇到这个问题&#xff1a;模型加载成功了&#xff0c;但推理速度慢得让人怀疑人生。或者更糟糕&#xff1a;模型加载失败&#xff0c;报错说某些算子不支持。 这些问题的根源&#xff0c;通常…...

模拟神经计算电路:噪声与非均匀性挑战下的网络架构优化与再训练策略

1. 项目概述与核心挑战在材料科学、药物发现乃至自动驾驶的实时决策中&#xff0c;我们常常需要模型以极高的速度处理海量数据&#xff0c;进行预测或推理。传统的数字计算机在执行这类任务时&#xff0c;面临着功耗和计算延迟的瓶颈。于是&#xff0c;一个极具吸引力的替代方案…...

手把手教你解锁影驰B360M主板隐藏的fTPM 2.0,绕过限制升级Win11(附BIOS修改避坑指南)

解锁影驰B360M主板fTPM 2.0的完整实战手册当Windows 11的升级提示弹出时&#xff0c;许多使用影驰B360M主板的用户发现自己的设备被系统要求拒之门外——原因很简单&#xff1a;主板BIOS中缺少必要的fTPM 2.0支持选项。这并非硬件不支持&#xff0c;而是厂商在固件层面隐藏了相…...

从零开始手搓一个xv6内核页表:跟着6.S081源码一步步理解walk和mappages函数

从零构建xv6内核页表&#xff1a;深入解析walk与mappages的RISC-V实现在操作系统的核心机制中&#xff0c;虚拟内存管理始终是最具挑战性的部分之一。当我们打开MIT 6.S081课程的实验手册&#xff0c;面对"实现一个简化版页表"的任务时&#xff0c;许多学习者会陷入理…...

从技术配置角度拆解全屋定制:五金件选型对柜体长期稳定性的影响

装修做全屋定制&#xff0c;大部分人的关注点集中在板材的环保等级和封边工艺上。但在日常使用中&#xff0c;决定一套柜子用起来顺不顺滑、耐不耐用的关键因素&#xff0c;还有一项容易被忽略——五金件的选型与安装精度。作为一个习惯把东西拆开研究明白的人&#xff0c;这次…...

选型必看!国产RT-Thread才是商用量产最优解

做嵌入式项目选型&#xff0c;很多工程师总会纠结&#xff1a;Zephyr、FreeRTOS、uC/OS、RT-Thread到底怎么选&#xff1f;不少测评一味堆砌极限跑分数据&#xff0c;盲目吹捧海外系统的参数优势&#xff0c;却忽略了国内企业最看重的国产化合规、开发效率、落地量产、售后保障…...

Graph Fusion:一张 512 节点的图怎么压到 120 个以内

Operator Fusion 解决单点算子合并&#xff0c;Graph Fusion 在更大范围做整图级别的融合。GE 图引擎收到 ATC 编译好的图后&#xff0c;不是直接拿去执行——它先跑一遍图优化流水线&#xff0c;常量折叠、算子替换、模式匹配、Buffer 复用&#xff0c;把几百个节点的"散…...

如何在3分钟内精准定位Windows热键冲突:Hotkey Detective终极指南

如何在3分钟内精准定位Windows热键冲突&#xff1a;Hotkey Detective终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

今日算法(组合问题III)(回溯的使用)

题目描述找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a;只使用数字 1 到 9每个数字 最多使用一次返回所有可能的有效组合的列表&#xff0c;列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回核心思路&#xff1a;带双重剪枝的回溯…...

对抗机器学习攻击范式解析:后门、对抗样本与权重攻击的攻防全景

1. 对抗机器学习攻击范式全景解析在AI模型日益渗透到关键决策领域的今天&#xff0c;其安全性问题已经从学术探讨演变为迫在眉睫的现实挑战。作为一名长期关注模型安全的研究者和实践者&#xff0c;我见过太多“表现优异”的模型在精心设计的微小扰动面前瞬间“失智”。对抗机器…...