node--非阻塞式I/O,单线程,异步,事件驱动
1、单线程
不同于其他的后盾语言,node是单线程的,大大节约服务器开支
node不为每个客户创建一个新的线程,仅使用一个线程。通过非阻塞I/O以及
事件驱动机制,使其宏观上看是并发的,可以处理高并发。
2、非阻塞式I/O
1)当我们遭遇异步时,可以通过以下方法解决:
①回调函数
在使用异步的函数时,追加提个回调函数为参数,在使用时传入所需要的回调即可
const fs = require('fs')// 如何解决异步问题? // 方法1:通过回调函数解决 function getContent(cb) {fs.readFile('a.txt', (err, data) => {if (err) {console.log(err)return false}cb(data)}) }getContent((data) => {console.log(data.toString()) })
②使用events模块进行监听
const fs = require('fs') const events = require('events')// 如何解决异步问题? // 方法2:通过node中events模块//我们主要通过EventEmitter对象来进行广播和接收广播 const EventEmitter = new events.EventEmitter()//监听to_parent的广播,只进行监听 function getContent() {fs.readFile('a.txt', (err, data) => {if (err) {console.log(err)return false}EventEmitter.emit('data',data)}) }getContent()EventEmitter.on('data', (data) => {console.log(data.toString()) })
转载于:https://www.cnblogs.com/Tanqurey/p/11145097.html
node--非阻塞式I/O,单线程,异步,事件驱动相关推荐
- node - 非阻塞的异步 IO
node - 非阻塞的异步 IO 每当我们提起 node.js 时总会脱口而出 事件驱动.非阻塞I/O 和 单线程,所以我总结了以下几点对这三项概念的阐述,不一定正确仅仅代表个人观点. 单线程 当一个 ...
- 非阻塞式异步Java 8和Scala的Try / Success / Failure
受Heinz Kabutz最近的时事通讯以及我在最近的书中研究的Scala的期货的启发,我着手使用Java 8编写了一个示例,该示例如何将工作提交给执行服务并异步地响应其结果,并使用了回调.无需阻止任 ...
- Spring WebFlux异步非阻塞式编程
一.什么是 Spring WebFlux Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程 ...
- 五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO
文章目录 五种网络IO模型 举例说明 阻塞式I/O模型 非阻塞式I/O I/O多路复用 信号驱动式I/O 异步I/O 比较结果 总结 同步 异步 阻塞 非阻塞 阻塞/非阻塞: 同步/异步: 举例子:小 ...
- 系统间通信1:阻塞与非阻塞式通信A
版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 从这篇博文开始,我们将进入一个新文章系列.这个文章系列专门整理总结了目前系统 ...
- 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别
先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...
- Servlet3.1 新增的非阻塞式IO
Servlet3.1新增的新特性 强制更改sessionId 由HttpServletRequest 的changeSessionId()方法实现 非阻塞式IO 非阻塞式IO 我们应该知道Servle ...
- 系统间通信1:阻塞与非阻塞式通信B
版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 接上篇:系统间通信1:阻塞与非阻塞式通信A 4.3 NIO通信框架 目前流行 ...
- java处理异步非阻塞请求_Spring WebFlux 的异步非阻塞处理
前言 随着 Web Servlet 技术栈的不断发展实现了异步处理与非阻塞 IO,但是其异步是不彻底的,因为受制于 Servlet 规范本身,比如其规范是同步的(Filter,Servlet)或阻塞( ...
- java socket nio 阻塞_Java NIO实现非阻塞式socket通信
博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络 ...
最新文章
- java 二叉树中和为某一值的路径_25. 二叉树中和为某一值的路径
- python输出假分数_分数的表示以及计算(c++)
- oracle子查询为游标结果集,这个SQL怎么破?select后的爬树子查询(connect by)变换
- [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
- java 的function_Function方法-java
- SK海力士推出首款DDR5 DRAM 适用于大数据、人工智能等领域
- 数据--第52课 - 哈希表及其实现
- 清华linux网络编程视频,清华大学视频课件:基于Linux的C++(自主模式)
- 合肥Java面试常考题_java面试常考题-String
- [从头读历史] 第295节 神之物语 结语:为什么会有希腊神话
- macos可以升级到指定版本吗_错过Mac OS升级,找不到旧OS版本怎么办?
- 后台录屏、应用外录屏、跨应用录屏、直播屏幕、录屏扩展(ios)
- 在web中打开SVG格式文件
- DB2相关数据库命令
- Python爬虫之初识简介以及舆情系统简介【爬虫篇一】
- trim函数 html,jQuery trim()函数怎么用?
- 刷题日记 acwing 2058笨拙的手指 位运算的运用,迭代器的使用,秦九稍(别的进制转化为10进制)
- 滴滴治理算法探索与实践
- 中美自动驾驶进入全格局竞争,湖南湘江新区智能系统测试区可成为关键一招吗?...
- 硬盘、寄存器、二级缓存(高速缓存)、内存四种存储器中,速度最快的是?