博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node学习基础(一) 之了解nodejs
阅读量:3905 次
发布时间:2019-05-23

本文共 1640 字,大约阅读时间需要 5 分钟。

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容器,就是安装配置完成之后,没有一个根目录。

你可能感兴趣的文章
MIME相关
查看>>
WAP1.0与WAP2.0页面的DTD
查看>>
如何学好C++语言
查看>>
包的设计原则
查看>>
回顾时光 详解HTML的发展史
查看>>
MinGW与Cygwin
查看>>
用WEB标准进行开发
查看>>
[译]关于Android图形系统的一些事实真相
查看>>
J2ME下的Zlib/Gzip/Zip压缩相关
查看>>
Cygwin 的安装配置
查看>>
Cygwin基本命令的使用方法
查看>>
Java本地接口(JNI)编程指南和规范(第二章)
查看>>
有关使用xsl输出csv格式文档的实践小结
查看>>
在Ubuntu 12.04 为 Eclipse 添加快速启动项
查看>>
GCC强大背后
查看>>
Android x86模拟器Intel Atom x86 System Image配置与使用方法
查看>>
shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
查看>>
【分享】手把手教你使用U盘安装Ubuntu系统
查看>>
Ubuntu下adb无法识别android设备的解决方法
查看>>
使用U盘安装Ubuntu系统的实践小结
查看>>