Java--NIO之缓冲区进阶

  上一篇http://blog.xiaoxiaomo.com/2016/04/16/Java-NIO之缓冲区/讲了基本的缓冲区概念、属性以及部分操作。本片博客,主要讲解缓冲区的创建、复制和字节缓冲区

缓冲区的创建

  对于这一讨论,我们将以 CharBuffer 类为例,但是对于其它六种主要的缓冲区类也是适用的:IntBuffer,DoubleBuffer,ShortBuffer,LongBuffer,FloatBuffer,和 ByteBuffer。下面是创建一个缓冲区的关键函数,对所有的缓冲区类通用(要按照需要替换类名):

1
2
3
4
5
6
7
8
9
10
11
public abstract class CharBuffer
extends Buffer implements CharSequence, Comparable {
// This is a partial API listing
//这些都是静态方法。
public static CharBuffer allocate(int capacity);
public static CharBuffer wrap (char [] array);
public static CharBuffer wrap (char [] array, int offset, int length);
public final boolean hasArray( )
public final char [] array( )
public final int arrayOffset( )
}

Linux--Maven和nexus私服搭建

  Maven是基于项目对象模型(POM),管理项目的构建,报告和文档的软件项目管理工具。Nexus是一个高效的Maven私有服务器,通过POM文件或者Maven的setting.xml指向私服地址,这样我们便可以通过私服管理jar包;本文就介绍了如何在linux安装maven和nexus私服。

Java-NIO之缓冲区

  通道缓冲区 是 NIO 中的核心对象。数据从通道读入缓冲区,然后从缓冲区写入到通道中缓冲区本质上是一块可以写入/读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。

缓冲区

  1. 缓冲区 (Buffer) 是一个对象, 它包含一些要写入或者刚读出的数据。在 NIO 库中,所有数据都是用缓冲区处理的在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访问 NIO 中的数据,您都是将它放到缓冲区中。缓冲区实质上是一个数组,它提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程

  2. 最常用的缓冲区类型是 ByteBuffer。一个 ByteBuffer 可以在其底层字节数组上进行 get/set 操作(即字节的获取和设置)。ByteBuffer 不是 NIO 中唯一的缓冲区类型。事实上,对于每一种基本 Java 类型都有一种缓冲区类型:

ByteBuffer
CharBuffer
ShortBuffer
IntBuffer
LongBuffer
FloatBuffer
DoubleBuffer

Java-NIO之概述

  新的输入/输出 (NIO) 库是在JDK1.4中引入的,弥补了原IO的不足,叫做非阻塞IO。本篇博客主要讲解IO与NIO的区别以及NIO的基本概念。

为什么使用NIO

  NIO的创建目的是为了实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。I/O 与 NIO 最重要的区别是数据打包和传输的方式, I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。

  面向流 的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。一个 面向块 的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器