Nodejs开发指南 读书笔记随谈之一

简介:

NodeJS开发指南

这本书是市面上讲nodejs的一本不可多得的入门书,当初想学 nodejs的时候,找了半天,终于找到了这本好书,随后一发不可收拾,花了一两天的功夫就看玩了,感觉作者系统功力深厚,以下只是偶的一些摘要,权当心得体会。


书里说nodejs的核心特性是异步IO,事件驱动,任何IO操作都是由事件来驱动的。

说到异步IO又不得不来看看操作系统的线程与阻塞

什么是阻塞呢,线程在执行中遇到磁盘读写或者数据库通讯,网络通讯这种耗时比较多的时候,操作系统将会剥夺此线程的CPU资源,并暂停此线程,转而去执行别的线程,此线程调度方式称为阻塞。当I/O操作完成之后,操作系统又恢复此线程,让其继续执行,这种I/O模式通常称为同步I/O或者阻塞式I/O。

异步式IO或者非阻塞式I/O则针对所有操作采取不阻塞的方式,当线程遇到IO操作的时候,不会以阻塞的方式等待IO操作完成或者数据的返回,而是将IO操作发送给操作系统,然后接着执行下一个操作,当操作系统执行完IO操作之后,将是事件的方式通知执行IO的线程,线程会在特定的时候执行这个事件。这一切的前提条件就是,系统需要一个事件循环,以不断的去查询有没有未处理的事件,然后给预处理。

阻塞方式下,一个线程只能处理一个任务,要想提高系统的吞吐量,必须使用多线程 ;而非阻塞情况下,一个线程永远在执行计算,CPU使用率几乎100%,IO以事件的方式通知。在阻塞模式下,多线程能够提高系统吞吐量,因为一个线程在阻塞的时候,还有另一个线程在工作,多线程 不会让CPU资源在线程阻塞的时候浪费。而在非阻塞模式下,线程不会被IO阻塞,CPU资源也不会浪费。多线程只是在多核的时候利用更多的核,而nodejs的单线程也能带来这个好处。所以这就是nodejs采取单线程,非阻塞的事件编程模式。

以下是书中的两幅图,

img1

img2

再弄一个同步式IO与异步式IO的特点比较,依然用书中的图

img3

最后以异步读取一个本地的文件来结束本文,:)

//demo.js 
//加载文件模块 
  var fs=require('fs');  
 fs.readFile('a.txt','utf-8',function(err,data){  
   if (err){  
      console.log(err)   
  }else{   
     console.log(data);   
  }
 });
 console.log('there is firstprint'); 

以上代码,可以在命令行中,切换到demo.js的目录中,输入node demo.js回车即可运行看到结果。


目录
相关文章
|
5月前
|
JavaScript
nodejs读书笔记
nodejs读书笔记
|
5月前
|
JavaScript 前端开发 Unix
Node.js Shell 脚本开发指南(中)
Node.js Shell 脚本开发指南(中)
111 0
|
5月前
|
JavaScript 前端开发 Shell
Node.js Shell 脚本开发指南(上)
Node.js Shell 脚本开发指南(上)
146 0
|
5月前
|
JavaScript 前端开发 Unix
Node.js Shell 脚本开发指南(下)
Node.js Shell 脚本开发指南(下)
107 0
|
开发者 自然语言处理 数据格式
带你读《实用Bot开发指南:基于Node.js与Bot框架设计并构建聊天机器人》之三:语言理解智能服务
本书讲述机器人设计和实现背后的基本概念。每一章都建立在前面的主题之上,并且在适当的地方显示了实现这些概念的实际工作代码。通过选择一个代码编辑器,你可以开始体验创建智能、迷人和有用的机器人。本书将教你如何在Facebook Messenger和Slack等平台上创建自己的机器人,整合扩展API,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。
|
自然语言处理 机器人 机器学习/深度学习
带你读《实用Bot开发指南:基于Node.js与Bot框架设计并构建聊天机器人》之二:聊天机器人与自然语言理解
本书讲述机器人设计和实现背后的基本概念。每一章都建立在前面的主题之上,并且在适当的地方显示了实现这些概念的实际工作代码。通过选择一个代码编辑器,你可以开始体验创建智能、迷人和有用的机器人。本书将教你如何在Facebook Messenger和Slack等平台上创建自己的机器人,整合扩展API,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。
|
机器人 自然语言处理 开发者
带你读《实用Bot开发指南:基于Node.js与Bot框架设计并构建聊天机器人》之一:聊天机器人概述
本书讲述机器人设计和实现背后的基本概念。每一章都建立在前面的主题之上,并且在适当的地方显示了实现这些概念的实际工作代码。通过选择一个代码编辑器,你可以开始体验创建智能、迷人和有用的机器人。本书将教你如何在Facebook Messenger和Slack等平台上创建自己的机器人,整合扩展API,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。
|
JavaScript 应用服务中间件 数据库
《node.js开发指南》观后感
最近在当当网上买了一本《node.js开发指南》,从学习node.js到现在看的第一本中文教程,也算献出了自己处子之身啊,哈哈。前后大约花了4,5个小时通读了node.js部分,附录部分只是略过了,谈一下感想把。 1、本书的定位: 就像书中的前言部分所述,确实是针对node.js还未入门的初学者准备的,但是有一个前提,如果之前没写过像php等后端的语言读本书可能有点迷茫。所以本书的
1557 0
|
NoSQL 中间件 内存技术
使用Express3.0实现<Node.js开发指南>中的微博系统
特别说明:本实例仅在windows xp sp3系统下测试通过(其它系统未经过测试)。 这本书,之前有评论过,但之前并不清楚express2.x与3.x会有如此大的差异,导致在写例子的过程中痛苦不已。
947 0