【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
深度解析YOLOv5:下一代实时目标检测框架实战指南
- 技术演进与架构设计
- YOLO系列发展脉络
- YOLOv5核心架构
- 1. 骨干网络(Backbone)
- 2. 特征融合(Neck)
- 3. 检测头(Head)
- 环境配置与快速开始
- 硬件要求建议
- 详细安装步骤
- 目录结构解析
- 数据集准备与训练
- 1. 数据格式规范
- 2. 数据增强策略
- 3. 训练流程详解
- 4. 训练监控
- 模型推理与部署
- 1. 基础检测示例
- 2. 高级推理配置
- 3. 模型导出与优化
- 关键技术深度解析
- 1. 自适应锚框计算
- 2. 损失函数创新
- 3. 训练优化技巧
- 可能遇到的问题与解决方案
- 1. CUDA内存不足
- 2. 数据集路径错误
- 3. ONNX导出失败
- 性能优化策略
- 1. 量化加速
- 2. TensorRT优化
- 3. 剪枝与蒸馏
- 学术背景与扩展阅读
- 基础论文
- 最新进展
- 应用场景与展望
- 典型工业应用
- 未来发展方向
YOLOv5是Ultralytics公司推出的高效目标检测框架,延续了YOLO(You Only Look Once)系列单阶段检测器的设计哲学,在速度和精度之间取得了卓越平衡。本文将全面剖析YOLOv5的架构设计、技术实现和实战应用,为读者提供从理论到实践的完整指南。
技术演进与架构设计
YOLO系列发展脉络
YOLOv5虽非原作者Joseph Redmon团队的官方版本,但在工程实现上取得了显著突破:
- YOLOv1-v3:奠定单阶段检测基础
- YOLOv4:引入大量Bag-of-Freebies技巧
- YOLOv5:工程优化典范,实现更优的精度-速度权衡
图:YOLOv5与其他检测器的性能比较(数据来源:Ultralytics官方)
YOLOv5核心架构
1. 骨干网络(Backbone)
- CSPDarknet:跨阶段部分连接减少计算量
- SPP(Spatial Pyramid Pooling):多尺度特征融合
- Focus结构:切片操作实现下采样(v5.0后优化为Conv)
2. 特征融合(Neck)
- PANet(Path Aggregation Network):双向特征金字塔
- 自适应特征选择:动态调整特征权重
3. 检测头(Head)
- 解耦头设计:分类与回归任务分离
- Anchor-free变体(v6.0后支持)
环境配置与快速开始
硬件要求建议
设备类型 | 推荐配置 | 预期性能 |
---|---|---|
高端GPU | RTX 3090 | 2ms/inference |
中端GPU | RTX 2060 | 6ms/inference |
边缘设备 | Jetson Xavier NX | 15ms/inference |
CPU-only | Xeon 8核 | 100ms/inference |
详细安装步骤
# 克隆仓库(推荐使用最新release分支)
git clone -b v7.0 https://github.com/ultralytics/yolov5.git
cd yolov5# 创建conda环境(Python 3.8+)
conda create -n yolov5 python=3.8
conda activate yolov5# 安装依赖(推荐使用官方requirements.txt)
pip install -r requirements.txt# 验证安装
python detect.py --weights yolov5s.pt --source data/images/bus.jpg
目录结构解析
yolov5/
├── data/ # 数据集配置
├── models/ # 模型定义
├── utils/ # 工具脚本
├── weights/ # 预训练权重
├── detect.py # 推理脚本
├── train.py # 训练脚本
├── export.py # 模型导出
└── requirements.txt # 依赖清单
数据集准备与训练
1. 数据格式规范
YOLOv5支持标准YOLO格式:
dataset/
├── images/
│ ├── train/ # 训练图片
│ └── val/ # 验证图片
└── labels/├── train/ # 对应标注(.txt)└── val/ # 每行格式: class x_center y_center width height
2. 数据增强策略
YOLOv5内置的增强配置(data/hyps/hyp.scratch-low.yaml
):
# 色彩空间变换
hsv_h: 0.015 # 色调
hsv_s: 0.7 # 饱和度
hsv_v: 0.4 # 明度# 几何变换
degrees: 0.0 # 旋转
translate: 0.1 # 平移
scale: 0.5 # 缩放
shear: 0.0 # 剪切# 马赛克增强
mosaic: 1.0 # 概率
mixup: 0.0 # MixUp概率
3. 训练流程详解
# 单GPU训练
python train.py --img 640 --batch 16 --epochs 100 --data coco.yaml --weights yolov5s.pt# 多GPU训练(DDP模式)
python -m torch.distributed.run --nproc_per_node 4 train.py --img 640 --batch 64 --data coco.yaml --weights yolov5s.pt --device 0,1,2,3
关键参数解析:
--img
:输入图像尺寸(必须为32的倍数)--batch
:总批次大小(自动平分到各GPU)--hyp
:超参数配置路径--adam
:使用Adam优化器(默认SGD)
4. 训练监控
YOLOv5自动集成多种可视化工具:
- TensorBoard:
tensorboard --logdir runs/train
- Weights & Biases:
pip install wandb wandb login
模型推理与部署
1. 基础检测示例
import torch# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')# 推理
results = model(['im1.jpg', 'im2.jpg'])# 结果解析
results.print() # 打印统计信息
results.show() # 显示检测结果
results.save() # 保存结果图片
2. 高级推理配置
# 自定义推理参数
model.conf = 0.25 # 置信度阈值
model.iou = 0.45 # IoU阈值
model.classes = [0, 2] # 只检测person和car类别# 视频流处理
cap = cv2.VideoCapture(0)
while cap.isOpened():ret, frame = cap.read()results = model(frame)cv2.imshow('YOLOv5', np.squeeze(results.render()))if cv2.waitKey(1) == ord('q'):break
3. 模型导出与优化
# 导出TorchScript
python export.py --weights yolov5s.pt --include torchscript# 导出ONNX(带动态维度)
python export.py --weights yolov5s.pt --include onnx --dynamic# 导出TensorRT(需要CUDA环境)
python export.py --weights yolov5s.pt --include engine --device 0
关键技术深度解析
1. 自适应锚框计算
YOLOv5在训练前自动分析数据集:
# 自动计算最佳锚框
python utils/autoanchor.py --data coco.yaml
输出示例:
Best Anchors: [[12, 16], [19, 36], [40, 28], [36, 75], [76, 55], [72, 146], [142, 110], [192, 243], [459, 401]]
2. 损失函数创新
YOLOv5的复合损失包含:
- CIoU Loss:改进的边界框回归损失
\mathcal{L}_{CIoU} = 1 - IoU + \frac{\rho^2(b,b^{gt})}{c^2} + \alpha v
- 分类损失:带标签平滑的BCEWithLogitsLoss
- 对象置信度:动态焦点权重
3. 训练优化技巧
- 自动批处理大小调整:
# 根据GPU内存自动调整 torch.cuda.empty_cache() scaled_batch = batch_size * (1.0 - mem_usage)
- 梯度累积:
optimizer.zero_grad() for i, (images, targets) in enumerate(dataloader):loss = model(images, targets)loss.backward()if (i+1) % accumulate == 0:optimizer.step()optimizer.zero_grad()
可能遇到的问题与解决方案
1. CUDA内存不足
现象:RuntimeError: CUDA out of memory
解决方案:
- 减小批次大小:
python train.py --batch 8
- 启用梯度累积:
python train.py --batch 64 --accumulate 8
- 使用更小模型(如yolov5n)
2. 数据集路径错误
现象:FileNotFoundError: [Errno 2] No such file or directory
验证步骤:
- 检查
data.yaml
内容:train: ../dataset/images/train val: ../dataset/images/val
- 确认路径存在且包含图片
3. ONNX导出失败
现象:Unsupported: ONNX export of operator: getattr
解决方法:
- 更新PyTorch到最新稳定版
- 简化模型结构:
python export.py --weights yolov5s.pt --include onnx --simplify
- 使用官方提供的导出脚本
性能优化策略
1. 量化加速
# 动态量化
model = torch.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8
)# 保存量化模型
torch.save(model.state_dict(), 'yolov5s_quantized.pt')
2. TensorRT优化
# 使用官方转换工具
python export.py --weights yolov5s.pt --include engine --device 0# 自定义配置
trtexec --onnx=yolov5s.onnx --saveEngine=yolov5s.engine \--fp16 --workspace=4096
3. 剪枝与蒸馏
# 使用TorchPruner进行通道剪枝
import torchpruner as tpmodel = tp.prune(model, method='l1_norm', amount=0.3, # 剪枝比例exclude=['detect'])
学术背景与扩展阅读
基础论文
-
原始YOLO论文:
- Redmon J, et al. “You Only Look Once: Unified, Real-Time Object Detection.” CVPR 2016
-
YOLOv3改进:
- Redmon J, Farhadi A. “YOLOv3: An Incremental Improvement.” arXiv 2018
-
YOLOv4技术:
- Bochkovskiy A, et al. “YOLOv4: Optimal Speed and Accuracy of Object Detection.” arXiv 2020
最新进展
-
Transformer变体:
- YOLOS、YOLOTR等基于Transformer的改进
-
神经架构搜索:
- AutoYOLO等自动设计架构
-
自监督学习:
- 减少对标注数据的依赖
应用场景与展望
典型工业应用
- 智能安防:实时异常行为检测
- 自动驾驶:道路场景理解
- 工业质检:缺陷自动识别
- 医疗影像:病灶区域定位
未来发展方向
- 多模态融合:结合雷达、红外等传感器
- 视频理解:时序上下文建模
- 边缘优化:面向IoT设备的极致轻量化
- 自学习系统:持续在线更新
YOLOv5作为当前最受欢迎的检测框架之一,其工程实现优势使其在工业界获得广泛应用。通过本文的技术解析和实战指南,读者可以快速掌握YOLOv5的核心技术,并将其应用于实际项目中。随着Ultralytics团队的持续更新,YOLOv5系列仍在不断进化,为实时目标检测领域树立了新的标杆。
相关文章:
【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
深度解析YOLOv5:下一代实时目标检测框架实战指南 技术演进与架构设计YOLO系列发展脉络YOLOv5核心架构1. 骨干网络(Backbone)2. 特征融合(Neck)3. 检测头(Head) 环境配置与快速开始硬件要求建议详…...
CentOS NFS共享目录
最近遇到一个问题,一台CentOS7应用服务器上的服务需要访问另外一台CentOS7应用服务器上的文件,然后传输文件给第三方。想到windows系统之间有文件共享的功能,Linux系统之间是否也有类似的文件共享功能呢? NFS NFS代表Network Fil…...
「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具
引言:从Proteus到国产平台的范式革新 在高校嵌入式实验教学中,仿真工具的选择直接影响学生的工程能力培养与创新思维发展。长期以来,Proteus作为经典工具占据主导地位,但其设计理念已难以满足现代复杂系统教学与国产化技术需求。…...
[随笔] 升级uniapp旧项目的vue、pinia、vite、dcloudio依赖包等
汇总 # 升级uniapp项目dcloudio整体依赖,建议执行多次 # 会顺带自动更新/升级vue的版本 npx dcloudio/uvmlatest alpha# 检查 pinia 的最新版本 npm view pinia version# 更新项目 pinia 到最新版本 npm update pinia# 更新项目 pinia 到特定的版本 # 首先…...
C++学习:六个月从基础到就业——异常处理:机制与最佳实践
C学习:六个月从基础到就业——异常处理:机制与最佳实践 本文是我C学习之旅系列的第三十八篇技术文章,也是第二阶段"C进阶特性"的最后一篇,主要介绍C中的异常处理机制及其最佳实践。查看完整系列目录了解更多内容。 引言…...
【MongoDB篇】MongoDB的数据库操作!
目录 引言第一节:数据库的“诞生”——如何创建数据库?🤔第二节:数据库的“查阅”——看看我的数据库们!🕵️♀️第三节:数据库的“切换”——我在哪个房间干活?➡️🚪…...
react-新建项目复用node_modules
每次新建定制时,前端都需要npm i来安装依赖,耗时长 失败多。 可以把这个bat文件放到新建分支的前端目录下,修改后双击bat文件运行,如果不需要添加修改依赖,无需运行npm i node_modules.bat里面的内容如下:…...
unity Orbbec Femto Bolt接入unity流程记录 AzureKinectExamples 插件 使用记录
奥比中光的深度相机Orbbec Femto Bolt是Microsoft的Azure Kinect DK的升级版,根据官网的文档配置环境遇到了一些问题,记录一下。 注意: 官网文档链接:Femto Bolt文档 1、首先连接相机到电脑USB3.0,接通电源…...
信息科技伦理与道德3-4:面临挑战
1 人机结合 1.1 人机结合的挑战 如何处理好人与机器的决策的关系?智能决策的不透明、不可解释性…出了问题该谁负责? 案例1:设想救护车调度系统造成混乱 某城市使用一个机器学习平台来进行城市里医院的救护车调度工作。起初,这个…...
对比测评:为什么AI编程工具需要 Rules 能力?
通义灵码 Project Rules 在开始体验通义灵码 Project Rules 之前,我们先来简单了解一下什么是通义灵码 Project Rules? 大家都知道,在使用 AI 代码助手的时候,有时候生成的代码不是自己想要的,或者说生成的代码采纳后…...
git学习之git常用命令
1. 初始化仓库 git init初始化一个新的 Git 仓库。 2. 克隆远程仓库 git clone <repository-url>从远程服务器克隆一个已有仓库到本地。 3. 配置用户名和邮箱 git config --global user.name "Your Name" git config --global user.email "youexampl…...
The Open Group 参加雷丁博物馆的数字革命展览
The Open Group 参加了雷丁博物馆的数字革命展览,庆祝雷丁市转型为数字中心60周年。 展览于3月18日(星期二)向公众开放,将持续至2025年12月24日。展览旨在纪念雷丁市令人惊叹的科技之旅,从1964年数字设备公司ÿ…...
Linux[配置vim]
Linux[配置vim] 我这里的环境是xshell8的虚拟机,Ubuntu 配置好了以后功能嘎嘎多 以下是为 Ubuntu 配置功能增强版 Vim 的详细步骤,包含代码高亮、插件管理、自动补全、文件导航等常用功能: 1. 安装最新版 Vim sudo apt update sudo apt install vim-g…...
【数据结构】图论存储结构深度解析:邻接多重表如何实现无向图O(1)删边?邻接矩阵/链表/十字链对比
邻接多重表 导读一、有向图的存储结构二、邻接多重表三、存储结构四、算法评价4.1 时间复杂度4.2 空间复杂度 五、四种存储方式的总结5.1 空间复杂度5.2 找相邻边5.3 删除边或结点5.4 适用于5.5 表示方式 六、图的基本操作结语 导读 大家好,很高兴又和大家见面啦&a…...
【AlphaFold2】Feature extraction:提取特征,为模型输入做准备|Datapipeline讲解
博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: Yaoyao2024往期回顾:【深度学习】多头注意力机制的实现|pytorch每日一言🌼: 学习成绩只是表象,而学习能力才是伴随一身的结果🌺…...
Android 实现一个隐私弹窗
效果图如下: 1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数 2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来 res/layout/dialog_privacy_policy.xml 文件 <?xml version"1.0" encoding"utf-8"?&…...
第三方软件测试报告如何凭借独立公正与专业权威发挥关键作用?
在软件项目里,第三方软件测试报告起着极为关键的作用。第三方有着中立客观的立场。第三方具备专业能力。凭借这些,第三方能为软件质量评估提供可靠依据。下面要从不同方面介绍第三方软件测试报告。 独立公正性 第三方测试机构与软件开发方、使用方不存…...
QT控件 参考Qt的PIMPL设计模式实现使用QWidget控件绘制3D饼状图表和3D柱状图表,使用QChartView绘制圆柱体图表
整体绘制效果就是:Qt 实现3维饼状图 中的内容, 只不过我借鉴了Qt的PIMPL模式重新封装了整个实现过程 实现效果展示 目录导读 实现效果展示前言绘制3D饼状图表PIMPL模式设计类具体实现计算圆弧中心判断点是否在某个扇区中在私有类中绘制绘制3D柱状图表PIMPL模式设计类具体实现绘…...
Android Q允许低内存启用系统弹窗
如果SYSTEM_ALERT_WINDOW权限可用,则返回true。 *从Q开始,在低ram手机上禁用SYSTEM_ALERT_WINDOW。 vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/Utils.java public static boolean isSystemAlertWindowEnabled(Co…...
Leetcode 3532. Path Existence Queries in a Graph I
Leetcode 3532. Path Existence Queries in a Graph I 1. 解题思路2. 代码实现 题目链接:3532. Path Existence Queries in a Graph I 1. 解题思路 这一题算是一个比较典型的DSU的题目,我们就是不断地根据前后节点的距离将其进行聚类,然后…...
AI Agent Protocols:现状、挑战与未来展望
一、引言 在当今人工智能飞速发展的时代,大语言模型(LLMs)的进步使得LLM智能体在各个行业得到了广泛的应用,如客户服务、内容生成、数据分析和医疗保健等领域。 然而,随着越来越多的LLM智能体被部署,一个…...
自动化立库/AGV物流仿真详细步骤
以下是一种可以在预算和周期内实现自动化立库及AGV 方案仿真分析的方法: 一、工具选择 软件工具FlexSim:这是一款流行的离散事件仿真软件。它具有直观的图形用户界面,通过简单的拖拽操作就可以构建自动化立库和 AGV 的模型。其内置的丰富的…...
【题解-Acwing】872. 最大公约数
题目:872. 最大公约数 题目描述 给定 n 对正整数 ai,bi,请你求出每对数的最大公约数。 输入 第一行包含整数 n。 接下来 n 行,每行包含一个整数对 ai,bi。 输出 输出共 n 行,每行输出一个整数对的最大公约数。 数据范围 1 ≤ n ≤ 105, 1 ≤ai, bi ≤ 2109 时空限…...
62.微服务保姆教程 (五) Seata--微服务分布式事务组件
Seata–微服务分布式事务组件 一、什么是分布式事务 1.什么是事务 事务指的是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。 2.本地事务 本地事务是指基于关系型数据库的事务,也称为传统事务。大多数场景…...
【算法练习】归并排序和归并分治
文章目录 1.归并排序1.1 递归版本1.2 非递归版本 2.归并分治2.1 计算数组的小和2.2 计算翻转对 1.归并排序 归并排序的核心步骤是: 拆分:将无序数组不断对半拆分成小块,直到每个小块只剩一个元素(自然有序)。 合并&a…...
从SOA到微服务:架构演进之路与实践示例
一、架构演进背景 在软件开发领域,架构风格随着业务需求和技术发展不断演进。从早期的单体架构,到面向服务架构(SOA),再到如今的微服务架构,每一次变革都是为了解决当时面临的核心问题。 二、SOA架构解析 2.1 SOA核心概念 SOA&…...
vue+cesium线流动纹理
index.vue页面 <!--线流动纹理实现--> <template><div id"mapContainerFirst"></div> </template> <script lang"ts" setup> import { init as initPolylineTrailLinkMaterialProperty } from ./PolylineTrailLinkM…...
深度学习·经典模型·SwinTransformer
SwinTransformer 主要创新点:移动窗口,基于窗口的注意力计算 Patch Embedding 下采样打包为Pacth:可以直接使用Conv2d 也可以先打包后使用embedding映射。 Patch Merging 类似池化的操作,压缩图片大小,同时通道数增多ÿ…...
在开发板上如何处理curl: (60) SSL certificate problem
目录 引言 问题解析 解决方法 跳过证书验证 采用证书认证 结语 引言 最近一直推荐学生们在课程实验中使用curl及其libcurl。curl 是一个强大的命令行工具,用于在命令行中进行数据传输。它支持多种协议,如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等。…...
Ansible 铸就 Linux 安全之盾(Ansible Builds Linux Security Shield)
Ansible 铸就 Linux 安全之盾:自动化基线检查与防护 在当今网络安全形势日益严峻的背景下,Linux 系统作为服务器和关键基础设施的核心,其安全防护显得尤为重要。Ansible 作为一款强大的自动化运维工具,能够帮助我们高效、可靠地实…...
字符串(格式化字符串字面值)进行输出
在 Python 中,print(fnew_obs:{new_obs}) 这种形式是使用 f 字符串(格式化字符串字面值) 进行输出,它可以打印 任何可转换为字符串的数据类型,并且支持在字符串中嵌入表达式。以下是详细说明: 1. 基本功能…...
微服务架构详解:从概念到实践
目录 前言1. 微服务架构概述1.1 什么是微服务?1.2 微服务的核心思想 2. 微服务的优势2.1 可扩展性2.2 高灵活性2.3 容错性和可靠性2.4 高效开发与部署 3. 微服务的挑战3.1 系统复杂性增加3.2 分布式事务和数据一致性3.3 部署和运维的复杂性 4. 微服务的实施与实践4.…...
激光驱鸟:以科技重构生态防护边界
技术原理 激光驱鸟装置的核心机制基于鸟类视觉系统特性。其发射的绿色激光束(波长通常为532纳米)处于鸟类视网膜敏感光谱范围内,当激光束在特定角度扫描时,会形成动态光斑干扰。鸟类视网膜中视锥细胞对绿色光的高敏感度使其产生应…...
【Python魔法方法(特殊方法)】
在 Python 中,许多运算符都可以进行重载,以下是一些常见运算符及其对应的魔法方法(特殊方法): 算术运算符 加法 :__add__ 用于定义对象相加的行为。例如,当你对两个自定义类的实例使用 运算符…...
centos上安装python的3.13版本
在 CentOS 上安装 Python 3.13(或其它自定义版本)最推荐的方法是通过源码编译安装,不会影响系统自带的 Python2/Python3 环境,也更灵活可控。 以下步骤适用于: ✅ CentOS 7 / 8 / 9 ✅ 安装 Python 3.13(…...
实习技能记录【4】-----消息分发中的观察者模型
观察者 观察者模式(Observer Pattern)是一种行为型设计模式,主要用于定义对象之间的一对多依赖关系,让多个观察者对象能够同时监听某个主题对象的状态变化,并在主题对象状态改变时自动通知所有观察者对象。 参考b站博…...
Linux 下编译BusyBox
一、linux下编译 1.拉取busybox源码 git clone https://github.com/mirror/busybox.git 内容如下 2.配置make,建议在linux下单独开一个终端执行 进入busybox源码目录,使用如下命令 make menuconfig 3.报错 解决办法: 安装ncurses sud…...
Linux《进程概念(中)》
在之前的Linux《进程概念(上)》当中我们已经了解了进程的基本概念以及如何去创建对应的子进程,那么接下来在本篇当中我们就继续来进程的学习,在本篇当中我们要学习到进程的状态、进程的优先级、进程切换、Linux真实的调度算法——…...
Linux Vim 使用 显示行号、替换、查找、多文件打开等骚操作
目录 简述 vim的三种模式 概述 转换方式 文本编辑 命令模式 插入(编辑)模式 底行模式 搜索关键字 显示行号 替换 多文件打开 简述 vi编辑器是Linux系统下标准的编辑器。 那么简单的理解,就像是Windows下的记事本。 补充&a…...
AimRT 从零到一:官方示例精讲 —— 三、Executor示例.md
Executor示例 官方仓库:executor 配置文件(configuration_executor.yaml) 依据官方示例项目结构自行编写YAML配置文件: # 基础信息 base_info:project_name: Logger # 项目名称build_mode_tags: ["EXAMPLE", &quo…...
只把夜莺监控当作告警来使用:一种轻量化的运维实践
只把夜莺监控当作告警来使用:一种轻量化的运维实践 在现代的 IT 运维体系中,监控和告警是两个经常被一同提及的概念。然而,在实际工作中,很多团队对监控系统的需求并不一定全面覆盖指标采集、可视化展示、告警触发等功能…...
按键精灵安卓ios辅助工具脚本:实用的文件插件(lua开源)
亮点:此lua插件可再android和ios上通用 1、获取文件的属性 2、改变当前的工作路径为dirpath 3、获取当前的工作路径 4、创建文件夹,支持多级创建 5、删除文件夹 6、递归遍历文件夹 7、设置文件的访问时间和修改时间 函数原型:lfs.Attribute(…...
水库现代化建设指南-水库运管矩阵管理系统建设方案
政策背景 2023年8月24日,水利部发布的水利部关于加快构建现代化水库运行管理矩阵的指导意见中指出,在全面推进水库工程标准化管理的基础上,强化数字赋能,加快构建以推进全覆盖、全要素、全天候、全周期“四全”管理,完…...
若依后台管理系统-v3.8.8-登录模块--个人笔记
各位编程爱好者们,你们好!今天让我们来聊聊若依系统在登录模块的一些业务逻辑,以及本人的一些简介和心得,那么废话不多说,让我们现在开始吧。 以下展示的这段代码,正是若依在业务层对应的登录代码…...
Flip PDF Plus Corp7.7.22电子书制作软件
flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企业级的翻页电子书制作软件,拥有丰富的模板,主题和动画场景,每本书最大页数1000页,每本书的最大大小1GB,即可以帮助企业用户制作好丰富的电子书籍。 …...
公路安全知识竞赛主持稿串词
合 :尊敬的各位领导、各位来宾 、各位选手 : 大家上午 好! 男 :安全就是生命,安全就是效益,安全是一切工作的重中之重!安全生产只有满分,没有及格。只有安全生产这个环节不出差错,我…...
vscode 配置qt
工具:vscode、qttools、qtconfigure Search Mode改成基于cmake的。 # 在项目中指定Qt的路径 set(Qt5_DIR "/home/jp/qt-everywhere-src-5.12.9/arm-qt/lib/cmake/Qt5") # 用于指定 Qt5 的安装路径 find_package(Qt5 REQUIRED COMPONENTS Widgets)这样就…...
Node.js 事件循环和线程池任务完整指南
在 Node.js 的运行体系中,事件循环和线程池是保障其高效异步处理能力的核心组件。事件循环负责调度各类异步任务的执行顺序,而线程池则承担着处理 CPU 密集型及部分特定 I/O 任务的工作。接下来,我们将结合图示,详细剖析两者的工作…...
Java之BigDecimal
BigDecimal 是 Java 中用于高精度计算的类,特别适合需要精确十进制运算的场景,如金融计算、货币运算、概率计算等。 为什么需要 BigDecimal类 解决浮点数精度问题:float 和 double 使用二进制浮点运算,无法精确表示某些十进制小数…...
Qt5与现代OpenGL学习(四)X轴方向旋转60度
把上面两张图像放到D盘1文件夹内: shader.h #ifndef SHADER_H #define SHADER_H#include <QDebug> #include <QOpenGLShader> #include <QOpenGLShaderProgram> #include <QString>class Shader { public:Shader(const QString& verte…...