NodeJS是什么

Node.js is a Javascript runtime built on Chrome’s V8.

它是一个构建在 Chrome’s V8引擎上的运行时,Node.js并不是一门语言,Javascript才是语言,而Node.js是Javascript的一个run time,类似java语言的jre,是一个运行时,语言在不同的宿主上跑就需要不同的run time,node.js就是一个让JavaScript在服务器端跑起来的run time。但是这么描述也不精确,因为在node.js中不能使用JavaScript的全集比如BOM,DOM,这两个是浏览器上的特性,在服务器端是没有的。
node.js中包含了进行web开发中常用的buffer,srime,http

Node.js uses an event-driven,non-blocking I/O model.

  • 非阻塞I/O
    阻塞:I/O时进行休眠等待I/O完成后进行下一步
    非阻塞:I/O时函数立即返回,进程不等待I/O完成

  • 事件驱动
    I/O等异步操作结束后的通知
    内部的实现方式是观察者模式。
    node.js并不是适用于所有的server端场景的,web是node.js最适用的场景。
    Node.js的优势

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

  • 在处理高并发,I/O密集场景性能优势明显

CPU密集 vs I/O密集

  • CPU密集:压缩,解压,加密,解密。如果一个程序大部分时间是用来做计算,逻辑判断等CPU动作我们就称之为CPU密集。
  • I/O密集:文件操作,网络操作,数据库。如果一个程序大部分时间是用来存储设备,网络设施的读取操作我们就称之为I/O密集。
    现在计算机运行的指令速度是非常快的,但是 I/O的提速却没那么明显。

web常见场景

  • 静态资源读取
  • 数据库操作
  • 渲染页面
  • 高并发:单位时间内访问量特别大

高并发应对方法

  • 增加机器数
  • 增加每台机器的CPU数—多核

NodeJS的单线程

  • 单线程只是针对主进程,I/O操作系统底层多线程调度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值