
Python
文章平均质量分 62
Python从基础到实战,冲击高薪offer
写bug如流水
励志成为百万年薪架构师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【FastAPI】解决下载文件预处理时间较长的问题:FastAPI 实现异步任务处理
用户请求下载:当用户请求下载文件时,后端会启动一个后台任务进行文件预处理。后台任务处理:文件预处理任务会在后台独立执行,不会阻塞主线程。任务完成后,文件会被保存到服务器的指定目录。用户下载文件:用户可以通过访问来下载文件。如果文件已准备好,系统会返回文件内容;如果文件尚未准备好,则返回 404 错误。通过 FastAPI 的后台任务(BackgroundTasks),我们可以轻松地将长时间运行的任务(如文件预处理)异步化,从而避免阻塞主线程,提高系统的响应速度和用户体验。原创 2024-11-14 16:58:21 · 1262 阅读 · 0 评论 -
【设计模式】深入理解Python中的组合模式(Composite Pattern)
组合模式是一种结构型设计模式,它允许你将对象组合成树形结构,以表示部分和整体的层次关系。组合模式使得客户端对单个对象和组合对象的使用方式保持一致,从而简化了客户端代码。首先,定义组件类,它是叶子类和组合类的共同接口。# 组件类passpasspass。原创 2024-10-17 17:13:22 · 1402 阅读 · 0 评论 -
【设计模式】深入理解Python中的过滤器模式(Filter Pattern)
过滤器模式是一种行为型设计模式,允许用户通过一组标准对对象集合进行筛选。它使用多个标准进行过滤,并提供了一个组合的方式来对数据进行选择。首先,我们定义一个User类,表示用户对象。接下来,定义一个过滤器接口,声明过滤方法。# 过滤器接口pass定义一个上下文类,用于管理用户集合和应用过滤器。原创 2024-10-17 17:12:05 · 1296 阅读 · 0 评论 -
【设计模式】深入理解Python中的桥接模式(Bridge Pattern)
桥接模式是一种结构型设计模式,旨在将抽象部分与它的实现部分分离,使它们可以独立地进行变化。简单来说,桥接模式通过创建独立的抽象层和实现层,让它们分别可以独立扩展,不互相影响。这种模式的关键在于将一个大类拆分成多个更小的类,并通过“桥接”让这些类协同工作,从而减少子类的数量并避免层次过于复杂。首先,我们定义一个接口,它代表系统的实际功能实现部分。在本例中,假设我们要实现不同的绘图工具(比如画笔、喷枪),每个工具的操作不同,但它们都有一个绘制功能。# 实现者接口pass定义了系统的高层操作接口,持有。原创 2024-10-16 13:36:44 · 845 阅读 · 0 评论 -
【设计模式】深入理解Python中的适配器模式(Adapter Pattern)
适配器模式是一种结构型设计模式,它允许我们将一个类的接口转换成另一类的接口,使得原本由于接口不兼容而无法一起工作的类可以协同工作。适配器模式的核心思想是创建一个包装类,该类包装了现有的类,并通过包装的方式为客户端提供期望的接口。pass适配器类将Adaptee的方法转换为Target的request()方法。原创 2024-10-16 12:00:12 · 1335 阅读 · 0 评论 -
【设计模式】深入理解Python中的原型设计模式
通过复制现有对象来创建新的对象。原型模式在某种程度上是一种浅拷贝或深拷贝技术,通过复制一个对象的所有属性而无需重新执行构造函数。__copy__()原创 2024-10-16 11:41:33 · 1708 阅读 · 0 评论 -
【设计模式】深入理解Python中的抽象工厂设计模式
抽象工厂模式是一种提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体类的设计模式。抽象工厂允许客户端通过抽象接口创建对象组,而不需要了解每个对象的具体实现。首先,我们定义抽象工厂接口,负责创建不同类型的产品。# 抽象工厂类passpass然后,我们定义抽象产品接口。ProductA和ProductB,分别提供它们的抽象类。# 抽象产品 Apass# 抽象产品 Bpass。原创 2024-10-15 09:04:15 · 1028 阅读 · 0 评论 -
【设计模式】Python 设计模式之建造者模式(Builder Pattern)详解
建造者模式是一种创建型设计模式,用于将一个复杂对象的构建过程分解为多个步骤,并通过一个**指挥者(Director)**来按照这些步骤来构造对象。建造者模式的核心思想是将对象的构造与对象的表示(如何创建对象)分离开来,使得同样的构建过程可以生成不同类型或配置的对象。房子是我们需要构建的复杂对象,因此我们首先定义一个House类。接下来,定义Builder抽象类,它包含构建房子不同部分的抽象方法。passpasspasspasspassDirector类负责控制构建过程,它接受一个Builder。原创 2024-10-15 09:01:17 · 1606 阅读 · 0 评论 -
【设计模式】深入理解 Python 单例模式:从原理到实现
单例模式的目的是保证一个类在整个程序中只有一个实例存在。举个现实生活中的例子,假设有一个管理数据库连接的类,在程序运行的过程中,我们可能需要多次访问数据库,但为了避免频繁创建和销毁连接资源,我们希望所有的数据库操作都通过同一个连接完成。这时,单例模式就派上用场了。单例模式可以确保一个类有且只有一个实例被创建,并且提供一个全局访问该实例的方式。原创 2024-10-15 08:58:27 · 2100 阅读 · 0 评论 -
【设计模式】Python 后端开发中的工厂模式设计与实现
工厂模式(Factory Pattern)是一种创建型设计模式,它通过将对象的创建逻辑封装在一个工厂类中,从而为我们提供了一种无需显式指定创建对象的具体类的方法。通过工厂模式,开发者可以更灵活地控制对象的创建过程,同时避免代码中大量的new操作或直接实例化某个类。工厂模式是 Python 后端开发中一个非常有用的设计模式,尤其在面对多种对象创建需求时,它提供了很好的扩展性和灵活性。通过将对象创建的逻辑抽象化,工厂模式使得我们能够更灵活地管理系统中不同的对象及其依赖关系,并减少代码的耦合度。原创 2024-10-12 18:44:46 · 1412 阅读 · 0 评论 -
【GUI】使用 PySide6 开发图片左右切换软件
通过本文的学习,我们使用 PySide6 成功开发了一个简单的图片浏览器。这个应用展示了如何使用按钮和标签创建一个易于操作、界面自适应的图片切换程序。你可以根据自己的需求进一步扩展此项目,例如添加更多图像处理功能或优化界面设计。原创 2024-10-12 18:42:29 · 789 阅读 · 0 评论 -
【GUI】使用 PySide6 创建一个简单的计算器
在这篇博客中,我们展示了如何使用 PySide6 创建一个简单的计算器应用程序。通过这个项目,你可以更好地理解如何构建 GUI 应用程序的基本组件和布局管理。希望你能在这个基础上进行更多的扩展和改进!原创 2024-10-11 11:45:52 · 612 阅读 · 0 评论 -
【GUI】PyQt6 与 PySide6 详解:如何选择合适的 Python GUI 开发工具
Qt 框架Qt 是一个用于开发跨平台应用程序的 C++ 库,支持 Windows、Linux、macOS 以及移动平台。Qt 提供了大量丰富的 GUI 控件和工具,同时也支持 OpenGL、3D 图形、XML 解析、网络编程、数据库访问等广泛的功能。Qt 的核心特点在于它的可扩展性和跨平台性,尤其是通过图形用户界面(GUI)库,开发者可以一次编写代码并在多个操作系统上运行。PyQt6PyQt是由 Riverbank Computing 开发和维护的 Qt 库的 Python 绑定。最新版本是PyQt6。原创 2024-10-10 18:48:15 · 6874 阅读 · 0 评论 -
【GUI】PyQt6 和 Qt6:深入对比与选择指南
如前所述,Qt6是一套强大的跨平台 C++ 框架,广泛应用于桌面和移动平台的高性能应用开发。它拥有高度优化的图形渲染引擎,支持 OpenGL、Vulkan 等现代图形 API,并提供了网络、数据库、线程、GUI 组件等完整的工具集。而PyQt6则是 Qt6 的 Python 绑定,它在提供 Qt6 所有功能的同时,利用 Python 的灵活性,使得开发者能够快速进行原型设计和开发。编程语言:Qt6 使用 C++,PyQt6 使用 Python。性能。原创 2024-10-10 17:29:44 · 2552 阅读 · 0 评论 -
【Python】如何进行数据库表迁移:一种简单的方法
数据迁移是项目开发中常见的需求,本文展示了如何使用 Python 和 SQLAlchemy 实现从源数据库到目标数据库的数据迁移。通过这种方式,可以避免手动导入导出数据的麻烦,同时保证了数据的完整性和一致性。你可以根据业务需求扩展迁移逻辑,如数据转换、错误处理等。如果数据量非常大,可以考虑分批迁移,或者使用更高效的批量插入方法。希望这篇文章能为你提供一个简单、实用的数据库迁移思路!原创 2024-10-10 17:23:00 · 1380 阅读 · 0 评论 -
【Pydantic】如何在 Pydantic 中实现严格模式校验
Pydantic 支持自定义数据类型,并允许为其定义自己的校验逻辑。自定义数据类型非常适合那些特定领域的严格数据规则。# 正确的用例# 错误的用例model = MyModel(color="123456") # 抛出 ValidationError通过自定义类型,我们可以为HexColor添加非常具体的规则,并确保这些规则在模型校验时生效。Pydantic 是一个强大且灵活的工具,能够帮助开发者快速构建数据模型并进行高效的数据校验。原创 2024-10-09 11:05:30 · 1120 阅读 · 0 评论 -
【Python】使用 Pydantic + SQLAlchemy + MySQL 实现自动记录创建时间和更新时间
接下来我们创建一个基础模型,该模型包含created_at和updated_at字段。通过SQLAlchemy的Column和DateTime,可以自动处理这些字段。# 创建带有时间戳的基础模型# 用户自定义基础类,所有模型继承自该类__abstract__ = True # 该模型不被映射到数据库下面我们定义一个用户模型User,它继承了BaseModel,并且包含用户的name和email字段。# 用户模型# 用户字段通过以上步骤,我们实现了在使用MySQL作为数据库时,结合。原创 2024-09-29 16:22:32 · 1543 阅读 · 0 评论 -
【Python】Python 3.12 新特性与语法改进详解
Python 3.12 带来了丰富的新特性和改进,使得开发体验更佳,性能更强大。从异常处理到类型提示,再到并发编程的增强,这些改进展示了 Python 社区不断致力于提升语言易用性和高效性的决心。对于开发者来说,升级到 Python 3.12 可以带来明显的编程便利性和性能收益。如果你还没有体验过 Python 3.12,不妨试试,感受一下这些新特性带来的改变!Python 3.12 官方文档如何从 Python 3.10 升级到 Python 3.12。原创 2024-09-26 16:30:09 · 1811 阅读 · 0 评论 -
【Python】Python闭包的妙用与注意事项
闭包是函数和其词法环境的组合,它使得内部函数可以访问其外部函数的变量,即使外部函数已经执行完毕。原创 2024-09-26 11:49:36 · 888 阅读 · 0 评论 -
【Python】Python装饰器的妙用及注意事项
装饰器是Python中一个非常强大的特性,它允许我们在不修改原有函数代码的情况下,为函数动态地添加额外功能。装饰器可以用于日志记录、性能测试、参数校验、缓存结果等多种场景。本文将介绍Python装饰器的妙用,并提供一些使用装饰器时的注意事项。原创 2024-09-26 11:35:26 · 598 阅读 · 0 评论 -
【FastAPI】使用FastAPI和Redis实现实时通知(SSE)
Server-Sent Events(SSE)是一种通过HTTP连接从服务器向客户端发送实时更新的技术。与WebSocket相比,SSE的实现更加简单,适用于单向数据流场景。服务器可以持续向客户端推送数据,而无需客户端不断发起请求。通过以上步骤,我们实现了一个使用FastAPI和Redis的实时通知系统。该系统能够根据心跳状态,持续推送通知,直到心跳到期为止。你可以根据具体需求进一步扩展这个示例,例如添加用户身份验证、处理不同类型的通知等。希望这篇文章对你有所帮助!原创 2024-09-25 17:06:16 · 1853 阅读 · 0 评论 -
【FastAPI】使用 SQLAlchemy 和 FastAPI 实现 PostgreSQL 中的 JSON 数据 CRUD 操作
在现代 web 开发中,处理 JSON 数据变得越来越普遍。本文将指导你如何使用 FastAPI 和 SQLAlchemy 实现对 PostgreSQL 数据库中 JSON 数据的增删改查(CRUD)操作。原创 2024-09-24 18:07:57 · 1454 阅读 · 1 评论 -
【FasAPI】使用FastAPI来实现一个基于RBAC(基于角色的访问控制)的用户权限控制系统
使用FastAPI来实现一个基于RBAC(基于角色的访问控制)的用户权限控制系统。以下是一个简单的实现方案,涵盖了用户管理、角色管理和权限管理的基本功能。原创 2024-09-23 11:26:28 · 1742 阅读 · 0 评论 -
【FastAPI】FastAPI可以提高开发效率的 “奇技淫巧”
FastAPI 内置了丰富的响应类型,允许自定义返回格式。原创 2024-09-19 08:34:26 · 712 阅读 · 0 评论 -
【FastAPI】使用 FastAPI 和 SQLAlchemy 记录数据库操作日志:基于装饰器的实现
通过本文的示例,我们展示了如何在 FastAPI 中结合 SQLAlchemy 使用装饰器来记录数据库的增删改操作日志。这种方法的优势在于它与业务逻辑分离,使用简单且易于扩展。此外,日志表中保存了修改前后的数据,使得系统在调试和审计时更加高效和透明。希望这篇文章能帮助你在项目中实现类似的功能!如果你有任何问题或建议,欢迎在评论区留言。原创 2024-09-18 10:15:45 · 1810 阅读 · 0 评论 -
【FastAPI】服务器使用SSE实现客户端之间的广播和点对点功能
负责生成 SSE 消息流。clients字典用于管理每个连接的客户端,允许广播和点对点消息。每个客户端都可以通过唯一 ID 建立连接,发送或接收消息。这种方式可以轻松扩展以支持更多的业务逻辑,例如认证、分组广播等。原创 2024-09-14 11:45:22 · 1010 阅读 · 0 评论 -
【FastAPI】实现服务器向客户端发送SSE(Server-Sent Events)广播
在FastAPI中实现服务器向客户端发送SSE(Server-Sent Events)广播,可以通过以下步骤实现。SSE是一种服务器推送技术,允许服务器发送实时数据到客户端,通常用于创建实时更新的应用程序。原创 2024-09-14 11:25:08 · 3171 阅读 · 0 评论 -
Python实现服务端发送 Server-Sent Events (SSE) 和客户端接收 SSE
在 Python 中可以使用aiohttp库来实现服务端发送 Server-Sent Events (SSE) 和客户端接收 SSE。以下是一个简单的 SSE 客户端和服务端实现示例。原创 2024-09-13 13:37:33 · 2308 阅读 · 0 评论 -
【FastAPI】文件响应方法StreamingResponse和 FileResponse的用法和场景
适合返回已经存在的文件,通常是用于文件下载或返回静态资源。则更适合返回动态生成或需要逐步传输的大型文件,或用于推送实时数据流。这两者根据文件的大小、是否动态生成以及性能需求来选择使用。原创 2024-09-11 11:22:46 · 2679 阅读 · 0 评论 -
【FastAPI】小型项目的目录结构设计与命名规范
在使用 FastAPI 进行小型项目开发时,良好的目录结构与命名规范能让代码更易于维护和扩展。原创 2024-09-11 10:39:59 · 1566 阅读 · 0 评论 -
在 Ubuntu 20.04 上安装 Python 3.12:详细教程
通过本文的步骤,您已经成功在 Ubuntu 20.04 上安装了 Python 3.12。现在,您可以开始使用新版本的 Python 进行开发。如果需要多个 Python 版本并行使用,您也可以方便地切换默认版本。希望这篇文章对您有帮助!原创 2024-09-10 14:41:34 · 16308 阅读 · 3 评论 -
【FastAPI】离线使用Swagger UI 或 国内网络如何快速加载Swagger UI
在FastAPI中,默认情况下,当应用启动时,Swagger UI 会通过在线加载 Swagger UI 的静态资源。这意味着如果应用运行在没有互联网连接的环境中,默认的 Swagger 文档页面将无法加载。为了在离线环境中使用 Swagger UI,你需要手动加载 Swagger UI 的静态文件并将其与 FastAPI 集成。原创 2024-09-10 14:32:05 · 4119 阅读 · 0 评论 -
根据3d框的八个顶点坐标,求他的中心点,长宽高和yaw值(Python)
要从一个3D框的八个顶点求出它的中心点、长、宽、高和yaw值,首先你需要明确框的几何形状和坐标点的顺序。首先,找到与x轴或y轴的角度。这可以通过计算点( P_1 ) 和 ( P_2 ) 之间的向量与x轴或y轴之间的角度来实现。其中,arctan2是四象限的反正切函数,它会返回一个介于-(\pi)和(\pi)之间的角度值。其中,( (x_i, y_i, z_i) ) 是第i个顶点的坐标。长 = distance(( P_1 ), ( P_2 ))宽 = distance(( P_1 ), ( P_3 ))原创 2023-09-18 11:20:58 · 1658 阅读 · 0 评论 -
处理MongoDB或Elasticsearch的网络连接问题(装饰器代码,可直接使用)
现在,当MongoDB或Elasticsearch的连接异常发生时,代码会尝试重新连接,然后继续重试操作。这提供了一个更鲁棒的解决方案,即使数据库服务器或网络遭受短暂的中断,你的代码仍然可以恢复并继续工作。在处理MongoDB和Elasticsearch的连接问题时,你需要捕获更广泛的异常,并在异常发生时重新初始化连接。我们需要修改之前的重试装饰器,以便当连接异常发生时,它可以尝试重新连接。原创 2023-09-08 11:07:03 · 246 阅读 · 0 评论 -
python+redis实现布隆过滤器(含redis5.0版本以上和5.0以下版本的两份代码)
布隆过滤器是一种空间效率极高的概率数据结构,用于测试一个元素是否是集合的成员。如果布隆过滤器返回False,则元素绝对不在集合中。如果返回True,则元素可能在集合中,但也可能是一个误报。布隆过滤器利用了多个不同的哈希函数对元素进行哈希,并将结果的位置在一个位数组上设置为1。原创 2023-08-29 15:37:32 · 1489 阅读 · 0 评论 -
pymongo通过oplog获取数据(mongodb)
使用 MongoDB 的 oplog(操作日志)进行数据同步是高级的用法,主要用于复制和故障恢复。需要确保源 MongoDB 实例是副本集的一部分,因为只有副本集才会维护 oplog。原创 2023-08-29 10:44:52 · 853 阅读 · 0 评论 -
python删除字典中嵌套的所有空字符串、空数值、空字典、但不删除0
此函数通过检查数据的类型并相应地清理字典或列表来处理嵌套结构。在这个示例中,无论嵌套有多深,空字符串、空列表、空字典和。当字典中存在嵌套的字典或列表,并且你想同时删除这些嵌套结构中的空元素时,可以使用递归函数来实现。原创 2023-08-24 15:09:22 · 572 阅读 · 0 评论 -
MongoDB错误:Could not find host matching read preference { mode: “primary“ } for set shard1
【代码】MongoDB错误:Could not find host matching read preference { mode: "primary" } for set shard1。原创 2022-10-09 10:38:04 · 3954 阅读 · 2 评论 -
跑通github项目:简易高效的代理池ProxyPool(Python3.6)(window10环境)
一、 项目地址https://github.com/Python3WebSpider/ProxyPool二、克隆项目git clone https://github.com/Python3WebSpider/ProxyPool.gitcd ProxyPool三、在window上跑通首先安装redis,安装链接附上:https://www.runoob.com/redis/redis-install.html推荐使用 Conda 创建虚拟环境,Python 版本不低于 3.6,本人使用版原创 2022-04-19 10:10:08 · 885 阅读 · 0 评论 -
fastapi实现同参数多值请求
关键方法:参数: List[str] = Query(...)实例代码:from typing import Listimport uvicornfrom fastapi import Query, FastAPIapp = FastAPI()@app.get("/api")async def get_item(id: List[str] = Query(...)): return {'id': id}if __name__ == '__main__': uv原创 2022-04-07 10:26:40 · 464 阅读 · 0 评论