自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SQLAlchemy ORM 新增可以 new 对象 add,为什么删除不能直接 new 对象 delete?

新增 add:内存新建对象 + add 托管即可入库,因为是"创造新数据",无需定位旧行;删除 delete:不能直接 new 游离对象删除,因为需要平台标识(主键)定位数据库旧行,凭空对象无法满足;修改优先 ORM,删除优先 Core:ORM 修改有对象操作红利,ORM 删除只有双次 IO 损耗;分层使用原则:简单单条增改用 ORM,条件删、批量操作、复杂查询一律使用 SQLAlchemy Core 底层语句。

2026-07-26 20:46:09 347

原创 SQLAlchemy 异步开发:ORM 层与 Core 层怎么选?增删改查两种写法全拆解

Core 底层:提供select()insert()update()delete()四大 SQL 语法树构造函数,本质是用 Python 代码结构化编写 SQL。它不面向对象,直接映射数据库语句,没有对象生命周期管理。ORM 上层:基于 Core 封装的对象关系映射层,把数据库表映射为 Python 类、表行映射为类实例,由会话托管对象状态,自动翻译成 Core 层 SQL 执行。SQLAlchemy 的 ORM 层本质是为日常业务 CRUD做的面向对象封装,降低数据库操作心智负担;

2026-07-25 20:36:35 373

原创 SQLAlchemy 中 add() 与 commit() 的异步会话使用详解

commit 之后数据库已经更新完成,refresh重新从数据库查询一次这条用户记录,刷新到内存对象;部分数据库有触发器、默认字段、更新时间戳自动变更,refresh 可以同步回 Python 对象;规范写法,保证后续函数拿到的是数据库最新真实数据。db.add(已存在对象)≠ 新增,只是强制让 AsyncSession 接管对象,确保 ORM 识别字段改动,解决异步会话过期、对象游离导致更新不生效的坑;commit()

2026-07-25 20:26:18 307

原创 华为鸿蒙、欧拉、芯片全家桶:端边云生态核心概念全解析

在国产化、嵌入式、IoT、服务器开发领域,华为整套软硬件生态是高频学习、面试、项目落地重点。鸿蒙、欧拉、麒麟、鲲鹏、昇腾的定位与关系,也分不清华为各类系统技术概念的差异。本文将华为全栈生态所有核心概念、技术区别、硬件匹配、应用场景一次性梳理透彻,无冗余、无误区、可直接用于学习和面试背诵。鸿蒙管看得见的万物智能终端,欧拉管看不见的后台算力底座。系统双子星:鸿蒙(微内核、终端互联)、欧拉(宏内核、算力底座),独立互补、端边协同。芯片三剑客:麒麟适配移动端鸿蒙、鲲鹏适配服务器欧拉、昇腾适配欧拉 AI 算力。

2026-07-24 12:36:36 615

原创 彻底搞懂 Unix、Linux、ARM、Ubuntu、CentOS、欧拉:新手最容易混淆的系统概念全解析

ARM、Unix、Linux、Ubuntu、CentOS、openEuler(欧拉)很多人长期搞不清:到底谁是内核?谁是系统?谁是架构?谁基于谁?谁淘汰了?谁替代谁?为什么 IoT 都在用 Ubuntu?CentOS 为什么停更?本篇文章把所有混淆点一次性彻底打通,从层级、历史、血缘、场景、替代方案全部讲透。鸿蒙管「万物终端」,欧拉管「算力底座」所有看得见、带交互的智能设备 = 鸿蒙所有看不见、做后台服务、工控、服务器、边缘计算的设备 = 欧拉ARM 是硬件架构,不是系统。

2026-07-23 20:04:39 870

原创 FastAPI Pydantic 中 Field(..., alias=“userInfo“) 三个点详解

在语境下,...就是用来标记当前字段为必填项。在 Pydantic v2 中这是唯一写法,和老的不再等价(后者已移除),是工程里更简短通用的必填标记。

2026-07-23 19:59:07 303

原创 FreeRTOS xTaskCreate 最后一个参数传地址与NULL的区别详解

初学 FreeRTOS 创建任务时,很容易遇到一段代码:部分任务创建时第六个参数传入任务句柄变量地址,另一部分直接填写NULL,二者写法都能正常创建任务,但底层用途完全不同。先一句话说清区别:第六个参数是"任务句柄的输出指针"——传这类变量地址,内核会把创建好的任务句柄存进这个变量,之后你就能在别的任务里动态挂起 / 恢复 / 删除它;传NULL则是不保存句柄,任务创建后外部再也无法操控它,适合那些上电就常驻、无需外部干预的后台任务。

2026-07-18 20:37:46 376

原创 FastAPI + 异步 SQLAlchemy 新手导包速查,解决导包对应混乱问题

导入语句# 省略字段定义...# 数据表索引:命名统一以 idx_ 前缀开头,见名知意命名规范:索引名统一用idx_字段名前缀(外键列索引也用idx_,不要混用fk_前缀,避免一眼看不出它本质是索引)。

2026-07-18 20:35:36 327

原创 ORM 手动索引设计实战(为什么定义索引却不用写调用代码?)

ORM 索引是建表级结构,不是业务方法,不需要手动调用,数据库自动优化使用。外键字段必须建索引,避免联表查询、级联更新锁全表(MySQL InnoDB 不会自动给外键列建索引,需手动补)。排序、分页、高频查询字段必须建索引,解决大数据量慢查询问题。索引不是越多越好,索引会降低写入性能,只给高频读字段建立。复杂筛选 + 排序场景,优先使用复合索引 + 最左匹配原则优化。

2026-07-17 22:51:50 293

原创 零基础嵌入式入门(一):嵌入式整体体系与五大核心通信总线概览

嵌入式开发对于具备计算机编程基础的开发者而言,是一门软硬件结合的技术方向。相较于后端开发侧重网络、进程、数据库与业务逻辑的技术体系,嵌入式开发更聚焦硬件交互、底层驱动、设备通信与资源优化,整体技术体系框架较为庞杂,入门阶段容易出现概念混淆、知识点零散的问题。本文作为嵌入式零基础入门系列开篇,将系统梳理嵌入式完整技术体系、细分方向与应用场景,同时对嵌入式开发入门必备的五大核心通信总线进行整体概述,建立完整的嵌入式基础认知框架,为后续总线协议的深度学习奠定理论基础。

2026-07-14 18:46:17 335

原创 Valgrind 内存泄漏检测实战:逐参数拆解那条 --leak-check=full 命令

这条命令的本质,是把 Memcheck 调成"最严格 + 最啰嗦 + 最不易丢报告"的档位,专门给 C++ 服务做内存体检。full给行号、none挤水分、all不遗漏、追源头,最后用--log-file取代tee保住那份关键的最终报告。下次上线前跑一遍,比事后线上 OOM 强一万倍。

2026-07-14 18:33:21 349

原创 MySQL索引落地优化实战:从业务代码实现到B+树底层原理

普通 INDEX(二级索引):允许字段重复、允许大量相同值,仅用于加速查询,无任何数据约束。适用于 status、type 这类有限枚举、大量重复的字段。UNIQUE INDEX(唯一索引):强制字段全表不可重复,数据库层面唯一性校验,相同值无法插入,同时具备索引加速查询能力。适用于 device_id、手机号、账号这类全局唯一字段。普通索引:只管快,不管重复;唯一索引:既管快,又管唯一,还能更快。但两者底层都是二级索引,查 SELECT * 都要回表(详见 3.4 / 3.6)。无索引。

2026-07-13 20:29:58 308

原创 Drogon ORM 深度解析:原理、优势、优缺点及实战使用规范

SQL 注入是 Web 开发中高频高危漏洞:攻击者通过构造恶意的用户输入,拼接篡改原生 SQL 语句的执行逻辑,实现越权查询、篡改、删除数据库数据的恶意操作。// 危险:字符串拼接SQL,存在严重注入漏洞我们通过构造示例数据 + 查询结果完整对比,极致直观展示 SQL 注入的危害。提前预设数据库假数据:users 表中存有 1000+ 条用户数据,包含普通用户、管理员账号:张三、李四、王五、超级管理员、后台运维账号等。场景一:正常业务查询(安全、符合预期)zhangsan。

2026-07-13 20:00:37 366

原创 Drogon HTTPS 无法连通根因与修复方案

SSL 配置块禁止使用全称****,必须简写cert/key;HTTPS 监听端口的https属性修改为true;双端口配置显式声明 https 字段,保证项目规范统一;三项全部修正、重启服务后,HTTPS 加密通信即可正常调通。

2026-07-10 19:46:03 276

原创 回文数、回文串

回文数、回文串

2025-02-10 00:00:14 378

原创 C++&&MYSQL

1.1创建一个解决方案或空项目,在配置项目的属性之前,将编译的配置管理器设置为x64。1.21.2.1 在VC++目录的包含目录中添加下载的mysql的include文件,在库目录中添加下载的mysql的bin文件1.2.2 在链接器的输入的附加依赖项中添加mysql的bin文件下的libmysql.lib1.2.3 第一次在Visual Studio连接数据库,需要把libmysql.dll放在C:\Windows\System32下。

2023-12-28 00:33:30 969 1

原创 C++ 中的++和--

+在前,先自加,再赋值;++在后,先赋值,在自加;最终,都完成自加1的操作。

2023-09-20 00:47:09 912 1

原创 字符串中sizeof、strlen、size、length的区别

【代码】字符串中sizeof、strlen、size、length的区别。

2023-08-27 19:06:20 468

原创 多个for和多个if中的break和continue

for循环中的break和continue

2023-08-20 23:07:25 10037 1

原创 函数的调用

函数的调用

2023-07-16 22:34:48 164 1

空空如也

空空如也

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

TA关注的人

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