NIO和NIO.2对比

40475aafdcf8403885283a6b46f7e751.jpgJava NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API,用于替代原来的BIO(Blocking I/O)API。NIO提供了更加灵活和高效的网络通信方式,特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式,它支持面向缓冲的通道(Channel)和缓冲区(Buffer)操作,以及选择器(Selector)用于单个线程管理多个输入和输出通道。

 

 

 

 

NIO.2是在Java 7中引入的一部分,正式名称为NIO.2,是为了进一步改进NIO而增加的一些新特性,主要包括文件通道(File Channel)的改进,增加了对路径和目录流的支持,以及异步文件通道(Asynchronous File Channel)等。NIO.2使得文件I/O操作变得更加简单和高效,同时也引入了一些新的类和方法来简化文件和目录的读写操作。

 

 

 

下面是NIO和NIO.2的一些主要区别:

1. 阻塞与非阻塞:

   - NIO是非阻塞的,这意味着即使某个操作没有准备好完成,线程也可以继续做其他事情,而不是等待。

   - NIO.2继承了NIO的非阻塞特性,并在此基础上进行了扩展,特别是在文件I/O方面提供了更多的非阻塞操作。

2. 缓冲区操作:

   - NIO引入了ByteBuffer,CharBuffer等缓冲区类,用于读写数据。

   - NIO.2增加了对直接缓冲区(Direct Buffer)的支持,允许直接在物理内存上进行I/O操作,提高了效率。

3. 文件通道:

   - NIO提供了FileChannel,但它的功能相对有限,只能进行阻塞操作。

   - NIO.2增加了AsynchronousFileChannel,支持异步文件读写操作,可以在不占用线程的情况下完成文件的读写。

4. 目录和路径支持:

   - NIO.2引入了Files类和Path接口,提供了更直观和强大的文件系统导航功能。

5. 字符集支持:

   - NIO.2增强了字符集支持,使得文件读写更加方便。

6. 异常处理:

   - NIO的异常处理比较繁琐,通常需要使用检查型异常。

   - NIO.2使用了try-with-resources语句,可以自动关闭资源,简化了异常处理。

总的来说,NIO.2是对NIO的补充和完善,它保留了NIO的核心特性,并添加了许多用户友好的改进和增强功能,使得Java的I/O操作更加高效和便捷。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(C):玩转顺序表

🍺0.前言 🎷1.线性表 🎸2.顺序表 📀动态顺序表的实现 💿初始化 💿检查容量是否满了,进行扩容 💿插入:头插和尾插 💿删除:头删和尾删 &…

Python实现2048游戏

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待! 在这篇博客中,我们将使用 Python 和 Pygame 库来编写经典的 2048 游戏。2048 是一个益智类游戏,通过在 4x4 网格上滑动方块并合并它们来创建一个新的数字,直到获得数字 2048 或者无法继…

bfs之走迷宫

文章目录 走迷宫广度优先遍历代码Java代码打印路径 走迷宫 给定一个 nm 的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0表示可以走的路,1表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1) 处&#…

leetcode-岛屿数量-99

题目要求 思路 1.使用广度优先遍历,将数组中所有为1的元素遍历一遍,遍历过程中使用递归,讲该元素的上下左右四个方向的元素值也置为0 2.统计一共执行过多少次,次数就是岛屿数量 代码实现 class Solution { public:int solve(vec…

mac电脑如何安装python及环境搭建

(1)进入官网:Download Python | Python.org,根据自己电脑选择python (2)这里我选择的是mac,点击:macos,选择最近版本并点击进入 (3)选择mac版本: (4)点击就可以进入下载: (5)下载好之…

网站防御XSS攻击的有效策略与实施步骤

随着互联网应用的普及与发展,网站安全已成为众多企业关注的焦点,而XSS(Cross-Site Scripting)攻击作为最常见的Web安全漏洞之一,对用户数据安全构成严重威胁。本文将详细介绍网站如何有效防御XSS攻击,并提供…

Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能

需求描述: 由于某些情况下当查询过滤参数过大时,执行sql由于参数过大而报错,此时 需要使用临时表的方式,即 当参数超过某个阀值(如 1000,可调整)新增一张临时表,将原表 与 该临时表进…

2024精武杯部分复现

首先是计算机部分,这里是题目 做完才发现其实很多东西在火眼里面已经有更快的捷径了,但是自己当时没发现,还去傻傻的开虚拟机去找,说到底,还是对取证软件的理解不够,也不怎么会用。不废话了,直接…

怎么给word文件名批量替换部分文字?word设置批量替换文字教程

批量替换Word文件名中的几个字,对于经常处理大量文件的人来说,是一项非常实用的技能。以下是一个详细的步骤指南,帮助你快速完成这项任务。 首先,你需要准备一个可以批量重命名文件的工具。市面上有很多这样的工具可供选择&#x…

人工智能的发展将如何重塑网络安全

微信搜索关注公众号网络研究观,获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年,当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年,当时数学家艾伦图灵发表了题为“计算机…

密码学《图解密码技术》 记录学习 第十四章

目录 十四章 14.1 本章学习的内容 14.2 什么是 SSL/TLS 14.2.1 Alice 在 Bob 书店买书 14.2.2 客户端与服务器 14.2.3 АSSL/TLS 承载HTTP 14.2.4 SSL/TLS的工作 14.2.5 SSL/TLS也可以保护其他的协议 14.2.6 密码套件 14.2.7 SSL 与 TLS 的区别 14.3 使用 SSL/TLS 进…

产业观察:电机驱动成为人形机器人的动力核心

前不久,波士顿动力发布一则“再见,液压Atlas”视频,宣告其著名的液压驱动双足人形机器人Atlas正式退役。这则视频引起全球所有Atlas粉丝的高度关注。然而紧接着,波士顿动力便又推出了全部由电机驱动的新一代Atlas机器人&#xff0…

【Git】【MacOS】Github从创建与生成SSH公钥

创建账号 这一步不过多赘述,根据自己的邮箱新创建一个账号 配置SSH公钥 本人是macOS系统,首先从终端输入 cd ~/.ssh进入.ssh目录,然后通过 ls查看有没有一个叫做id_rsa.pub的文件 本人之前生成过SSH公钥,如果没有的话,通过 ssh-keygen -t…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC(Model-View-Controller)设计模式,各个目录的作用如下: model(模型): 位于 /usr/lib/lua/luci/model 下,存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

cmd输入mysql -u root -p无法启动

问题分析:cmd输入mysql -u root -p无法启动 解决方法:配置系统环境变量 1.找到mysql安装文件下的bin文件:(复制改文件地址,如下图所示) 2.电脑桌面下方直接搜索环境变量并进入,如下图 3.点击环境变量&a…

读取打包到JAR中的文件:常见问题与解决方案(文件在但是报错not find)

读取打包到JAR中的文件:常见问题与解决方案 喝淡酒的时候,宜读李清照;喝甜酒时,宜读柳永;喝烈酒则大歌东坡词。其他如辛弃疾,应饮高梁小口;读放翁,应大口喝大曲;读李后主…

Python数据清洗与可视化实践:国际旅游收入数据分析

文章目录 概要整体流程名词解释NumPyPandasMatplotlibre 技术细节数据清洗可视化 小结 概要 在本篇博客中,我们将通过一个实际的案例,演示如何使用Python进行数据清洗和可视化,以分析国际旅游收入数据。我们将使用Python中的Pandas库来进行数…

04-25 周四 FastBuild重构实践-TLS、全局捕获异常、一键配置

04-25 周四 FastBuild重构实践 时间版本修改人描述04-25V0.1宋全恒新建文档2024年5月6日14:33:16V1.0宋全恒完成文档撰写 简介 由于 04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)描述了重新部署一个FastBuild实例的过程,通过阅读这个&…

线性表的概念与结构,以及顺序表和链表的简单概念

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线…

JS hook cookie

JS hook cookie cookie 的值是V,v是动态变化的 可以看到D中生成了cookie的值n 尝试使用RPC定位到cookie。 替换内容,下断点。 将写好的RPC代码直接插入 加入代码,file.virjar.com/sekiro_web_client.js?_123 这个地址是在前端创建客户端…