面试官: 说说你对NIO、BIO的理解?

AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图) 本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。 阅读详情

1. BIO、NIO

BIO

传统的java.io包,同步、阻塞。服务器实现模式为一个连接一个线程,服务器端为每一个客户端的连接请求都需要启动一个线程进行处理。

NIO

JDK1.4引入的java.nio包,采用多路复用技术,同步非阻塞。服务器实现模式为客户端的连接请求都会注册到多路复用器上,用同一个线程接收所有连接请求。

2、基本概念解析

阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式。

同步

应用程序要直接参与IO读写的操作

异步

所有的IO读写操作都交给了操作系统,这个时候我们可以去做另外的事情。

读写事件交给一个单独的线程来处理则为多路复用技术
比如有十个IO操作同时请求,这十个请求交给一个单独线程接收,由这个单独线程轮询遍历每一个IO操作进行处理。

3、原理图


这是客户端与服务器之间NIO的处理方式,每个客户端与服务器端每次进行IO操作的时候,服务器都首先会创建一个端口进行该次操作,就相当于创建出一条公路进行传输工作,接着服务器会为每一个客户端分配一个单独的线程进行IO传输,传输完需要销毁该端口。并且每次只创建了一个端口,客户端如果有多个IO操作,需要等待上一个IO操作后才能继续进行,因此是一个阻塞过程。


当客户端过多时,服务端不断的创建端口(公路)进行IO操作,并且服务端创建了多个线程去处理IO操作,此时则会有性能的问题出现。


NIO则采用了多路复用技术,并且每一个客户端的每一个IO操作都会由同一个线程进行接收,然后再由这个线程进行一个轮询遍历创建另外的线程对每一个IO操作进行处理。因为使用了多路复用技术,所以该技术是一个非阻塞的过程。

结语

小编是一枚Java Coder,业余写文章,现主营微信公众号《Java患者》,喜欢的话关注我的公众号或者加我微信我们一起学习Java


关于海康MVS软件显示速率低与1GB、相机丢包的设置优化 工控机主要应用与视觉检测!相机网线及工控机网口都是千兆的!设置完巨帧数和速度与双工(选择为全双工),显示速度低与1GB,不能够正常工作。C.LA-Properdes-Advanced-将RecerveBuffers更改为2048。E.LAN-属性-电源管理-取消选中允许计算机关闭此设备以保存电源。这种情况均为MVS设置不熟悉,可参照如下设置优化相应端口相机配置。D.局域网-属性-高级-将传输缓冲区更改为20484。B.LAN-属性-高级-将中断记录部分更改为执行。A.关闭采集控制帧速率控制。 阅读详情

相关推荐

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 209

第五阶段学习测试

逐梦

逐梦 3892

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1333

NIO、AIO、BIO的区别(通俗理解)

BIO(同步阻塞) 服务端需要对客户端的每个请求处理完成后 才会继续接受客户端的请求 客户端也会等待服务端处理完请求后才会发送请求 通常会使用多线程去处理 因为BIO每个连接一个单独的线程 NIO(同步非阻塞) NIO使用单线程或者只使用少量的多线程,一个请求一个线程,多个连接共用一个线程。 (即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。) (可以使用资源池或者队列等手段实现异步的处理) AIO(异步非阻塞) AIO的读写方法都是异步的 完成后会主

原罪的博客 8921

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3404

医疗设备安规入门:一张图搞懂BF型设备的MOOP/MOPP绝缘路径(附GB 9706.1附录解析)

本文深入解析了BF型医疗设备的MOOP/MOPP绝缘路径设计,结合GB 9706.1标准附录J的实战应用,帮助工程师快速掌握医疗设备安规要点。通过典型绝缘路径图分析,详细对比了MOOP与MOPP的防护差异,并提供了海拔修正、漏电流测试等关键设计指南,助力医疗设备安全合规。

weixin_30633405的博客 381

nio和bio的原理_BIO、NIO、AIO 区别(绝对通俗易懂)

很多初学者对IO的各种形式的操作(如题)都有一个误区,仿佛总喜欢在其中分出个好坏,这其实是基础知识不充足的表现,至少对高并发和网络编程不熟悉,所以我先建议至少在熟悉了NIO后,再去了解这四个的差别。更不要复制粘贴别人的文章,这个东西其实需要有一点自己的想法。在本文中我将把自己理解的这几种io方式以最朴素的语言展现给大家,以及他们的优缺点和使用场景。更需要清楚的一点:都是为了更大的压榨CPU的利用价...

weixin_39981185的博客 336

决策大模型与生成式大模型有何不同?一文拆解技术框架与落地路径

大模型技术正从内容生成走向复杂场景的智能决策。与生成式大模型拟合概率分布不同,决策大模型以序列决策为核心,融合强化学习机制,在动态环境中感知反馈、持续修正行动路径。其技术框架涵盖语义理解、规划推理与闭环决策,并通过世界模型进行低成本仿真推演,显著提升供应链调度、物流排程等场景的应对效率。实际落地时需结合传统优化算法与人工兜底,构建“语义先导+数值寻优”的分层架构,才能平衡精度与稳定性。这篇内容拆解决策大模型的技术组成、落地路径与常见误区,为企业智能化转型提供可参考的实践框架。

weixin_29057163的博客 187

说说BIO,NIO,AIO区别(直接可用)

从客户端服务端连接角度看: BIO:同步并阻塞,线程发起 IO 请求,不管内核是否准备好 IO 操作,从发起请求起,线程一直阻塞,直到操作完成。服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。 NIO:同步非阻塞,客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复

weixin_43975276的博客 215

Vivado实战:如何用BUFGMUX_CTRL实现FPGA双时钟热切换(附时序约束模板)

本文详细介绍了如何使用Xilinx FPGA中的BUFGMUX_CTRL原语实现双时钟热切换的工业级解决方案。通过分析BUFGMUX_CTRL的核心机制、PCB布局约束和电源噪声抑制方法,提供Vivado实现全流程和时序约束模板,帮助工程师在工业自动化、车载电子等场景中提升系统可靠性。

weixin_29186249的博客 571

锂电池充放电管理-单片机通用模版

- **①两节锂电池通过电阻分压检测ADC,再根据电压划分电量等级;** - **②充电使用的是锂电池充电IC方案,可通过硬件电阻参数调节充电电流,并可以通过STAT引脚检测充电和满电状态(充电注意会抬高电压);** - **③放电根据ADC_BAT检测电池电量进行等级划分(注意大负载电压骤降瞬间);** - **④充放电过程注意在电量划分等级临界值来回抖动现象;**

a6662580的博客 1488

从实践角度重新理解 BIO 和 NIO

扫描下方海报试读本文来源:http://blog.objectspace.cn/前言这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于...

石杉的架构笔记 421

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

面试官:请说说你对BIO、NIO的理解

每天叫醒你的不是闹钟,而是姿势1BIO、NIO01BIO 传统的java.io包,同步、阻塞。服务器实现模式为一个连接一个线程,服务器端为每一个客户端的连接请求都需要启动一个线程进...

ZeJava的博客 268

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大厂面试官:来说下对BIO、NIO、AIO的理解

System.out.println(new Date()+",接收数据:"+ body +",当前线程:"+Thread.currentThread().getName()+",线程id为:"+Thread.currentThread().getId());System.out.println("开始等待~"+"当前线程为:" + Thread.currentThread().getName() + Thread.currentThread().getId());在开始说IO之前,我们先要知道几个概念。

zjjcchina的博客 104

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

面试官问我:如何理解BIO、NIO、AIO的区别?我差点拉胯!

很多文章在谈论到BIO、NIO、AIO的时候仅仅是抛出一堆定义,以及一些生动的例子。看似很好理解。但是并没有将最基础的本质原理显现出来,如果没有没有从IO的原理出发的话是很难理解这三者之间的区别的。所以本篇文章从Java是如何进行IO操作为开头进行分析。 Java中的IO原理 首先Java中的IO都是依赖操作系统内核进行的,我们程序中的IO读写其实调用的是操作系统内核中的read&write两大系统调用。 那内核是如何进行IO交互的呢? 1.网卡收到经过网线传来的网络数据,并将网络数据写到内存中.

p1830095583的博客 864

面试官:BIO、NIO、AIO 的区别是什么?

这是个网络编程的面试题:在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。自己的理解:也就是必须一件一件事做,等前一件做完了才能做下一件事 (提交请求->等待服务器处理->处理完返回 这个期间客户端浏览器不能干任何事 )官方:使用同步IO时,Java自己处理IO读写。

2401_85910670的博客 1146

BIO、NIO、AIO 的区别与实战应用解析

在 Java 后端开发中,I/O 模型直接关系到系统的并发能力和性能瓶颈。BIO、NIO、AIO 分别代表了 Java 不同阶段对 I/O 的抽象能力,是理解服务端性能优化、线程模型设计和异步编程的关键。是否理解不同 I/O 模型背后的原理差异;能否将模型应用在实际场景中(如:Tomcat、Netty、Spring Boot);对并发处理线程管理系统资源控制是否有深刻认知。模型阻塞性同步性多路复用API 难度应用场景BIO阻塞同步无简单小型系统、传统同步模型NIO。

残影的博客 1216

面试官:AIO、BIO 和 NIO 的区别是什么?

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。——理论很美好,现实很骨感。

weixin_44421461的博客 538

【关于Java的BIO、NIO、AIO】

本文深入浅出地讲解了Java三大IO模型:BIO、NIO和AIO。通过餐馆服务员的生动比喻,解析了阻塞式IO(BIO)"一连接一线程"的低效问题,非阻塞IO(NIO)基于Selector多路复用的高效机制,以及异步IO(AIO)回调通知的先进理念。文章详细对比了三者的核心特点、编程方式和适用场景,指出NIO是当前高并发系统的主流选择(如Netty框架),并提供了面试高频问题的专业解答。最后强调IO模型的演进体现了系统性能优化的核心思想,掌握这些原理对开发高性能服务至关重要。

weixin_64178283的博客 1049

BIO、NIO 和 AIO 的区别?

在 Java 后端开发中,I/O 操作(如网络通信、文件读写)是核心场景——小到接口调用,大到分布式中间件(如 Netty、Kafka),都依赖 I/O 模型的支撑。而 BIO、NIO、AIO 作为 Java 中三种主流 I/O 模型,直接决定了系统的并发能力、资源开销和响应速度。很多人初学时常混淆“同步/异步”“阻塞/非阻塞”,甚至觉得“NIO 就是异步”——其实三者的差异本质是“线程与 I/O 操作的协作方式”不同。这篇文章会用最通俗的方式,带你理清三者的核心逻辑。

埃泽漫笔 1126

谢飞机的Java面试奇遇:AIO、BIO、NIO与Netty深度解析

面试官:好了,今天的面试差不多了,你的表现还算不错,回去等通知吧。

wujie10的专栏 1922

面试官:BIO、NIO、AIO的区别

BIO、NIO、AIO的区别

飞乐鸟的博客 762

面试官:说说BIO、NIO、AIO有什么区别

BIO、NIO、AIO、Netty什么是IOJava中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,「网络上的数据传输流」,字符串流,对象流等等等。比如程序从服务器上下载图片,就是通过流的...

weixin_45727359的博客 315

BIO\NIO\AIO总结

文章目录定义:Java中BIO、NIO、AIO是Java语言对于操作系统的**各种IO模型的封装**。常见概念:**同步与异步:****阻塞和非阻塞:**BIO(Blocking I/O)传统BIO(一请求一应答通信模型)伪异步IO(加入线程池)NIO(New I/O)NIO简介NIO的特性/NIO与IO区别1)Non-blocking IO(非阻塞IO)2)Buffer(缓冲区)3)Channe...

weixin_44333359的博客 950

BIO、NIO、AIO的简单个人理解,同步异步和阻塞非阻塞的简单理解

非阻塞:BIOBIO同步阻塞IO总结NIO介绍同步非阻塞AIO| | || — | — |什么是io====================================================================Java IO流是一个庞大的技术体系,其内部提供了很多不同的流, 如: 输入流和输出流,细分下去还有字节流和字符流,甚至还有缓冲流提高 IO 性能,转换流将字节流转换为字符流等等什么是同步异步========================================

2401_84413531的博客 892
上一篇: 搭建SpringBoot整合Mybatis框架
下一篇: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值