在使用Note.js的过程中对于tty对于终端的运用、加密模块以及Assert的事件驱动程序的深入运用理解

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 在使用Note.js的过程中对于tty对于终端的运用、加密模块以及Assert的事件驱动程序的深入运用理解

tty对于终端的运用

tty模块提供tty ReadStream和tty WriteStream类。在大多数情况下,不需要或不可能直接使用此模块。但是,可以通过以下方式访问它:

const tty = require('tty');

在大多数情况下,应用程序几乎没有理由手动创建tty ReadStream和tty WriteStream类的实例。

process.stdout.on('resize', () => {
  console.log('screen size has changed!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

使用此选项可确定终端支持的颜色。由于终端颜色的性质,可能会出现假阳性或假阴性。这取决于过程信息和环境变量,这些变量可能与所使用的终端有关。可以传入env对象来模拟特定终端的使用。这对于检查特定环境设置的行为非常有用。
要强制实施特定的颜色支持,请使用以下环境设置之一。
stdout 是否支持至少 16 种颜色,返回 true 或 false。根据 stdout 是否支持至少 256 种颜色,返回 true 或 false。

process.stdout.hasColors();
process.stdout.hasColors(256);
process.stdout.hasColors({ TMUX: '1' });
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// 返回 false(环境设置假装支持 2 ** 8 种颜色)。

加密模块

加密模块要求节点运行以支持OpenSSL。此模块使用安全证书支持HTTPS安全网络和HTTP连接。该模块还为OpenSSL哈希、hmac、密码、解密、签名和验证方法(用于Node)提供了一层封装。
创建证书对象。参数详细信息是由键值对组成的字典。
Key:包含PEM编码的私钥的字符串
Cert:包含PEM编码证书的字符串
Ca:包含PEM编码的可信数字中心认证证书的字符串或字符串列表

const util = require('util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

可以在 NODE_DEBUG 环境变量中指定多个逗号分隔的 section 名称:NODE_DEBUG=fs,net,tls。

可选的 callback 参数可用于用一个不同的函数替换日志函数,该函数没有任何初始化或不必要的封装。

const util = require('util');
let debuglog = util.debuglog('internals', (debug) => {
  debuglog = debug;
});

如果启用该部分,则替换为优化测试的日志记录函数

Assert

此模块用于编写单元测试。您可以使用require('assert')访问此模块。
明确肯定失败(实际、预期、消息、运算符)
此函数使用参数运算符测试实际值和预期值是否相等。
明确肯定ok(值,[message])
测试参数值是否为true,此函数和断言Equal(true、value、message)是否等效。
明确肯定相等(实际值,预期值,[message])
此函数是一个简单的测试函数。使用运算符“==”比较实际值和预期值是否相等。
明确肯定notEqual(实际值,预期值,[message])
此函数是一个简单的测试函数,使用运算符“=”比较实际值和预期值是否相等。
明确肯定deepEqual(实际值,预期值,[message])
执行深度比较以实现相等。注:三种比较的差异(感谢tytsim):

a = {'a':'1','b':'2'};
b = {'b':'2','a':'1'};
equal(a, b) 返回false
deepEqual(a, b) 返回true
strictEqual(a, b) 返回false

事件驱动程序

该模型非常高效且可扩展,因为web服务器总是接受请求,而无需等待任何读或写操作。(也称为非阻塞IO或事件驱动IO)
在事件驱动模型中,将生成一个主循环来监听事件。当检测到事件时,将触发回调函数。
在这里插入图片描述
创建 eventEmitter 对象

var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('eventName', eventHandler);

实例:
引入 events 模块

var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

// 创建事件处理程序
var connectHandler = function connected() {
   console.log('连接成功。');
  
   // 触发 data_received 事件 
   eventEmitter.emit('data_received');
}

// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
 
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
   console.log('数据接收成功。');
});

// 触发 connection 事件 
eventEmitter.emit('connection');

console.log("程序执行完毕。");

返回有关V8堆空间的统计信息,即组成V8堆的碎片。无法保证堆空间的排序和堆空间的可用性,因为统计信息是通过V8 GetHeapSpaceStatistics函数提供的,并且可能会从一个V8版本更改到下一个版本。
返回的值是包含以下属性的对象数组

[
  {
    "space_name": "new_space",
    "space_size": 2063872,
    "space_used_size": 951112,
    "space_available_size": 80824,
    "physical_space_size": 2063872
  },
  {
    "space_name": "old_space",
    "space_size": 3090560,
    "space_used_size": 2493792,
    "space_available_size": 0,
    "physical_space_size": 3090560
  },
  {
    "space_name": "code_space",
    "space_size": 1260160,
    "space_used_size": 644256,
    "space_available_size": 960,
    "physical_space_size": 1260160
  },
  {
    "space_name": "map_space",
    "space_size": 1094160,
    "space_used_size": 201608,
    "space_available_size": 0,
    "physical_space_size": 1094160
  },
  {
    "space_name": "large_object_space",
    "space_size": 0,
    "space_used_size": 0,
    "space_available_size": 1490980608,
    "physical_space_size": 0
  }
]
相关文章
|
2月前
|
JavaScript Java Serverless
函数计算产品使用问题之如何使用Node.js编写程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
41 1
|
14天前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
57 11
|
17天前
|
前端开发 数据安全/隐私保护
JS-RSA超长加密
JS-RSA超长加密
34 4
|
2月前
|
JavaScript 数据可视化
JS如何优雅的实现模块自动滚动展示
【8月更文挑战第22天】JS如何优雅的实现模块自动滚动展示
21 1
JS如何优雅的实现模块自动滚动展示
|
22天前
|
存储 NoSQL Java
|
27天前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了在Nest.js构建应用时,如何通过事件/发布-订阅模式使应用程序更健壮、灵活、易于扩展,并简化服务间通信。文章主要围绕@nestjs/event-emitter模块展开,这是一个基于eventemitter2库的社区模块,提供了事件发布/订阅功能,使得实现事件驱动架构变得简单。文章还介绍了如何使用该模块,包括安装依赖、初始化模块、注册EventEmitterModule、使用装饰器简化监听等。最后总结,集成@nestjs/event-emitter模块可以提升应用程序的事件驱动能力,构建出更为松耦合、易扩展且高度灵活的系统架构,是构建现代、响应迅速且具有高度解耦特性的Nest.
|
1月前
|
缓存 JavaScript 前端开发
JavaScript模块化开发:ES6模块与CommonJs的对比与应用
JavaScript模块化开发:ES6模块与CommonJs的对比与应用
21 2
|
2月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
131 1
|
2月前
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
32 0
下一篇
无影云桌面