`

JavaSE Buffer与Netty Buffer比较

阅读更多

Buffer数据结构:


 

3个重要的标记位:limit,position,capacity。

limit:读写位置的上线;

capacity:容器数组长度;

position:当前的读写游标。

 

ChannelBuffer的数据结构:



 

 

3个重要的标记位:readIndex,writeIndex,capacity。

readIndex:当前只读的游标位置;

writeIndex:当前写入的游标位置;

capacity:容器数组长度。

 

灵活性上讲,ChannelBuffer比Buffer要灵活,就拿一个写,读操作为例,Buffer的做法是,先写入数据,然后重置position为0,limit为写入数据的长度,接着,从position处读取数组。这个过程中要调用一次flip(),也就是刚才所说的:重置position为0,limit为写入数据的长度。

 

ChannelBuffer的话,会更简单,写入数据时,移动writeIndex的游标。读取数据时,移动readIndex游标,不许要flip()。而且还可以边读边写,这一点Buffer的话就不直接支持。

 

 

ChannelBuffer的继承和依赖结构:

ChannelBuffers主要扮演工厂的角色,构造大部分的ChannelBuffer,也还有少部分的工具方法。

在ChannelBuffer继承结构中,有两个重要的实现BigEndianHeapChannelBuffer和LittleEndianHeapChannelBuffer。

little endian和big endian是表示计算机字节顺序的两种格式,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式。 假设从地址0x00000000开始的一个字中保存有数据0x1234abcd,那么在两种不同的内存顺序的机器上从字节的角度去看的话分别表示为: 

       1)little endian:在内存中的存放顺序是0x00000000-0xcd,0x00000001-0xab,0x00000002-0x34,0x00000003-0x12 

       2)big  endian:在内存中的存放顺序是0x00000000-0x12,0x00000001-0x34,0x00000002-0xab,0x00000003-0xcd 

 

 

 

  • 大小: 93.6 KB
  • 大小: 31.8 KB
  • 大小: 26.1 KB
  • 大小: 28.9 KB
分享到:
评论

相关推荐

    JavaSE_JavaSE学习资料_

    这包括了Java语法、数据类型、控制结构(如if语句、for循环、while循环)、类与对象、封装、继承和多态等面向对象编程的基本概念。理解这些内容是构建Java应用程序的基础,同时对于理解和学习其他高级特性至关重要。...

    JavaSE总结文档.rar

    - **IO/NIO**:传统IO流与非阻塞IO(NIO)的区别和应用场景,通道(Channel)、缓冲区(Buffer)的概念。 这份笔记可能没有深入到高级主题,如并发编程的复杂性、JVM内存模型、垃圾回收机制等,但对初学者或需要...

    javase-2.2-API文档-中文版.zip

    赠送jar包:javase-2.2.jar; 赠送原API文档:javase-2.2-javadoc.jar; 赠送源代码:javase-2.2-sources.jar; 赠送Maven依赖信息文件:javase-2.2.pom; 包含翻译后的API文档:javase-2.2-javadoc-API文档-中文...

    javase与javaweb笔记

    JavaSE与JavaWeb是Java开发中的两个重要领域,它们构成了Java技术栈的基础。这份"javase与javaweb笔记"涵盖了这两个方面的核心概念和技术,旨在为初学者提供易懂的指导。 JavaSE,全称为Java Standard Edition,是...

    JavaSE项目最终总结

    JavaSE(Java Standard Edition)是Java编程语言的核心部分,它为开发桌面应用程序、服务器端应用程序以及网络应用提供了基础框架和工具。在这个“JavaSE项目最终总结”中,我们将深入探讨JavaSE的重要概念、核心...

    JavaSE1.6参考文档

    JavaSE 1.6 参考文档 JavaSE 1.6 API

    0-JavaSE课程介绍

    #### 一、Java平台概述与JavaSE的地位 - **Java平台三个版本**: - **JavaME(Micro Edition)**:主要用于小型设备、智能卡、移动终端应用。随着智能手机和平板电脑的发展,JavaME的使用率逐渐降低。 - **JavaSE...

    JavaSE李学重讲义

    JavaSE,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。这个讲义可能涵盖了Java编程语言的基础知识、核心概念以及高级特性,旨在帮助学习者全面掌握Java编程技能。 首先,...

    王道JavaSE阶段测试

    JavaSE是Java开发的基础,包括但不限于类与对象、封装、继承、多态、异常处理、集合框架、IO流、线程、网络编程等内容。这份文档可能包含了这些主题的相关习题、案例分析或者知识点总结。 【压缩包子文件的文件名称...

    javase脑图.emmx

    javase脑图.emmx

    JAVASE基础知识详解

    JAVASE基础知识详解

    基于netty和protobuf的聊天系统,客户端+服务器

    3. **Netty客户端**:客户端代码负责与服务器建立连接,发送protobuf编码的消息,并接收并解码服务器返回的消息,展示给用户。 4. **事件驱动模型**:Netty使用事件驱动模型,通过ChannelHandlerContext处理网络...

    JavaSE将以

    而NIO在Java 1.4引入,提供了一种基于通道(Channel)和缓冲区(Buffer)的I/O模型,提高了数据传输效率。 反射机制是Java的另一个强大功能,它允许程序在运行时动态获取类的信息并调用其方法。Class类、...

    黑马程序员Javase笔记

    静态变量存储在方法区,生命周期与类的加载和卸载同步。 变量的分类在Java中分为局部变量和成员变量。成员变量又细分为实例变量(非静态)和静态变量。实例变量属于对象,而静态变量属于类。静态变量在类加载时被...

    学习JavaSE的全面的课件

    学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件...

    JavaSE基础.md

    JavaSE基础.md

    javaSEjavaSE

    JavaSE(Java Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序的开发。它提供了丰富的类库和API,使得开发者能够构建跨平台的应用程序。JavaSE包含了JVM(Java虚拟机)、Java...

    javase-3.3.3-API文档-中文版.zip

    赠送jar包:javase-3.3.3.jar; 赠送原API文档:javase-3.3.3-javadoc.jar; 赠送源代码:javase-3.3.3-sources.jar; 赠送Maven依赖信息文件:javase-3.3.3.pom; 包含翻译后的API文档:javase-3.3.3-javadoc-API...

    JavaSE.zip

    这包括但不限于变量、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑等)、流程控制(如if-else、switch、for、while、do-while循环)以及方法的定义和调用。这些是编写任何Java程序的基础...

    javaSE面试题合集

    JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。

Global site tag (gtag.js) - Google Analytics