Mark和reset的使用

package com.cppdy.nio;

import java.nio.ByteBuffer;

//Mark和reset的使用
public class NIOBufferDemo1 { public static void main(String[] args) { ByteBuffer buf = ByteBuffer.allocate(1024); // 放入5个
buf.put("cppdy".getBytes());
System.out.println("开启读的模式:");
// 开启读
buf.flip(); byte[] bytes = new byte[buf.limit()]; System.out.println("mark之前取两个值:");
buf.get(bytes,0,2);
System.out.println("position:" + buf.position());
System.out.println("limit:" + buf.limit());
System.out.println("capacity" + buf.capacity()); buf.mark();
System.out.println("mark之后取两个值:");
buf.get(bytes,2,2);
System.out.println("position:" + buf.position());
System.out.println("limit:" + buf.limit());
System.out.println("capacity" + buf.capacity()); buf.reset();
System.out.println("reset之后的值:");
System.out.println("position:" + buf.position());
System.out.println("limit:" + buf.limit());
System.out.println("capacity" + buf.capacity()); System.out.println("reset之后取两个值:");
buf.get(bytes,2,2);
System.out.println("position:" + buf.position());
System.out.println("limit:" + buf.limit());
System.out.println("capacity" + buf.capacity());
} }

reset之后position会回到mark位置

NIO(二)的更多相关文章

  1. JAVA中的NIO(二)

    一.内存文件映射 内存文件映射允许我们创建和修改那些因为太大而不能放入内存中的文件.有了内存文件映射,我们就可以假定整个文件都在内存中,而且可以完全把文件当作数组来访问. package com.dy ...

  2. 《精通并发与Netty》学习笔记(11 - 详解NIO (二) 分散/聚集 Scatter/Gather、Selector)

    一.分散/聚集 Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道:scatter( ...

  3. NIO(二):Channel通道

    一.Channel概述 channel(通道):进行IO的连接通道,为NIO的几个核心(Buffer,selector,channel)之一,相比于IO的stream具有较高的性能. IO 单向传输 ...

  4. java NIO (二) 一个故事讲清楚NIO

    假设某银行只有10个职员.该银行的业务流程分为以下4个步骤: 1) 顾客填申请表(5分钟): 2) 职员审核(1分钟): 3) 职员叫保安去金库取钱(3分钟): 4) 职员打印票据,并将钱和票据返回给 ...

  5. java学习-NIO(二)Buffer

    当我们需要与 NIO Channel 进行交互时, 我们就需要使用到 NIO Buffer, 即数据从 Buffer读取到 Channel 中, 并且从 Channel 中写入到 Buffer 中.缓 ...

  6. 用NIO实现http协议

    先来看一下本篇博文的目录: 一:简介Nio 二:Nio的好处 三:关于http协议 四:代码实现 五:总结 一:简介Nio 我们都知道io流,那么NIO是什么呢?本篇博文将会带你一探NIO,NIO的全 ...

  7. BATJ面试必会之Java IO 篇

    一.概览 二.磁盘操作 三.字节操作 实现文件复制 装饰者模式 四.字符操作 编码与解码 String 的编码方式 Reader 与 Writer 实现逐行输出文本文件的内容 五.对象操作 序列化 S ...

  8. IO 概括

    # 一.概览 Java 的 I/O 大概可以分成以下几类: - 磁盘操作:File- 字节操作:InputStream 和 OutputStream- 字符操作:Reader 和 Writer- 对象 ...

  9. java编程思想第四版第十八章总结

    一.概述 如何学习java I/O 学习I/O类库 学习I/O发展史,为什么要学习发展史呢? 因为,如果缺乏发展史,我们就会对什么时候使用哪个类,以及什么时候不该使用它们而感到迷惑. 了解nio 二. ...

  10. java架构之路-(netty专题)netty的基本使用和netty聊天室

    上次回顾: 上次博客,我们主要说了我们的IO模型,BIO同步阻塞,NIO同步非阻塞,AIO基于NIO二次封装的异步非阻塞,最重要的就是我们的NIO,脑海中应该有NIO的模型图. Netty概念: Ne ...

随机推荐

  1. SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享

    1. 查询所有存储过程 1 select Pr_Name as [存储过程], [参数]=stuff((select ','+[Parameter] 2 from ( 3 select Pr.Name ...

  2. jQuery插件整理

    toastr:Jquery消息提示插件 http://codeseven.github.io/toastr cropperjs:jQuery简单且功能强大的图片剪裁插件 https://www.npm ...

  3. (3)java数据结构--有枚举 属性

    java中的数据结构 - 南风顾 - 博客园http://www.cnblogs.com/tingxuelou/p/6686143.html 线性表,链表,哈希表是常用的数据结构,在进行Java开发时 ...

  4. python - 代码练习 - 差异备份/同步更新

    差异备份以及文件同步: import os import filecmp import shutil import re # 差异增量更新,dir2 文件目录 与 dir1 文件目录更新, def a ...

  5. tp5.0 结合 Redis Cache缓存风暴

    方法介绍 1.sadd() 描述:为一个Key添加一个值.如果这个值已经在这个Key中,则返回FALSE. 参数:key value 返回值:成功返回true,失败false   2.delete() ...

  6. spring boot 笔记1

    demon 目录,公共配置 SbMybatisApplication.java package com.example.sb_mybatis; import org.mybatis.spring.an ...

  7. ESD总结

    设计人员完全可以让系统在经过ESD事件后不发生故障并仍能继续运行.将这个目标谨记在心,下面让我们更好地理解ESD冲击时到底发生了什么,然后介绍如何设计正确的系统架构来应对ESD. 简单模型 将一个电容 ...

  8. Linux系统特点

    自由软件 真正的多用户.多任务操作系统 极强的平台可伸缩性 强大的管理功能 强大的网络功能

  9. LwIP Application Developers Manual11---Initializing lwIP

    1.前言 2.Initialization for simple lwIP 查看doc/rawapi.txt来获得更多官方信息 #if NO_SYS /* Network interface vari ...

  10. Delphi XE-Windows下配置开发环境 (Android版/IOS)

    Delphi XE-Windows下配置开发环境  (Android版/IOS)   http://www.52jike.com/thread-1-1-1.html Delphi XE5的Androi ...