`
nannan408
  • 浏览: 1771194 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

架构师之流处理---------bytebuffer的mark,limit和flip

 
阅读更多
1.前言。
  如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
     String str = "helloWorld";  
        ByteBuffer buff  = ByteBuffer.wrap(str.getBytes());  
        System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());  
        //读取两个字节  
        buff.get();  
        buff.get();  
        System.out.println("position:"+ buff.get(buff.position())+"\t limit:"+buff.limit());  
        buff.mark();  
        System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());  
        buff.flip();  
        System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());


运行结果:
<pre class="java" name="code">输出结果:  
position:0  limit:10  
position:2  limit:10  
position:2  limit:10  
position:0  limit:2  
</pre> 



3.总结.
(1)limit是在mark后可以读取的长度,当调用了flip操作的时候,limit=position-0,position和mark操作的记录都归零。
(2)调用flip前需要先mark,两者是成对出现。
(3)用filp,mark没什么意义,直接操作position,自己判断是否可读比较方便。

本文例子部分参照:http://blog.csdn.net/sunzhenhua0608/article/details/31778519这位叫“忧国一小民”的博主,对于博主的无私奉献,笔者深表感谢。
分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第26天-05.ByteBuffer-mark-pos-limit-cap-flip.zip

    本教程重点讲解了`ByteBuffer`的几个关键属性:mark、position、limit和capacity,以及重要的操作方法如flip。这些概念和方法对于理解和使用Java NIO进行内存数据操作至关重要。 首先,`ByteBuffer`是`Buffer`接口...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    总的来说,Mina ByteBuffer是对Java NIO ByteBuffer的扩展和优化,它更加关注网络通信的性能和效率,提供了更适合网络服务开发的特性和功能。了解它们之间的差异对于高效利用Mina框架进行网络编程至关重要。通过阅读...

    dena-bytebuffer:dena-bytebuffer

    《深入解析dena-bytebuffer:JavaScript中的高效二进制数据处理》 在JavaScript的世界里,处理二进制数据是一项常见的任务,特别是在网络通信、游戏开发、图像处理等领域。`dena-bytebuffer`库就是为了解决这个问题...

    ios-byteBuffer:在objective-c中重写一个类

    ios-byteBuffer [![CI状态]( Lee / ios-byteBuffer.svg?style = flat)]( Lee / ios-byteBuffer ) 用法 #分配 ByteBuffer *buffer = [ByteBuffer initWithOrder: ByteOrderLittleEndian]; #输入数据 - ( ...

    Android中的ByteBuffer解析

    2. **网络通信**:在Android网络编程中,ByteBuffer用于处理Socket通信中的字节流。 3. **图像处理**:在Android图形处理中,如OpenGL ES,ByteBuffer用于传递像素数据。 六、性能优化 1. **选择适当的缓冲区类型...

    互联网大厂Netty网络编程开发三部曲-Netty优化+进阶+ 入门 Netty协议设计与解析

    ├─(5) 第1章_05_bytebuffer-基本使用.mp4 ├─(6) 第1章_06_bytebuffer-内部结构.mp4 ├─(7) 第1章_07_bytebuffer-方法演示1.mp4 ├─(8) 第1章_08_bytebuffer-方法演示2.mp4 ├─(9) 第1章_09_bytebuffer-方法...

    ByteBuffer-scanner-Memor-Hex:出色地

    标题中的“ByteBuffer-scanner-Memor-Hex”很可能是一个关于Java编程中的内存处理和数据解析的项目或库。ByteBuffer是Java标准库中的一个关键类,主要用于处理二进制数据,尤其是在网络通信、文件读写以及内存操作等...

    ByteBuffer.zip

    在IT行业中,ByteBuffer是一个非常重要的概念,特别是在网络通信和数据处理领域。ByteBuffer是Java平台提供的一种高效的数据操作接口,它允许我们以字节为单位进行读写操作,这对于处理二进制数据尤其有用。在...

    Java NIO学习笔记——ByteBuffer用法

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

    NIO(byteBuffer)按行读取文件

    使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com

    阿里P8 架构师整理Java学习笔记.pdf

    - **JAVA NIO**: 提供了基于通道(Channel)和缓冲区(Buffer)的新的IO处理方式,提高了IO操作的性能和灵活性。 - **NIO的缓冲区**: 用于存储不同数据类型的临时容器,包括ByteBuffer、CharBuffer等。 - **NIO的非...

    protobuf+long+bytebuffer

    以上就是关于“protobuf+long+bytebuffer”的知识点介绍,它涉及了protobuf.js库在JavaScript环境中的应用,以及如何处理大整数和二进制数据操作。了解这些内容有助于在JavaScript中高效地实现protobuf数据的序列化...

    字节流字符流

    在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。...在实际开发中,要根据数据的性质和需求灵活选择使用哪种类型的流,以确保数据的正确传输和处理。

    IO流

    在Java编程语言中,IO(Input/Output)流是一组用于处理输入输出操作的类和接口,它们构成了Java标准库的基础部分。IO流允许程序与外部设备如键盘、显示器、磁盘、网络等进行数据传输。这篇博文将深入探讨IO流的概念...

    易语言汇编版ByteBuffer源码

    在IT领域,ByteBuffer通常被用作一个高效的缓冲区,它可以存储和操作字节序列,尤其在处理网络通信时,能有效地组织和传输数据。易语言作为中国本土的一种编程语言,以其独特的“中文编程”特性,降低了编程的门槛,...

    Java NIO 主要类和方法(Java NIO中文版 附录C)

    Java NIO(New Input/Output)是Java提供的一种新的输入输出处理机制,它与传统IO基于流的处理方式不同,NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。在Java NIO中,Buffer类是...

    追源索骥:透过源码看懂Flink核心框架的执行流程.pdf

    - FLIP-6部署及处理模型演进:介绍Flink 1.5版本对部署模型和处理模型的主要变更。 通过学习这些知识点,读者可以对Flink有一个全面的了解,从基础架构到数据处理流程,再到容错机制和优化策略。对于希望深入研究...

    ReflexBuffers:在冯诺依曼架构之上模拟刺激-响应架构

    2. **事件驱动编程**:Java的`java.awt.event`和`javax.swing.event`包提供了事件监听和处理机制,允许程序员定义对特定事件的响应。例如,用户界面中的按钮点击事件可以触发特定的处理函数。 3. **非阻塞I/O**:...

    java流.rarjava流.rar

    Java流分为字节流和字符流两大类,字节流处理单个8位字节的数据,而字符流处理Unicode字符集中的字符。流又可以进一步细分为输入流和输出流,分别用于数据的读取和写入。 1. **字节流** - 字节输入流(InputStream...

    Android在JNI中使用ByteBuffer的方法

    1. 数据写入后,调用`flip()`方法,将缓冲区准备为读取模式,`position`会重置为0,`limit`设置为写入的位置。 2. 调用`clear()`方法,重置`position`为0,但不改变缓冲区数据,以便再次写入。 3. 使用`get()`和`put...

Global site tag (gtag.js) - Google Analytics