`
java2mocca
  • 浏览: 4157 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JAVA NIO 读书笔记 第二章 buffer

阅读更多

先学点英文

 

Buffers work hand in glove with channels 密切合作,紧密配合之意

 

1 buffer的几个api flip poistion mark reset rewind ,对于写通讯的编码,解码程序来说相当好用

 

2 These methods return a reference to the object they were invoked upon (this). This is a class design technique that allows for invocation chaining

 

 buffer.mark().position(5).reset();

 

类似这种风格的api就叫做invocation chainint

 

其实hibernate的Criteria 也是这种风格的,基本上在一个对象上需要进行连续操作的都可以用这种风格来写

 

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )
    .add( Restrictions.disjunction()
    .add( Restrictions.isNull("age") )
    .add( Restrictions.eq("age", new Integer(0) ) )
    .add( Restrictions.eq("age", new Integer(1) ) )
     .add( Restrictions.eq("age", new Integer(2) ) )
    ) )
    .list();
 

3 在做批量读写的时候,BufferUnderflowException ,BufferOverFlowException两个异常是很常见的

 

 

   Buffer不是线程安全的,以下这种写法,有潜在的风险

 

int count = buffer.remaining();
for (int i = 0; i < count, i++) {
     myByteArray [i] = buffer.get(
}
 

4 duplicate操作,能够得到同一份数据的两套游标,也就是说,我们能做更复杂的事了,这个一定有应用场景的。

 

5  高低位(BIG_ENDIAN,LITTLE_ENDIAN)的问题,可以用ByteOrder对象来解决

 

6  DirectBuffer理论上在IO操作上会带来性能提高,但是其真正效率,受环境影响很大,其使用内存开销,不在heap之内。是否带来性能提升,要实测,所以使用这种buffer最好作成开关选项。

 

7 Memory-Mapped Buffers 能够有用内存映射的方式读写文件,但可能有些细节需要关注,且听下回分解

 

 

 

分享到:
评论

相关推荐

    JavaNIO chm帮助文档

    Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) ...

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    Java NIO英文高清原版

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...

    java NIO.zip

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...

    Java NIO学习笔记——ByteBuffer用法

    本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...

    java NIO 视频教程

    Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...

    javaNIO学习笔记

    ### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    JAVA NIO学习笔记.docx

    Java NIO(New Input/Output)是Java标准库在JDK 1.4引入的一组新的I/O API,它提供了一种不同于传统IO的高效、非阻塞的I/O操作方式。NIO的核心概念包括Channel、Buffer和Selector,它们共同构建了一个与操作系统...

    java nio 包读取超大数据文件

    #### 二、Java NIO关键组件 Java NIO的核心组件包括: - **Channels**:用于表示IO源或目标的一个连接点。 - **Buffers**:用来存储数据的对象,是数据传输的载体。 - **Selectors**:多路复用器,用于监控多个...

    java学习笔记1(java io/nio)

    java学习笔记1(java io/nio)设计模式

    java NIO技巧及原理

    Java NIO(New Input/Output)是Java标准库提供的一种I/O模型,它与传统的 Blocking I/O(IO)相比,提供了更加高效的数据传输方式。在Java NIO中,"新"主要体现在非阻塞和多路复用这两个特性上,这使得NIO更适合于...

    java nio 读文件

    二、使用Java NIO读取文件 在Java NIO中,读取文件主要涉及FileChannel和ByteBuffer。以下是一个简单的示例: ```java import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels....

    java NIO实例

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,它为Java应用程序提供了更高效的数据传输方式。传统的Java I/O模型(BIO)在处理大量并发连接时效率较...

    Java NIO实战开发多人聊天室

    06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-DatagramChannel.mp4 11-Java NIO-Channel-分散和聚集....

    java NIO详细教程

    Java NIO的核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(选择器)。 - **Channel**:通道用于连接源和目的地,支持数据的读写操作。与传统的流不同,通道支持双向通信,并且可以通过非阻塞的方式进行...

    一个java NIO的例子

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在传统的Java IO模型中,读写操作是阻塞的,即当调用read或write方法时,线程会等待数据准备好或...

Global site tag (gtag.js) - Google Analytics