Node学习基础(一) 之了解nodejs

版权声明: https://blog.csdn.net/qq_41542894/article/details/82155936

1. Node.js是什么?

node.js是用于开发服务器,做数据API,设计路由...等

和前端的主要区别在于:前端主要负责效果和交互

2.Node.js是追求极致的产物

I,是单线程!!!

什么是进程?
当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。
而一个进程又是由多个线程所组成的。

什么是线程?
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,
即不同的线程可以执行同样的函数。

什么是多线程?
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,
也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

单线程

每个正在运行的程序(即进程),至少包括一个线程,这个线程叫主线程

主线程在程序启动时被创建,用于执行main函数

只有一个主线程的程序,称作单线程程序

主线程负责执行程序的所有代码(UI展现以及刷新,网络请求,本地存储等等)。这些代码只能顺序执行,无法并发执行

单线程较多线程来说,系统稳定、扩展性极强、软件丰富。多用于点对点的服务。

单线程就是一心一意,用情专一的痴情少年,多线程则相反。

单线程就是进程只有一个线程。

多线程与单线程的区别
生活举例
你早上上班,正要打卡的时候,手机响了。。你如果先接了电话,等接完了,在打卡,就是单线程。
如果你一手接电话,一手打卡。就是多线程。
两件事的结果是一样的。。你接了电话且打了卡。

II,Non-blocking I/O   使用的是非阻塞IO ,异步IO

"++++++++++++++++++++++阻塞IO/非阻塞IO; 同步IO/异步IO +++++++++++++++++++++++++++ "
。IO请求的两个阶段:
1.等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。
2.使用资源阶段:真正进行数据接收和发生。

。在等待数据阶段,IO分为阻塞IO和非阻塞IO。
1.阻塞IO: 资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。
2.非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用

。在使用资源阶段,IO分为同步IO和异步IO。
1.同步IO:应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。
2.异步IO:应用发送或接收数据后立刻返回,数据写入OS缓存,由OS完成数据发送或接收,并返回成功或失败的信息给应用。

。IOPS,即每秒钟处理的IO请求数量。IOPS是随机访问类型业务(OLTP类)很重要的一个参考指标。

III,Event Driven 事件驱动机制

从程序设计的角度来看,事件驱动模型的核心构件通常包含以下几个:

  1. 事件源:负责产生事件的对象。比如我们常见的按钮,按钮就是一个事件源,能够产生“点击”这个事件

  2. 事件监听器(事件处理器):负责处理事件的对象

  3. 事件:或者称为事件对象,是事件源和事件监听器之间的信息桥梁。是整个事件模型驱动的核心

下图展示了事件、事件源、监听器直接的关系: 

事件驱动机制就是:
让驴拉磨,它不拉,你用鞭抽一下,它就开始拉了。然后又停了,你再抽一下,它又继续拉了
这叫用“鞭”驱动“驴”拉磨。
在程序里,程序停止在那不动,你点击一个按钮,它就有反应了,过一会,又没反应了,你再点一下,它又继续运行。
这叫用“事件”驱动“程序”运行。

3.node和其他语言的后端语言不同(这点一定要记住)

有两个特点:

第一个特点是: nodejs没有自己的语法是用的是V8引擎,用的是js,V8引擎解析js,效率非常高,并且V8很多东西都是异步的,node就是站在巨人肩膀上把V8中的一些功能移植到了服务器上。

第二个特点是:没有web容器,就是安装配置完成之后,没有一个根目录。

猜你喜欢

转载自blog.csdn.net/qq_41542894/article/details/82155936