Java NIO Chapter1 Learning Tips
来源:互联网 发布:byte java 编辑:程序博客网 时间:2024/05/07 10:55
1.java.io效率低的原因
But in most cases, Java applications have not truly been I/O bound in the sense that the operating system couldn't shuttle data fast enough to keep them busy. Instead, the JVMs have not been doing I/O efficiently. There's an impedance mismatch between the operating system and the Java stream-based I/O model. The operating system wants to move data in large chunks (buffers), often with the assistance of hardware Direct Memory Access (DMA). The I/O classes of the JVM like to operate on small pieces — single bytes, or lines of text. This means that the operating system delivers buffers full of
data that the stream classes of java.io spend a lot of time breaking down into little pieces, often copying each piece between several layers of objects. The operating system wants to deliver data by the truckload. The java.io classes want to process data by the shovelful. NIO makes it easier to back the truck right up to where you can make direct use of the data (a ByteBuffer object).
2.NIO中的解决方案概况
The java.nio package provides new abstractions to address this problem. The Channel and Selector classes in particular provide generic APIs to I/O services that were not reachable prior to JDK 1.4. The TANSTAAFL principle still applies: you won't be able to access every feature of every operating system, but these new classes provide a powerful new framework that encompasses the high-performance I/O features commonly available on commercial operating systems today. Additionally, a new Service Provider Interface (SPI) is provided in java.nio.channels.spi that allows you to plug in new types of channels and selectors without violating compliance with the specifications.
TANSTAAFL principle----------- There Ain't No Such Thing As A Free Lunch.
3.FileIO
In older operating systems, this usually meant issuing a command directly to the disk driver to read the needed disk sectors. But in modern, paged operating systems, the filesystem takes advantage of demand paging to bring data into memory.
3.1FileLocking
While the name "file locking" implies locking an entire file (and that is often done), locking is usually available at a finer-grained level. File regions are usually locked, with granularity down to the byte level. Locks are associated with a particular file, beginning at a specific byte location within that file and running for a specific range of bytes. This is
important because it allows many processes to coordinate access to specific areas of a file without impeding other processes working elsewhere in the file.
File locks are either advisory or mandatory.The former is used in the Most Unix and Unixlike System, while the latter is used in the Microsoft Operating System.
But in most cases, Java applications have not truly been I/O bound in the sense that the operating system couldn't shuttle data fast enough to keep them busy. Instead, the JVMs have not been doing I/O efficiently. There's an impedance mismatch between the operating system and the Java stream-based I/O model. The operating system wants to move data in large chunks (buffers), often with the assistance of hardware Direct Memory Access (DMA). The I/O classes of the JVM like to operate on small pieces — single bytes, or lines of text. This means that the operating system delivers buffers full of
data that the stream classes of java.io spend a lot of time breaking down into little pieces, often copying each piece between several layers of objects. The operating system wants to deliver data by the truckload. The java.io classes want to process data by the shovelful. NIO makes it easier to back the truck right up to where you can make direct use of the data (a ByteBuffer object).
2.NIO中的解决方案概况
The java.nio package provides new abstractions to address this problem. The Channel and Selector classes in particular provide generic APIs to I/O services that were not reachable prior to JDK 1.4. The TANSTAAFL principle still applies: you won't be able to access every feature of every operating system, but these new classes provide a powerful new framework that encompasses the high-performance I/O features commonly available on commercial operating systems today. Additionally, a new Service Provider Interface (SPI) is provided in java.nio.channels.spi that allows you to plug in new types of channels and selectors without violating compliance with the specifications.
TANSTAAFL principle----------- There Ain't No Such Thing As A Free Lunch.
3.FileIO
In older operating systems, this usually meant issuing a command directly to the disk driver to read the needed disk sectors. But in modern, paged operating systems, the filesystem takes advantage of demand paging to bring data into memory.
3.1FileLocking
While the name "file locking" implies locking an entire file (and that is often done), locking is usually available at a finer-grained level. File regions are usually locked, with granularity down to the byte level. Locks are associated with a particular file, beginning at a specific byte location within that file and running for a specific range of bytes. This is
important because it allows many processes to coordinate access to specific areas of a file without impeding other processes working elsewhere in the file.
File locks are either advisory or mandatory.The former is used in the Most Unix and Unixlike System, while the latter is used in the Microsoft Operating System.
- Java NIO Chapter1 Learning Tips
- java-NIO 学习(chapter1)
- C++ Coding Tips - Chapter1
- java编程思想chapter1
- Java编程 chapter1
- chapter1(JAVA语言程序设计)
- Java SE 学习 chapter1
- chapter1 Java初体验
- Chapter1—Basic of Machine Learning
- CHAPTER1 INTRODUCTION -- Deep Learning Book Reading notes
- Language Learning Tips
- QEMU learning tips
- Language Learning Tips
- os.pipe learning tips
- Reinforcement learning tips
- Chapter1
- chapter1
- chapter1
- [ASP.net]关于dangerous Request.Form value的解决
- Linux 系统命令精通指南(初级)
- 100部经典漫画,有机会看看。
- Linux下C语言编程--基础知识
- 10001.嵌入式研究-几种典型 Linux 内核配置方案
- Java NIO Chapter1 Learning Tips
- 10002.没有硬件条件下来进行嵌入式系统的开发
- 最近根据上海东兰公司和银狐的资料,设计了一个工作流管理平台
- 用Java日志包进行调试
- 10003.嵌入式综合性网站
- Apache2.0.43+Tomcat4.1.18+J2sdk1.4.1+Sql2000连接池配置
- 理解NULL如何影响IN和EXITS语句
- 一个给图片生成缩略图和加版权的类
- 给软件开发经理的建议