【读书笔记】《深入浅出nodejs》第一章 Node简介
1. Node的官方网站: http://nodejs.org
2. Node的缘起:
Ryan Dahl 打算设计一个高性能的Web服务器。
Ryan Dahl 认为设计高性能Web服务器的要点在于:
(1)事件驱动
(2)非阻塞I/O
(what? && why?)
Ryan Dahl 选择使用JavaScript作为该服务器的实现语言,起名为Node。
*为什么是JavaScript?
(1)高性能
(2)符合事件驱动
(3)没有历史包袱
3. Node的特点
(1)保留前端浏览器JavaScript中熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域链和原型链。
(2)异步I/O,在Node中,绝大多数的操作都以异步的方式进行调用。
(3)事件与回调函数。事件的编程方式具有轻量级,松耦合,只关注事物点的优势。
(4)单线程。不用像多线程编程那样处处在意状态的同步问题,这里没有死锁的存在,也没有县城上下文交换所带来的性能上的开销。
*单线程的缺陷:
(1)无法利用多核CPU
(2)错误会引起整个应用退出,应用的健壮性值得考验。
(3)大量计算占用CPU导致无法继续调用异步I/O -> 已使用child_process解决
(5)跨平台
4.Node的应用场景
(1)I/O密集型 -> Node面向网络且擅长并行I/O,能够有效地组织起更多的硬件资源,从而提供更多好的服务。(主要优势在于Node利用时间循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少。)
(2)CPU密集型 -> 诀窍在于如何合理调度。
(3)分布式应用
【读书笔记】《深入浅出nodejs》第一章 Node简介的更多相关文章
- 学习笔记-[Maven实战]-第一章:Maven简介
Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...
- 读书笔记http之第一章
http TCP/IP协议各层: 应用层 决定了向用户提供应用服务时通信的活动. 比如 : FTP(FileTransferProtocol,文件传输协议)和DNS(DomainNameSystem, ...
- 《深入浅出Node.js》第1章 Node简介
@by Ruth92(转载请注明出处) 第1章 Node简介 一.Node的起源 高性能Web服务器的要点:事件驱动.非阻塞I/O. 选择JavaScript的原因:高性能.符合事件驱动.没有历史包袱 ...
- 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系
本节和<Android群英传>中的第五章Scroll分析有关系,建议先阅读该章的总结 第3章 View的事件体系 3.1 View基本知识 (1)view的层次结构:ViewGroup也是 ...
- SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)
SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
- 第一章 C++简介
第一章 C++简介 1.1 C++特点 C++融合了3种不同的编程方式:C语言代表的过程性语言,C++在C语言基础上添加的类代表的面向对象语言,C++模板支持的泛型编程. 1.2 C语言及其编程 ...
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...
- python 教程 第一章、 简介
第一章. 简介 官方介绍: Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使 ...
随机推荐
- Hibernate的多对多映射关系
example: 老师(teacher)和学生(Student)就是一个多对多的关系吧?老师可以有多个学生,学生也可以由多个老师,那在Hibernate中多对多是怎样实现的呢?? 在Hibernate ...
- 零基础在Linux服务器上部署javaweb项目
本教程使用的工具下载链接:http://pan.baidu.com/s/1sl1qz2P 密码:43pj 一.安装JDK 1.首先要查看服务器的系统版本,是32位还是64位 #getconf LONG ...
- 在Mac下使用ll,la,l
一: 用户目录下建立一个脚本“.bash_profile”,并输入以下内容即可: alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' 二: sou ...
- I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 问题
临时解决版本进入python后只需下面命令 import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
- If the parts of an organization (e.g., teams, departments, or subdivisions) do not closely reflect the essential parts of the product, or if the relationship between organizations do not reflect the r
https://en.wikipedia.org/wiki/Conway%27s_law
- CentOS 部署openVPN
一.openVPN工作原理 VPN技术通过密钥交换.封装.认证.加密手段在公共网络上建立起私密的隧道,保障传输数据的完整性.私密性和有效性.OpenVPN是近年来新出现的开放源码项目,实现了SSLVP ...
- Spark 源码分析 -- task实际执行过程
Spark源码分析 – SparkContext 中的例子, 只分析到sc.runJob 那么最终是怎么执行的? 通过DAGScheduler切分成Stage, 封装成taskset, 提交给Task ...
- Flask使用日志记录到文件示例
https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%8 ...
- LeetCode_Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- 安全测试之bWAPP环境搭建
本篇文章介绍独立安装部署bwapp. 安装环境:window7+IIS7+mysql5.6+php5.6 bWAPP下载地址:https://sourceforge.net/projects/bwap ...