- 博客(67)
- 资源 (8)
- 收藏
- 关注
原创 python 枚举(enum)
python 的枚举是使用类来实现的,类属性是枚举名称,属性值对应枚举值。Enum 的使用有如下特点:枚举类不允许定义相同枚举名称,但不同的枚举名称可以有相同的值,后者相当于前者的别名。枚举值不能被修改,枚举值一旦被修改,就会引发 AttributeError 异常。两个不同的枚举类,枚举名称和枚举值即便相同,在比较时也是不相等的。枚举类的一个枚举有 name(标签)和 value(枚举值)两个属性,使用枚举值时,务必通过 value 获取枚举值。
2024-11-06 18:32:03 298
原创 Python 函数类型
闭包(Closure)是指一个函数内部定义的函数,这个内部函数可以引用外部函数的变量。闭包不仅可以捕获这些变量,还可以在外部函数返回后继续使用它们。闭包常用于需要封装一些状态或行为的场景中。包含内嵌函数的函数。定义在外部函数内部并且引用外部函数的变量。内嵌函数引用的、定义在外部函数中的变量。一个函数可以返回另一个函数,返回的函数可以访问到外部函数的变量。def make_counter(): # 外部函数count = 0 # 自由变量def counter(): # 内嵌函数。
2024-11-06 17:52:47 1007
原创 SQLAlchemy 介绍与实践
SQLAlchemy 是一个 ORM 框架。SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射(ORM)库。它允许你通过 Python 代码来与关系型数据库交互,而不必直接编写SQL语句。简单介绍一下对象关系映射吧,对象关系映射(英语:Object Relational Mapping,简称 ORM,或O/RM,或O/R mapping),是一种程序设计技术, 用于实现面向对象编程语言里不同类型系统的数据之间的转换。
2024-11-05 16:23:28 689
原创 协程在多个模型流式输出中的使用实例
1. 使用 fastapi api 的形式处理任务,每个任务使用协程的方式,处理多个流式输出。该方式支持多个 fastapi 并发请求。2. 开启多个线程执行任务,每个任务使用协程的方式,处理多个流式输出。
2024-10-22 17:07:56 306
原创 python 安装包 site-packages
当我们通过 pip 或其他方式安装一个 Python 包时,这些包的文件就会被复制到 site-packages 文件夹下。site-packages 文件夹通常位于 Python 的安装目录下的 Lib 文件夹内。具体的路径会根据你使用的操作系统和 Python 版本的不同而有所不同。
2024-09-27 15:35:09 1635
原创 SSH 服务配置与 Network error: Connection refused 解决
Ubuntu 虚拟机 IP 为 192.168.17.101(SSH 启动时,使用该 IP 地址),主机网络适配器 VMnet8 IP 地址同样为 192.168.17.101。此情况下,关闭 Ubuntu 虚拟机,在 Windows 终端 ping 192.168.17.101,显示可以 ping 通,但是 ssh 失败。首先关闭 Ubuntu 虚拟机,然后在 Windows 终端 ping Ubuntu 虚拟机,如果通了,则说明 IP 冲突了。将仅允许用户使用 SSH 后面追加admin用户。
2024-09-26 10:46:40 1031
原创 VMware 虚拟机配置固定 IP
参考:https://blog.csdn.net/laosun12/article/details/102733608。参考:https://blog.csdn.net/jsryin/article/details/123304582。打开【控制面板】->【网络和Internet】-> 【网络和共享中心】,点击【更改适配器选项】,打开网络配置。电脑右下角打开【网络信号】->【网络和 Internet 设置】->【更改适配器选项】,打开网络配置。点击适配器 VMnet8,修改 IP 和 DNS 相关配置。
2024-09-25 16:38:30 2061
原创 python time datetime timedelta
时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型格式化的时间字符串(Format String):“1999-12-06”%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%I 12小时制小时数(01-12)%M 分钟数(00=59)
2024-06-13 18:14:33 356
原创 RBAC 模型梳理
权限是资源的集合,这里的资源指的是软件中所有的内容,包括模块、菜单、页面、字段、操作功能(增删改查)等等。页面权限操作权限和数据权限。
2024-06-07 11:19:48 3836
原创 python 实现用户登录
特点和使用:Token 可以是任何格式的数据字符串,不仅限于JWT。Token 可能仅作为引用存储在服务器上,服务器通过该引用来获取存储的状态信息。经统一的身份验证后,Token 用来管理用户会话。可以通过 HTTP headers、URL 参数或请求体传输。
2024-04-25 11:25:17 1134 1
原创 NISEdit 制作安装包
使用 NIS Edit 向导模式新建脚本时,需要依赖改编译器。NIS Edit 会自动加载该编译器。下载地址:https://nsis.sourceforge.io/Download下载并安装 NSIS 编译器。
2024-04-23 17:08:15 1383
原创 python 队列
Queue.qsize() 返回队列的大小Queue.empty() 如果队列为空,返回True,反之FalseQueue.full() 如果队列满了,返回True,反之False,Queue.full 与 maxsize 大小对应Queue.get([block[, timeout]])获取队列,timeout等待时间Queue.get_nowait() 相当于Queue.get(False),非阻塞方法Queue.put(item) 写入队列,timeout等待时间。
2024-02-20 11:12:53 7114 3
原创 python 多线程
python 多线程是指在同一个程序中同时运行多个线程,每个线程都可以独立执行不同的任务。python 中的多线程实现可以通过 threading 模块来实现。
2024-01-29 10:18:41 1307
原创 python sqlite3 线程池封装
然后,在执行数据库操作之前,我们使用 lock.acquire() 获取锁,确保只有一个线程可以执行数据库查询。因为在python操作某个数据库的数据的线程必须和创建数据库的线程是同一个线程,不然就会出现异常。check_same_thread=False的作用: python sqlite3的线程模式默认串行, 如果需要再多线程中用一个句柄,需要加此参数,否则将出现上述错误。这种方式可以确保在并发访问sqlite3数据库时,每次只有一个线程可以执行数据库操作,避免了数据竞争和不一致性的问题。
2024-01-24 14:44:20 1509
原创 Git 操作
首先需要从主库 fork 代码到用户空间下。fork =》拉取代码,应该拉取用户的代码吧首先查看 git remote 信息添加主库 upstream。(是否需要为主库添加 upstream 并且推到远程。禁止 push。
2024-01-19 12:29:46 699
原创 http 返回状态
100 Continue:服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。101 Switching Protocols :服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。
2023-12-15 10:23:25 708
原创 fastapi 实践
URL的尾部,即(?如果浏览器地址栏中给出的 URL 是 http://localhost:8000/hello/Ravi/20,Ravi和20的数据将被分别分配给变量name和age。在下面的例子中,一个名为 “X-Web-Framework “的自定义头和一个预定义头 “Content-Language “被添加到操作函数的响应中。如果浏览器的URL包含长度小于3或大于10的参数,如(http://localhost:8000/hello/Tutorialspoint),则会出现适当的错误消息。
2023-12-06 19:05:37 1306
原创 flask 异步编程 asyncio
在编写Web应用程序时,有时需要调用可能需要一些时间的外部服务或执行耗时操作的函数。在传统的同步编程中,这将导致整个应用程序阻塞,直到该函数返回结果。为了提高应用程序的性能和响应能力,我们可以使用异步编程。异步编程允许同时处理多个任务,而不会阻塞其他代码的执行。在 Python 中,我们可以使用 asyncio 模块来实现异步代码。asyncio 提供了一种基于协程的方法来编写异步代码,通过使用 async 和 await 关键字来标识异步函数。
2023-12-05 17:30:47 4049
原创 python 协程
协程,又称微线程,纤程。英文名Coroutine。协程不是计算机提供的,是人为创造的上下文切换技术,也可以被称为微线程。简而言之 其实就是在一个线程中实现代码块相互切换执行。
2023-11-30 09:22:06 1200
原创 tokenizers Tokenizer 类
Tokenizer 函数构造一个分词器对象。分词方式主要有word-level、subword-level、char-level三种,其中,subword-level分词方式又有四种不同实现的方法:BPE、Unigram、WordPiece、SentencePiece。参数 model 表示分词器使用的分词方式,接受一个Model对象,这里主要实现了 word-level 的分词方式以及 subword-level 的分词方式。
2023-11-21 14:35:23 967
原创 requests 实践
r.json() #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常。cookie:保存的用户登录信息,比如做一些充值功能,但是需要用户已经登录,需要 cookie 信息的请求信息传输。当协议是 https 的协议的时候,有些系统,需要校验 https 证书,如果校验失败,可能会有警告提示等信息。params:请求数据中的链接,常见的一个 get 请求,请求参数都是在 url 地址中。stream :文件下载功能,通过请求方式,下载文件。
2023-10-27 14:25:52 183
原创 flask 实践
2.当访问 download 路由时,会触发download_file 函数,该函数使用send_file 方法将文件发送到客户端以进行下载。3.as_attachment=True 表示将文件作为附件下载,而不是在浏览器中直接打开。浏览器中输入 http://192.168.98.169:9001/download。1.filename 变量中提供要下载的文件的路径。
2023-10-27 13:49:37 622
原创 pydantic 实践
name: str这里,我们给出一个较为复杂的基于pydantic的schema定义实现样例。name : strname : strname: str需要注意的是,我们除了可以一步一步地实例化之外,如果我们已经有了一个完整的Company的内容字典,我们也可以一步到位地进行实例化。
2023-10-27 10:27:28 860
原创 python 离线安装
下载".whl"文件,网址:PyPI · The Python Package Index。下载".tar.gz"文件,网址:PyPI · The Python Package Index。这种方法就不会报SSL的错误了,但有的包只有.whl文件,没有.tar.gz文件。最后,需要注意的是,有些包由于系统的不同,而不适用,要对这些包做单独的下载。这种方法好像也要联网,有时会报SSL error。将项目整个压缩,上传到服务器上,解压,然后执行命令。项目根目录下执行命令。
2023-10-27 10:11:39 126
原创 HTTP 协议(二)HTTPS
使用自己证书的私钥解密出 PreMasterSecret服务端根据之前的随机数(ClientRnd ,ServerRnd,PreMasterSecret )和约定的加密算法,生成用于加密后续传输数据的会话密钥 SessionSecret。计算之前所有接收信息的 hash 值,即为serverHash。然后解密客户端发送encrypted_handshake_message的ClientHash,验证数据和密钥正确性(即serverHash ==ClientHash 是否为true);
2023-07-26 15:53:50 60
原创 TCP 协议(五)异常报文
1.[TCP Dup ACK xxx#y](重复应答)2.[TCP Fast Retransmission](快速重传)3.[TCP Retransmission](超时重传)4.[TCP Out-Of-Order](报文乱序)5.[TCP Previous segment not captured](报文缺失)
2023-07-12 16:55:58 1387
原创 TCP 协议(四)重传与超时
本博客从TCP重传、超时、拥塞控制、流量控制等方面进行了深入探讨,以帮助读者更好地理解TCP协议在网络传输过程中如何确保数据的可靠性和高效性。我们详细分析了各种重传原理、触发条件和优化策略,以及超时检测、动态调整和与重传的关系。同时,我们还探讨了拥塞控制与流量控制在调整网络传输速率、协同作用以确保网络稳定性的重要性。在实践中,我们针对不同的网络环境提供了优化策略,并对常见性能问题进行了分析和解决。此外,我们还展望了未来TCP重传与超时的发展趋势,为进一步提高网络性能提供了指导。
2023-07-12 16:53:58 4592
原创 TCP 协议(三)十种核心机制
1.确认应答(可靠机制)2.超时重传(可靠机制)3.连接管理(可靠机制)4.滑动窗口(效率机制)5.流量控制(效率机制)6.拥塞控制(效率机制)7.延时应答(效率机制)8.捎带应答(效率机制)9.面向字节流(粘包处理)10.特殊情况(异常处理)
2023-07-10 18:34:47 1421
原创 TCP 协议(二)连接与断开
1.确认双方的接受和发送能力是否正常。2.指定自己的初始化序列号,为后面的可靠传送做准备。序列号能够保证数据包不重复、不丢弃和按序传输。3.如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。接下来以三个方面分析三次握手的原因:三次握手才可以阻止重复历史连接的初始化(主要原因)三次握手才可以同步双方的初始序列号三次握手才可以避免资源浪费总结:两次握手:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
2023-07-10 18:31:58 5074
原创 TCP 协议(一)报文结构
TCP 提供面向连接的通信传输,面向连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。
2023-07-07 17:43:43 7500
原创 网络体系结构
与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。
2023-07-07 17:42:05 91
原创 VLC 使用技巧
VLC Live555 流传输模式是 HTP,本文修改为 RTP over RTSP (TCP) 模式。本文介绍配置 VLC 以播放基于 TCP 的 RTSP/RTP 流。在穿过一个没有开放 UDP 的防火墙 / 路由的情况下这种模式的流被认为表现的更好。(笔者 VLC 版本 3.0.18,64 位 Windows 10 专业版下配置成功)以下未验证:默认情况下,VLC 配置的缓冲很小。这将导致播放起来断断续续的,随着时间推移这个会慢慢消除,因为 VLC 会自动把这一缓存给调大。
2023-07-07 14:09:10 1349
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人