zoukankan      html  css  js  c++  java
  • java byte[]生成

    1. ByteArrayOutputStream extends OutputStream

    提供了一个byte数组,和记录写入数组值个数的类。

    a.实现了write(int)这个抽象函数,这里默认只写int的低位byte,同时多态实现write(byte b[], int off, int len)采用的数组处理方式。

    b.内部保存了一个byte[]的数组,默认构造函数初始化数组大小为32,后期如果在write发现大小不够了,将采用*2的机制扩初大小。

    c.有一个count记录了当期写入数组的值的个数。

    d.在输出方面,我们常常希望提供直接把值输出到其他输出流比如socket stream中,或者直接转化为数组进行下一步处理,甚至采用装饰者模式在外面进行字符处理。

    d.1.这里提供了writeTo(OutputStream out),直接把数据写到流里面。

    d.2.byte toByteArray()[] 将数据通过Arrays.copyOf获取写入的真正数据数组。

    e.reset 清空数据 d1和d2仅仅把数据进行了输出,原始数据任然在,如果需要清空数据,实际这里仅仅对count 清零处理。

    f.上述byte[] 和 count因为可能涉及到同时读写,所以对他们的操作都进行了同步处理synchronized

    2.ByteBuffer extends Buffer

    给nio用的缓冲区,有direct vm外分配和no-direct堆两种

     vs non-direct ByteBuffer : http://blog.csdn.net/chenyi8888/article/details/5343315

    allocateDirect(int capacity):构造时我们需要指定大小,并且后期是无法更改大小的。

    其数据录入和读取需要遵循Buffer机制,拥有position limit capacity mark等,其拥有写入和读取两个过程,且从写到度需要调用flip进行position的移动,才能正确的读取值。

  • 相关阅读:
    一分钟教你解决前端分流问题
    win7 mysql 数据库轻松实现数据库定时备份
    mysql 修改密码
    what is yaml ?
    php实现监控在线服务应用程序小栗子
    Python装饰器小代码
    2,构造代码块
    1,匿名对象,封装
    7,random
    测试错题
  • 原文地址:https://www.cnblogs.com/Empenguin/p/3334099.html
Copyright © 2011-2022 走看看