超级详细的Lua语言的基础教程
https://blog.csdn.net/qq_43594278/article/details/116018869
python asyncio
例子1234567import asyncioasync def main(): print("hello") await asyncio.sleep(1) print("world")asyncio.run(main())
主要函数task = asyncio.create_tas()res = await asyncio.gather(task1, task2) # res: list
获取返回值res = await task
yazi框架学习笔记
主线程
监听和建立客户端的连接
接收客户端的请求数据,创建一个任务,该任务携带请求数据,并把该任务放入任务队列
告诉分发线程,有请求任务过来了,叫他赶紧去处理
重复上面三个步骤
注意:主线程不处理具体请求
分发线程
查看任务队列,看是否有请求任务?没有任务则继续睡觉,否则把任务取出来,然后分发给线程池
线程池有空闲的线程,则把该任务交给空闲的线程处理,否则该任务乖乖待在队列里等待,直到有空闲的线程为止
重复上面两个步骤
注意:分发线程也不处理具体请求
工作线程
执行任务
销毁任务
重复以上两个步骤
注意:工作线程处理具体请求
select、poll、epoll, 图解
io多路复用 核心代码 & 图解 (select 模型)
Select模型该模型的图解大致如下
Select模型存在以下缺点:
默认情况下,fdset只有1024个bit位,也就是说只能1024个连接。
每次select函数调用后,都需要检测所有文件描述符。
每次select函数调用时,内核都需要进行拷贝文件描述符集合。
参描较多,较难理解。
Poll模型Poll模型与select模型的运行规则基本一致。
该模型的图解大致如下
Poll模型相比select模型,有以下优点:
将文件描述符交给结构体数组进行记录和管理,可连接数量可自定义,并且大大增加。
参数相对更简单易懂。
epoll模型epoll是典型的用于高效地处理大量并发连接的模型
该模型的图解大致如下
epoll模型相比select、poll模型,有以下优点:
支持边缘触发。当recv函数一次性无法读取全部数据的时候,可以在下次循环中继续读取数据,有效地避免粘包等问题。
使用红黑树管理文件描述符和对应事件。在连接数巨大的时候,epoll的红黑树数据结构可以快速地实现节点的改查。包括相应事件发生的时候,内 ...
deepsort主要代码
app.py
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002 ...
Anaconda从下载到环境变量配置(windows)
现在就是最重要的部分:配置环境变量1、现在把三个目录复制下来备用找到你电脑里面anaconda安装的目录 anaconda/scripts的目录
① anaconda安装的目录 D:\Download\ANACONDA
② anaconda/scripts的目录 D:\Download\ANACONDA\Scripts
③ bin的目录 D:\Download\ANACONDA\Scripts\Library\bin
2、配置环境变量首先,配置系统变量,如下:
opencv打开摄像头并保存为本地mp4
12345678910111213141516171819202122232425import cv2# 打开摄像头url = "rtsp://admin:qwer1234!.@192.168.1.65:554"cap = cv2.VideoCapture(url)width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fourcc = cv2.VideoWriter_fourcc(*"mp4v")out = cv2.VideoWriter('test.mp4', fourcc, 20, (width, height))while True: ret, frame = cap.read() if ret: out.write(frame) cv2.imshow('capture', frame) if cv2.waitKey ...
超详细Pyinstaller打包exe+反编译Pyinstaller打包的exe教程+防止反编译教程
https://blog.csdn.net/feelinghappy/article/details/109328697
open vn设置 (亲测通过)
https://blog.csdn.net/rockage/article/details/127190263
通过sh脚本查找某一个端口的进程并杀死
sh12345678910111213#!/bin/bashport=8080 # 将8080替换成你想要查找和杀死的端口号# 查找端口的进程IDpid=$(lsof -ti :$port)# 杀死进程if [[ -n "$pid" ]]; then echo "Killing process $pid listening on port $port" kill -9 $pidelse echo "No process listening on port $port"fi