易截截图软件、单文件、免安装、纯绿色、仅160KB

Java NIO 学习笔记 ByteBuffer (早期笔记)

(参考 “ibm nio入门”)
在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访问 NIO 中的数据,都是将它放到缓冲区中。缓冲区实质上是一个数组。通常它是一个字节数组,但是也可以使用其他种类的数组。但是一个缓冲区不仅仅是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。
buffer其实只是一个美化了的数组。
状态变量
跟踪数据的状态情况使buffer可以自己管理数据资源
position: 其实是指从buffer读取或写入buffer的下一个元素位置。比如,已经写入buffer 3个元素那那么position就是指向第4个位置,即position设置为3(数组从0开始计)。
limit:还有多少数据需要从buffer中取出,或还有多少空间可以放入。postition总是<=limit。
capacity: 表示buffer本身底层数组的容量。limit绝不能>capacity。
filp():作了两件事情:1.将limit指向现在position的位置 2.将position设置为0 (limit=position;position=0)
       这个过程可以使之前buffer写入数据时改变的状态变为可以“准备读取”。因为之前写到buffer中的数据就是position 到 limit-1 两个位置之间(limit指向最后一个数据的后一个位置)。
clear():
    也作了两件事:1. limit=capacity 2.position=0
这个过程可以使buffer读取数据时改变的状态改变为“清空并准备写入”。
访问方法
以下都以bytebuffer为例
get():
   前三个get方法是相对读取。就是相对于位置状态来读取数据,并且会改变position位置状态。
   byte get();
   ByteBuffer get(byte dst[]);//读取bytebuffer中数据写入 dst[]
   ByteBuffer get(byte dst[],int offset, int length);
   
   该读取数据是绝对读取(一个byte),即会忽略limit和position值。并完全绕过了缓冲区的状态统计方法。
   就是说不会改变buffer内部的位置状态。
   byte get(int index);
 
put();
   与get类似 前四个put方法是相对读取。即受position 以及limit影响,并且会改变 position。
   ByteBuffer put( byte b );
   ByteB


相关文档:

Java 类的热替换 —— 概念、设计与实现

http://www.ibm.com/developerworks/cn/java/j-lo-hotswapcls/index.html
Java 类的热替换 —— 概念、设计与实现
构建基于 Java 的在线升级系统
 
 
级别: 中级
孙 鸣
,
邓 辉
,
2010 年 1 月 14 日

于许多关键性业务或者庞大的 Java
系统来说,如果必须暂停系统服务才能进行系统 ......

Java中使用Runtime和Process类运行外部程序

使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序。
  1. exec(String command)
  2. exec(String command, String envp[], File dir)
  3. exec(String cmd, String envp[])
  4. exec(String cmdarray[])
  5. exec(String cmdarray[], String envp[])
  6. exec(S ......

Java同步机制收集总结 synchronized

虽然很少用到同步,出于个人兴趣自学了一下。现对JAVA中的同步收集学习的东西总结一下,让自己技术的条理化,能够沉淀下来。
 同步就是串行使用一些资源.
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance ......

java 宝典

场景:现在有个磁盘输出的业务,客户端需要通过2个业务对象进行输出。
一个是通过Floppy(软盘),另一个是通过USB接口。
这样就需要2个业务类,但是如果不让客户端知道而实现简单的注入呢?
首先,由于有2种设备,软盘和USB,因此我们需要建立一个设备接口IDeviceWriter。
代码如下: ......

论JAVA的web开发

   大家好! 我叫小郝 也是刚开始学用JAVA开发WEB项目,希望大家给我建议下,有什么方法可以学好,用JAVA开发WEB项目!~  现在我还应该学点什么 希望大家多指点指点~   我现在SSH  学完了!     大家能有什么好点的建议吗?  有的话联系下我谢谢了~  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号