四、 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. Echarts在JavaWeb中与后台的交互实现

    本Web系统后台框架是:Spring+SpringMVC+Mybatis+Shiro+Maven.完整系统搭建的配置过程见上一篇文章:基于Spring+SpringMVC+Mybatis的Web系统搭 ...

  2. log4j:ERROR Failed to rename [/log/xxx.log] to [/log/xxx.log.2016-11-23.log]

    Log4j报错: log4j:ERROR Failed to rename [/log/xxx.log] to [/log/xxx.log.2016-11-23.log] google了一下发现是个b ...

  3. Spark作业调度阶段分析

    Spark作为分布式的大数据处理框架必然或涉及到大量的作业调度,如果能够理解Spark中的调度对我们编写或优化Spark程序都是有很大帮助的: 在Spark中存在转换操作(Transformation ...

  4. sql 优化

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...

  5. Juniper SSG5 PPTP VPN 619错误解决

    公司分部的客户端需要使用PPTP VPN连接总部,将网关更换为Juniper SSG5后,客户端出现了每几个小时自动断开的现象,错误619. 解决:Security —— ALG —— 开启PPTP协 ...

  6. 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  7. 平常看到的Alt+xx 快捷键用法

    1. 先按Alt, 哪一个菜单对应的字符是有划线的. 2. 输入对应的字符打开相应的菜单, 3 再输入相应的字符打开子菜单

  8. Linux 进程与线程六

    //线程间的通信 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <e ...

  9. 负margin的移位参考线

    同早年~ 问题描述 在xx项目中,羊城通卡号的输入框处使用了xx库中的实现方式,即将提示文字标签<label>通过负margin移位到<input>框的下面.静态时展现良好,j ...

  10. 《中国文明史》系列—外柔 VS 内厉

    读启良的<中国文明史>,里面有谈到外柔而内厉——中国政府自古以来奉行的准则.大致意思是说,我华夏民族对待周边民族,历来是很友好的,即所谓的“柔”,而对待自己人,向来是“刚”或曰“厉”的. ...