Skip to content

Commit f32a8aa

Browse files
优化文档
1 parent 5c60b77 commit f32a8aa

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

docs/docs/后端通识/接口开发.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,16 @@ async def predict(x:float) :
167167

168168
前端大部分的请求是通过浏览器发送请求到后端,后端接收请求并处理,最后返回响应给前端。
169169

170+
:::tip
171+
为了最大限度压榨计算的能力。Uvicorn可以启动多个相同的实例.
172+
173+
推荐通过命令行启动多work:`uvicorn app:app --host 0.0.0.0 --port 8000 --workers 4`
174+
175+
Uvicorn多Worker通过多进程,创建多个完全一样的副本,运行时不同副本完全隔离。因此全局变量的正确做法是用Redis等外部存储。
176+
177+
多Worker监听同一个端口,如何调度?不是Uvicorn自己实现,调度由操作系统内核完成。
178+
:::
179+
170180
请求是一种相当复杂的数据类型。
171181

172182
### 请求方法

docs/docs/选择编程语言/C/8数组和指针.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ title: 数组和指针
55

66
构造数据是指由用户可以定义的、非内置的数据类型。主要有数组、结构体、联合体。
77

8-
98
## 数组
109

1110
数组属于**构造数据类型**,是一组`相同类型`数据的`连续内存`集合。
@@ -620,6 +619,7 @@ char c = 'a'; // 占用1个字节
620619

621620
- 在计算机中所有数据都存储在内存单元中,而每个内存单元都有一个对应的地址, 只要通过这个地址就能找到对应单元中存储的数据.
622621
- 由于通过地址能找到所需的变量单元,所以我们说该地址指向了该变量单元。将地址形象化的称为“指针”
622+
- 指针的本质是对内存访问的抽象,理解了内存的原理,也就理解了指针。人们往往误以为指针就是内存地址,其实二者是有区别的。指针是一种类型,它的值是内存地址,而不是数据。所以指针变量存放的是内存地址,而不是内存地址对应的数据。内存地址是基于字节的,但由于指针具有类型,所以它指向了一段内存,这段内存的大小取决于其类型,而指针存储的就是这段内存的起始地址。
623623

624624
- 内存单元的指针(地址)和内存单元的内容是两个不同的概念。
625625
![](https://images.weserv.nl/?url=https://img-blog.csdnimg.cn/img_convert/540000371e0da0fb105248642ef9db24.png)
@@ -803,7 +803,7 @@ int *****m2; //取值*****m2
803803
> - 注意: 数组名 a 不代表整个数组,只代表数组首元素的地址。
804804
> - “p=a;”的作用是“把 a 数组的首元素的地址赋给指针变量 p”,而不是“把数组 a 各元素的值赋给 p”
805805
806-
##
806+
807807
808808
## 指针访问数组元素
809809

0 commit comments

Comments
 (0)