初识NodeJS

一、NodeJS是什么

  • node.js is a JavaScript runtime built on Chrome’s V8
    node.js是一个运行在Chrome’s V8引擎上的一个JavaScript运行时。
  • node.js uses an event-driven,non-blockin I/O model
    node.js使用事件驱动和非阻塞I/O模型

1.非阻塞I/O模型

  • 阻塞:I/O时进程休眠等待I/O完成后进行下一步(I/O阻塞了进程)
  • 非阻塞:I/O时函数立即返回,进程不等待I/O完成
  • 那么I/O完成之后怎么通知主程序我完成了呢?即事件驱动

2.事件驱动

  • I/O等异步操作结束后的通知
  • 观察者模式

二、NodeJS究竟好在哪里

1.前端职责范围变大,统一开发体验

2.在高并发、I/O密集场景性能优势明显

(1)CPU密集:压缩、解压、加密、解密
(2)I/O密集:文件操作、网络操作、数据库
web常见场景:(典型的I/O密集!)
(1)静态资源读取
(2)数据库操作
(3)渲染页面
高并发对应之道:
(1)增加机器数
(2)增加每台机器的CPU数–多核
进程:是计算机中程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位
多进程:启动多个进程,多个进程可以一块执行多个任务
线程:进程内一个相对独立的、可调度的执行单元,与同属一个进程的线程共享进程的资源
多线程:启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块儿执行多个任务
一个CPU只开一个进程,一个进程只开一个线程,这是nodeJS 的原理
nodeJS 单线程
单线程只是针对主进程,i/o操作系统底层多线程调度
单线程并不是单进程(一个CPU几个核就启动几个进程)
nodeJS 性能好是有前提的:
(1)web场景性能才好:因为高并发,i/o密集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值