- 浏览: 96574 次
- 性别:
- 来自: 临沂
文章分类
- 全部博客 (125)
- spring (2)
- java (6)
- jquery (0)
- android (0)
- window (1)
- 数据库 (0)
- 项目管理 (1)
- maven (0)
- english (0)
- ext (0)
- javascript and html (2)
- hibernate (1)
- p6spy (0)
- shiro (0)
- fusionchart (0)
- FileUtils (0)
- struts2 (0)
- ireport (0)
- webservice (0)
- stripes (0)
- jsp (1)
- it综合 (1)
- linux (1)
- 工作流 (0)
- activiti (0)
- poi (0)
- nosql (0)
- mongodb (0)
- lucene (0)
- nodejs (10)
- eclipse (2)
- objective-c (1)
最新评论
本文是对nodejs0.8.9版本的api开发手册解读.nodejs网址
缓存类(Buffer)
stability:3 - Stable
纯javascript对Unicode支持不叫不错,但是对二进制数据的支持就不怎么样了,当需要处理TCP流或者文件系统时,是必须要处理八进制流(octet streams).Node有几种策略来操作,创建,销毁八进制值流.
原始数据被储存在buffer类的实例中,一个buffer很想一个integer的数组,但是符合一个在v8堆栈外的原始内存分配.一个buffer是不能被改变大小的.
buffer类是全局的,尽量不要一有需要就使用require('buffer')加载.
在buffers和javascript string对象之间转换需要显示的调用一个编码函数.下面是string类型不懂的编码格式:
-
'ascii'
- for 7 bit ASCII data only. This encoding method is very fast, and will strip the high bit if set. Note that this encoding converts a null character ('\0'
or'\u0000'
) into0x20
(character code of a space). If you want to convert a null character into0x00
, you should use'utf8'
. -
'utf8'
- Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.多字节编码的Unicode字符.很多web页面和其他文档都使用UTF-8格式. -
'utf16le'
- 2 or 4 bytes, little endian encoded Unicode characters. Surrogate pairs (U+10000 to U+10FFFF) are supported.2个或者4个字节,小字节编码的Unicode字符.代理对的支持范围是10000~10FFFF. -
'ucs2'
- Alias of'utf16le'
.utf16le的别名 -
'base64'
- Base64 string encoding.基于64的字符串编码. -
'binary'
- A way of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated and should be avoided in favor ofBuffer
objects where possible. This encoding will be removed in future versions of Node.一种仅使用每个字符的前8个字节把原始二进制数据编码成strings.这个方法已经过时,应该避免在使用buffer对象时使用,这种编码将会来未来的node版本中被移除. -
'hex'
- Encode each byte as two hexadecimal characters.将每一个字节编码称两个16进制字符.
- size number,一个表示大小的数字.
- array Array,一个数组.
- str String,需要编码的字符串.
- encoding String,需要使用的编码格式,可选.
- str String,被写入buffer的数据.
- offet number,可选,默认0.数据写入到buffer的位置.
- length Number,可选,默认:buffer.length - offset,要写入数据的长度
- encoding String,需要使用的编码格式,可选,默认为"utf8".
buf = new Buffer(256);
len = buf.write('\u00bd + \u00bc = \u00be', 0);
console.log(len + " bytes: " + buf.toString('utf8', 0, len));
写入的字符个数(可能和写入的字节数不一样)被保存在Buffer._charWritten变量中,并且将会在下次调用buf.writer()时被覆盖.
- encoding String,optional,default:'uft8' .字符串,可选,默认:'utf8'
- start Number ,optional,default:0.数字,可选,默认:0.
- end Number,optional,default:buffer.length.数字,可选,默认:buffer.length
str = "node.js";
buf = new Buffer(str.length);
for (var i = 0; i < str.length ; i++) {
buf[i] = str.charCodeAt(i);
}
console.log(buf);
// node.js
obj
Object 一个对象- Return: Boolean 返回布尔值
string
String 一个字符串encoding
String, Optional, Default: 'utf8' 编码,可选,默认'utf8'- Return: Number 返回一个数字
str = '\u00bd + \u00bc = \u00be';
console.log(str + ": " + str.length + " characters, " +
Buffer.byteLength(str, 'utf8') + " bytes");
// ½ + ¼ = ¾: 9 characters, 12 bytes
list
ArrayList of Buffer objects to concat 一个数组,需要连接的buffer对象的一个数组.totalLength
NumberTotal length of the buffers when concatenated 这个连接后的beffer对象的总长度.
- Number数字
buf = new Buffer(1234);
console.log(buf.length);
buf.write("some string", 0, "ascii");
console.log(buf.length);
// 1234
// 1234
targetBuffer
Buffer object - Buffer to copy into 复制的目标buffer对象targetStart
Number, Optional, Default: 0 在目标buffer的哪个位置开始写入sourceStart
Number, Optional, Default: 0在原buffer的哪个位置开始读取sourceEnd
Number, Optional, Default:buffer.length原buffer读取到哪里结束.
buf1 = new Buffer(26);
buf2 = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf1[i] = i + 97; // 97 is ASCII a
buf2[i] = 33; // ASCII !
}
buf1.copy(buf2, 8, 16, 20);
console.log(buf2.toString('ascii', 0, 25));
// !!!!!!!!qrst!!!!!!!!!!!!!
start
Number, Optional, Default: 0 开始位置,默认0end
Number, Optional, Default:buffer.length 结束位置,默认buffer大小.
var buf1 = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf1[i] = i + 97; // 97 is ASCII a
}
var buf2 = buf1.slice(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// abc
// !bc
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
for (ii = 0; ii < buf.length; ii++) {
console.log(buf.readUInt8(ii));
}
// 0x3
// 0x4
// 0x23
// 0x42
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
console.log(buf.readUInt16BE(0));
console.log(buf.readUInt16LE(0));
console.log(buf.readUInt16BE(1));
console.log(buf.readUInt16LE(1));
console.log(buf.readUInt16BE(2));
console.log(buf.readUInt16LE(2));
// 0x0304
// 0x0403
// 0x0423
// 0x2304
// 0x2342
// 0x4223
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
var buf = new Buffer(4);
buf[0] = 0x3;
buf[1] = 0x4;
buf[2] = 0x23;
buf[3] = 0x42;
console.log(buf.readUInt32BE(0));
console.log(buf.readUInt32LE(0));
// 0x03042342
// 0x42230403
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
var buf = new Buffer(4);
buf[0] = 0x00;
buf[1] = 0x00;
buf[2] = 0x80;
buf[3] = 0x3f;
console.log(buf.readFloatLE(0));
// 0x01
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.- Return: Number 返回数字
var buf = new Buffer(8);
buf[0] = 0x55;
buf[1] = 0x55;
buf[2] = 0x55;
buf[3] = 0x55;
buf[4] = 0x55;
buf[5] = 0x55;
buf[6] = 0xd5;
buf[7] = 0x3f;
console.log(buf.readDoubleLE(0));
// 0.3333333333333333
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
var buf = new Buffer(4);
buf.writeUInt8(0x3, 0);
buf.writeUInt8(0x4, 1);
buf.writeUInt8(0x23, 2);
buf.writeUInt8(0x42, 3);
console.log(buf);
// <Buffer 03 04 23 42>
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
var buf = new Buffer(4);
buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);
console.log(buf);
buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);
console.log(buf);
// <Buffer de ad be ef>
// <Buffer ad de ef be>
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
var buf = new Buffer(4);
buf.writeUInt32BE(0xfeedface, 0);
console.log(buf);
buf.writeUInt32LE(0xfeedface, 0);
console.log(buf);
// <Buffer fe ed fa ce>
// <Buffer ce fa ed fe>
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
var buf = new Buffer(4);
buf.writeFloatBE(0xcafebabe, 0);
console.log(buf);
buf.writeFloatLE(0xcafebabe, 0);
console.log(buf);
// <Buffer 4f 4a fe bb>
// <Buffer bb fe 4a 4f>
value Number 数字
offset
Number 偏移量noAssert
Boolean, Optional, Default: false 是否忽略offset验证,offset可能超出范围.
var buf = new Buffer(8);
buf.writeDoubleBE(0xdeadbeefcafebabe, 0);
console.log(buf);
buf.writeDoubleLE(0xdeadbeefcafebabe, 0);
console.log(buf);
// <Buffer 43 eb d5 b7 dd f9 5f d7>
// <Buffer d7 5f f9 dd b7 d5 eb 43>
buf.fill(value,[offset],[end])
value 要填充的值
offset
Number, Optional 偏移量,可选 默认0end
Number, Optional 结束位置 可选.默认buffer大小
var b = new Buffer(50);
b.fill("h");
- Number, Default: 50,数字,默认50.
发表评论
-
一起读nodejs(八)----域(domain)
2012-09-19 09:13 857本文是对nodejs0.8.9版本的api开发手册解读.n ... -
一起读nodejs(一)----概览和全局对象(Synopsis &Global Objects)
2012-09-03 09:02 741本文是对nodejs0.8.9版本的api开发手册解读.nod ... -
一起读nodejs(二)----控制台和定时器(console &Timer)
2012-09-06 09:30 914本文是对nodejs0.8.9版本的api开发手册解读.nod ... -
一起读nodejs(三)----模块(Modules)
2012-09-07 08:37 1148本文是对nodejs0.8.9版本的api开发手册解读.n ... -
一起读nodejs(四)----插件(addons)
2012-09-10 08:58 2161本文是对nodejs0.8.9版本的api开发手册解读 ... -
一起读nodejs(五)----进程(process)
2012-09-12 08:51 1686本文是对nodejs0.8.9 ... -
nodejs version 0.8.9稳定版更新日志
2012-09-12 09:46 11982012.09.11,0.8.9版本(稳定版) ... -
一起读nodejs(六)----工具类(Utilties)
2012-09-14 08:51 2644本文是对nodejs0.8.9版 ... -
一起读nodejs(七)----事件(Events)
2012-09-17 08:46 1112本文是对nodejs0.8.9版本的api开发手册解读.n ...
相关推荐
- **buffer.write(string, offset=0, length=buffer.length-offset, encoding='utf8')**: 向Buffer写入数据。 通过以上对Node.js API文档部分内容的详细解析,我们可以看到Node.js提供了非常强大的功能集合,不仅...
Node.js继承Javascript的语言特性,同时又扩展了Javascript语言,为二进制的数据处理提供了Buffer类,让Node.js可以像其他程序语言一样,能处理各种类型的数据了。 网上有很多讲Buffer的文章,大都讲的是原理,怎么...
- 模块导入时存在缓存机制,重复导入将不会重新加载。 - 导入时 `.js`、`.json` 和 `.node` 文件扩展名可以省略,且按 `.js` -> `.json` -> `.node` 的顺序尝试加载。 - **模块路径**: - 不需要加上 `.js` 后缀。...
### Node.js 基于 LRU 算法实现的缓存处理操作示例 #### 一、引言 在现代软件系统特别是Web应用中,缓存技术的应用极为广泛。它能够显著提升系统的响应速度与整体性能。在Node.js开发环境中,LRU (Least Recently ...
在“nodejs数据.rar”这个压缩包中,我们可以推测它包含与Node.js相关的数据或项目。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript能够在服务器端执行,开启了后端开发的新篇章。Node.js以其...
因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 ...
- `Buffer`: 处理二进制数据的核心类。 - `global`: 全局命名空间对象,包含了所有全局函数、对象及变量。 - **process进程** - **定义**: `process`是一个全局对象,提供了关于当前Node.js进程的信息和控制方法...
Javascript对处理文本友好,但不擅长处理二进制数据,因此Node.js提供了Buffer类来操作TCP数据流或文件中的二进制数据。Buffer类的实例相当于V8内存堆之外的内存数据。Node.js支持多种编码方式,包括'ascii'、'utf8'...
NodeJS 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的流行。由 Sten Hougaard 创建的这个内容集合,旨在为开发者提供一系列常用和...
this.data[key] = new Buffer(JSON.stringify(value)); if (this.linkedList.length > this.capacity) this.remove(this.linkedList.end.key.slice(1)); return this; }; CacheLRU.prototype.remove = function...
- **`Buffer`**:用于处理二进制数据的类。 - **`require()`**:用于加载模块。 - **`require.resolve()`**:返回模块的路径,而不执行模块。 - **`require.cache`**:一个包含所有已加载模块的对象缓存。 - **`...
- 优化内存使用可以通过增加Buffer(堆外内存),调整V8的最大旧空间大小,以及调整堆栈大小等。 6. **分布式设计**: - 单机部署时,可以通过负载均衡和缓存策略提升性能。 - 集群部署可提高可用性和处理能力,...
10. **Buffers缓冲器**:Node.js的Buffer类用于表示一个固定大小的字节缓冲区。Buffer实例类似于整数数组,但它对应于V8堆内存之外的原始内存分配。 11. **附录**:手册附录部分提供了包管理技巧和扩展插件相关的...
3. **Buffer对象**:Node.js中的Buffer对象用于处理二进制数据,这对于处理文件系统操作、网络流等场景非常有用。理解Buffer的工作原理以及如何正确地使用它是开发Node.js应用的基础。 #### 三、Node.js在淘宝产品...