自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(256)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++查找:std::find_if

文章摘要: 本文针对已掌握STL基础的C++开发者,重点讲解<algorithm>中的find_if算法。该算法通过“区间+判断函数”组合,查找首个符合条件的元素。核心要点包括: 基本用法:Lambda作为谓词,返回迭代器或end(); 典型场景:结构体字段查找(如年龄≥18)、map值查询(非键); 进阶技巧:忽略大小写、捕获外部变量、反向迭代器、find_if_not取反逻辑; 注意事项:必须检查返回值是否为end()以避免未定义行为。适用于C++11及以上,C++17/20可结合结构化绑定

2025-06-22 11:06:34 443

原创 FreeRTOS事件组(Event Group)

FreeRTOS事件组是一种高效的多任务同步机制,支持AND/OR逻辑等待条件。其核心是一个32位标志字,其中0-23位为用户自定义事件位。关键API包括创建/删除、设置/清除位、等待位变化和同步屏障等操作。事件组适用于多任务对同一事件作出反应或需等待多种条件同时满足的场景,比轮询或多个信号量更简洁高效。使用时需注意仅使用0-23位,中断中只能调用FromISR版本,并合理管理标志位清除时机。相比POSIX标准,事件组可对应pthread_cond+mutex或pthread_barrier的功能。

2025-06-21 16:20:27 246

原创 C++11 范围-for 循环:range-based for loop

范围-for循环是C++11引入的简洁遍历语法,支持任何具有begin()/end()迭代器的容器(如vector、list、数组等)。其核心写法为for(declaration : container),编译器会自动生成迭代器循环。常见声明方式包括:auto elem(按值拷贝)、auto& elem(按引用可修改)和const auto& elem(按常量引用只读)。相比传统迭代器写法,范围-for具有简洁(无需手动操作迭代器)、安全(自动边界检查)和通用(统一语法支持各类容器)三大优势

2025-06-20 16:26:28 220

原创 C++互斥锁:std::mutex

C++ std::mutex 简介 std::mutex 是 C++11 标准库提供的互斥锁,用于防止多线程数据竞争。通过头文件 <mutex> 引入,封装了底层操作系统的互斥机制。基本用法是在访问共享资源前调用 lock(),访问后 unlock()。推荐使用 std::lock_guard 自动管理锁生命周期,它在构造时加锁,析构时解锁,利用 RAII 模式避免因异常或提前返回导致的死锁问题,比手动管理更安全可靠。

2025-06-15 15:18:02 329

原创 C++11函数封装器 std::function

C++11的std::function是一个通用函数封装器,可以包装各种可调用对象(普通函数、lambda、成员函数等)。其语法为std::function<返回类型(参数列表)>变量名,具有类型安全、可赋值、可为空等特点,能统一不同可调用对象的接口。示例展示了如何用std::function封装普通函数、lambda表达式和仿函数。该工具提供了存储和调用函数的灵活方式,是C++回调机制的重要组件。

2025-06-15 14:26:56 194

原创 C++泛型编程:模板

C++模板是一种泛型编程机制,允许编写支持多种数据类型的通用代码。分为函数模板和类模板两种形式:函数模板通过template<typename T>声明类型参数,可创建类型无关的函数;类模板同样使用类型参数定义泛型类。使用时可以显式指定类型或让编译器自动推导。模板代码必须放在头文件中,因为其实例化发生在编译期间。典型应用包括STL容器和算法。

2025-06-15 10:02:49 189

原创 嵌入式常见 CPU 架构

本文对比了8种主流嵌入式处理器架构,涵盖PIC、8051、MIPS等传统架构和ARM、RISC-V等现代架构。传统架构中,PIC适合低功耗控制,8051以低成本著称,MIPS常用于网络设备。现代架构方面,ARM Cortex-M系列占据中高端MCU市场,Cortex-A支持复杂系统;Xtensa以可定制性见长;开源RISC-V正快速崛起。各架构在指令集、功耗、性能及生态支持方面各有特点,适用于从简单控制到AI边缘计算等不同场景。新型架构正推动嵌入式系统向高性能、低功耗和开源化方向发展。

2025-06-04 18:24:35 356

原创 HTML 中 class 属性介绍、用法

HTML 的 class 属性用法总结 class 是 HTML 元素的核心属性,主要作用包括: 🎨 连接 CSS 样式 ⚙️ 绑定 JavaScript 行为 🧩 表达语义结构 在原生 CSS 中,通过定义类样式并应用: 提交 Tailwind CSS 采用原子类组合: Alpine.js 通过:class动态绑定类名: 三元表达式适合二选一状态 对象语法适合多条件控制 注意:使用的类名需预先定义样式。

2025-06-02 11:33:46 1378

原创 Jinja2 模板继承机制

Jinja2模板继承机制解析 本文介绍了Python常用模板引擎Jinja2的模板继承功能。模板继承可以避免代码重复,实现统一的网页布局,提高开发效率。关键语法包括extends声明继承关系和block定义可替换区域。文中提供了父模板和子模板的代码示例,展示了如何继承基础模板结构并替换特定内容区域。通过super()方法可以保留父模板原有内容。这种机制特别适用于多页面网站开发,能够有效减少重复代码和维护成本。

2025-05-31 22:32:56 272

原创 Linux 实用排查指南:如何快速查出谁在吃内存

Linux服务器内存占用排查指南 当服务器变慢或内存报警时,需要快速定位内存占用高的进程。本文介绍两种常用方法: ps命令:ps aux --sort=-%mem | head -n 15可静态列出内存占用前15的进程,包含PID、%MEM等关键信息,适合快速筛查。 top命令:动态监控系统资源,按Shift+M可排序内存占用,E切换单位为MB。适合实时观察进程变化。 找到高内存进程后,需判断是否为必要服务,决定是否关闭或优化。

2025-05-28 20:53:25 494

原创 内存不够?用 Swap 顶一顶:Linux 虚拟内存实战指南

本文介绍了Linux系统中的Swap(交换空间)功能及其配置方法。Swap是在内存不足时将不活跃数据临时存储到硬盘的机制,可防止系统因内存不足崩溃。文章详细讲解了使用swap文件的配置步骤:创建swap文件、设置权限、格式化、启用并设置开机自动挂载,推荐将swappiness值设为10以减少swap使用。同时提供了删除swap的方法和便捷的一键配置脚本。Swap适合小内存服务器使用,但过度依赖会影响性能,需权衡利弊。

2025-05-28 18:48:55 439

原创 tmux 入门实用指南(面向远程 Linux 开发者)

tmux:远程终端会话管理利器 tmux是一款终端复用工具,支持多窗口/面板操作,保持任务在SSH断开后持续运行。 核心功能: 安装:apt/yum install tmux 会话管理:new -s创建、attach -t恢复、Ctrl+B D脱离 窗口操作:Ctrl+B C/N/P新建/切换窗口,%/"分屏 持久化运行:后台执行命令tmux new -s build 'cmd' 适用场景:长时间编译、模型训练、云服务器任务等。通过tmux实现断网不中断,大幅提升远程工作效率。 一句话:&quot

2025-05-27 09:23:04 343

原创 MySQL权限管理:层级化作用域、权限分类、操作命令

MySQL权限体系基于层级化作用域设计,分为全局级、数据库级、表级、列级和例程级5个层级。权限分为管理权限(用户管理和服务器管理)和数据库权限(数据操作、对象定义和例程级权限)。使用SHOW GRANTS可查看用户权限,GRANT命令用于分配权限,支持全局、数据库、表、列和存储过程等多级作用域。权限分配时可指定用户、主机、密码及是否允许转授权,ALL PRIVILEGES表示当前作用域下的所有权限。

2025-05-25 15:42:41 981

原创 解析 Flask 上下文机制:请求上下文、应用上下文

Flask框架通过请求上下文和应用上下文实现环境隔离机制。请求上下文(request/session)处理单个HTTP请求的专属数据,在请求开始和结束时自动创建销毁;应用上下文(current_app/g)管理应用级资源,支持非请求场景访问。二者依赖LocalStack实现线程安全隔离,保证多线程并发下的数据安全。这种机制使开发者无需显式传参即可全局访问环境数据,是Flask处理请求逻辑和扩展开发的核心基础。理解上下文机制对掌握Flask数据库会话、模板渲染等功能至关重要。

2025-05-24 11:05:47 1289

原创 Flask 会话管理:从原理到实战,深度解析 session 机制

Flask 的 session 机制通过客户端 Cookie 实现会话管理,解决了 HTTP 协议无状态的问题。服务器在用户登录时生成签名并将会话数据存储在 Cookie 中,客户端在后续请求中自动携带该 Cookie。服务器通过验证签名确保数据完整性,防止篡改。Flask session 的优势在于轻量和分布式友好,但存在数据大小限制和明文存储的风险。使用时需设置 secret_key 并配置安全标志(如 Secure、HttpOnly、SameSite)以防御 XSS 和 CSRF 攻击。此外,可通过

2025-05-23 17:13:37 890

原创 Flask-SQLAlchemy数据库查询:query

在 Flask 中使用 SQLAlchemy ORM 时,继承自 db.Model 的模型类会自动获得 query 属性,这是 db.session.query(模型类) 的快捷方式,简化了数据库查询操作。通过 query 属性,可以方便地进行各种查询操作,如按主键查询 (get)、等值过滤 (filter_by)、复杂条件过滤 (filter)、排序 (order_by)、字段选择 (with_entities) 等。查询结果可以通过 first()、all()、one() 等方法获取,还可以使用 cou

2025-05-23 10:55:48 1381

原创 Flask 路由跳转机制:url_for生成动态URL、redirect页面重定向

在 Flask 开发中,url_for() 和 redirect() 是实现路由跳转的关键工具。url_for() 用于根据视图函数名动态生成 URL,支持静态路径、动态参数、查询参数、绝对路径和锚点等功能,避免硬编码,提高代码维护性。redirect() 则用于生成重定向响应,引导客户端跳转到指定 URL,支持多种 HTTP 状态码(如 302、301、303、307),适用于不同场景。两者结合使用,可以优雅地实现页面跳转逻辑,确保代码的灵活性和可维护性。例如,在用户登录后,通过 redirect(url

2025-05-22 11:32:22 775

原创 Flask 路由装饰器:从 URL 到视图函数的优雅映射

Flask 的路由装饰器 @app.route 是 Flask 框架中用于将 URL 路径与视图函数绑定的核心工具。它通过 app.add_url_rule() 方法将 URL 规则注册到 url_map 中,并在请求处理阶段通过 url_map 匹配 URL 并执行相应的视图函数。路由装饰器支持静态路径、动态参数捕获、多种 HTTP 方法以及通过蓝图(Blueprints)实现模块化路由管理。这些功能使得 Flask 能够优雅地处理复杂的 URL 映射,适用于从简单页面到大型项目的各种场景。

2025-05-21 21:15:15 1145

原创 Python 装饰器:从“语法糖”到“代码神器”的深度解析

Python装饰器是一种高阶函数,通过@语法糖在不修改原函数代码的情况下为其添加额外功能。其核心机制是高阶函数+闭包,典型应用包括日志记录、性能监控和权限校验等。装饰器可实现三层嵌套以接收参数,或通过类装饰器管理状态。使用时需注意保留原函数的元信息,推荐使用functools.wraps。装饰器能有效解耦非核心功能,提升代码复用性和可维护性。<|end▁of▁sentence|>

2025-05-21 17:47:25 801

原创 深入理解 Python 的with语法:资源管理的优雅解决方案

with语法在Python中用于自动管理资源,如文件、数据库连接和线程锁,通过上下文管理器协议(__enter__和__exit__方法)确保资源的正确释放。相比传统的try-finally,with更简洁且安全,避免资源泄漏。常见应用场景包括文件操作、数据库连接和线程锁管理。此外,开发者可以通过自定义类或使用contextlib模块创建上下文管理器,灵活应对各种资源管理需求。使用with时需注意避免滥用,确保其仅用于需要显式释放的资源,并遵循单一职责原则。

2025-05-21 16:21:20 649

原创 Flask-SQLAlchemy核心概念:模型类与数据库表、类属性与表字段、外键与关系映射

本文介绍了如何在 Flask 应用中使用 Flask-SQLAlchemy 进行数据库操作,重点讲解了模型类与数据库表的映射关系、类属性与表字段的对应关系,以及外键与关系映射的实现。通过代码示例,展示了如何定义模型类、配置数据库连接,并使用 db.create_all() 创建数据库表。文章还详细解释了 db.Column 的用法,包括字段类型

2025-05-21 10:11:15 944

原创 Python 中的类属性与实例属性详解

在 Python 面向对象编程中,类属性和实例属性是两个关键概念,分别用于描述类本身的状态和对象特有的状态。类属性定义在类体中,所有实例共享,通常用于存储通用信息,如类型或计数器。实例属性则在 __init__ 方法中通过 self 定义,每个实例独立拥有,用于描述对象自身的状态。类属性通过类名或实例访问,而实例属性必须通过对象访问。需要注意的是,实例属性可以覆盖同名的类属性,形成实例独有的副本。正确理解和使用这两种属性,有助于编写清晰、健壮的代码。

2025-05-20 18:10:47 471

原创 深入理解 Python 中的几种方法:实例方法、类方法、静态方法与特殊方法

Python 中的方法主要分为四类:实例方法、类方法、静态方法和特殊方法。实例方法是最常见的类型,通过 self 访问和修改实例属性,适用于对象特有的行为。类方法使用 @classmethod 装饰器,通过 cls 访问类属性,常用于工厂方法。静态方法使用 @staticmethod 装饰器,不依赖类或实例状态,适合作为工具函数。特殊方法(魔术方法)以双下划线开头和结尾,用于实现对象的内置行为,如运算符重载和容器协议。合理使用这些方法可以提高代码的封装性和可读性。

2025-05-20 17:54:12 1260

原创 深入解析`lsof`命令:查看系统中打开文件与进程信息

lsof(List Open Files)是一个强大的工具,用于查看系统中哪些进程正在访问哪些文件。它不仅限于常规文件,还包括网络连接、设备文件和管道等。lsof的输出包含多个字段,如COMMAND、PID、USER、FD、TYPE等,提供了详细的文件访问信息。常见用法包括查看所有打开的文件、特定进程打开的文件、特定文件被哪些进程打开、网络端口的使用情况、特定用户打开的文件以及特定目录下所有打开的文件。lsof在定位占用端口的进程、查找正在访问的文件、审计网络连接和调试文件系统等场景中非常有用。

2025-05-19 21:28:11 804

原创 Logrotate:配置日志轮转、高效管理Linux日志文件

Logrotate 是 Linux 系统中用于自动化管理日志文件的工具,主要功能包括日志轮转、压缩、删除和保留策略配置。它通过 Cron 作业定期执行,也可手动触发。配置文件通常位于 /etc/logrotate.conf 和 /etc/logrotate.d/ 目录下,支持多种指令如 daily、rotate、compress 等,用于定义日志轮转的频率、保留数量和压缩方式。Logrotate 还支持 postrotate 脚本,用于在轮转后执行特定操作,如重新加载服务。最佳实践包括合理配置轮转策略、使用

2025-05-19 18:05:13 953

原创 模型蒸馏(Knowledge Distillation)

是一种深度学习中的模型压缩技术,其核心思想是将大型、复杂模型(教师模型)所学到的知识迁移到较小、结构简单的模型(学生模型)中,从而在保持性能的同时,降低计算和存储成本。

2025-05-19 14:55:55 511

原创 Flask-SQLAlchemy_数据库配置

SQLAlchemy是 Python 生态中最具影响力的 ORM(对象关系映射)库,其设计理念强调 “框架无关性”,支持在各类 Python 项目中独立使用,包括 Flask、Django 等 Web 框架,以及脚本工具、数据处理程序等。作为SQLAlchemy这种分层设计使开发者既能享受 SQLAlchemy 的强大功能,又能遵循 Flask 的开发范式。

2025-05-18 15:02:38 1422

原创 Python包、模块、类的导入语法与机制解析

本文介绍了Python中的核心概念(模块、包、类)以及导入语法的常见用法。模块是单个.py文件,包是包含多个模块的目录,类是模块或包中的代码结构。导入语法通过from...import...将其他模块或包中的代码对象加载到当前命名空间。常见的导入方式包括直接导入模块或包、导入时重命名、从源中导入特定对象、导入多个对象以及导入所有对象(不推荐)。此外,文章还解释了导入的优先级机制,包括内置模块、当前目录、环境变量PYTHONPATH和标准库目录,并介绍了sys.path的作用,它存储了模块搜索的路径。

2025-05-15 16:05:14 815

原创 Ubuntu磁盘空间分析:du命令及常用组合

du(Disk Usage)是 Ubuntu 系统中用于查看目录或文件磁盘使用情况的命令,主要用于分析磁盘空间占用。其基本语法为 du [选项] [目录/文件路径],常用选项包括 -h(人性化显示大小)、-s(仅显示总大小)、-d(控制递归深度)、--exclude(排除特定文件或目录)等。du还可以与其他命令结合使用,如 sort 按大小排序、find 统计特定类型文件大小、watch 实时监控目录变化等。通过这些组合,用户可以快速定位大文件、比较目录大小、排除干扰文件等,从而高效管理磁盘空间。

2025-05-14 18:29:09 864

原创 什么是SQL注入?如何避免数据库被黑客攻陷?

SQL 注入是一种常见的安全漏洞,攻击者通过篡改用户输入,将恶意 SQL 代码注入到数据库查询中,从而执行非预期操作,如数据泄露、篡改或数据库崩溃。其核心原因是程序未对用户输入进行过滤或转义,直接将输入拼接到 SQL 语句中。典型示例包括绕过登录接口、获取敏感数据或删除数据库表。防范措施包括使用参数化查询、ORM 工具、输入验证与转义,以及遵循最小权限原则。开发中应始终避免信任用户输入,确保安全编码。

2025-05-12 14:38:27 778

原创 主流编程语言中ORM工具全解析

ORM(对象关系映射)工具旨在简化数据库操作,不同编程语言有各自的主流ORM工具。Python生态中,SQLAlchemy功能全面,适合中大型项目;Django ORM与Django框架深度集成,适合快速开发;Peewee轻量级,适合小型项目;Tortoise-ORM专为异步框架设计。Java生态中,Hibernate功能强大,适合企业级应用;MyBatis更接近原生SQL,适合性能敏感项目;Spring Data JPA与Spring框架深度集成。Node.js生态中,Sequelize支持多种数据库,适

2025-05-12 11:15:54 1013

原创 Linux文件权限管理:chmod修改权限 与 chown修改所有者

`chmod` 命令:修改文件/目录权限 `chmod`(Change Mode)用于修改文件或目录的权限。> `chmod`控制“谁能做什么”。

2025-05-04 21:31:58 1474

原创 pip安装包时网络不畅,替换国内PyPI镜像源

是对官方仓库的复制。PyPI 是 Python 社区中最大的软件包仓库,存储着大量的 Python 包,供开发者们下载和使用。然而,由于 PyPI 服务器位于国外,在国内访问时可能会面临网络延迟高、下载速度慢等问题。为了解决这些问题,一些国内的高校、企业或者组织会定期从 PyPI 官方仓库同步软件包数据,创建自己的镜像源。

2025-05-04 18:31:56 388

原创 Ubuntu环境下使用uWSGI服务器【以flask应用部署为例】

由于从Python 3.11开始限制了在系统级 Python 环境中使用 pip 安装第三方包,以避免与系统包管理器(如 apt)产生冲突。所以开发时选择使用虚拟环境。

2025-05-04 17:51:17 1421

原创 Ubuntu环境下如何管理系统中的用户:创建用户、删除用户、修改密码、切换用户、用户组管理

主要是按提示输入密码和用户信息(可直接回车使用默认配置)。(组内无用户时才能删除)passwd 用户名。,按提示输入新密码。

2025-05-02 17:41:45 858

原创 Linux系统中的用户分类(为什么Linux系统中有很多我没有创建的用户?)

使用lslogins查看当前系统中的用户,如下图:看到了很多用户,但是我没有去创建这些用户,这些用户是怎么来的?

2025-05-02 17:00:55 400

原创 Linux_sudo命令的使用与机制

`sudo`(全称 `superuser do`)是 Linux/Unix 系统中**权限管理**的核心工具。允许普通用户在授权下以其他用户(默认是 `root`)的权限执行命令,而无需直接登录账户。

2025-05-02 15:42:05 1014

原创 Linux_su命令

su)用于直接切换用户身份,进入目标用户的 shell 环境。

2025-05-02 11:00:29 722

原创 WSGI(Web Server Gateway Interface)服务器

WSGI 服务器是实现了 WSGI 规范 的软件。客户端 <---> Web 服务器 <---> WSGI 服务器 <---> Python Web 应用程序客户端发起请求Web 服务器接收后转发给 WSGI 服务器WSGI 服务器接收请求并传递给 Python 应用程序处理Python 应用程序再将处理后的响应返回给 Web 服务器最后由 Web 服务器将响应发送给客户端。

2025-05-01 14:36:24 805

原创 正向代理、反向代理机制与 Windows和Linux系统代理设置

代理 是一种位于客户端和目标服务器之间的中间服务器。

2025-04-30 11:12:13 1034

STM32F10x大中小容量启动文件.zip

STM32F10x小容量启动文件,文件名"startup_stm32f10x_ld.s"; STM32F10x中容量启动文件,文件名"startup_stm32f10x_md.s"; STM32F10x大容量启动文件,文件名"startup_stm32f10x_hd.s";

2020-08-06

空空如也

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

TA关注的人

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