`
airu
  • 浏览: 267467 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

NIO 再复习

 
阅读更多


java 的IO,在cpu越来越牛逼过程中,渐渐变得不协调了。cpu超快,性能都卡在IO上了。书上比喻:操作系统用卡车运数据,Java IO用铲子铲。。。很形象。有人说,我们可以通过JNI来提升IO啊,但是如果这样,我们就牺牲了java平台的独立性。你的代码就要和具体的操作系统绑定了。NIO通过新的设计和直接内存访问,提供高速IO。具体的NIO到底如何提升java的IO,呢,我们下面就深入了解NIO。

一、缓冲区操作:

缓冲区对于基本I/O来说,是十分重要的概念。从上层来说,I/O的基本就是把数据填充缓冲区,或者从缓冲区取出。对于底层操作系统来说,可能是很复杂的事情。看图:

可以看到,缓冲区分为用户空间的缓冲区和内核空间的缓冲区。用户程序通过系统调用要求读取数据,内核向磁盘控制器发出请求,磁盘控制器通过DMA把内存放入内核缓冲区,内核再根据用户的需要,把数据拷贝至用户空间缓冲区。为什么要这么麻烦呢?
1、硬件是不知道用户空间地址的
2、像磁盘这样固定数据块操作,并不能与用户请求的大小匹配。
3、内核程序可以实现高速缓存等实现。如果内核缓冲区有数据,那么就直接拷贝到用户空间而不需要再从硬件读取。

  • 大小: 37.7 KB
分享到:
评论

相关推荐

    Java IO, NIO and NIO.2

    这是一本介绍java io以及nio相关知识的书,书中对知识的讲解通俗易懂,是学习java nio以及复习java io相关知识的必备书籍。注意:本书为英文版!!!

    复习 J2SE基本内容 IO NIO AIO 的区别

    IO 是面向流的,NIO 是面向缓冲区的 IO 流是阻塞的,NIO 流是不阻塞的 IO 没有选择器,NIO 有选择器     从编程模式上来看AIO相对于NIO的区别在于,NIO需要使用者线程不停的轮询IO对象,来确定是否有数据准备好...

    Java 复习.xmind

    数据结构,面向对象,反射,IO流,NIO,IO多路复用,JVM,并发.....

    NettyInAction中文版

    NettyInAction中文版,共13章,从入门到精通。...经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你 的机器上运行第二章编写的Netty服务器和客户端。

    NettyInAction中文版.docx

    对于有经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你的机器上运行第二章编写的Netty服务器和客户端。 Netty是一个NIO client-server(客户端...

    Netty In Action中文版

    经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你 的机器上运行第二章编写的Netty服务器和客户端。 Netty是一个NIO client-server(客户端服务器...

    《netty in action中文版》13章全

    对于有经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你的机器上运行第二章编写的Netty服务器和客户端。 Netty是一个NIO client-server(客户端...

    Netty In Action中文版.docx

    对于有经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你的机器上运行第二章编写的Netty服务器和客户端。  Netty是一个NIO client-server(客户端...

    NettyInAction中文版.rar

    Netty是基于Java NIO的网络应用框架,...对于有经验的开发者来说,学习本章内容也是很好的复习。如果你熟悉NIO和NIO2,你可以随时跳过本章直接从第二章开始学习。在你的机器上运行第二章编写的Netty服务器和客户端。

    java8源码-javaReview:java知识复习

    java8 源码 前言:越努力,越幸运!加油吧,打工人!...[NIO](java/java基础部分/NIO/Java NIO.md) JavaWeb Java框架 开发工具 NoSQL 消息中间件 Elasticsearch MySQL Nginx 分布式相关 源码相关 云原生

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    12.4 nio2文件系统 405 12.4.1 api架构概述 405 12.4.2 操作路径 406 12.4.3 属性读取与设定 409 12.4.4 操作文档与目录 412 12.4.5 读取、访问目录 414 12.4.6 过滤、搜索文档 418 12.5 重点复习 ...

    java进阶13天资料.zip

    day01-复习回顾、静态、继承、引用类型使用 day02-抽象类、接口、代码块,final、单例、枚举 day03-多态、包、权限修饰符、内部类,Object类,Date类 day04-常用API、正则表达式,泛型、Collection集合API day05-...

    java8集合源码分析-Petal:面试复习及面试经验

    Java基础:集合类、HashMap/HashTable/CurrencyHashMap这几个的区别以及不JDK版本的区别、其他面向对象的语法,NIO,BIO,AIO; JVM:虚拟机结构,内存模型,双亲委派模型,内存溢出举例说明,垃圾回收算法,四大...

    java_study_note:个人学习笔记

    未来会详细整理到javaNIO基础前置笔记网上搜集。 网上搜集网上搜集停止更新,还是官方文档好用网上搜集基础上进行补充整理网上搜集基础上进行补充整理网上搜集基础上进行补充整理网上搜集待整理进行中数据库笔记...

    Eclipse开发分布式商城系统+完整视频代码及文档

    第三天内容复习.avi │ 02.课程计划.avi │ 03.富文本编辑器的使用.avi │ 04.商品添加功能-分析.avi │ 05.商品添加功能实现.avi │ 06.规格参数介绍及实现思路.avi │ 07.规格参数关联的数据库.avi │ 08.商品规格...

    2017最新大数据架构师精英课程

    67_hadoop的搭建的复习6 h) {. C, f( J( @& F0 G 68_脚本分析的过程" ?' q# U7 B/ ~" W, e- I 69_开启和关闭一个进程 70_hadoop常用的命令和关闭防火墙) Q" A0 B3 M8 s3 ? 71_hadoop存储为何是128M 72_hadoop的存储...

Global site tag (gtag.js) - Google Analytics