diff --git a/docs/04-Stream-Buffer.md b/docs/04-Stream-Buffer.md index 07b0296..f17ddb4 100644 --- a/docs/04-Stream-Buffer.md +++ b/docs/04-Stream-Buffer.md @@ -293,7 +293,7 @@ Buffer 对象就是二进制在 JS 中的表述形式,即 Buffer 对象就是 ### Buffer 和字符串的关系 -Buffer 是二级制,和字符串完全是两码事儿,但是他们可以相互转换 —— 前提是规定好用哪个编码规范。 +Buffer 是二进制,和字符串完全是两码事儿,但是他们可以相互转换 —— 前提是规定好用哪个编码规范。 ```js var str = '深入浅出nodejs' diff --git "a/docs/05-\345\274\202\346\255\245-IO.md" "b/docs/05-\345\274\202\346\255\245-IO.md" index 77d93a7..3cfa7a4 100644 --- "a/docs/05-\345\274\202\346\255\245-IO.md" +++ "b/docs/05-\345\274\202\346\255\245-IO.md" @@ -52,7 +52,7 @@ JS 为何非得要单线程呢,像 java 那样做成多线程的不行吗? 在浏览器环境中,JS 是可以操作 DOM 结构的,而 DOM 只有一份。如果两段 JS 能同时执行的话,那么它们都同时操作同一个 DOM 节点,不就发生冲突了吗?因此,**为了避免 DOM 操作的冲突,JS 不能同时执行,只能单线程执行**。另外,不光 JS 是单线程,而且 JS 和浏览器渲染公用一个线程,即 JS 执行时,浏览器渲染会等待、卡顿。 -最后,单线程使得 JS 入门简单使用方便,也不会出现线程思索、状态同步的琐碎问题,简单才容易做大、做广,大道至简。 +最后,单线程使得 JS 入门简单使用方便,也不会出现线程死锁、状态同步的琐碎问题,简单才容易做大、做广,大道至简。 ### 延伸到 nodejs 中 @@ -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 用法,就不再详细演示了,不是本文的重点。