`
liuzhaomin
  • 浏览: 204281 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

NIO Buffer Slice

阅读更多

 

 
package com.ls.java.newio;

import java.nio.ByteBuffer;

public class TestSlice {
	
	public static void main(String[] args) {
		ByteBuffer buffer = ByteBuffer.allocate(10);
		for(int i=0; i<buffer.capacity(); ++i) 
			buffer.put((byte) i);
		buffer.position(0);
		buffer.limit(buffer.capacity());
		while(buffer.remaining()>0)
			System.out.print(buffer.get() + "---");
		System.out.println("============================");
		
		buffer.position(3);
		buffer.limit(7);
		ByteBuffer slice = buffer.slice();
		for(int i=0; i<slice.capacity(); ++i)
			slice.put(i, (byte) (slice.get(i) * 5));
		
		while(slice.remaining()>0)
			System.out.print(slice.get() + "---");
		
		System.out.println("============================");
		buffer.position(0);
		buffer.limit(buffer.capacity());
		while(buffer.remaining()>0)
			System.out.print(buffer.get() + "---");
	}
	
}
 

 

 

 

分享到:
评论

相关推荐

    Java性能优化之使用NIO提升性能(Buffer和Channel)

    NIO的核心组件包括Buffer(缓冲区)和Channel(通道),它们共同解决了传统I/O模型中的一些性能瓶颈。 1. **Buffer(缓冲区)**: - 缓冲区是NIO中的核心概念,它是一个对象,包含了存储数据的内存块。Buffer有...

    java nio不错的学习资料

    通过Buffer的duplicate()、slice()和get()、put()方法,NIO允许通道间的直接数据传输,无需通过临时缓冲区。 8. 套接字通道(Socket Channels) SocketChannel提供了TCP协议的非阻塞套接字操作,可以用于客户端和...

    Java NIO.pdf

    - `slice()`:返回当前缓冲区的一个视图,从当前位置开始。 5. **特殊缓冲区**: - **直接缓冲区**:通过 `allocateDirect()` 创建,数据直接存放在操作系统内核中,绕过 JVM 的堆,从而提高 I/O 效率。 - **间接...

    Java TCP/IP Socket编程

    `slice()`方法创建Buffer的一个视图。 - **字符编码**:在处理文本数据时,需要考虑字符编码问题,如UTF-8等。 - **流(TCP)信道详解**:TCP通道支持非阻塞读写操作,可以使用`read()`和`write()`方法与Buffer...

    scruffy-marshall_2.10-1.4.0.zip

    3. **Buffer**:基于Slice的缓冲区,提供了一套类似于Java NIO的Buffer接口,方便数据的读写操作。 4. **MemoryRegion**:封装了内存区域,提供了一种安全的方式访问和操作堆外内存,避免内存溢出等问题。 5. **...

    取指定字节数组中的子数组 一个很好类例子

    ByteBuffer subBuffer = buffer.slice(); // 创建子缓冲区,它共享父缓冲区的数据 ``` 从提供的压缩包文件名列表来看,这似乎是一个包含多个Java类的项目。例如,`Server.java`可能是服务器端的代码,`Client.java`...

    Java_TCPIP_Socket编程(中文版)

    - **Buffer透视:duplicate(),slice()等**:这些方法提供了不同的视图来查看同一个`Buffer`的内容。 - **字符编码**:处理文本数据时,需要考虑字符编码问题。 - **流(TCP)信道详解**:描述如何使用`...

    Java_TCPIP_Socket编程

    - **Buffer透视:duplicate(),slice()等**:创建Buffer的副本和切片。 - **字符编码**:处理Unicode和其他字符集。 - **流(TCP)信道详解**:详细介绍TCP Channel的工作原理。 - **Selector详解**: - **在信道...

    Java+TCPIP+Socket编程(中文版)

    - **Buffer透视:duplicate(),slice()等** Buffer的操作方法。 - **字符编码** 字符编码的处理方式。 - **流(TCP)信道详解** TCP信道的具体使用方法。 - **Selector详解** - **在信道中注册** 如何...

    netty-高并发编程-视频教程张龙-90讲完整视频

    5. Netty的零拷贝:Netty通过组合NIO的FileChannel.transferTo()和Buffer的slice()、duplicate()方法,实现了数据传输过程中的零拷贝,减少了CPU对数据的处理次数,提高了整体性能。 6. Netty的Pipeline和Handler:...

    buffers:各种缓冲区的实现,尤其是非块缓冲区

    7. **缓冲区复制与转换**:Java还提供了方便的缓冲区复制和类型转换方法,如`Buffer.slice()`、`Buffer.compact()`和`Buffer.asXXXBuffer()`,帮助在不同类型的缓冲区之间转换。 8. **内存映射文件...

    netty权威指南pdf

    Netty 是基于 Java NIO(非阻塞I/O)构建的,它简化了网络编程的复杂性,提供了高效的内存管理,包括零拷贝(Zero-Copy)技术,能够极大地提高网络通信效率。Netty 提供了一整套的API,包括用于读写数据的Channel、...

    Android中的ByteBuffer解析

    ByteBuffer是Java NIO(Non-Blocking I/O)的一部分,允许开发者高效地读写大量原始字节,如处理图像、音频或网络数据。本文将深入探讨Android中ByteBuffer的工作原理及其常见应用场景。 一、ByteBuffer的基础概念 ...

    nettyread:netty源码阅读

    - **DirectBuffer** 和 **HeapBuffer**: 分别对应于堆外内存和堆内内存,根据需求选择最佳性能方案。 - **.slice()**、**duplicate()** 和 **slice(int, int)**: 提供了灵活的数据视图操作。 3. **编码器和解码器...

Global site tag (gtag.js) - Google Analytics