比较nio大体上优于io的方面
要废的节奏啊,好久没写博客了,感觉整个世界都快坍塌了
ok,我们来高逼格的进入nio的学习,别再用什么io了,已经out了
我们先来介绍一下传统的io的缺点:
想起io估计我们所诟病的就是它的速度太慢了,满足不了我们的需求,为什么速度如此之慢,因为它是阻塞性的加上读写磁盘本来就慢,因此导致cpu的使用效率大大降低
这点,我们的Java维护者们,早都看不下去了,于是在jdk1.4后推出了nio来替代io,
新的技术出现往往是用来解决旧技术的痛点的,于是nio极大程度上把传统io的缺点给ko了,nio的优点如下:
nio对于文件的读写采用通道+缓存,面向的是缓存,这就很nice了,我们知道缓存本身就是为了提高速度而设计的,所以这就很好的利用了这一点,而且nio是非阻塞式的,采用这种方式后人们诟病的问题速度得到很大的改善。
下面具体介绍
io对于流的读写,只能是要么读流要么写流,二者不能同时进行,这就满足不了人们的需求了,如我要是想既读流又写流那怎么办?这就很让人感觉不爽了,现实中这种用法可以大大提高效率,所以这是一点我们不能容忍io的地方,
于是nio出现了,它带着七彩霞光而来,nio的核心就是通道加缓存,通道是即可读又可同时写,,所以说通道是双向的,在前句话的前提下。
我们下边介绍一下,jvm的堆栈,jvm内存划分为堆和栈,这是大家都知道的,但是其实啊,jvm还有一个堆外内存,也就是直接内存,这个是专门为了io和nio设计的,Java底层使用c语言的API调用操作系统与io进行交互,这个堆外内存不受GC控制,所以每用一次都要释放,举个例子,如Java内存中有一个字节数组,我们调用流将它写入磁盘文件,那jvm需要先将其copy到堆外内存,然后调用c语言的API将其写入磁盘。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
(码友推荐)2018-07-18 .NET及相关开发资讯速递
(码友推荐)2018-07-18 .NET及相关开发资讯速递: 1.如何打造一个完美的错误提示2.Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程3.Visual Studio IntelliCode now infers coding conventions for consistent code4.2018年过半,为你总结了这13个主要的设计趋势5.dotnet Framework 源代码 类库的意思6.温故之.NET进程间通信——内存映射文件7.针对 ElasticSearch .Net 客户端的一些封装8.谈谈 Git 代码回滚9.SQL解析在美团点评中是如何应用的? 围观地址[码友网]:https://codedefault.com/
- 下一篇
关于spring中的validate注解后台校验的解析
在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null,email那么必须符合email的格式,如果手动进行if判断或者写正则表达式判断无意开发效率太慢,在时间、成本、质量的博弈中必然会落后。所以把校验层抽象出来是必然的结果,下面说下几种解决方案。 1.简单的校验Demo 依赖: <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> Student: import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.Date; public class Student { @NotNull(message = "名字不能为空") private St...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7