01 基本概念
2018-09-21 本文已影响14人
MickeyMcneil
同步 异步 阻塞 非阻塞
同步与异步关注的是消息通信机制,阻塞与非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
- 同步
发出一个功能调用时,在没有得到结果前,调用就不返回。 - 异步
发出一个功能调用时,调用立刻返回。异步方法会在另一个线程中执行,整个过程,不会阻碍调用者的工作,异步方法执行完毕后,通过状态、通知、回调来通知调用者。 - 阻塞
调用结果返回之前,当前线程会被挂起。
阻塞和同步概念是不同的,对于同步来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回值而已。 - 非阻塞
不能立刻得到结果之前,函数会立刻返回,不会阻塞当前的线程。
举例(转自网络):
大佬喜欢喝咖啡,同时养了很多小弟。
- 大佬 : 客户端进程
- 小弟A : 阻塞处理的IO函数
- 小弟B : 非阻塞处理的IO函数
- 小弟C、小弟D: 异步处理的IO函数
- 同步阻塞
大佬派小弟A去看看咖啡煮好没,小弟A等咖啡煮好了才回来。 - 同步非阻塞
大佬派小弟B去看咖啡煮好了没,B去看了一眼就回来了,过了一会儿,B再去看看咖啡煮好了没。 - 异步非阻塞
大佬派小弟C、小弟D去看咖啡煮好没,C和D去厨房看了下,C回来告诉大佬,D已经在厨房了,等咖啡煮好了,D就回来告诉大佬。 - 异步阻塞
大佬派小弟C、小弟D去看咖啡煮好没,C和D去厨房等咖啡煮好了才回来。
Node.js基本概念
Node.js是一个基于Chrome V8 引擎的javaScript运行环境,使用事件驱动、非阻塞式I/O模型,npm(node的包管理器),是全球最大的开源生态系统。
- 组成
ECMAScript核心 + 全局成员(setTimeout 等) + 核心API模块(node所独有)
没有BOM和DOM概念,这两个属于浏览器 - 安装
- 官网下载node.js安装包(LTS)
- 傻瓜式安装,然后在 此电脑(右箭) - 属性 - 高级系统设置 - 环境变量 - 系统变量 - path 中新建粘入安装的路径即可
- npm是node的包管理器,npm的位置在 用户 - AppData - Roaming - npm