NodeJs初识

Node是什么?

基于 Chrome V8 引擎的 JavaScirpt 运行环境
Node 底层采用 c++ 编写,性能完全OK
node基于js的核心,还实现了 系统级的API(文件操作…),网络编程(实现web服务)

Node解决了什么问题?

web服务器的瓶颈:在于用户的并发量
java、php的劣势(多线程、同步):每个用户连接服务器时,都会产生一个线程,假如一个线程占用2MB内存,服务器8G内存,大约可以同时访问4000个用户,超过后服务器卡死。多线程靠线程池管理线程。优点:可以同时处理请求。适合大量计算,cpu密集型的。
node (单线程、异步):node只有一个主线程,
同时访问不会创建新的线程,而是发射一个事件,等逻辑处理完通知事件就行。

Node核心特点

事件驱动 node的api是基于事件的 、异步的
Node采用的是单线程,进程(主线程) node可以开启多个进程
不适合cup密集型 适合i/o密集型

同步和异步

同步异步是啥?打个比方:

定义:同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。

  • 同步,就是调用某个东西时,调用方得等待这个调用返回结果才能继续往后执行。
  • 异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用
    比方说: 你去商城买东西,你看上了一款手机,和店家说你要一个这款手机,他就去仓库拿货,你得在店里等着,不能离开,这叫做同步。现在你买手机赶时髦直接去京东下单,下单完成后你就可用做其他时间(追剧、打王者、lol)等货到了去签收就ok了.这就叫异步

更具体点拿我们方法调用来举例子:

同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作

图解:

同步执行
在这里插入图片描述
同步执行当调用方法执行完成后并返回结果,才能执行后续代码
异步执行
在这里插入图片描述
异步调用的话可用参考ajax,调用方法后不会等到sum方法执行完成,而是直接执行后续代码。sum方法执行完成后主要通过状态通知主线程,或者通过回调处理这次异步方法执行的结果

阻塞与非阻塞

看了上面的讲解,你可能会说这不就是阻塞机制吗?不不不,同步异步不能和阻塞非阻塞混为一谈。


阻塞和非阻塞 强调的是程序在等待调用结果(消息,返回值)时的状态. 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。


同步和异步强调的是消息通信机制 (synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该“调用”就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由“调用者”主动等待这个“调用”的结果。而异步则是相反,"调用"在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在"调用"发出后,"被调用者"通过状态、通知来通知调用者,或通过回调函数处理这个调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值