node是js运行环境。
基于v8引擎
特点:事件驱动、无阻塞的io模型
优势:轻量、高效
node是门技术不是语言 java java .net c# node js。
1什么是i/o?
- 1
- 2
2什么是并发?
- 1
3异步i/o与事件驱动
3.1什么是进程?
- 1
- 2
3.2什么是线程?
- 1
- 2
- 3
- 4
3.3同步、异步有什么不同?
- 1
- 2
3.4异步非i/o操作和异步i/o操作
- 1
- 2
3.5node的事件驱动模型?
主线程:
- 1.执行node的代码,把代码放入队列
- 2.事件循环程序(主线程)把队列里面的同步代码都先执行了,
- 3.同步代码执行完成,执行异步代码
-
4.异步代码分2种状况,
- 1异步非io setTimeout() setInterval()
判断是否可执行,如果可以执行就执行,不可以跳过。 - 2异步io 文件操作
会从线程池当中去取一条线程,帮助主线程去执行。
主线程会一直轮询,队列中没有代码了,主线程就会退出。
- 1异步非io setTimeout() setInterval()
子线程:被放在线程池里面的线程,用来执行异步io操作
- 1.在线程池里休息
- 2.异步io的操作来了,执行异步io操作。
- 3.子线程会把异步io操作的callback函数,扔回给队列
- 4.子线程会回到线程池了去休息。
callback
在异步io代码执行完成的时候被扔回主线程。
3.6异步和多线程的比较?
node的异步是帮助我们去做了多线程的操作,简化了代码。
参考:
nodejs的优点:https://cnodejs.org/topic/560dbc826a1ed28204a1e7de