Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/04-Stream-Buffer.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ Buffer 对象就是二进制在 JS 中的表述形式,即 Buffer 对象就是

### Buffer 和字符串的关系

Buffer 是二级制,和字符串完全是两码事儿,但是他们可以相互转换 —— 前提是规定好用哪个编码规范。
Buffer 是二进制,和字符串完全是两码事儿,但是他们可以相互转换 —— 前提是规定好用哪个编码规范。

```js
var str = '深入浅出nodejs'
Expand Down
6 changes: 3 additions & 3 deletions docs/05-异步-IO.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ JS 为何非得要单线程呢,像 java 那样做成多线程的不行吗?

在浏览器环境中,JS 是可以操作 DOM 结构的,而 DOM 只有一份。如果两段 JS 能同时执行的话,那么它们都同时操作同一个 DOM 节点,不就发生冲突了吗?因此,**为了避免 DOM 操作的冲突,JS 不能同时执行,只能单线程执行**。另外,不光 JS 是单线程,而且 JS 和浏览器渲染公用一个线程,即 JS 执行时,浏览器渲染会等待、卡顿。

最后,单线程使得 JS 入门简单使用方便,也不会出现线程思索、状态同步的琐碎问题,简单才容易做大、做广,大道至简。
最后,单线程使得 JS 入门简单使用方便,也不会出现线程死锁、状态同步的琐碎问题,简单才容易做大、做广,大道至简。

### 延伸到 nodejs 中

Expand Down Expand Up @@ -98,12 +98,12 @@ PHP 也没法创建线程,即也是单线程执行的,而且 PHP 也没有 J

## 异步 IO

相比上文 Apache 多线程的方式,nodejs 针对所有 http 请求,都只有一个线程。先解释一下,这里说的单线程和下一节将的多进程不是一回事,一个是线程一个是进程,不要混了。
相比上文 Apache 多线程的方式,nodejs 针对所有 http 请求,都只有一个线程。先解释一下,这里说的单线程和下一节讲的多进程不是一回事,一个是线程,一个是进程,不要混了。

- **好处**:减少线程开销,能承受更多的 http 的并发请求。著名的 nginx 也是用类似的方式做到高性能的。
- **坏处**:所有 http 请求公用一个线程,一个上下文,一点崩溃即权限崩溃,对于程序的稳定性要求高

到这里就接上了本文一开始将的话题 —— 单线程的解决方案就是异步,IO 是瓶颈,那就用异步处理 IO,即 **异步 IO** ,即 nodejs 用单线程、异步的方式处理 IO 时能支持更多的并发请求。
到这里就接上了本文一开始讲的话题 —— 单线程的解决方案就是异步,IO 是瓶颈,那就用异步处理 IO,即 **异步 IO** ,即 nodejs 用单线程、异步的方式处理 IO 时能支持更多的并发请求。

上文说过,nodejs 中最常见的 异步 IO ,第一是 网络 IO,第二是 文件 IO ,至于详细的语法和 API 用法,就不再详细演示了,不是本文的重点。

Expand Down