import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.LongBuffer;
import java.nio.ShortBuffer;
public class ViewBuffers {
public static void main(String[] args) {
ByteBuffer bb = ByteBuffer.wrap(new byte[]{0,0,0,0,0,0,0,'a'});
println(bb.position());//0
bb.rewind();
println(bb.position());//0
print("byte buffer: ");
while(bb.hasRemaining()){
System.out.print(bb.position() + " -> " + bb.get() + ", ");
}
print();
CharBuffer cb = ((ByteBuffer)bb.rewind()).asCharBuffer();
print("char buffer: ");
while(cb.hasRemaining()){
System.out.print(cb.position() + " -> " + cb.get() + ", ");
}
print();
FloatBuffer fb = ((ByteBuffer)bb.rewind()).asFloatBuffer();
print("float buffer: ");
while(fb.hasRemaining()){
System.out.print(fb.position() + " -> " + fb.get() + ", ");
}
print();
IntBuffer ib = ((ByteBuffer)bb.rewind()).asIntBuffer();
print("int buffer: ");
while(ib.hasRemaining()){
System.out.print(ib.position() + " -> " + ib.get() + ", ");
}
print();
LongBuffer lb = ((ByteBuffer)bb.rewind()).asLongBuffer();
print("Long buffer: ");
while(lb.hasRemaining()){
System.out.print(lb.position() + " -> " + lb.get() + ", ");
}
print();
ShortBuffer sb = ((ByteBuffer)bb.rewind()).asShortBuffer();
print("short buffer: ");
while(sb.hasRemaining()){
System.out.print(sb.position() + " -> " + sb.get() + ", ");
}
print();
DoubleBuffer db = ((ByteBuffer)bb.rewind()).asDoubleBuffer();
print("double buffer: ");
while(db.hasRemaining()){
System.out.print(db.position() + " -> " + db.get() + ", ");
}
print();
}
static void print(Object o){
System.out.print(o);
}
static void println(Object o){
System.out.println(o);
}
static void print(){
System.out.println();
}
}
/*
0
0
byte buffer: 0 -> 0, 1 -> 0, 2 -> 0, 3 -> 0, 4 -> 0, 5 -> 0, 6 -> 0, 7 -> 97,
char buffer: 0 -> , 1 -> , 2 -> , 3 -> a,
float buffer: 0 -> 0.0, 1 -> 1.36E-43,
int buffer: 0 -> 0, 1 -> 97,
Long buffer: 0 -> 97,
short buffer: 0 -> 0, 1 -> 0, 2 -> 0, 3 -> 97,
double buffer: 0 -> 4.8E-322,
*/
分享到:
相关推荐
- `slice()`:返回当前缓冲区的一个视图,从当前位置开始。 5. **特殊缓冲区**: - **直接缓冲区**:通过 `allocateDirect()` 创建,数据直接存放在操作系统内核中,绕过 JVM 的堆,从而提高 I/O 效率。 - **间接...
Java NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。通道类似于流,但支持双向数据传输,且可以被选择器监控以等待I/O事件。缓冲区提供了一种有效地在通道之间传输数据的方式,而选择器则...
- **概念**:`java.nio.channels.Channel`接口定义了一个用于执行I/O操作的对象,它可以将数据从源读取到缓冲区或将数据从缓冲区写入目标。 - **类型**:包括但不限于`FileChannel`、`SocketChannel`和`...
此外,java.nio包提供了更现代的非阻塞I/O操作,如通道(Channels)、缓冲区(Buffers)和文件映射(File Mapping)。 4. **多线程**: 对于复杂的文件操作,如大文件的复制或移动,可能会涉及到多线程,以确保...
NIO基于通道(Channels)和缓冲区(Buffers),并且提供了选择器(Selectors)来同时监听多个通道的事件。这种方式尤其适用于高并发的网络应用。 总的来说,Java编程技术文摘是Java开发者不可或缺的学习资料,它...
视图缓冲器(View Buffer)是NIO的另一项创新,它允许我们通过特定基础数据类型的视图来访问底层的ByteBuffer,如CharBuffer、ShortBuffer等。这种视图机制使得在ByteBuffer中操作不同数据类型变得更加便捷,而对...
6. **NIO(非阻塞IO)**:Java 1.4引入了NIO(New IO)库,提供了选择器和通道等新概念,支持异步IO操作,提高了处理大量并发连接的能力。 在这个压缩包中,我们可能找到针对这些概念的简单示例代码,这对于初学者...
IO流是数据传输的基础,涵盖了输入流、输出流、缓冲流、对象流等概念,还可能涉及NIO(New IO)和NIO.2的特性,如Channel、Buffer和Selector。 2. **第2章 JDBC编程**: JDBC是Java数据库连接,是Java与数据库交互的...
10. **Spring框架**:Spring是Java企业级应用的主流框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,简化了开发和测试。 11. **JUnit与Mockito**:这两个是Java单元测试的工具,JUnit...
2. NIO:非阻塞I/O模型,通道(Channel)和缓冲区(Buffer)的使用,选择器(Selector)的应用。 五、网络编程 1. Socket编程:理解TCP和UDP协议,如何创建和使用Socket进行数据传输。 2. HTTP协议:了解HTTP请求...
- NIO:非阻塞I/O,通道、缓冲区的概念。 - Lambda表达式:函数式编程,理解方法引用和构造器引用。 - Stream API:处理集合的新方式,流的操作和组合。 3. **Java EE基础**: - Servlet:HTTP请求处理,会话...
9. **MVC架构**:模型-视图-控制器(MVC)是一种常见的软件设计模式,常用于Web应用开发。理解其工作原理和如何在Java项目中实现。 10. **版本控制**:使用Git进行版本控制,理解分支、合并和冲突解决等概念,这...
2. NIO(New IO):理解NIO的非阻塞特性,包括选择器(Selector)、通道(Channel)和缓冲区(Buffer)。 五、反射与动态代理 1. 反射:了解反射的基本原理,能通过反射操作类、方法和字段。 2. 动态代理:理解...
7. MVC设计模式在JSP中的应用:JSP常常与Servlet、JavaBeans和JDBC等技术结合起来,构成MVC(模型-视图-控制器)设计模式,实现分层的Web应用开发。 8. JSP的性能优化:为了提高JSP页面的执行效率,开发者需要考虑...
- **I/O流**: 字节流、字符流、缓冲流、对象流,以及NIO(New I/O)框架。 - **反射**: 运行时动态获取类信息并操作对象。 - **注解**: 提供元数据,用于编译时或运行时处理。 - **模块系统** (Java 9及以上): ...
直接缓冲区是Java NIO框架的一部分,它可以绕过JVM的堆空间,直接访问物理内存,从而提高I/O操作的效率。 #### 4. 防止内存泄漏 在Java开发中,内存泄漏是一个常见的问题。以下是一些防止内存泄漏的方法: - **弱...
3. **IO与NIO**:Java的输入输出系统和新IO(NIO)库在处理文件、网络通信等方面起着关键作用。源码可能会包含使用流、缓冲区和通道进行数据传输的示例。 4. **网络编程**:Java提供了丰富的API进行网络编程,如...
- Spring MVC:模型-视图-控制器的工作原理。 - Spring Boot:快速开发工具,自动配置原理。 10. **JVM**: - 类加载过程:加载、验证、准备、解析、初始化。 - 垃圾收集:GC算法、分代理论、垃圾收集器的选择...