Skip to content

Commit fa05929

Browse files
author
qufei
committed
更新慕课 stars
1 parent 0f9e211 commit fa05929

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 《Node.js技术栈》
22

3-
[![stars](https://badgen.net/github/stars/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [![forks](https://badgen.net/github/forks/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [<img src="https://img.shields.io/static/v1.svg?label=%E6%85%95%E8%AF%BE&message=2.6k%20stars&color=ef151f">](https://www.imooc.com/u/2667395) [<img src="https://img.shields.io/badge/%E6%8E%98%E9%87%91-120%20likes-brightgreen.svg">](https://juejin.im/user/5ae4348f6fb9a07aac2436f1)
3+
[![stars](https://badgen.net/github/stars/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [![forks](https://badgen.net/github/forks/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [<img src="https://img.shields.io/static/v1.svg?label=%E6%85%95%E8%AF%BE&message=2.8k%20stars&color=ef151f">](https://www.imooc.com/u/2667395) [<img src="https://img.shields.io/badge/%E6%8E%98%E9%87%91-120%20likes-brightgreen.svg">](https://juejin.im/user/5ae4348f6fb9a07aac2436f1)
44

55
> 本文档是作者从事```Node.js Developer```以来的学习历程,旨在为大家提供一个较详细的学习教程,侧重点更倾向于Node.js服务端所涉及的技术栈,如果本文能为您得到帮助,请给予支持!
66

docs/_coverpage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
- 本文档是作者从事 ```Node.js Developer``` 以来的学习历程,旨在为大家提供一个较详细的学习教程,侧重点更倾向于 Node.js 服务端所涉及的技术栈,如果本文能为您得到帮助,请给予支持!
66

7-
[![stars](https://badgen.net/github/stars/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [![forks](https://badgen.net/github/forks/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [<img src="https://img.shields.io/static/v1.svg?label=%E6%85%95%E8%AF%BE&message=2.6k%20stars&color=ef151f">](https://www.imooc.com/u/2667395) [<img src="https://img.shields.io/badge/%E6%8E%98%E9%87%91-120%20likes-brightgreen.svg">](https://juejin.im/user/5ae4348f6fb9a07aac2436f1)
7+
[![stars](https://badgen.net/github/stars/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [![forks](https://badgen.net/github/forks/Q-Angelo/Nodejs-Roadmap?icon=github&color=4ab8a1)](https://github.com/Q-Angelo/Nodejs-Roadmap) [<img src="https://img.shields.io/static/v1.svg?label=%E6%85%95%E8%AF%BE&message=2.8k%20stars&color=ef151f">](https://www.imooc.com/u/2667395) [<img src="https://img.shields.io/badge/%E6%8E%98%E9%87%91-120%20likes-brightgreen.svg">](https://juejin.im/user/5ae4348f6fb9a07aac2436f1)
88

99

1010
[GitHub](<https://github.com/Q-Angelo/Nodejs-Roadmap>)

docs/nodejs/process-threads.md

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@
1010

1111
## 面试指南
1212

13-
- 什么是孤儿进程?参考:[Interview1](#Interview1)
14-
- 创建多进程时,代码里有 ```app.listen(port)``` 在进行 fork 时,为什么没有报端口被占用?参考:[Interview2](#Interview2)
15-
- 什么是 IPC 通信,如何建立 IPC 通信?什么场景下需要用到 IPC 通信?参考:[Interview3](#Interview3)
16-
- Node.js 是单线程还是多线程?进一步会提问为什么是单线程?参考:[Interview4](#Interview4)
17-
- 关于守护进程,是什么、为什么、怎么编写?参考:[Interview5](#Interview5)
18-
- 实现一个简单的命令行交互程序?参考:[Interview6](#Interview6)
19-
- 如何让一个 js 文件在 Linux 下成为一个可执行命令程序?参考:[Interview7](#Interview7)
20-
- 进程的当前工作目录是什么? 有什么作用?参考:[Interview8](#Interview8)
21-
- 多进程或多个 Web 服务之间的状态共享问题?参考:[Interview9](#Interview9)
13+
- 什么是进程和线程?之间的区别?参考:[Interview1](#Interview1)
14+
- 什么是孤儿进程?参考:[Interview2](#Interview2)
15+
- 创建多进程时,代码里有 ```app.listen(port)``` 在进行 fork 时,为什么没有报端口被占用?参考:[Interview3](#Interview3)
16+
- 什么是 IPC 通信,如何建立 IPC 通信?什么场景下需要用到 IPC 通信?参考:[Interview4](#Interview4)
17+
- Node.js 是单线程还是多线程?进一步会提问为什么是单线程?参考:[Interview5](#Interview5)
18+
- 关于守护进程,是什么、为什么、怎么编写?参考:[Interview6](#Interview6)
19+
- 实现一个简单的命令行交互程序?参考:[Interview7](#Interview7)
20+
- 如何让一个 js 文件在 Linux 下成为一个可执行命令程序?参考:[Interview8](#Interview8)
21+
- 进程的当前工作目录是什么? 有什么作用?参考:[Interview9](#Interview9)
22+
- 多进程或多个 Web 服务之间的状态共享问题?参考:[Interview10](#Interview10)
2223

2324
## 进程
2425

@@ -501,6 +502,12 @@ $ node index.js
501502

502503
## Interview1
503504

505+
> 什么是进程和线程?之间的区别?
506+
507+
关于线程和进程是服务端一个很基础的概念,在文章 [Node.js进阶之进程与线程](https://www.imooc.com/article/288006) 中介绍了进程与线程的概念之后又给出了在 Node.js 中的进程和线程的实际应用,对于这块不是很理解的建议先看下。
508+
509+
## Interview2
510+
504511
> 什么是孤儿进程?
505512
506513
父进程创建子进程之后,父进程退出了,但是父进程对应的一个或多个子进程还在运行,这些子进程会被系统的 init 进程收养,对应的进程 ppid 为 1,这就是孤儿进程。通过以下代码示例说明。
@@ -555,7 +562,7 @@ $ curl http://127.0.0.1:3000
555562
I am worker, pid: 32971, ppid: 1
556563
```
557564

558-
## Interview2
565+
## Interview3
559566

560567
> 创建多进程时,代码里有 ```app.listen(port)``` 在进行 fork 时,为什么没有报端口被占用?
561568
@@ -645,7 +652,7 @@ worker process created, pid: 34515 ppid: 34511
645652

646653
关于多进程端口占用问题,cnode 上有篇文章也可以看下 [通过源码解析 Node.js 中 cluster 模块的主要功能实现](https://cnodejs.org/topic/56e84480833b7c8a0492e20c)
647654

648-
## Interview3
655+
## Interview4
649656

650657
> 什么是 IPC 通信,如何建立 IPC 通信?什么场景下需要用到 IPC 通信?
651658
@@ -701,21 +708,21 @@ I am worker, PID: 42474
701708

702709
<p style="text-align:center; padding: 10px;">父子进程 IPC 通信交互图</p>
703710

704-
## Interview4
711+
## Interview5
705712

706713
> Node.js 是单线程还是多线程?进一步会提问为什么是单线程?
707714
708715
第一个问题,Node.js 是单线程还是多线程?这个问题是个基本的问题,在以往面试中偶尔提到还是有不知道的,Javascript 是单线程的,但是做为其在服务端运行环境的 Node.js 并非是单线程的。
709716

710717
第二个问题,Javascript 为什么是单线程?这个问题需要从浏览器说起,在浏览器环境中对于 DOM 的操作,试想如果多个线程来对同一个 DOM 操作是不是就乱了呢,那也就意味着对于DOM的操作只能是单线程,避免 DOM 渲染冲突。在浏览器环境中 UI 渲染线程和 JS 执行引擎是互斥的,一方在执行时都会导致另一方被挂起,这是由 JS 引擎所决定的。
711718

712-
## Interview5
719+
## Interview6
713720

714721
> 关于守护进程,是什么、为什么、怎么编写?
715722
716723
参考守护进程一节 [守护进程编写](#守护进程)
717724

718-
## Interview6
725+
## Interview7
719726

720727
采用子进程 child_process 的 spawn 方法,如下所示:
721728

@@ -730,7 +737,7 @@ $ node execfile
730737
简单的命令行交互
731738
```
732739

733-
## Interview7
740+
## Interview8
734741

735742
> 如何让一个 js 文件在 Linux 下成为一个可执行命令程序?
736743
@@ -752,7 +759,7 @@ $ hello
752759
hello world!
753760
```
754761

755-
## Interview8
762+
## Interview9
756763

757764
> 进程的当前工作目录是什么? 有什么作用?
758765
@@ -767,7 +774,7 @@ process.chdir('/Users/may/Documents/test/') // 设置当前进程目录
767774
console.log(process.cwd()); // 获取当前进程目录
768775
```
769776

770-
## Interview9
777+
## Interview10
771778

772779
> 多进程或多个 Web 服务之间的状态共享问题?
773780

0 commit comments

Comments
 (0)