- 浏览: 224399 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
import java.io.InputStream; public final class BitStream { private final int RESELEN = 4096;//默认缓冲区大小 private InputStream in;//输入流 private byte[] bitBuf;//提高处理 缓冲区 private int bitPos; //位位置 private int bytePos;//字节位置 private int endPos; //bitBuf已填入的字节数 public BitStream(InputStream in) { this.in = in; bitBuf = new byte[RESELEN + 4]; // 长度不小于(最大帧长) } public BitStream(InputStream in,int size) { this.in = in; bitBuf = new byte[size + 4]; // 长度不小于size(最大帧长) } /** * <p> * 简述:向bitBuf添加len字节,RESELEN后尾部要空出4字节用于32bit的"2级缓冲". * </p> */ public int append(int len) { if (len + endPos > RESELEN) { //将缓冲区bytePos及之后的字节移动到缓冲区首 System.arraycopy(bitBuf, bytePos, bitBuf, 0, endPos - bytePos); endPos -= bytePos; bitPos = bytePos = 0; } try { if(in.read(bitBuf, endPos, len)==-1) return -1; } catch (Exception e) { e.printStackTrace(); return -1; } endPos += len; return len; } /** * <p> * 简述:重置 bitstream * </p> */ public void resetIndex() { bytePos = bitPos = endPos = 0; } /** * <p> * 简述:从缓冲区bitBuf读取1 bit * </p> */ public int get1Bit() { int bit = bitBuf[bytePos] << bitPos; bit >>= 7; bit &= 0x1; bitPos++; bytePos += bitPos >> 3; bitPos &= 0x7; return bit; } /** * * <p> * 简述:2 <= n <= 17 * </p> */ public int getBits17(int n) { int iret = bitBuf[bytePos]; iret <<= 8; iret |= bitBuf[bytePos + 1] & 0xff; iret <<= 8; iret |= bitBuf[bytePos + 2] & 0xff; iret <<= bitPos; iret &= 0xffffff; // 高8位置0; iret >>= 24 - n; bitPos += n; bytePos += bitPos >> 3; bitPos &= 0x7; return iret; }http://lfp001.iteye.com/blog/412745
评论
1 楼
sblig
2011-11-22
/** * * <p> * 简述:2 <= n <= 33 * </p> */ public int getBits33(int n) { int iret = bitBuf[bytePos]; iret <<= 8; iret |= bitBuf[bytePos + 1] & 0xff; iret <<= 8; iret |= bitBuf[bytePos + 2] & 0xff; iret <<= 8; iret |= bitBuf[bytePos + 3] & 0xff; iret <<= bitPos; iret &= 0xffffffff; // 高32位置0; iret >>= 32 - n; bitPos += n; bytePos += bitPos >> 3; bitPos &= 0x7; return iret; } /** * * <p> * 简述: 2<= n <= 9 * </p> */ public int getBits9(int n) { int iret = bitBuf[bytePos]; iret <<= 8; iret |= bitBuf[bytePos + 1] & 0xff; iret <<= bitPos; iret &= 0xffff; // 高16位置0; iret >>= 16 - n; bitPos += n; bytePos += bitPos >> 3; bitPos &= 0x7; return iret; } public int getBytePos() { return bytePos; } public int getBuffBytes() { return endPos; } public int getBitPos() { return bitPos; } /** * 返回值是0-255的无符号整数 */ public int get1Byte() { return bitBuf[bytePos++] & 0xff; } /** * <p> * 简述: 回跳 n 个位 * </p> */ public void backBits(int n) { bitPos -= n; bytePos += bitPos >> 3; bitPos &= 0x7; } /** * <p> * 简述:跳转 nbtyes 个字节 * </p> */ public void skipBytes(int nbytes) { bytePos += nbytes; bitPos = 0; } }
发表评论
-
[Java性能剖析]远程调试配置
2014-07-10 10:48 808一、服务器操作如下: 找到文件:apache-tomcat-5 ... -
[jdk工具命令]Java SE 文档
2014-07-10 10:43 777oracle java se documentation j ... -
[jdk命令工具]jconsole远程项目监控
2014-07-10 10:37 788入口:catalina.sh JAVA_OPTS=&quo ... -
[jvm参数]JVM简单配置
2014-07-10 10:35 1224-Xms256m -Xmx512M -XX:MaxPermSi ... -
struts2 高危漏洞修复
2013-07-23 10:30 11881. /** * 过滤器 */ ... -
转:调查服务器响应时间的利器 tcprstat
2012-11-16 13:50 1485http://rdc.taobao.com/blog/cs/? ... -
跟我学Spring3 学习笔记七 初始化与销毁
2012-10-18 16:45 2093最后 遗留一个问题, ... -
跟我学Spring3 学习笔记六 注入
2012-10-18 14:31 2232跟我学Spring3 学习笔 ... -
动态生成class
2012-10-16 11:17 1368ASM 进行动态生成class import org.obj ... -
FtpUtil ftp工具类 过滤文件名
2012-10-10 16:25 6944工具类: import java.io.Buff ... -
java 高性能网络编程 NIO
2012-09-28 16:31 1515服务器端: // 1. 分配一个 Serve ... -
java 高性能网络编程 mina
2012-09-28 10:52 1690服务器端: // 创建一个非阻塞的server端so ... -
代理 下载网页,挖掘数据
2012-09-25 13:51 897URL url = new URL("http:// ... -
java nio 编程学习 一
2012-09-21 16:08 1177Java.nio中的主要类ServerSocketChanne ... -
MongoDB 实战笔记 四
2012-09-20 14:12 1142import java.net.UnknownHostExce ... -
Json 添加元素拼接JSON字符串(转)
2012-09-20 13:55 7054package com.util; import jav ... -
MongoDB 实战笔记 三
2012-09-20 13:37 2479导出mongoexport -d m ... -
MongoDB 实战笔记 二
2012-09-20 11:45 936MongoDB 实战笔记 count 查询记录 ... -
MongoDB 实战笔记 一
2012-09-20 11:30 1180MongoDB 实战笔记 来建立一个 test 的集 ... -
Struts 学习笔记 二
2012-09-17 16:56 875login.jsp 登陆页面 <html:form ac ...
相关推荐
- NIO(非阻塞I/O):选择器、通道、缓冲区的概念,以及其相对于传统IO的优势。 5. **反射与注解**: - 反射机制:动态获取类信息,创建对象,调用方法,修改属性,以及反射在设计模式中的应用。 - 注解:元数据...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
在Java中,I/O(输入/输出)系统是通过流(Stream)的概念来设计的,流是数据传输的抽象表示,可以是文件、网络连接、内存缓冲区等。下面将详细解释Java中的文件操作和流技术。 1. **Java I/O基础** - Java的I/O库...
- **缓冲区管理**:在网络传输或I/O操作中,缓冲区通常采用队列结构来暂存数据。 - **打印机作业**:多个打印任务可以按到达顺序放入队列,等待逐个打印。 - **广度优先搜索(BFS)**:在图或树的搜索算法中,...
3. **缓冲流**:为了提高性能,Java提供了缓冲流,如`BufferedReader`和`BufferedWriter`,它们在底层字节或字符流之上添加了一个缓冲区,减少了对底层资源的频繁访问。 4. **过滤流**:过滤流是在已存在的流基础上...
### Java入门缓冲区溢出编程心得 #### 缓冲区溢出原理与实践 缓冲区溢出是一种常见的安全漏洞,通常发生在程序试图将过多的数据写入一个固定大小的内存区域时。这种行为可能会覆盖相邻的内存空间,从而导致程序...
- **字节流与字符流**:InputStream、OutputStream、Reader、Writer的基本用法,以及Buffered系列流的缓冲功能。 - **对象序列化**:理解序列化机制,如何实现Serializable接口,以及反序列化的操作。 6. **多...
- **缓冲区流** - `BufferedInputStream` 和 `BufferedOutputStream` 在文件流的基础上添加了缓冲功能,提高了读写效率。 - **原始型数据流** - `DataInputStream` 和 `DataOutputStream` 提供了读写基本数据类型...
数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧...
数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧...
为了提高效率,开发人员可能会在它们之上包装BufferedReader和BufferedWriter,利用缓冲区批量处理数据。 接着,电话本管理的核心功能之一是搜索联系人。这可能涉及到对文件内容的遍历和解析,可能使用readLine()...
在多线程环境下,生产者和消费者都可能同时运行,因此需要一种机制来协调它们,使得当缓冲区满时生产者暂停生产,当缓冲区空时消费者停止消费,这就是PV操作的作用。 在Java中,`wait()`和`notify()`方法是`Object`...
源码中还包含了一些辅助类,如`InotifyBuffer`用于管理与内核交互的数据缓冲区,`InotifyFlags`枚举类型列出了所有可能的inotify事件标志,以及一些测试用例帮助验证库的功能。 总的来说,`inotify-java-2.1`源码...
- **`BufferedReader` 和 `BufferedWriter`**:分别用于读取和写入文件中的字符数据,它们通常用于提高性能,因为它们内部使用了缓冲区来减少对底层系统的访问次数。 - **`PipedInputStream` 和 `PipedOutputStream`...
- **缓冲流**:BufferedInputStream和BufferedOutputStream等提高读写效率。 - **转换流**:InputStreamReader和OutputStreamWriter用于字节流和字符流之间的转换。 - **对象序列化**:Serializable接口,将对象...
8. **I/O流体系**:Java的I/O流处理能力强,包括字符流和字节流,以及缓冲流、转换流和对象流等,方便进行输入输出操作。 9. **网络编程(Network Programming)**:Java提供了丰富的网络编程API,如Socket和...
- 按处理单位:字节流(8位),字符流(16位,基于Unicode)。 - 按流向与处理单位组合:字节输入流(如FileInputStream)、字节输出流(如FileOutputStream)、字符输入流(如BufferedReader)、字符输出流(如...
BufferedReader和BufferedWriter用于提高读写效率,通过缓冲区批量处理数据。 4. **转换流**:InputStreamReader和OutputStreamWriter是字节流与字符流之间的桥梁,可以实现两者之间的转换,方便在处理字节数据时...
为了提高效率,Java提供了带缓冲的流,如`BufferedInputStream`和`BufferedOutputStream`,它们在内部维护了一个缓冲区,减少了与底层设备的交互次数。 #### 1.6 标准输入输出流的重定向 Java允许程序员重定向标准...
对于输出流,OutputStream类是所有字节输出流的基类,包含write(int)、close()和flush()方法,分别用于写入字节、关闭流和清空缓冲区。例如,FileOutputStream是用于向文件写入字节的输出流,同样有多种构造方式以...