在使用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
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
|
8天前
|
JavaScript 前端开发
利用事件循环提高 JavaScript 程序的性能
本文介绍了事件循环在JavaScript中的工作原理,以及如何通过合理利用事件循环来优化程序性能,包括异步操作、任务优先级和避免阻塞等技巧。
|
1月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
32 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
25天前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
39 2
|
5天前
|
前端开发 JavaScript 安全
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第7天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤。包括项目准备、安装 `javascript-obfuscator`、配置 Vite 构建以应用混淆,以及最终构建项目进行混淆。通过这些步骤,可以有效提升前端代码的安全性,防止被他人轻易分析和盗用。
|
1月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
1月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
34 2
|
2月前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
86 11
|
1月前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
29 0
|
1月前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
19 0