本章中我们将讲述Node.js的作用

1、设计Node.js的目的

  Node.js是构建在Chrome的JavaScript运行时之上的一个平台,用于简单构建快速的、可扩展的网络应用程序。Node.js使用事件驱动的、非阻塞的I/O模型,这让其既轻量又高效,是运行于不同发布设备上的数据密集型实时应用程序的完美平台。

  并发简单的可以理解为指的是许多人同时尝试做同样的事情。

2、I/O理解操作

I/O是输入/输出的简写,指的是计算机和人或者数据处理系统之间的通信。可以使用很类似于PHP一样的语句来进行输出。即echo。

2.1 处理输入

  计算机编程是什么?计算机编程就是编写解决某一个问题的软件并且处理围绕着该问题的可能的各种不可预测性。

2.2 联网I/O的不可预测性

  当今的Web应用程序的设计变得越来越复杂。I/O变得更加的碎片化,而且I/O操作也变得更为频繁。

  • 与第三方应用程序编程接口(API)的交互繁重
  • 许多不同设备发送与接收数据,包括移动设备、电视和公告板等等
  • 巨大数量的客户同时连接并实时交互

3、不可预测性

例子:使用Node.js从不同的Web服务器上获取主页。

 1 var http = require('http'),
 2       urls = ['shapeshed.coom', 'www.bbc.co.hk', 'www.baidu.com'];
 3
 4 function fetchPage (url) {
 5   var start = new Date();
 6   http.get({host: url}, function (res) {
 7       console.log("Got response from: " + url);
 8       console.log("Request took:", new Date() - start, 'ms');
 9   });
10 }
11
12 for (var i = 0; i < urls.length; i++) {
13   fetchPage (urls[i]);
14 }

以上的代码,在不同次运行的时候会输出不同的时间,这也就是由于Web服务器响应时间不同导致的。而这些不同也是由于以下原因导致:

  1. 解析DNS请求的时间
  2. 服务器的繁忙程度
  3. 要应答的数据有多大
  4. 服务器和客户的可用带宽
  5. 为响应而服务的软件的效率
  6. 所使用的网络繁忙程度
  7. 数据要传输多远

  在传统的HTML页面中使用JavaScript,例如,当用户单击页面超链接时,有事件被触发,而JavaScript代码并不是对一组用户可能进行的动作按线性排序列出,然后以此构造代码;而是围绕事件来构架。事件可在任何时刻发生,也可发生不止一次。以上所描述的就是事件驱动的编程,因为在程序中要是有事情发生的话那么有个事件必须发生。事件驱动编程是处理不可预测性的极佳方式,因为我们可以识别将要发生的事件,即使我们并不知道事件什么时候会发生。

  JavaScript在浏览器中极高效地使用了这个模型,允许开发人员创建基于浏览器打的富应用程序,这样的应用程序围绕着事件和用户与页面之间的交互方式编写。

  现代Web应用程序的趋势:

  • 许多不同类型的设备可连接到Web应用程序
  • 设备可作为输入和输出
  • 在一个应用程序内,不同的服务由不同的服务器来完成
  • 应用程序与许多第三方数据源的交互很繁重
  • 客户与服务器之间的数据实时双向流动

  而通过以上的比较可以发现,所有的趋势都指向了并发。Node的事件化的I/O模型让我们无需担心互锁和并发这两个在多线程异步I/O中常见的问题。Node.js将JavaScript解决不确定性所用的事件驱动方法加入到解决并发程序的可能方法清单中。事件驱动编程并不是新的思想。其他语言同样实现过,而解决并发问题多的其他方法还包括线程以及使用不同的进程。

转载于:https://www.cnblogs.com/maybe1491/archive/2013/04/29/3051454.html

Node.js入门经典 读书笔记(3)相关推荐

  1. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQ ...

  2. Node.js: 深入浅出Nodejs读书笔记

    今天终于把朴灵老师写的<深入浅出Node.js>给学习 完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内 ...

  3. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  4. C语言入门经典读书笔记 ----第六章 字符串和文本的应用

    1.什么是字符串 字符串常量的例子非常常见,字符串常量是放在一对双引号中的一串字符或符号,一对双引号之间的任何内容都会被编译器视为字符串,包括特殊字符和嵌入的空格.以下是使用字符串的例子: print ...

  5. 算法竞赛入门经典读书笔记(三)7.2枚举排列

    7.2.1生成1~n的所有排列 递归调用的方法可以实现. [cpp] view plaincopy #include <iostream> using namespace std; voi ...

  6. 算法竞赛入门经典读书笔记(四)7.3子集生成

    输入一个数n,输出集合0,1,2,3,n-1的全部子集 方法一:增量构造法: #include <iostream> using namespace std; void print_sub ...

  7. 算法竞赛入门经典读书笔记(二)7.1简单枚举

    7.1.1简单枚举 除法 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列,2<=n<=79. 样例输入: 62 样例输出 ...

  8. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  9. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

最新文章

  1. 回文串 --- 动态dp UVA 11584
  2. 锐捷交换机清除mac-address-table(mac地址表)
  3. 动手造轮子:实现简单的 EventQueue
  4. java按条件查询结果为空_mybatis中查询结果为空时不同返回类型对应返回值问题...
  5. 以太坊账户 相关知识
  6. html5 a-z字母排序,Js按A-Z排序通讯录(中文、英文、特殊字符)
  7. 红帽启动apache服务器_红帽7搭建httpd的三种模式(基于主机,端口,IP)
  8. (13)System Verilog typedef创建新数据类型
  9. 树状数组相关应用之多叉树子树问题
  10. debug方式看Activity启动流程小记
  11. javaweb开发后端常用技术_java web后端开发技术
  12. Java方法重载与方法重写的区别
  13. 用jq实现轮播图片的效果
  14. java解析json字符串详解
  15. 读书 | 巴比伦最富有的人(内含思维导图)
  16. numpy 矩阵对角线_python – 使用numpy将矩阵更高的对角线清零
  17. 游戏美术设计中,最难的角色人物如何设计才能吸睛?
  18. 数据中心与云计算关系
  19. 面向對象在VB6語言中的應用
  20. 名人名言 托尔斯泰 富兰克林 马克思 罗兰 培根

热门文章

  1. everytime you write on a whiteboard
  2. how to find annual report for a stock market company
  3. under what circumstances, breakfast is essential
  4. 命令前面加一个!的意思如!python
  5. 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱
  6. 敏捷开发的角色和职责阐述
  7. Linux基础命令--date
  8. 用掘金-Markdown 编辑器写文章
  9. 【Storm篇】--Storm并发机制
  10. jst获取不到springmvc中model数据