如何在TCP 服务端程序退出的时候,关闭全部TCP连接,释放端口资源?

2023-05-04
阅读 5 分钟
1.8k
写了上面的代码,用于实现一个master-slave 架构的 TCP 服务,但是遇到了一个,就是我 CTRL+C 关了和这个进程组之后,进程没有全部关闭,并且还一直占用这端口 6001

手把手教你写一个自己的 master-slave 架构的 TCP 服务器

2023-05-04
阅读 5 分钟
1.2k
nginx、uvicorn、gunicorn 这些 HTTP sever 都是 master-slave 架构你好奇他们是怎么实现的吗?如果你是也是一个好奇宝宝,就接着往下看吧多进程参考:python 进程池的两种不同实现使用 multiprocessing.Pool 的实现 {代码...} 使用 ProcessPoolExecutor 的实现 {代码...} 上诉两种实现的潜在问题问题一:无法完美运行在...

python 进程池的两种不同实现

2023-05-04
阅读 1 分钟
742
方式一:使用 multiprocessing 库 {代码...} 方式二:使用 concurrent.futures 的 ProcessPoolExecutor {代码...}

linux 的代码规模有多大?

2023-05-04
阅读 6 分钟
647
clone linux 的源代码 {代码...} 然后使用 cloc 统计代码,结果如下: {代码...} 文件规模: {代码...}

multiprocessing.get_context 的参数可以填什么?

2023-05-02
阅读 1 分钟
1.3k
Q:python 的 multiprocessing.get_context 函数的参数,除了 spawn 和 fork 和 forkserver 和 threading 还可以填什么?A:multiprocessing.get_all_start_methods():返回一个列表,包含了当前系统支持的所有启动方法,包括上述四种和其他系统特定的启动方法。可以通过循环这个列表,尝试使用不同的启动方法创建进程,...

linux 统计 mp4 结尾文件的个数

2023-05-02
阅读 1 分钟
1.9k
这个命令首先使用 ls -l 列出当前目录下所有文件和文件夹的详细信息,然后使用 grep '\.mp4$' 筛选出以 .mp4 结尾的文件,并使用 wc -l 统计行数(即文件数量)。

linux 删除 .ts 结尾的所有文件

2023-05-02
阅读 1 分钟
1.5k
该命令使用 rm(remove)命令和通配符 * 来匹配当前目录下所有以 .ts 结尾的文件,并将其删除。如果想要删除其他目录中的 .ts 文件,可以将命令中的 * 替换为目录路径。

linux 子进程可以继承父进程正在监听的端口吗? 如何子进程关闭了继承的端口,父进程还能使用这个端口吗?

2023-05-02
阅读 1 分钟
1.7k
在 Linux 中,子进程可以继承父进程正在监听的端口,这是因为子进程会继承父进程打开的文件描述符,而监听的套接字是通过文件描述符来实现的。所以当子进程继承父进程打开的套接字时,也就继承了这个套接字对应的文件描述符,从而可以继续监听这个端口。

ubuntu22.04 可以安装 python3.7 吗?

2023-05-02
阅读 1 分钟
2.1k
具体怎么安装,可以参考:Ubuntu20.04 从源代码编译安装 python3.10 在 ubuntu22.04 上,我已经从源码编译安装了多个 python 了:3.7、3.8、3.9、3.11 {代码...}

python 的第三方虚拟环境和包管理器集合

2023-04-26
阅读 1 分钟
1.1k
有如下:Rye/poetry/pip/pipenv/pyenv/venv/virtualenv/pdm/hatch参考:Flask 之父用 Rust 编写 Python 包管理工具:Rye

eventlet 的 spawn_n 和 spawn 有什么区别?

2023-04-23
阅读 1 分钟
1.3k
spawn_n() 函数是异步的,它会在当前协程的事件循环中异步地创建一个新的协程。这意味着它会立即返回,并且不会等待新协程的执行。spawn_n() 的好处是它不会阻塞当前协程,因此可以在不影响其他协程的情况下创建新的协程。

drf serializer 前缀 get 是什么? 如何传递参数?

2023-04-23
阅读 1 分钟
870
在 DRF(Django Rest Framework)的 Serializer 中,以 get_ 开头的方法是 Serializer Method Field 的方法名前缀,用于自定义该字段的值。

Google Cloud Storage 对文件名的要求

2023-04-23
阅读 1 分钟
703
在 Google Cloud Storage 中,文件名必须满足以下条件:文件名必须为 Unicode 字符集的 UTF-8 编码。文件名长度必须在 1 到 1024 个字符之间。文件名可以包含斜杠 / 以创建目录结构。文件名不能以斜杠 / 开头。文件名不能包含以下字符:\0 (null),\,*,?,[,],:,;,,,.。因此,连字符 - 是被允许的文件名字符之一...

memcahed 的 java sdk 如何批量获取memcahed的key?

2023-04-23
阅读 1 分钟
627
Memcached Java客户端SDK提供了 BulkGetFuture 接口用于获取多个key对应的value,对应的方法是asyncGetBulk。

memcahed 的 python sdk 如何批量获取memcahed的key

2023-04-23
阅读 1 分钟
877
在 memcached 的 Python SDK 中,可以使用 get_multi 方法来获取多个 key 的值。这个方法接受一个 key 列表作为参数,并返回一个字典,包含每个 key 对应的值。字典中还包含一个 cas 字段,记录每个 key 对应的 cas 值,用于 cas 操作。在这个字典中,每个 key 对应的值可能为 None,表示该 key 不存在于 memcached 中。

k8s 如何在命令行使用 kubectl 查看一个 pod 的健康检查频率是多少?

2023-04-21
阅读 1 分钟
596
可以看到,在这个 pod 的 my-container 容器中,Liveness 和 Readiness 的检查频率都是 10 秒。其中,period=10s 指定了检查的频率。

milvus 使用 l2 欧式距离计算向量的距离,计算出来的距离的最大值是多少?

2023-04-20
阅读 1 分钟
1.8k
Q:归一化的是怎么操作的?调用 collection.search 之后获得的向量,已经是归一化了吗?还是需要自己对 milvus 的搜索结果再做归一化?

MySQL8 的分区功能相比 mysql5.7 有什么改进?

2023-04-19
阅读 1 分钟
1.2k
自动分区修复(Automatic Partition Repair):在 MySQL 8 中,如果分区表中的某个分区出现了损坏,MySQL 8 会自动将损坏的分区替换成新的分区,从而提高了分区表的可靠性。

github readme.md 切换中英文

2023-04-18
阅读 1 分钟
1.5k
解决办法,在 markdown 中加入一个 a 标签实现跳转然后在同级目录下放好

mac 使用 torchvision 的时候,会警告 image.so \ libc10.dylib

2023-04-18
阅读 1 分钟
1.6k
macbook pro Apple Silicon M1 使用 torchvision 的时候,会报错 Symbol not found \ image.so \ libc10.dylib

pytorch 的 torchvision 的 transforms.Resize 会修改图片比例吗?

2023-04-17
阅读 1 分钟
2.5k
是的,torchvision 的 transforms.Resize 可以修改图像的大小和比例。如果您只指定了一个维度(例如高度),则另一个维度(例如宽度)将按比例调整以保持原始图像的纵横比。如果您指定两个维度,则图像将被拉伸以填充新尺寸。

归一化是什么意思?numpy 如何实现归一化?

2023-04-17
阅读 1 分钟
2.1k
归一化是指将数据缩放到特定的范围内,通常是将数据映射到 [0,1] 或 [-1,1] 区间内。这种缩放的目的是统一数据的尺度,使得不同特征之间可以进行比较和处理。

numpy 的 astype 是如何把 np.uint8 是如何转成 np.float32

2023-04-17
阅读 1 分钟
2.1k
在 NumPy 中,使用 astype 函数可以将数组的数据类型转换为指定的类型。具体地说,将 np.uint8 类型的数组转换为 np.float32 类型的数组,可以使用以下代码:

python 的 PIL 的 resize 的默认插值是什么?

2023-04-17
阅读 3 分钟
1.8k
chatGPT 告诉我,PIL 的 resize 的默认插值是 BILINEAR事实真是如此吗?看一下 PIL 的源码:PIL/Image.py {代码...} 但没有指定 resample 的时候,并且 mode 不含 ; 的时候, 就是用 BICUBIC, BICUBIC 是 三次样条插值

transforms.Resize 和 PIL 的 resize 有什么区别?

2023-04-17
阅读 1 分钟
1.8k
A:transforms.Resize 和 PIL.Image.resize 都可以用于调整图像大小,但它们的实现方式略有不同,主要体现在以下几个方面:

torchvision 的 transforms.ToTensor 干了什么事情?

2023-04-17
阅读 1 分钟
2k
A:torchvision 的 transforms.ToTensor() 是将 PIL Image 或 numpy.ndarray 转化成 torch.FloatTensor 数据类型的方法。这个方法的主要功能是:

如何把 image.transpose((2, 0, 1)) 之后,再复原

2023-04-17
阅读 1 分钟
1.9k
在对图像进行转置操作时,可以使用 numpy.transpose 函数将图像的通道轴与高度轴、宽度轴进行交换,从而达到目的。例如,如果要将一个 RGB 图像转换为通道-高度-宽度的数组,可以使用以下代码:

计算向量距离的时候,l2和 ip 哪个更好?有什么区别?应该如何选择?

2023-04-17
阅读 1 分钟
3.8k
A:计算向量距离的时候,L2范数和内积(IP)都是常用的度量方式。它们的计算方法和意义有所不同,因此在不同的场景下选择不同的度量方式会更加合适。

为什么milvus 计算出来的欧式距离和实际不符合?

2023-04-17
阅读 1 分钟
1.7k
和 milvus 的 "metric_type": 'L2' 返回结果不一样,milvus 返回的 distance 要比我自定义的 l2 结算结果小很多是怎么回事?

redis 集群常见问题 QA

2023-04-14
阅读 4 分钟
1.2k
A:Redis集群是通过数据分片(sharding)来实现数据在不同节点间的分配。Redis集群中有16384个hash slot(槽位),每个节点可以处理其中的一部分槽位,不同节点之间可以共同处理这16384个槽位。当一个键值对需要被放到Redis集群中时,Redis会先计算该键值对的key对应的hash值,然后将其放到对应的槽位中。Redis集群的每...