关于NIO编程

Java NIO 编程的代码示例与解释 Java NIO(New Input/Output)是Java 1.4引入的一套全新的IO API,旨在提供更高效的IO操作能力。本文旨在全面介绍Java NIO编程的核心概念,通过实际代码示例展示其使用方法,并深入分析其底层实现原理。文章首先介绍NIO的核心概念,然后深入分析其三大组件,接着通过实际代码示例展示NIO编程,最后讨论应用场景和性能优化技巧。:Java提供的新IO API,支持非阻塞和选择器驱动的IO操作Channel(通道):代表与实体的连接,如文件、套接字等Buffer(缓冲区) 阅读详情

关于NIO编程

NIO概述

什么是NIO?

Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。

Java NIO: Channels and Buffers(通道和缓冲区)

标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。

Java NIO: Non-blocking IO(非阻塞IO)

Java NIO可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。

Java NIO: Selectors(选择器)

Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。

注意:传统IT是单向。 NIO类似

 

 

读取时候 inputStream 输入流 程序读取文件

OutStream 输出流 程序写文件

读写时候 是单向的

 

 

有通道的概念   通道+缓冲区   而不是存放在流     类似火车

缓冲区里面 有数据。 程序读取文件 直接通过缓冲区 取值  (缓冲区 去文件取值) 缓冲区可以复用的作用  数据都是放在缓冲区的 可以复用的

可以多个缓冲区 封装成一个缓冲区  

 

断点续传: 多线程+文件拼接    :一个文件拆分多个线程(多个请求分段下载) 最后拼接成一个文件

 

区别

IO

NIO

面向流

面向缓冲区

阻塞IO

非阻塞IO

无

选择器

 

 

NIO 编程是 jdk1.4 在IO基础上进行(NIO中有一个非阻塞IO)、 之前的IO是阻塞的IO。阻塞IO,请求不能立即响应,IO阻塞状态,不能继续响应了,解决方案就是再开启线程(伪异步)

NIO面向缓冲区  IO面向流

NIO效率高,非阻塞的。Netty dubbo 之类的都用到

 

GD32 TIMER0 PWM输出死活没波形?别忘了这个关键配置(附完整代码) 本文详细解析了GD32 TIMER0 PWM输出无波形的常见问题,特别强调了高级定时器特有的主输出使能配置。通过完整的代码示例和调试技巧,帮助开发者快速解决PWM输出问题,适用于无刷电机控制等嵌入式应用场景。 阅读详情

相关推荐

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

NIO-DO Java 线上笔试(编程)题,蔚来汽车

NIO-DO Java 线上笔试(编程)题 1.使用二分查找的方式来定位某一元素 2.请用你熟悉的开发语言,完成如下题目: 输入:若干个集合,各集合中的元素不会重复 输出:求这些集合的笛卡尔积例如: 输入:N个集合(这里N=3) :(a,b)(x,y)(1,2,3) 输出: ((a,x,1), (a,x,2)…(b,y,3)) 在保证正确性的情况...

ademen的博客 5923

Workbench下列车转向架随机振动疲劳分析

结果中添加功率谱响应工具(Response PSD Tool),可以查看几何体以及远程点上的功率谱密度,如下图11所示,这里查看几何体上某一硬点的加速度功率谱密度响应曲线,如下图12所示。结果中添加疲劳工具(Fatigue Tool),查看列车转向架的疲劳寿命情况,这里采用窄带的寿命假设理论,曝光时间为1s指明计算出的疲劳寿命的基本单位是秒,寿命结果如下图14所示,可以看到最大寿命为1e35s,最小寿命为2.3542e18s,注意单位制,可再次基础上将其转换为小时或天。频域上的统计计算,软件很快计算完成。

ansysxuexizhe的博客 2605

java之NIO编程

java NIO详解

敲代码的小小酥的博客 1967

基于CLICKHOUSE的数据仓库分层规范

接入层。

zjyy1987的博客 769

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 941

NIO网络编程

Java原生NIO网络编程实现

weixin_46678115的博客 1063

OpenTCS打造移动机器人交通管制系统(四)

先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。 首先需要先明确下OpenTCS内核中的三个概念: 路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。 派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。 调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配...

白色冰激凌的技术专栏 5272

Java NIO编程实例

文章目录前言一、NIO与BIO的比较二、Buffer的机制及其子类1.Buffer的使用2.Buffer的四个基本类型三、Channel的使用1. Channel的特征2. Channel的子类(1) FileChannel实例:(2) 拷贝文件四、Buffer类型化和只读1. 类型化2. Buffer的分散和聚合五、MappedByteBuffer六、Selector1. SelectionKey在NIO体系中的作用七、NIO非阻塞网络编程的快速入门服务器端客户端 前言 基于NIO的网络编程实例 提

qq_45596525的博客 1080

Hyper-V集群部署指南

工欲善其事,必先利其器。搭建一个方便管理的服务集群,是分布式学习很重要的环境。 目前流行的虚拟机产品主要为Vmware 和 win10自带的Hyper-V(win10家庭版无此功能),网上关于Vmware的教程更多,显然它更容易上手,但Hyper-V也算是一个很不错的产品,这里记录一下我的学习过程: 目录 Hyper-V的安装 服务集群的搭建 虚拟机的网络通信 NAT网络的搭建 端口映射 Linux的静态IP 虚拟机的自启动问题 Hyper-V的安装 也不能算说是安装,如果你的win1

Swing 6919

PCB过孔电流承载解析:完整指南与数据参考

深入解析PCB过孔的电流承载能力,结合实际应用场景提供可靠设计参考。涵盖影响载流的关键因素,并整理实用的pcb过孔与电流对照一览表,帮助工程师优化布局与布线。

weixin_35677363的博客 632

【Java】网络编程之NIO

简单记录 慕课网-解锁网络编程之NIO的前世今生 & 一站式学习Java网络编程 全面理解BIO/NIO/AIO 内容概览 文章目录1、【了解】 NIO网络编程模型1.1、NIO简介1.2、编程模型1.3、网络编程三剑客 BIO & NIO & AIO1.4、BIO是什么1.5、BIO网络模型1.6、NIO网络模型猜想1.7、NIO网络模型1.8、NIO网络模型改进2、【熟...

渐若窥宏大的博客 881

Buildroot RK3568系统中更改GPU驱动为:panfrost

1:Kernel中开启Panfrost 2:更新mesa 到mesa-24.0.2 3:查看/proc/interrupts 中的panfrost 中断 4:LInux启动日志 5:查看GPU负载

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 2078

Nio编程模型总结

终于,这两天的考试熬过去了, 兴致冲冲的来整理笔记来, 这篇博客是我近几天的NIO印象笔记汇总,记录了对Selector及Selector的重要参数的理解,对Channel的理解,常见的Channel,对NIO事件驱动的编程模型的理解,NIO与传统IO的对比,NIO的TCP/IP编程的实践. Channel 什么是Channel 这个概念绝对是一级概念,Channel是一个管道,用于连...

weixin_30652271的博客 163

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java网络编程NIO

缓冲区,包括直接内存缓冲和JVM内存缓冲。NIO是基于channel通信,一个线程管理一个selector,一个selector管理多个channel,这样一个线程就能管理多个客户端连接。一般是通过服务通道监听端口,等待客户端的连接通道,然后将连接通道注册到Selector,等待事件触发通道行为。由于IO无法直接操作应用内存,因此需要将应用内存数据拷贝到直接内存,如果使用直接内存,就可以少一次拷贝操作。:选择器,负责管理多个通道channel,通过监听通道绑定的事件,及时处理通道数据。

weixin_74261199的博客 1324

OV9734 DATASHEET,完整规格书

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

网络编程之NIO

网络编程只NIO NIO是一种非阻塞同步模型,它的思想是一个线程处理一个请求,通过将所有连接存在一个多路复用器中,然后通过轮询这个多路复用器查看是否有连接发送了事件,当发现了有事件发生时(如IO操作),则调用线程来处理这个连接,相比BIO能处理的连接数大大提高,并且线程利用率也高了很多。这里要注意NIO底层是epoll实现的,相对于select有更大的优势。 代码相关: 我这里为了编程简单,体现N...

qq_41797857的博客 170

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

NIO编程

NIO编程 package demo; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.ni...

qq_30087879的博客 151

三、JAVA NIO 编程

JAVA NIO 编程

donkeyboy001的博客 455

(一)NIO编程之NIO与BIO

BIO编程

BestQiang的博客 1万+

网络编程-nio

non-blocking io 非阻塞 IO。

qq_45260641的博客 1238

Java中的NIO编程详解

NIO(New I/O)是Java提供的一种非阻塞的IO(输入输出)操作方式,引入了Channel、Buffer和Selector等新概念,相较于传统的IO操作更为高效和灵活。传统的IO模型是阻塞式的,每个连接都需要独立的线程来处理,而NIO模型使用单线程管理多个连接,通过Selector实现了非阻塞IO,提升了系统的性能和吞吐量。通过NIO可以实现高效的事件驱动的网络编程。Selector是NIO编程的核心组件之一,它提供了一种可以检测多个通道上事件的机制,从而使一个单独的线程可以管理多个通道。

微赚淘客开发者博客 507

了解Java中的NIO编程

通过本文的介绍,读者应该对Java中的NIO编程有了初步的了解。NIO提供了一种高效、灵活的I/O操作方式,适用于高并发的网络编程和文件操作场景。掌握NIO编程技术可以提高系统的性能和稳定性,适用于各种需要高效I/O操作的应用场景。

技术研究中心 411

Java NIO 编程

BIO编程 传统的TCP和UDP编程通讯:Blocking I/O 一方在写入或读 数据时过慢,另一方需要等待 NIO编程,同步非阻塞 Non-Blocking I/O 提供非阻塞通讯等方式 避免同步I/O通讯效率过低 一个线程可以管理多个连接 减少线程多的压力 JDK1.4引入,1.7升级为NIO2.0(包括AIO) 主要在java.nio包中 主要类 – Buffer 缓冲区 – Channel 通道 – Selector 多路选择器 Selector 在这里就选择的作用,哪一个数据通道有响应

zucc_shen的博客 151

学习使用nio编程

nio编程 文章参考1:https://blog.youkuaiyun.com/haoyuyang/article/details/53231585 bio与nio的区别 其本质就是阻塞和非阻塞的区别。 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,那么程序就一直等着,直到传输完毕为止。 非阻塞概念:应用程序直接可以获取已经准备就绪的数据,无需等待。 IO为同步阻塞形式,NIO为同步非阻塞形式...

sqlgao22的博客 286

java nio 编程_JAVA NIO编程入门(一)

一、前言笔者之前接触的NIO编程比较少,所以对这一块的基础也比较弱,NIO作为java编程中一个重要的模块,不能很好的掌握它,感觉自己在java方面就掌握的不够,所以,接下来,笔者会学习NIO编程,所以,该系列文章不会涉及到很深源码解析,纯粹的是学习课程,也可以理解为笔者的笔记,记录学习NIO的过程,同时也希望这类文章可以对同样想掌握NIO编程的你有帮助。二、什么是NIO?Java NIO(New...

weixin_35782250的博客 251

NIO编程学习记录

NIO编程学习

LuckyLay的博客 217
上一篇: SpringCloud与Dubbo区别
下一篇: Buffer的数据存取
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值