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的移动,才能正确的读取值。
java byte[]生成的更多相关文章
- JAVA UUID 生成
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成UUID的API.UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯 ...
- Java条形码生成技术-Barcode4j
背景 目前二维码的应用场景已经遍布各类互联网平台,通常是将产品/商品的唯一编号存储于二维码中以做扫码识别. 而用于生产环境的条形码技术仍然存在,如硬件设备制造.供应.物流运输等等. 在常见的产品信息管 ...
- 在java中生成二维码,并直接输出到jsp页面
在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...
- java byte【】数组与文件读写(增加新功能)
今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...
- 4:JAVA UUID 生成
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
- Java UUID 生成(转载)
来自:http://www.cnblogs.com/jdonson/archive/2009/07/22/1528466.html 基本原理:GUID是一个128位长的数字,一般用16进制表示.算法的 ...
- 用java Graphics生成验证码
以下下是API文档对Graphics的介绍! Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制. Graphics 对象封装了 Java ...
- Java生鲜电商平台-Java后端生成Token架构与设计详解
Java生鲜电商平台-Java后端生成Token架构与设计详解 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源的JWT架构. 1. ...
- 可笑,你竟然不知道 Java 如何生成 UUID
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
随机推荐
- 异步数据库查询 Z
Introduction Microsoft .NET 4.5 introduced new "async and await" methods to provide an eas ...
- 57. Jump Game && Jump Game II
Jump Game Given an array of non-negative integers, you are initially positioned at the first index o ...
- iOS开发~CocoaPods使用详细说明【转】
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...
- 在autoit中如何将combobox设置为只允许选择不允许输入呢
在autoit中如何将combobox设置为只允许选择不允许输入呢?只需要将设置style $CBS_DROPDOWNLIST,默认的是$CBS_DROPDOWN既能输入也能选择.代码设置如下: ...
- sudo用户管理
合理分配用户权限 分配方法-sudo /etc/sudoers 用户名 主机名=(运行用户名) 可运行的命令 例1 smb ALL=(ALL) /usr/sbin/useradd 例2 smb ALL ...
- 对Web标准的理解。可用性和可访问性
一Web标准 简单的说,就是HTML.CSS.JavaScript这三者分离.WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentat ...
- hive中的一些参数
动态分区 设置如下参数开启动态分区:hive.exec.dynamic.partition=true默认值:false描述:是否允许动态分区hive.exec.dynamic.partition.mo ...
- System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围
GridView指定的参数已超出有效值的范围GridView在更新过程中异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围.参数名:v ...
- SQL Server 2008中删除errorlog文件的方法
删除error咯个文件[SSQL\MSSQL10.MSSQLSERVER\MSSQL\Log目录下面] 由于默认情况下,SQL Server 保存 7 个 ErrorLog 文件,名为: ErrorL ...
- 十步图解CSS的position
CSS的positon,我想做为一个Web制作者来说都有碰到过,但至于对其是否真正的了解呢?那我就不也说了,至少我自己并不非常的了解其内核的运行.今天在Learn CSS Positioning in ...