四、 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、函数

  1. 打印标准输出 console.log([data][, ...])、console.info([data][, ...])
  2. 打印标准错误 console.error([data][, ...])、console.warn([data][, ...])
  3. 打印object到stdout中 将对象格式化后打印到stdout中
  4. 计时器功能, console.time(label)、console.timeEnd(label)
  5. 打印栈跟踪到stderr: console.trace(message[, ...])
  6. 断言表达式: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、函数

  1. hash算法 crypto.createHash()
  2. 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 初解读(二)的更多相关文章

  1. Node.js API 初解读(一)

    Node.JS API 初解读 Version: NodeJs v6.2.0 一. Assert 1.简介 Assert模块主要用于断言.如果表达式不符合预期,就抛出一个错误. 该模块用于编写程序的单 ...

  2. Node.js API 初解读(三)

    目录 Node.JS API 初解读三 Node.JS API 初解读三 Version: NodeJs v6.2.0 一. DNS (Domain Name Server) [域名服务器] 1.简介 ...

  3. 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  ...

  4. Node.js API快速入门

    Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...

  5. Node.js API

    Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 ...

  6. Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器

    Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...

  7. node.js api文档生成

    ApiDoc官网地址为:http://apidocjs.com/在Java中有Swagger及其升级版的Swagger2+Springfox自动生成接口管理文档.而在Node.js中则可以利用ApiD ...

  8. node.js学习笔记(二)——回调函数

    Node.js 异步编程的直接体现就是回调. 那什么是回调呢?回调指的是将一个函数作为参数传递给另一个函数,并且通常在第一个函数完成后被调用.需要指明的是,回调函数不是由该函数的实现方直接调用,而是在 ...

  9. node.js + express 初体验【hello world】

    [node.js]  一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...

随机推荐

  1. Linux下MySQL慢查询分析mysqlsla安装使用

    说明: 操作系统:CentOS 5.X 64位 MySQL版本:mysql-5.5.35 MySQL配置文件:/etc/my.cnf MySQL 数据库存放目录:/data/mysql 实现目的:开启 ...

  2. 阿里云yum源安装

      1.先清理掉yum.repos.d下面的所有repo文件 [root@localhost yum.repos.d]# rm -rf * 2.下载repo文件  wget http://mirror ...

  3. 今天搞了一天的CentOS,唉,实在感觉自己渺小啊

    从别人处转载一篇文章:http://my.oschina.net/idiotsky/blog/303545 这个文章讲的很好,因为告诉了我怎么去查看ftp有关的SElinux的bool变量值以及设定. ...

  4. JBPM工作流

    一.开发环境的搭建 1.下载Jbpm4.4 1.1下载地址: https://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/ 1.2解压后 ...

  5. Nginx支持比Apache高并发的原因

    1.先从各自使用的多路复用IO模型说起:  select模型:(apache使用,由于受模块等限制,用的不多)   单个进程能够 监视的文件描述符的数量存在最大限制 select()所维护的 存储大量 ...

  6. [LeetCode] Palindrome Permutation II 回文全排列之二

    Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empt ...

  7. 谈一下如何设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,所有数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  8. 基于C/S架构的3D对战网络游戏C++框架 _【不定期更新通知】

    由于笔者最近有比赛项目要赶,这个基于C/S架构的3D对战网络游戏C++框架也遇到了一点瓶颈需要点时间沉淀,所以近一段时间不能保证每天更新了,会保持不定期更新.同时近期笔者也会多分享一些已经做过学过的C ...

  9. .net(C#)中this关键字

    使用this关键字引用成员变量使用this关键字在自身构造方法内部引用其它构造方法使用this关键字代表自身类的对象使用this关键字引用成员方法 在一个类的方法或构造方法内部,可以使用"t ...

  10. C++ 数组array与vector的比较

    转:http://blog.csdn.net/yukin_xue/article/details/7391897 1. array 定义的时候必须定义数组的元素个数;而vector 不需要: 且只能包 ...