惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
博客园 - 聂微东
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
L
LangChain Blog
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
S
Secure Thoughts
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
H
Heimdal Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Help Net Security
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
G
Google Developers Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
Kaspersky official blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tenable Blog
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives

博客园 - 我就是那个王小明

git修改历史提交记录名字 gitbase配置两个git仓库源头地址 yarn dev 或者 npm run dev 或node -v 等报错:'node' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 htmlToPdf ES6 Generator使用 - 我就是那个王小明 - 博客园 数组中的每一项按照某个属性分组 - 我就是那个王小明 - 博客园 前端开发快速定位bug的一些小技巧 基本css拼图形 forEach时候删除数组某一属性项,使用splice容易出现问题 对于vue的一些理解 配置vuex并使用 vue搭建开发环境 一些意想不到的小bug。 小程序开发中遇到的问题 rem原理 vue使用webpack压缩后体积过大要怎么优化 分别使用ES5和ES6进行数组去重以及注意事项 package.json和bower的参数解释 Angular.js基础
nodeJS理解
我就是那个王小明 · 2016-09-06 · via 博客园 - 我就是那个王小明

nodejs是一个基于Chrome V8 引擎的JS运行环境,也就是让javascript运行在服务器(server)端
NodeJS使用了一个事件驱动,非阻塞式的I/O模型,使得其轻量又高效。
Nodejs包管理器npm是全球最大的开源生态系统。

nodejs是服务端的js平台。

npm grunt express 等强大的代码与项目管理应用在nodeJS上。

关于NodeJS与传统服务器处理平台(Apache)的区别

Apache的多线程高并发模式

Apache是一种多线程处理并发,但是在一些大型的web应用上也会发生阻塞。

线程和进程

线程是可以独立运行的最小的CPU单位。
线程可以在同一个进程中并发运行,并共享该进程下的内存地址空间。

进程可以支持多个线程,它们看似同时执行,但是相互之间并不同步。
一个进程中的多个线程共享相同的内存地址空间,意味着可以访问相同的变量和对象,并且从同一堆中分配对象。

这样让线程之间共享信息变得容易,但是也要确保他们不会妨碍同一进程中想的其他线程。

NodeJS的异步I/O原理

用数据库的调用举例:

Apache,执行到第一个线程的时候会等待query返回结果,一方面会导致线程长期阻塞等待,另一方面会为了新请求不断增加线程,会浪费大量的资源,同时线程增加会占用大量的CPU时间来处理内存上下文切换。

NodeJS是异步单线程的,应用的是异步回调的方法,也就是异步的I/O
解释:当进程执行的时候,不会等待结果的返回,而是直接执行下面的语句,直到进入事件循环,当数据库执行返回结果的时候会将事件发送到事件队列,等线程进入事件循环之后才会调用之前的回调函数。
也就是nodejs的工作原理其实就是事件循环。每一条nodejs的逻辑都是写在回调函数里面的,而回调函数都是返回之后才异步执行的。

NodeJS也会发生阻塞,但是阻塞发生在自己的单个线程当中,不是发生在后续回调的流程当中。

与php区别

用node来做网站开应用的是分块加载的模式,不用像php那样把所有的数据一次性加载到客户端。

NodeJS相比于php和Apache开的新线程来讲,节省了CPU内存和上下文切换的时间。

NodeJS的应用场景

NodeJs适合应用在具有大量的细小的http请求环境下,例如web的即时聊天程序,或者上万人同时在线的游戏服务器。不用考虑http请求次数过多的问题。