node工具模块

Node.js工具模块

node工具模块分为OS,Path, Net, DNS, Domain模块

OS

字节顺序

字节顺序,称为端序和尾序,是跨越多字节程序对象的储存规则

如果最低有效位在最高位的前面,则为小端序,反过来为大端序

端的起源

来自于格列佛游记,中的水煮蛋的大端和小端。

字节序有什么用

读取的时候要用,即处理器从内存中进行读取的时候,需要字节序,是大端序,还是小端序

其中大端序是人类读写数值需要的,大的在前,小的在后。

小端序是机器的读法,正好相反

为什么会有小端序

因为计算机读取的时候是从低电位进行读取,计算的时候也是从低位进行计算(人类也是这样)这样的效率一般会比较高。

字节顺序

对于单一字节,处理器以相同顺序处理预元(bit),因此单字节的传输和存放是一样的

对于多字节,在不同处理器的存放方式有两种。

大端序

最高为字节储存在最低的内存地址处。下一个字节储存在后面的地址处(即跟高的内存地址)

小端序

反过来即可

Path模块

Domain模块

简化代码的异常处理

该模块,将多个处理的模块分为一组,然后进行处理

隐式绑定:把在上下文中定义的变量,自动进行绑定

显式绑定:把不在上下文定义的变量,通过代码进行绑定

需要使用一个emitter.emit http://nodejs.cn/api/events.html#events_emitter_emit_eventname_args 按照监听器的注册顺序,同步调用

emitter.removeAllListeners 移出绑定的监听器 http://nodejs.cn/api/events.html#events_emitter_removealllisteners_eventname

domain.run 在其域的上下文内,运行提供的函数, 所有的都隐式绑定 http://nodejs.cn/api/domain.html#domain_domain_run_fn_args

domain.remove 移出监听器 http://nodejs.cn/api/domain.html#domain_domain_remove_emitter

var EventEmitter = require('events').EventEmitter;
var domain = require('domain');	// 域

var emitter1 = new EventEmitter();	// 创建一个监听器的类,这是一个和监听器有关的类

// 创建域
var domain1 = domain.create();

domain1.on('err', (err) => {	// 绑定一个错误域,如果这个时候执行err事件,则处理回调函数
	console.log('domain1 处理这个错误' + err.message);
});

// 显示绑定
domain1.add(emitter1);	// 将监控器的类和域进行绑定

emitter1.on('error', (err) => {	// 添加监听器的error事件的回调函数
	console.log('监听器处理错误' + err.message);
});

emitter1.emit('error', new Error('通过监听器来处理'));	// 触发error事件,首先运行error的回调函数,接着运行new Error事件

emitter1.removeAllListeners('error');	// 移出监听器类绑定的所有的事件

emitter1.emit('error', new Error('通过正常的 domainl来进行处理'))	// 由于上一步已经移出了监听器,所以通过正常的创建域中的错误的处理进行处理

var domain2 = domain.create();	// 创建一个新的 domain2 的域

domain2.on('error', (err) => {	// 将该域和事件进行绑定
	console.log('domain2 来进行处理' + err.message);
});

// 隐式绑定
domain2.run(() => {	// 创建一个域的运行空间
	var emitter2 = new EventEmitter();	// 在域的运行空间内创建一个新的监控器的类
	emitter2.emit('error', new Error('由domain2处理'));	// 由于监控器的类没有进行绑定,所以上下文寻找error错误的处理,找到第28行,对于error错误的处理,运行回调函数
});

domain1.remove(emitter1);	// 移出域绑定的错误
emitter1.emit('error', new Error('由于未进行绑定,程序遇到执行错误'));	// 
PS C:\Users\mingm\Desktop\test> node main.js
监听器处理错误通过监听器来处理
events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: 通过正常的 domainl来进行处理
    at Object.<anonymous> (C:\Users\mingm\Desktop\test\main.js:24:24)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:266:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
Emitted 'error' event at:
    at EventEmitter.emit (domain.js:455:12)
    at Object.<anonymous> (C:\Users\mingm\Desktop\test\main.js:24:10)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    [... lines matching original stack trace ...]
    at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
PS C:\Users\mingm\Desktop\test>

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java 成神之路

基于ReentrantLock发生死锁的解决方案

3256
来自专栏土豆专栏

JavaWeb入门之Servlet基础2

开始之前,让我先来介绍一下HTTP协议(hypetext transfer protocol 超文本传输协议),是TCP/IP协议集中的一个应用层协议,用于定于...

58113
来自专栏JavaEE

mybatis-plus的使用 ------ 进阶

关于mybatis-plus的简介以及基本使用,我在《mybatis-plus的使用 ------ 入门》一文中已做介绍,此处不再赘述。本文主要对mybatis...

6277
来自专栏Jimoer

JVM学习记录-类加载器

JVM设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外面去实现,以便让应用程序自己决定如何去获取所需要的...

681
来自专栏黑泽君的专栏

day58_BOS项目_10

之前的请假流程,是没有实际意义的,我们要使得我们流程变得有意义(有实际意义),需要在流程向下推进的过程中带着数据推进才有意义。如下图所示:

904
来自专栏desperate633

Java并发之“饥饿”和“公平锁”(Starvation and Fairness)java中发生线程饥饿的原因java中实现公平锁公平锁性能考虑

如果一个线程的cpu执行时间都被其他线程抢占了,导致得不到cpu执行,这种情况就叫做“饥饿”,这个线程就会出现饥饿致死的现象,因为永远无法得到cpu的执行。解决...

891
来自专栏大内老A

[WCF]缺少一行代码引发的血案

这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性。具体来...

1926
来自专栏Java面试通关手册

Java多线程学习(四)等待/通知(wait/notify)机制

我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailc...

2143
来自专栏码神联盟

面试题 | 《Java面试题集》-- 第三套

varchar2分别在oracle的sql和pl/sql中都有使用,oracle 在sql参考手册和pl/sql参考手册中指出:oracle sql varch...

1472
来自专栏cs

python爬虫的东西

1183

扫码关注云+社区

领取腾讯云代金券