来源于知乎大神对node.js的形象理解

先复习小学语文课文,华罗庚的《统筹方法》。

比如,想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶茶杯要洗;火生了,茶叶也有了。怎么办?
办法甲:洗好水壶,灌上凉水,放在火上;在等待水开的时间里,洗茶壶、洗茶杯、拿茶叶;等水开了,泡茶喝。
办法乙:先做好一些准备工作,洗水壶,洗茶壶茶杯,拿茶叶;一切就绪,灌水烧水;坐待水开了泡茶喝。
办法丙:洗净水壶,灌上凉水,放在火上,坐待水开;水开了之后,急急忙忙找茶叶,洗茶壶茶杯,泡茶喝。
哪一种办法省时间?我们能一眼看出第一种办法好,后两种办法都窝了工。
...
从这个图上可以一眼看出,办法甲总共要16分钟(而办法乙、丙需要20分钟)。
...
看来这是“小题大做”,但在工作环节太多的时候,这样做就非常有必要了。
...
来源:华罗庚 统筹方法_百度文库

Node.js就是跟华罗庚一伙的,帮助我们更快地沏茶,而且更快地给一帮人沏茶。

我们在用浏览器访问服务器的时候,就好像去茶叶铺买茶喝。我们可以买回来自己沏,也可以在店里自带的茶座儿坐下来喝现成的。

如果我们买回来喝,参考华老师的课文,他自己都说了这是「小题大作」,因为16分钟和20分钟差不了太多,就我们自己和家人,慢生活4分钟也没什么毛病。

但是如果我们在店里喝,那可不是咱一家儿等着。比起16分钟的最少等候时间,第一桌多等4分钟,第二桌要同时来的话得多等24分钟,第三桌站起来走了,20多张桌子都闲着。忙活了半天,茶客不耐烦,茶铺不赚钱。

所以,茶叶铺一定要学好小学课文,不仅对于同一桌的不同请求要统筹安排,别认死理一件事不干完绝不开始下一件,甚至对于不同桌的不同请求也要尽量并行处理,比如等开水时可以帮好几桌点单、拿茶叶、洗茶杯茶壶,水开之前别闲着,水一开就给各桌上茶,让每桌客人都感觉嗖快嗖快的。

在这个故事里,茶叶铺就是网络服务器。我们自己就是浏览器。

我们要是不想浏览器事必躬亲,那就把活扔给服务器干;当服务器一下子服务很多浏览器时就不能认死理非要串行操作,要灵活统筹,同时开始几件事,哪件完事关闭哪件。

这三个特征用江湖切口说就叫:

  • 服务器端JavaScript处理:server-side JavaScript execution
  • 非阻断/异步I/O:non-blocking or asynchronous I/O
  • 事件驱动:Event-driven

Node.js就是这样一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境。

原文地址:https://www.cnblogs.com/laysunny/p/8900471.html

时间: 2024-11-07 04:52:08

来源于知乎大神对node.js的形象理解的相关文章

做知乎大神不如做个知乎,问答社区建站工具——WeCenter

"--是一种什么样的体验?"."如何看待/怎样评价--?"爱逛知乎的朋友对这些话题格式肯定不陌生,现在知乎大火,越来越多的人开始在网络上分享知识.经验,也就出现了很多"知乎大神". 你还在为做一个"知乎大神"而努力吗?有没有想过自己来做一个类知乎的问答社区?今天小编就给大家推荐一款知识型的社交化问答社区程序建站工具--WeCenter,WeCenter是一款类似知乎,以问答为基础的开源社交网络建站程序,专注于企业和行业知识的整

node.js module初步理解,exports与module.exports的区别

在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组织方式,比如Java中的包.C#中的程序集等,node.js使用模块和包来组织,其机制实现参照了CommonJS标准,虽未完全遵守,但差距不大,使用起来非常简单. 在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块,文件内容可能是我们封装好的一些JavaScript

知乎大神对IAAS,SAAS,PAAS区别的理解

你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS.PaaS和SaaS,这几个术语并不好理解.不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!好吧,其实你根本不是一个吃货,之所以自我标榜为吃货,其实是为了收获赞叹式的夸奖,“吃货还这么瘦,好羡慕啊!”或者,总得给伦家的微丰找个像样的理由. 一个“吃货”是怎样吃到披萨的呢? 1. 在家自己做 这真是个麻烦事,你的准备很多东西,发面.做面团.进烤箱.....简单列一下,需要下图所示的一切: 2. 买好速食

10+ 最佳的 Node.js 教程和实例

如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi等等. 以下是Node.js入门的简单介绍,如果你对Node.js略有了解可以直接跳过此部分. 那什么是Node.js呢? Node.js是迄今运用最多的服务端JavaScript运行时环境,使用JavaScript开发跨平台的实时WEB应用. Node.js基于Google的V8 JavaScri

【转】Node.js和PHP之争

[编者按]PHP vs Node.js之争由来已久,前者用于动态网页开发,后者是用来编写高性能网络服务器的JavaScript工具包,到底他们如何?InfoWorld测试中心的Peter Wayner日前撰文指出两者的优势所在,不妨一看. 以下为译文: 这是典型好莱坞情节:分道扬镳的两位老朋友间的战斗.摩擦经常开始于一位对另一位不言而喻的领域感兴趣.这部电影的编程语言版本是Node.js的引入将好友情节变成一场旗鼓相当的比赛.PHP和JavaScript,两个曾经一起统治互联网的合作伙伴现在为了

站在大神肩膀上,深入理解 Android事件分发机制

Android事件分发,参考了网上的很多资料.基本基于android2.2的源码来分析,因为即使是新的版本,里面的原理思想也没有改变. 有了大神的肩膀,我在理解了其原理的基础上,进行一个小总结. 先理解一个概念: 事件:在android中,点击屏幕是时,产生的长按,点击,滑动,双击,多指操作等,构成了android中的事件响应. 如:ACTION_DOWN ACTION_MOVE ACTION_UP 所有的操作事件首先必须执行的是按下操作(ACTION_DOWN),之后所有的操作都是以按下操作作

深入理解Node.js基于事件驱动的回调

回调和异步调用的关系 首先明确一点,回调并非是异步调用,回调是一种解决异步函数执行结果的处理方法.在异步调用,如果我们希望将执行的结果返回并且处理时,可以通过回调的方法解决.为了能够更好的区分回调和异步回调的区别,我们来看一个简单的例子,代码如下: function waitFive(name, function_name){ var pus = 0; var currentDate = new Date(); while(pus < 5000){ var now = new Date(); p

Node.js 介绍及学习

Node.js => 简单来理解,就是指运行在服务器端的JavaScript.  Node.js 是一个基于Chrome JavaScript运行时建立的一个平台 Node.js是一个事件驱动I/O服务端JavaScript环境,是基于Google的V8引擎,Google的这个V8引擎执行JavaScript的速度非常快,性能非常地好 NPM 是和node.js一起安装的包管理工具, 可以解决node.js代码部署上的很多问题, 有以下几点 1. 允许用户从npm服务器上下载别人编写的第三方包到

【知乎转载】机器学习、数据挖掘 如何进阶成为大神?

著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:淩清风 链接:https://www.zhihu.com/question/37256015/answer/85198013 来源:知乎 我不是大神. 背景:某二本院校大四学生: 说一说自己的学习经历吧.不知道能不能对题主有所帮助. 跟大多数人一样,是从Andrew Ng大神的coursera课程接触到机器学习.在学那门课的时候也就老老实实的看完,看到最后,听到Andrew说看完这些课程的人基本上已经超过硅谷半数的工程