node你需要了解的一些东西

本文介绍了Node.js的模块加载机制,包括require()的使用及原生模块与文件模块的区别;深入讲解了Node的事件循环,包括其单线程异步非阻塞模式、事件循环的七个阶段以及libuv的角色;探讨了V8引擎的垃圾回收机制,如Scavenge、Mark Sweep和Mark Compact算法,以及如何通过增量标记减少停顿时间。此外,还提到了内存管理和排查内存泄露的方法。
摘要由CSDN通过智能技术生成

后续会发一篇整理的文章;

1:简述require()模块加载机制
答:在node中文件即模块,分为原生模块和3种文件模块。

具体加载顺序如下图
图片: Alt

2:node导出模块有哪2种方式,说说它们的区别?
图片: Alt

答:真正的接口是module.exports, 初始值为{}。exports是对module.exports的引用,指向module.exports。在require()的时候,返回的是module.exports而不是exports。

3:请简述下Node事件循环机制
答:Node采用的是单线程异步非阻塞I/O模式。

主线程执行同步任务,异步I/O交给libuv处理。

libuv将建立的所有I/O操作内容绑定到单个线程上。只要每个事件循环在不同的线程中,就可以运行多个事件循环。

libuv将不同的任务交给不同的线程来处理。处理完成后会将对应事件的状态转为pending。

然后在下一次事件循环的时候按顺序取来执行。每一次事件循环都只会执行一个回调,从而避免了竞争的发生。

libuv解释:libuv是一个多平台支持库,主要关注异步I/O。它主要为node.js的使用而开发,同时也被Luvit、Julia、pyuv等使用。libuv为Node.js提供了跨平台、线程池、事件池、异步I/O等能力,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绅士的可怖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值