Node.js API 初解读(二)
四、 Cluster
1、简介
在介绍 Cluster 之前。我们需要知道 node的 一些基本特性,比如说
都知道的 nodejs最大的特点就是单进程、无阻塞运行,并且是异步事件驱动的。
那么随之而来的最大的缺点也展现出来了,如在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟。
如何来解决这个缺点呐?
那么 Cluster 就是来处理这个问题的
2、函数
const cluster = require('cluster');
3、例子
const cluster = require('cluster');
const http = require('http');
const numCpus = require('os').cpus().length;
if (cluster.isMaster) {
for (var i = 0; i < numCpus; i++) {
cluster.fork();
}
cluster.on('listening', (worker, address) => {
// for (item in address) {
// console.log(item); // 查看address 对象的 属性
// }
console.log('A worker with #' + worker.id + ' is now connected to ' + address.addressType + ':' + address.port + address.fd);
});
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello');
}).listen(8000);
}
4、运行例子
D:\0\nodejs>node cluster.js
A worker with #1 is now connected to 4:8000undefined
A worker with #2 is now connected to 4:8000undefined
A worker with #3 is now connected to 4:8000undefined
A worker with #4 is now connected to 4:8000undefined
五、 Command
1、简介
Node.js自带了各种各样的命令行参数。这些参数显示了内置的调试接口、执行脚本的多种方式和其它有帮助的运行时选项
2、函数
我们列举几个我们常见的 参数
-v, –version ( 打印node的版本信息。)
-h, –help ( 打印node命令行参数。该选项的输出不会比本文档更详尽 )
-e, –eval “script”
-p, –print “script”
-c, –check
-i, –interactive
3、例子
node -v
4、运行例子
node -v
-------------------------------
C:\Users\Administrator>node -v
v6.3.0
-------------------------------
六、 Console (控制台对象)
1、简介
控制台对象console是Node.js中的Global全局对象之一,用于打印标准输出stdout和标准错误stderr。全局对象在所有模块中都可以使用,console对象也不例外,无需require引用,即可直接使用。
2、函数
- 打印标准输出 console.log([data][, ...])、console.info([data][, ...])
- 打印标准错误 console.error([data][, ...])、console.warn([data][, ...])
- 打印object到stdout中 将对象格式化后打印到stdout中
- 计时器功能, console.time(label)、console.timeEnd(label)
- 打印栈跟踪到stderr: console.trace(message[, ...])
- 断言表达式:console.assert(value[, message][, ...])
3、例子
const a = 123;
console.log(a); // 123
console.log('a: %d', a); // a: 123
console.info(a); // 同 console.log
console.warn();
console.error(); // Same as console.log but prints to stderr.
// console.dir(global); // 打印 node 全局对象
console.time('allTime');
for (var i = 0; i < 10; i++) {
console.log(i);
};
console.timeEnd('allTime');
console.trace('error');
console.assert(1<0, '%d不小于%d', 1, 0);
console.assert(1>0, '%d不小于%d', 1, 0);
4、运行例子
node console.js
-------------------------------
123
a: 123
123
0
1
2
3
4
5
6
7
8
9
allTime: 1.530ms
Trace: error
at Object.<anonymous> (E:\2\NodeJS\Api\console.js:19:9)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.runMain (module.js:575:10)
at run (bootstrap_node.js:352:7)
at startup (bootstrap_node.js:144:9)
at bootstrap_node.js:467:3
-------------------------------
七、Crypto (加密模块)
1、简介
Node.js 利用 OpenSSL库来实现它的加密技术,这是因为OpenSSL已经是一个广泛被采用的加密算法。它包括了类似MD5 or SHA-1 算法,这些算法你可以利用在你的应用中。
2、函数
- hash算法 crypto.createHash()
- HMAC(keyed-Hash Message Authentication Code)加密 crypto.createHmac(algorithm, key)
3、例子
const crypto = require('crypto');
const md5 = crypto.createHash('md5');
md5.update('foo');
const res = md5.digest('hex');
console.log(res); // acbd18db4cc2f85cedef654fccc4a4d8
1. crypto.createHash('md5').update() ;
2. crypto.createHash('md5').digest('hex') ;
这里我们生成了一个md5的hash实例,然后直接运行 md5.digest(); 出现了乱码,因为它默认返回的是2进制的数据,然后我们接着 md5.digest(‘hex’); 期望以16进制的形式打印md5值,但是抛出异常了。
也就是说一旦md5.digest();这个方法被调用了,hash 对象就被清空了是不能被重用的。当然我们可以利用base64格式打印出md5字符串。
对于hash.update()方法是有记忆功能的。
4、运行例子
node -v
-------------------------------
E:\2\NodeJS\Api>node crypto.js
acbd18db4cc2f85cedef654fccc4a4d8
-------------------------------
八、 Debugger
Node.js API 初解读(二)的更多相关文章
- Node.js API 初解读(一)
Node.JS API 初解读 Version: NodeJs v6.2.0 一. Assert 1.简介 Assert模块主要用于断言.如果表达式不符合预期,就抛出一个错误. 该模块用于编写程序的单 ...
- Node.js API 初解读(三)
目录 Node.JS API 初解读三 Node.JS API 初解读三 Version: NodeJs v6.2.0 一. DNS (Domain Name Server) [域名服务器] 1.简介 ...
- node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)
node.js(API解读) - process 2011-10-28 17:05:34| 分类: node | 标签:nodejs nodejsprocess node.jsprocess ...
- Node.js API快速入门
Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...
- Node.js API
Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 ...
- Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器
Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...
- node.js api文档生成
ApiDoc官网地址为:http://apidocjs.com/在Java中有Swagger及其升级版的Swagger2+Springfox自动生成接口管理文档.而在Node.js中则可以利用ApiD ...
- node.js学习笔记(二)——回调函数
Node.js 异步编程的直接体现就是回调. 那什么是回调呢?回调指的是将一个函数作为参数传递给另一个函数,并且通常在第一个函数完成后被调用.需要指明的是,回调函数不是由该函数的实现方直接调用,而是在 ...
- node.js + express 初体验【hello world】
[node.js] 一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...
随机推荐
- shell 脚本之判断语句 if 详解
使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...
- 严重: Exception loading sessions from persistent storage Java.io.EOFException
tomcat启动时报此异常,但web页均能正常运行:对程序影响不大. /*具体原因时tomcat--work--(你当前运行的工程名)--session.ser*/删除即可解决 分析: EOFExce ...
- android Broadcast广播消息代码实现
我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...
- gridview安卓实现单行多列横向滚动
<GridLayout android:layout_width="match_parent" android:layout_height="match_paren ...
- 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...
- 【原】移动web资源整理
2013年初接触移动端,简单做下总结,首先了解下移动web带来的问题 设备更新换代快——低端机遗留下问题.高端机带来新挑战 浏览器厂商不统一——兼容问题多 网络更复杂——弱网络,页面打开慢 低端机性能 ...
- BZOJ 3237: [Ahoi2013]连通图
3237: [Ahoi2013]连通图 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1161 Solved: 399[Submit][Status ...
- FineUI(专业版)公测版发布(这速度,真TM快!)
经过近一年的筹备.编码和测试,FineUI(专业版)公测版终于和大家见面了!现在就来体验一下专业版飞一般的速度吧:http://fineui.com/demo_pro/FineUI(专业版)首页:ht ...
- 【已更新】【原创】Chrome53 最新版惊现无厘头卡死 BUG!
发现问题 今天有客户向我们反馈了一个BUG:一个页面在IE.FireFox.Chrome52中能正常运行,但是在最新版的Chrome53中显示不了??? 习惯性的,我们需要客户提供页面在浏览器中的HT ...
- C#网络编程——IPHostEntry
using System; using System.Net; namespace study { class IPHostEntrySample { public static void func( ...