Java NIO Chapter1 Learning Tips

原创 2004年10月15日 08:45:00
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.

Language Learning Tips

Language Learning Tips print buttonPrinter Friendly VersionLearning to communicate in another langua...
  • henrybai
  • henrybai
  • 2008年07月02日 14:05
  • 893

Learning English - Using Movies and TV to Learn English

1.Find something you enjoy(= something your would watch anyway,not just for English). 2.Choose some...
  • lin111000713
  • lin111000713
  • 2017年03月25日 14:38
  • 107

【学习使用】Image Tips 插件介绍

下载资料的地址:我的资源
  • Dracotianlong
  • Dracotianlong
  • 2014年04月17日 14:46
  • 741

Daily Tips on Learning English

原文链接:http://www.tingroom.com/lesson/skill/index.html rm下载地址:http://www.tingroom.com/lesson/skill/...
  • islq
  • islq
  • 2006年04月23日 10:48
  • 2681

C++ Coding Tips - Chapter1

C++ Coding TipsBetta Jinbetajin@hotmail.com>April 15, 2002Chapter1. Coding StylesSection1. Let globa...
  • Betta
  • Betta
  • 2002年04月18日 09:28
  • 2217

[翻译]斯坦福CS 20SI:基于Tensorflow的深度学习研究课程笔记,Lecture note 3: Linear and Logistic Regression in TensorFlow

“CS 20SI: TensorFlow for Deep Learning Research” Prepared by Chip Huyen Reviewed by Danijar Hafner...
  • wangyuweihx
  • wangyuweihx
  • 2017年03月04日 20:28
  • 575

Chapter1—Basic of Machine Learning

1 监督学习(supervised learn)与无监督学习(unsupervised learn) 机器学习系统通常被看作是有无人类监督学习两种方式。监督学习问题是,从成对的已经标记好的输入和输出经...
  • Xw_Classmate
  • Xw_Classmate
  • 2016年05月03日 18:19
  • 6391

java nio 复制文件功能

  package com.ghb.crp.file;     import java.io.BufferedInputStream;   import java.io.BufferedOutputS...
  • ghb5371548
  • ghb5371548
  • 2010年05月18日 12:03
  • 1636

Java Tips

1、对象本身已知的事物称为实例biangl
  • u010264321
  • u010264321
  • 2014年05月02日 23:10
  • 742

Java NIO 简单例子

服务器端: package nioT; import java.io.IOException; import java.net.InetSocketAddress; import java.nio...
  • whb123andy
  • whb123andy
  • 2013年12月10日 14:22
  • 3117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java NIO Chapter1 Learning Tips
举报原因:
原因补充:

(最多只允许输入30个字)