node.js初识

原文:http://mp.weixin.qq.com/s/aNCjOCMLVMwkpWwnCOuKqA

标题:为什么要使用Node.js 

作者:bestswifter

以下是以个人方式对该篇文章的理解

【概念】

 在线多人协作工具,长连接,并发数(c10K  c10M ), fork , FastCGI,进程池,线程池,协程,非阻塞I/O,I/O多路复用技术,轮询,select,epoll,socket,Nginx,异步I/O,事件驱动,异步回调, 事件循环,文件I/O,异步文件I/O,IPC机制, poll、check、close callbacks、timers、I/O callbacks 、Idle,EventEmitter,fs.readStream,数据流,fs模块

【概念详解】

在线多人协作工具:比如QQ的在线协作编辑文档功能。

短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

并发数:这台服务器最多能支持多少个客户端的并发请求。

fork:分叉

I/O:首先把文件(网络)中的内容拷贝到缓冲区,这个缓冲区位于操作系统独占的内存区域中,随后再把缓冲区的内容拷贝到用户程序的区域中。

阻塞I/O:从发起请求,到缓冲区就绪,再到用户获取进程,这两个步骤都是阻塞的。

非阻塞I/O:执行内核轮询,缓冲区是否就绪,如果没有就继续执行其他操作。当缓冲区就绪后,将好缓冲区内容拷贝到用户进程,这一步其实还是阻塞的。

I/O 多路复用技术:也是一种非阻塞I/O的方案,实质还是单线程的轮询。select 、epoll来轮询socket函数。

异步I/O:不存在,一般是用线程池与阻塞I/O来模拟异步I/O.

事件驱动:只有网络请求这一事件发生,回调函数才会执行。当多个请求到来,他们会排成一个队列依次等待执行。

事件循环event loop

数据流:定义一块很小的缓冲区,当缓冲区满后就立即执行回调函数,对这一小块数据进行处理,从而避免出现挤压。

【point】

  • node.js是什么:一个 运行在服务端的框架,使用JavaScript来开发网页后端。
  • node.js的适用场景有哪些:

 1.高并发长连接,比如在线多人协作工具,网页聊天应用,读取数据库。

 2.流式应用,比如客户端经常上传文件。

 3.前后端分离。

  • node.js不适用的场景:CPU密集型任务,比如人工智能方面的计算,视频,图片的处理。
  • 并发的处理方式:java的servlet使用线程池,每个servlet运行在一个线程上。Go语言使用协程,多个协程运行在一个线程中,并由程序员自己调度。node.js使用非阻塞I/O。
  • node.js如何在一个线程里处理并发请求:node.js是事件驱动,只有网络请求发生时,回调函数菜户执行。多个请求到来时,他们会排成一个队列,依次等待执行。所以阻塞的操作都要放到回调函数中执行。

【待解决】

事件循环

数据流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值