程序笔记   发布时间:2022-05-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node 学习大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

<table class="text"><tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

 2018-10-25
 
### 关于 node 的比喻
 
1. 进程和线程
    进程:打开一个应用 exe ,
    线程:应用链接一个用户,使用者。线程之间数据可以共享
 
2. 并发和并行
    并发:解决多个任务的能力,任务之间的切换。比喻:吃饭的时候,有人打电话,然后你接电话(不吃饭),打完电话,又开始吃,结果又来了电话……
    并行:同时执行的能力,多个任务一起执行。比喻:吃饭的时候,有人打电话,你可以一边接电话,一边吃饭
    *并发并行区别在于是否同时执行*
3. 单线程多线程
- 其他语言可能是一个大气的老板,客人多,就雇佣多个服务员;
- Node.Js 是一个抠门的老板。值雇佣一个员工,但是这个名员工不是普通员工,是机器,的王者级的员工
 
### node 特点
 
1. 单线程
- 在Java,php或者NET等服务器端语言中,会为每一个客户端连接单独创建一个线程。而每个线程单独需要消耗大约2MB的内存。也就是说理论上说,一个内存为8GB的Web服务器,可以连接大概4000个客户。要让Web服务器可以多连接客户访问,就必须增加服务器的数量。而Web服务器的应用成本就大大增加了。
- Node.Js不为每个客户连接创建一个新的线程。而仅仅使用一个线程,当有用户连接了,就会触发一个内部事件,通过非阻塞I/O,事件驱动机制,让Node.Js程序宏观上也是并行的,使用Node.Js,一个8GB的内存条,理论上就可以支持40000个用户连接了。另外单线程的好处就是,还有操作系统不在由创建,销毁销毁线程的时间。
 
2. 非阻塞
- 例如,当在访问数据库数据的时候,需要一段时间进行I/O操作,在传统的单线程处理机制中,在执行了访问数据库代码之后,这个线程都将先停下来,等待数据库返回数据结果,才能执行后面的代码,也就是说I/O阻塞了线程的执行,极大的降低了程序的执行效率。
- 在传统阻塞模式下,一个线程只能处理一项任务,要想处理连接的吞吐量必须通过多线程。而在Node.Js这种非阻塞模式下,一个线程永远在执行计算操作,这个线程的cpu利用率永远是100%,所以这是一种也别有哲理的设计方案,人多,但是好多人都闲着,还不如人少,往死里干活。
- 由于Node.Js执行了非阻塞I/O机制,因此在执行了访问数据库代码之后,将立即执行后面的代码,把数据库执行返回结果的处理放到了代码的执行回调函数中,从而以提高了函数的执行效率。
 
3. 事件驱动
- 在Node中,客户端请求建立连接,提交数据等行为,会触发相应的事件,在Node中,在一个时刻,只能执行一个回调函数,但是在执行一个回调函数的中途,可以转而处理其他事件(比如:又有新用户连接了),然后继续返回执行原事件的回调函数,这种处理机制,成为“事件环”机制。
- 在Node.Js底层是C++,底层代码中,近半数都适用于事件队列,回调函数队列的构建。用事件驱动来完成任务调度。
 
4. 总结
- 单线程:单线程的好处是,减少了内存开销,操作系统的内存换页。如果是多线程的,那么某一个事情进入了I/O,但是被阻塞了,这个线程就被阻塞了。
- 非阻塞I/O: 不会傻等I/O语句结束,而会执行后面的语句。非阻塞就可以解决问题吗?比如线程正在执行者小红的请求连接,而小明的I/O操作回调完成了,此事怎么办呢?
- 事件机制,事件环:不管是新用户的请求,还是老用户的I/O完成,Node.Js都会以事件机制加入事件环,等待调度。
table>

大佬总结

以上是大佬教程为你收集整理的node 学习全部内容,希望文章能够帮你解决node 学习所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:学习