自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 SQLAlchemy中外键 ondelete=‘CASCADE‘ 与 ORM cascade 的区别与使用指南

摘要:本文对比分析了数据库级级联(ondelete='CASCADE')和ORM级联(cascade)两种删除关联数据的机制。数据库级级联由数据库引擎执行,适用于保证数据一致性的场景;ORM级联在应用层执行,支持更灵活的操作控制。文章详细介绍了各种cascade参数的使用场景,通过典型示例说明如何选择合适的方式,并给出了最佳实践建议:对于"组成部分"关系使用数据库级级联,对需要编辑删除的孤儿对象使用ORM级联,对历史数据则不应设置级联删除。最后指出应根据业务需求合理搭配使用这两种机制。

2025-11-05 11:05:17 493

原创 MySQL vs MongoDB 数据库对比详解

MySQL与MongoDB数据库对比分析本文从多个维度对比了关系型数据库MySQL和非关系型数据库MongoDB的核心差异。

2025-10-20 12:35:21 702

原创 误推非必要文件到 Git 远程?这样处理就对了

本文介绍了如何正确使用.gitignore文件管理Git仓库中的文件。主要内容包括:1) .gitignore的作用是排除无需跟踪的文件;2) 当误传文件时,可通过git rm --cached命令移除跟踪但保留本地文件;3) 强调.gitignore需要在文件被跟踪前配置;4) 提供了添加/更新.gitignore文件的操作步骤;5) 介绍了使用git fetch和git rev-list命令检查本地与远程仓库差异的方法。这些操作能有效避免非必要文件被推送到远程仓库,保持代码库的整洁。

2025-09-17 11:14:35 364

原创 Redis缓存库对比:aiocache VS redis.asyncio(aioredis)

本文对比分析了Python异步环境下的两种Redis缓存方案:aiocache和redis.asyncio。aiocache是高级缓存抽象层,提供统一API、自动序列化和多后端支持,简化开发但有一定性能开销。redis.asyncio是Redis官方异步客户端,直接操作Redis命令,性能最优且功能完整,但需要手动处理序列化等操作。前者适合快速开发场景,后者适合需要精细控制和高性能的应用。二者各具优势,开发者可根据项目需求选择合适方案。

2025-09-04 13:58:28 408

原创 Python核心知识点笔记:枚举类、构造方法、类型注解、环境变量

本文介绍了Python面向对象编程中的几个核心概念:1.枚举类(Enum)用于定义固定常量集,支持多重继承;2.构造方法(init)在实例创建时自动执行初始化;3.类属性与实例属性的作用域和访问规则;4.类实例间方法访问的权限控制;5.类型注解(TypeHints)的语法和应用场景。文章强调代码封装性的重要性,并提供了最佳实践建议:合理使用类型注解、保持良好封装、构造函数属性共享、环境变量默认值设置等。这些概念共同构成了Python面向对象编程的基础框架。

2025-09-03 19:13:06 192

原创 MySQL数据库死锁问题处理

MySQL元数据锁问题分析与解决方法摘要:在执行ALTER TABLE或DROP TABLE操作时,可能遇到"Waiting for table metadata lock"错误或操作长时间挂起。这通常由元数据锁冲突、空闲事务或并发操作导致死锁引起。可通过SHOW PROCESSLIST和information_schema.innodb_trx诊断问题,识别并终止阻塞查询和空闲事务(使用KILL命令)。清理锁后再执行原操作,若无效可考虑重启MySQL服务。该问题主要源于多个事务对表元数据的并发访问冲突

2025-07-15 13:12:24 327

原创 FastAPI中的后台任务,在阿里云的函数计算环境中不工作!

阿里云函数计算与FastAPI后台任务存在机制冲突:函数计算的请求结束即环境回收特性导致FastAPI在响应返回后无法继续执行后台任务。解决方法是通过阿里云异步调用机制(x-fc-invocation-type:Async)替代BackgroundTasks,让请求立即返回而实际处理在后台进行。这既满足了Serverless环境的限制,又实现了异步处理的需求。

2025-07-03 20:21:48 576

原创 阿里云的函数计算FC中出现了无效状态怎么解决?

摘要:作者首次使用阿里云函数计算服务时,遇到两个问题:一是FastAPI后台任务未执行,二是更新镜像后出现"无效状态"。经排查发现,前者需额外配置(详见另一篇笔记),后者是因更新镜像后未重新部署函数,导致旧版本镜像失效。解决方案是重新部署函数:在函数列表进入目标函数,修改镜像并点击部署即可。该问题源于阿里云函数计算会锁定特定镜像版本,更新后需手动重新部署。

2025-07-03 19:56:22 252

原创 Git常用命令

【代码】Git常用命令。

2025-06-24 16:37:01 140

原创 调用FastAPI接口时加了个额外参数,竟然也成功了!

当FastAPI接口只定义了task_id参数,但请求中包含了task_id和其他额外参数时,接口并没有报错而是正常处理了请求。配置后,当请求包含未定义的额外参数时,FastAPI会返回422状态码(Unprocessable Entity)错误。FastAPI默认情况下会忽略请求中未在接口定义中声明的额外参数。这是一种宽容的设计,允许API兼容不同版本的客户端。

2025-06-19 12:14:37 221

原创 关于同步接口中的异步处理机制设计

在分析视频处理服务(vid_sync_engine)项目时,我注意到一个有趣的设计特点:虽然API接口实现是同步的,但代码结构已经为未来的异步处理做了准备。在视频处理这类耗时操作中,同步处理会导致客户端长时间等待,而异步处理则能提供更好的用户体验。但如何在现有同步接口基础上平滑过渡到异步模式?这种"同步接口+异步处理预留"的设计模式,展示了如何在满足当前需求的同时为未来扩展留下空间,是一种值得学习的软件设计思想。在这种实现中,客户端发送请求后必须等待整个视频处理完成才能收到响应,可能需要等待数分钟。

2025-06-14 13:20:21 461

原创 关于poetry的使用

Poetry 是一个现代化的 Python 项目依赖管理工具,提供了依赖解析、虚拟环境管理、包构建和发布等功能。它使用 pyproject.toml 和 poetry.lock 文件来管理项目配置和依赖。确保在包含 pyproject.toml 的目录中运行 Poetry 命令,或使用 poetry init 创建新的配置文件。

2025-06-14 12:11:16 549

原创 Python 依赖管理:requirements.txt VS Poetry

随着Python项目复杂度增加,Poetry提供的依赖解析、环境管理和工作流自动化优势会越来越明显,但requirements.txt在简单性和普适性方面仍有其价值。

2025-06-13 19:58:00 1572

原创 关于同步与异步通信模式

接口本身没有固有的同步/异步属性,而是由其设计和使用方式决定同步/异步可以在多个层面实现:代码层面(如Python的asyncio)接口设计层面(如使用回调或轮询)平台层面(如阿里云Function Compute的异步调用)不同层面的异步可以组合使用,以获得最佳性能和用户体验云服务平台提供的异步机制可以让我们不修改接口本身的情况下,实现异步调用体验正确处理异步响应需要考虑不同的状态码和错误情况。

2025-06-13 19:34:08 1636

原创 什么是依赖包?

依赖包是项目运行或开发时所需的第三方代码资源,由其他开发者编写并发布,通常通过包管理工具安装(如Python的pip、Node.js的npm等)。它们能复用代码、加速开发并确保环境一致性。不同语言中依赖包名称各异(如Python称"库"、Java称"依赖"),但本质相同:项目需要的外部代码组件。依赖关系会记录在特定文件(如requirements.txt、package.json)中,通过工具统一管理。

2025-06-13 14:02:21 631

原创 软件类型与包管理工具:从Python开发视角理解

Python开发中安装依赖需区分软件类型:FFmpeg等系统级工具软件需通过系统包管理器(如apt、brew)安装,而Python包(如numpy)则通过pip/Poetry安装。两类软件在设计理念和运行方式上存在本质差异——系统软件是底层工具,Python包是解释器内的功能模块。理解这种区别有助于正确管理项目依赖,构建可靠的开发环境。这种认知突显了开发中区分"工具"与"应用"的重要性。

2025-06-11 17:22:21 386

原创 Dockerfile 与 Docker Compose 的区别

Dockerfile和DockerCompose是容器化开发的核心工具,各有侧重。Dockerfile专注于单个容器镜像的构建,提供从基础镜像到应用的完整指令;DockerCompose则用于编排多容器应用,定义服务间的连接与依赖关系。前者适用于标准化构建流程,后者适合本地开发和测试环境。二者通常配合使用:用Dockerfile构建镜像,再用DockerCompose运行完整应用。随着项目复杂度提升,开发会从Compose转向Kubernetes等编排工具,但Dockerfile始终是容器化的基础。理解二者

2025-05-30 13:01:41 1905

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除