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
分享到:
相关推荐
在J2SE中,我们可以找到三种主要的IO模型:BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O),它们各自具有不同的特性和适用场景。 **BIO(Blocking I/O)**: BIO是传统的Java I/O模型,它...
复习资料会介绍File类、字节流、字符流、缓冲区以及NIO的通道、选择器等概念,通过源代码你可以了解如何读写文件,进行网络通信。 六、多线程 Java支持多线程编程,复习资料会讲解线程的创建(Thread类和Runnable...
5. **IO流与NIO**:输入输出流(IO)和新IO(NIO)是处理数据传输的关键。题目可能要求你编写读写文件、网络通信的代码,理解字节流和字符流的区别,以及缓冲区(Buffer)在提高效率方面的作用。 6. **多线程**:...
NIO(New IO)是Java 1.4引入的改进,提供了非阻塞I/O操作。理解流的层次结构、缓冲区操作和通道概念是复习的关键。 7. **反射**: 反射允许我们在运行时动态地获取类的信息(如类名、属性、方法)并进行操作,是...
6. **I/O流**:字节流与字符流的区别,缓冲流的使用,对象序列化与反序列化,文件操作,以及NIO(New IO)和NIO.2(Java 7引入的非阻塞I/O)的相关知识。 7. **异常处理**:异常的分类(检查型异常与运行时异常),...
4. **IO流与NIO**:理解输入输出流的工作机制,掌握缓冲区、转换流、字符流与字节流的区别,并了解NIO(非阻塞I/O)的特性。 5. **多线程**:包括线程的创建、同步、死锁、线程池等,面试中会考察对并发编程的理解...
数据结构,面向对象,反射,IO流,NIO,IO多路复用,JVM,并发.....
- **IO流与NIO**:理解基本的IO流模型,以及Java NIO(非阻塞I/O)的优势和用法。 - **多线程**:了解线程的创建方式,同步机制,以及线程池的使用。 - **网络编程**:理解Socket编程,能够实现简单的客户端和服务器...
【JAVA试题与复习知识点】 在Java的学习过程中,试题和复习资料是提高技能和准备考试的重要资源。本压缩包集合了多种JAVA试题与复习笔记,涵盖了基础理论、编程实践以及解题技巧等多个方面,旨在帮助Java学习者巩固...
此外,源码分析还可以帮助学生掌握编程语言在网络编程中的应用,比如使用Python的socket库或Java的NIO框架。 期末考试通常会涉及到计算机网络的基础理论知识,包括五层(或七层)OSI模型的结构与功能、TCP/IP协议族...
输入/输出流(IO流)是Java处理数据传输的核心,复习资料会介绍流的分类、常用类的使用,以及NIO(非阻塞I/O)的概念和优势。 七、多线程 Java提供了丰富的多线程支持,考生需要理解线程的创建与控制、同步机制...
6. **输入输出流**:Java的I/O流系统用于数据的读写,复习题将涵盖文件操作、字节流和字符流、缓冲区流、对象序列化以及NIO(New IO)框架。熟练掌握I/O流,有助于处理各种数据传输和存储问题。 7. **网络编程**:...
13. **NIO(New IO)**:与传统的IO相比,NIO提供了非阻塞的I/O操作,适用于高并发的网络应用。 14. **JDBC**:Java数据库连接(JDBC)是Java访问数据库的标准API,涵盖了连接数据库、执行SQL语句、处理结果集等...
本资料"重点-复习专业技术点_java_面试复习要点_troublel75_cornerrj2_"正是为帮助求职者提升面试成功率而准备的。 首先,我们要关注的是基础语法。这是每个Java开发者必备的知识,包括但不限于变量、数据类型、...
- NIO(New IO):非阻塞I/O,提供选择器(Selector)和通道(Channel)等功能。 8. **多线程** - 线程的创建:通过实现Runnable接口或继承Thread类创建线程。 - 线程同步:synchronized关键字,wait()、notify...
### Java面试复习资料详解 #### 一、内存泄漏与内存溢出 - **内存泄漏**:指程序在申请内存后,无法释放已分配的内存空间,导致随着时间的推移,程序所消耗的内存逐渐增加。这通常是因为程序员未能正确地管理内存...
`java.io`和`java.nio`包提供了丰富的类和接口来处理各种I/O操作。 10. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现这些接口的类(如ArrayList、HashSet、HashMap)。它们提供了存储、检索和...
Java I/O和NIO(非阻塞I/O)系统对于处理输入输出操作至关重要,理解流的概念,学会使用FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等类进行文件读写。 最后,了解Java的网络编程,如...
15. **Java标准库(Java API)**:熟悉并熟练使用Java提供的各种标准库,如IO、NIO、集合、日期时间等。 以上知识点是Java初学者必须掌握的基础内容。通过"JAVA-5"到"JAVA-1"的文件,你可以系统地复习和巩固这些...