加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

node 学习

发布时间:2020-12-15 00:29:02 所属栏目:C语言 来源:网络整理
导读: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 ,?
<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 class="text">

    推荐文章
      热点阅读