当前位置: 首页 > news >正文

debugfs:Linux 内核调试的利器

目录

  • 一、什么是 debugfs?
  • 二、debugfs 的配置和启用方式
    • 2.1 内核配置选项
    • 2.2 挂载 debugfs
    • 2.3 Android 系统中的 debugfs
  • 三、debugfs 的典型应用场景
    • 3.1 调试驱动开发
    • 3.2 内核子系统调试
    • 3.3 性能分析
  • 四、常见 debugfs 子目录与功能示例
    • 4.1 /sys/kernel/debug/tracing - 内核跟踪核心目录
    • 4.2 /sys/kernel/debug/gpio - GPIO 状态调试
    • 4.3 /sys/kernel/debug/regulator - 电源调节器状态
    • 4.4 /sys/kernel/debug/dma_buf - DMA buffer 分析
    • 4.5 /sys/kernel/debug/<自定义驱动名>/
  • 五、调试案例:自定义驱动中使用 debugfs
  • 六、debugfs 的工作原理和核心机制
  • 七、核心 API 总览
  • 八、线上环境下的注意事项与安全性问题
    • 8.1 信息泄露风险
    • 8.2 系统稳定性风险
    • 8.3 Android 安全限制节
  • 九、补充:debugfs 与 procfs、sysfs 的区别


一、什么是 debugfs?

debugfs 是 Linux 内核提供的一个专用文件系统,主要用于内核与用户空间之间的调试信息交换。它为内核开发人员或者驱动开发者提供了一种无需修改内核代码即可获取内部状态的方式。

相比 /proc 和 /sys,debugfs 更偏向临时调试用途,适合暴露实验性、不稳定或仅用于开发阶段的接口。

特点

动态创建、无需重新编译内核。
文件操作接口简单,可通过 shell 脚本或 C 语言轻松操作。
开发者常用于调试驱动、查看内部状态、动态注入参数等。


二、debugfs 的配置和启用方式

2.1 内核配置选项

要使用 debugfs,首先需要在编译内核时启用支持:

CONFIG_DEBUG_FS=y

如果你使用的是 Android 或嵌入式系统,也可在 menuconfig 中启用:

Kernel hacking  --->  
[*] Debug Filesystem

此选项默认对主线内核是开启的,但某些发行版或定制系统可能关闭以减小体积或提高安全性。

2.2 挂载 debugfs

一般系统启动时不会自动挂载 debugfs,你可以手动挂载:

sudo mount -t debugfs none /sys/kernel/debug

也可以在启动脚本中加入自动挂载逻辑:

if ! mountpoint -q /sys/kernel/debug; then  mount -t debugfs none /sys/kernel/debug
fi

验证:

 ls /sys/kernel/debug/

输出类似如下则表示挂载成功:

bdi/  clk/  gpio/  tracing/  suspend_stats  ...

2.3 Android 系统中的 debugfs

Android 默认处于安全模式,大多数生产环境中是关闭的。可以通过如下方式在开发版系统中开启:

adb shell
mount -t debugfs debugfs /sys/kernel/debug

部分 Android 内核会禁用 CONFIG_DEBUG_FS,需要通过修改 kernel defconfig 启用并重新编译。

三、debugfs 的典型应用场景

debugfs 通常用于以下几个方面:

3.1 调试驱动开发

我们可以将调试信息、参数、状态变量通过 debugfs 暴露出来,便于动态查看或调整,而无需反复修改内核代码、重启内核。例如:

读取设备寄存器
控制调试开关(如 loglevel)
查看缓存、状态统计信息等

3.2 内核子系统调试

很多内核子系统默认就通过 debugfs 暴露接口,例如:

tracing(ftrace)
gpio 状态查看与操作
regulator 状态与调节
DMA buf debug 信息
audio 子系统的 debug log(如 asoc)

3.3 性能分析

结合 ftrace(内核函数跟踪器)可以做函数调用路径分析、系统延迟检测、实时调试。


四、常见 debugfs 子目录与功能示例

4.1 /sys/kernel/debug/tracing - 内核跟踪核心目录

这是 ftrace 的主目录,可以分析函数调用、调度、延迟等。常见文件:

available_tracers:可用的跟踪器类型
current_tracer:当前启用的跟踪器
trace:跟踪结果输出
set_ftrace_filter:设置要跟踪的函数

示例:

# 开启函数跟踪
echo function > /sys/kernel/debug/tracing/current_tracer
# 查看 trace 日志
cat /sys/kernel/debug/tracing/trace

4.2 /sys/kernel/debug/gpio - GPIO 状态调试

查看系统中所有 GPIO 控制器和当前引脚状态:

cat /sys/kernel/debug/gpio

输出类似:

gpiochip0: GPIOs 0-31, parent: platform/10012000.gpio, gpio-controller 
gpio-4   (sysfs               ) out hi    
gpio-17  (wifi_power         ) out lo    

4.3 /sys/kernel/debug/regulator - 电源调节器状态

可查看/调试 regulator 驱动注册的电压、状态等:

cat /sys/kernel/debug/regulator/ */status
cat /sys/kernel/debug/regulator/ */microvolts

4.4 /sys/kernel/debug/dma_buf - DMA buffer 分析

可用于分析图形子系统中共享内存的引用情况:

cat /sys/kernel/debug/dma_buf/bufinfo

4.5 /sys/kernel/debug/<自定义驱动名>/

我们可以调用 debugfs_create_* 系列 API 在这里创建自己的调试目录和接口,支持暴露:

整数、布尔变量
文件接口(read/write)
二进制 blob(例如 buffer dump)


五、调试案例:自定义驱动中使用 debugfs

一个简单的例子:假如我们正在开发一个字符设备驱动,需要调试内部状态:

#include <linux/debugfs.h>
static struct dentry *debug_dir;
static u32 debug_val = 0;
static int __init mydrv_init(void)
{debug_dir = debugfs_create_dir("mydrv", NULL);if (!debug_dir)return -ENOMEM;debugfs_create_u32("debug_val", 0644, debug_dir, &debug_val);return 0;
}
static void __exit mydrv_exit(void)
{debugfs_remove_recursive(debug_dir);
}

加载驱动后可直接查看或设置:

cat /sys/kernel/debug/mydrv/debug_val
echo 42 > /sys/kernel/debug/mydrv/debug_val

这比 printk + 重编译 + 重启流程更高效,尤其适合频繁调试场景。


六、debugfs 的工作原理和核心机制

debugfs 实际上是一个虚拟文件系统(Virtual File System, VFS),类似于 /proc/sys,其底层由内核代码负责维护和注册。

它的本质是
内核将特定结构体变量映射为文件或目录,通过 file_operations 让用户空间可以读写这些内核变量或结构体。

关键实现机制

  • debugfs_create_*() 系列 API 用于创建虚拟文件
  • 每个文件背后对应一个 file_operations,封装了 read/write 行为
  • 这些文件操作最终在 debugfs 挂载点下暴露给用户空间

例如,debugfs_create_u32("val", 0644, parent, &var) 就等价于暴露了一个变量 var 到文件系统中,可以直接读写。模块注册结构图如下:
在这里插入图片描述


七、核心 API 总览

基本语法格式:

API名称功能
debugfs_create_dir(name, parent)创建子目录
debugfs create file(name, mode, parent, data, fops)创建具备操作函数的文件
debugfs_create_u32(name, mode, parent, ptr)绑定变量为 u32 文件
debugfs_create bool(name, mode, parent, ptr)创建布尔值控制项
debugfs_remove(entry)删除单个debugfs项
debugfs_remove_recursive(entry)递归删除整个目录树

示例:绑定一个只读的布尔变量

static bool debug_flag = true;
debugfs_create_bool("enable_debug", 0444, parent_dir, &debug_flag);

用户空间读取:

cat /sys/kernel/debug/mydrv/enable_debug

虽然 debugfs 极大地方便了开发与调试,但在生产环境下要慎用或禁用,主要原因包括:

八、线上环境下的注意事项与安全性问题

8.1 信息泄露风险

  • debugfs 会暴露大量内核内部信息,黑客或恶意程序可借此探测系统结构。
  • 某些接口甚至允许直接写入数据,可能对系统稳定性产生影响。

8.2 系统稳定性风险

  • 由于很多 debugfs 文件由开发者编写,若实现不严谨可能导致 panic。
  • 示例:越界访问、没有加锁保护、引用了已释放的结构体等。

8.3 Android 安全限制节

  • Android 生产版默认关闭 debugfs
  • SELinux 和 seccomp 等机制会阻止其挂载

推荐的安全策略:

  • 线上系统关闭 CONFIG_DEBUG_FS,从内核构建阶段禁止。
  • 或者通过配置挂载权限为只读,并结合 SELinux 限制访问。
  • 对自定义 debugfs 文件做好访问控制,严格限制 read/write 权限。

九、补充:debugfs 与 procfs、sysfs 的区别

特性debugfsprocfssysfs
主要用途调试/开发进程信息内核对象模型
是否稳定否(可变)
是否推荐线上启用
是否支持驱动自定义接口支持支持但复杂支持但需 class/device

相关文章:

debugfs:Linux 内核调试的利器

目录 一、什么是 debugfs&#xff1f;二、debugfs 的配置和启用方式2.1 内核配置选项2.2 挂载 debugfs2.3 Android 系统中的 debugfs 三、debugfs 的典型应用场景3.1 调试驱动开发3.2 内核子系统调试3.3 性能分析 四、常见 debugfs 子目录与功能示例4.1 /sys/kernel/debug/trac…...

Spyglass:跨时钟域同步(同步使能)

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 简介 同步使能方案主要用于数据信号跨时钟域同步&#xff0c;该方案将一个控制信号同步至目标时钟域并用其作为数据信号的捕获触发器的使能信号&#xff0c;如图1所示…...

安装Minikube

环境 CentOS7 参考 minikube start | minikube 创建虚拟机,参考 模拟Gitlab安装-CSDN博客 下载二进制包 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 报错不能解析host,配置host 下载成功 安装 sudo install minikube-linux-am…...

图像锐化调整

一、背景介绍 之前找多尺度做对比度增强时候&#xff0c;发现了一些锐化相关算法&#xff0c;正好本来也要整理锐化&#xff0c;这里就直接顺手对之前做过的锐化大概整理了下&#xff0c;方便后续用的时候直接抓了。 这里整理的锐化主要是两块&#xff1a;一个是参考论文&#…...

【CanMV K230】AI_CUBE1.4

《k230-AI 最近小伙伴有做模型的需求。所以我重新捡起来了。正好把之前没测过的测一下。 这次我们用的是全新版本。AICUBE1.4.dotnet环境9.0 注意AICUBE训练模型对硬件有所要求。最好使用独立显卡。 有小伙伴说集显也可以。emmmm可以试试哈 集显显存2G很勉强了。 我们依然用…...

STM32外设AD-定时器触发 + DMA读取模板

STM32外设AD-定时器触发 DMA读取模板 一&#xff0c;方法思路二&#xff0c;定时器基础与配置1&#xff0c;定时器时钟源 (Clock Source)2&#xff0c;预分频器 (Prescaler - PSC)3&#xff0c;自动重装载寄存器 (Auto-Reload Register - ARR) / 周期 (Period)4&#xff0c;触…...

数据库故障排查指南:从入门到精通

1. 常见数据库故障类型 1.1 连接故障 数据库连接超时连接池耗尽网络连接中断认证失败1.2 性能故障 查询执行缓慢内存使用过高CPU使用率异常磁盘I/O瓶颈1.3 数据故障 数据不一致数据丢失数据损坏事务失败2. 故障排查流程 2.1 初步诊断 -- 检查数据库状态SHOW STATUS;SHOW PRO…...

【AT32】 AT32 移植 Freemodbus 主站

基于野火开发板 at32f437zgt6芯片 和at32 官方开发工具 移植了网上一套开源的freemodbus 主站 这里对modbus 协议不做过多的讲解 主要已实现代码为主 AT32 Work Bench 参考之前我之前的配置 与stm32cubemx软件差不多 注意485芯片的收发脚配置即可 AT32 IDE 说实话这软件太垃…...

内网环境下如何使用ntpdate实时同步时间

背景介绍 NTP&#xff08;Network Time Protocol&#xff09;是一种网络协议&#xff0c;用于同步计算机系统的时间。ntpdate是一个用于手动同步时间的命令行工具&#xff0c;它可以从指定的NTP服务器获取当前时间并更新本地系统时间。 ntpdate 服务介绍 功能&#xff1a;ntp…...

python版本管理工具-pyenv轻松切换多个Python版本

在使用python环境开发时&#xff0c;相信肯定被使用版本所烦恼&#xff0c;在用第三方库时依赖兼容的python版本不一样&#xff0c;有没有一个能同时安装多个python并能自由切换的工具呢&#xff0c;那就是pyenv&#xff0c;让你可以轻松切换多个Python 版本。 pyenv是什么 p…...

工商总局可视化模版 – 基于ECharts的大数据可视化HTML源码

概述 在大数据时代&#xff0c;数据可视化已成为各行各业进行数据分析和决策的重要工具。幽络源今天为大家带来一款基于ECharts的工商总局数据可视化HTML模版&#xff0c;帮助开发者快速搭建专业级工商广告数据展示平台。这款模版设计规范&#xff0c;功能完善&#xff0c;适合…...

计算机网络 : 网络基础

计算机网络 &#xff1a; 网络基础 目录 计算机网络 &#xff1a; 网络基础引言1. 网络发展背景2. 初始协议2.1 初始协议2.2 协议分层2.2.1 软件分层的好处2.2.2 OSI七层模型2.2.3 TCP/IP五层&#xff08;四层&#xff09;模型 2.3 TCP/IP协议2.3.1TCP/IP协议与操作系统的关系&…...

eSwitch manager 简介

eSwitch manager 的定义和作用 eSwitch manager 通常指的是能够配置和管理 eSwitch&#xff08;嵌入式交换机&#xff09;的实体或接口。在 NVIDIA/Mellanox 的网络架构中&#xff0c;Physical Function&#xff08;PF&#xff09;在 switchdev 模式下充当 eSwitch manager&am…...

物联网技术在银行安全用电系统中的应用与实践研究

摘要 随着金融科技的快速发展&#xff0c;银行业电子设备数量激增&#xff0c;用电安全管理问题日益突出。本文基于2019年农业银行与2020年中国邮政储蓄银行发布的安全用电相关政策&#xff0c;分析了银行场景下存在的五大用电安全隐患&#xff0c;提出以物联网技术为核心的安…...

589. N叉树的前序遍历迭代法:null指针与栈的巧妙配合

一、题目描述 给定一个N叉树的根节点&#xff0c;返回其节点值的前序遍历结果。前序遍历的定义是&#xff1a;先访问根节点&#xff0c;再依次遍历每个子节点&#xff08;从左到右&#xff09;。例如&#xff0c;对于如下N叉树&#xff1a; 1/ | \3 2 4 / \ 5 6前序遍历结果…...

【洗车店专用软件】佳易王洗车店多项目会员管理系统:一卡多用扣次软件系统实操教程 #扣次洗车管理软件

一、软件试用版资源文件下载说明 &#xff08;一&#xff09;若您想体验软件功能&#xff0c;可通过以下方式获取软件试用版资源文件&#xff1a; 访问头像主页&#xff1a;进入作者头像主页&#xff0c;找到第一篇文章&#xff0c;点击文章最后的卡片按钮&#xff0c;即可了解…...

小红书笔记详情接口如何调用?实操讲解。

调用小红书笔记详情接口通常需要经过申请权限、构建请求、发送请求并处理响应等步骤&#xff0c;以下是详细的实操讲解&#xff1a; 一、申请接口权限 注册小红书开放平台账号 访问小红书开放平台官网/第三方开放平台&#xff0c;按照提示完成注册流程&#xff0c;提供必要的…...

leetcode 57. Insert Interval

题目描述 代码&#xff1a;由于intervals已经按照左端点排序&#xff0c;并且intervals中的区间全部不重叠&#xff0c;那么可以断定intervals中所有区间的右端点也已经是有序的。先二分查找intervals中第一个其右端点>newInterval左端点的区间。然后按照类似于56. Merge In…...

杰理ac696配置mic

省电容mic有概率不出声解决办法如下...

COMSOL随机参数化表面流体流动模拟

基于粗糙度表面的裂隙流研究对于理解地下水的流动、污染物传输以及与之相关的地质灾害&#xff08;如滑坡&#xff09;等方面具有重要意义。本研究通过蒙特卡洛方法生成随机表面形貌&#xff0c;并利用COMSOL Multiphysics对随机参数化表面的微尺度流体流动进行模拟。 参数化…...

Linux远程连接服务

远程连接服务器简介 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系统前面一样。 远程连接服务器的功能 分享主机的运算能力 远…...

用Python绘制梦幻星空

用Python绘制梦幻星空 在这篇教程中&#xff0c;我们将学习如何使用Python创建一个美丽的星空场景。我们将使用Python的图形库Pygame和随机库来创建闪烁的星星、流星和月亮&#xff0c;打造一个动态的夜空效果。 项目概述 我们将实现以下功能&#xff1a; 创建深蓝色的夜…...

EWOMAIL

1、错误 Problem: problem with installed package selinux-policy-targeted-3.14.3-41.el8.noarch package fail2ban-server-1.0.2-3.el8.noarch requires (fail2ban-selinux if selinux-policy-targeted), but none of the providers can be installed - package fail2ban-…...

网安面试经(1)

1.说说IPsec VPN 答&#xff1a;IPsec VPN是利用IPsec协议构建的安全虚拟网络。它通过加密技术&#xff0c;在公共网络中创建加密隧道&#xff0c;确保数据传输的保密性、完整性和真实性。常用于企业分支互联和远程办公&#xff0c;能有效防范数据泄露与篡改&#xff0c;但部署…...

【每天一个知识点】意图传播(Intent Propagation)

在人工智能(AI)快速发展的背景下,自然语言处理(NLP)已成为推动智能系统理解与生成自然语言的核心技术。其中,“意图识别”作为人机交互的关键步骤,已被广泛应用于智能客服、对话系统、语音助手等场景。而“意图传播”(Intent Propagation)作为更深层的机制,逐渐成为当…...

【串流VR手势】Pico 4 Ultra Enterprise 在 SteamVR 企业串流中无法识别手势的问题排查与解决过程(Pico4UE串流手势问题)

写在前面的话 此前&#xff08;用Pico 4U&#xff09;接入了MRTK3&#xff0c;现项目落地需要部署&#xff0c;发现串流场景中&#xff0c;Pico4UE的企业串流无法正常识别手势。&#xff08;一体机方式部署使用无问题&#xff09; 花了半小时解决&#xff0c;怕忘&#xff0c;…...

工具:shell命令提示符自定义之显示GIT当前分支

1 背景 在命令行操作&#xff0c;每次想查看当前分支都要手动执行命令&#xff08;git branch&#xff09;太麻烦了&#xff0c;想着在命令提示符上面显示当前分支&#xff0c;很直观也很方便 2 实现 编辑 vim ~/.bashrc 文件&#xff0c;添加如下内容 function update_prom…...

现代计算机图形学Games101入门笔记(十四)

Irradiance 微小的能量/微小的面积 用Irradiance解释能量大小解释冬夏 Intensity没变&#xff0c;但是Irradiance是衰减的&#xff0c;外圈面积变大&#xff0c;单位面积上接受的能量就变小了。 入射进来 离开 这里就是从某个方向来了一个能量&#xff0c;经过反射&#xff0c…...

前端开发笔记与实践

一、Vue 开发规范与响应式机制 1. 组件命名规范 自定义组件使用大驼峰命名法&#xff08;如 MyComponent&#xff09;&#xff0c;符合 Vue 官方推荐&#xff0c;便于与原生 HTML 元素区分。 2. Proxy vs defineProperty 特性Proxy&#xff08;Vue3&#xff09;Object.defi…...

机器学习知识自然语言处理入门

一、引言&#xff1a;当文字遇上数学 —— 自然语言的数字化革命 在自然语言处理&#xff08;NLP&#xff09;的世界里&#xff0c;计算机要理解人类语言&#xff0c;首先需要将文字转化为数学向量。早期的 One-Hot 编码如同给每个词语分配一个唯一的 “房间号”&#xff0c;例…...

泰迪杯特等奖案例深度解析:基于多级二值化与CNN回归的车牌识别系统设计

(第八届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 行业痛点与场景需求 在智慧交通与无感支付场景中,车牌识别是核心环节。传统车牌识别系统在复杂光照、污损车牌、多角度倾斜等场景下存在显著缺陷。根据某智慧油站2024年运营数据显示,高峰期…...

ai agent(智能体)开发 python高级应用5:crawl4ai 如何建立一个全面的知识库 第一步找分类

让我们充分利用爬虫功能建立自己丰富的知识库&#xff0c; 第一步找分类 以下是一个层次分明、覆盖全面的知识库分类体系&#xff0c;分为9大主类、43个子类&#xff0c;并融入交叉学科和新兴领域设计&#xff1a; 一、经济与商业 宏观经济&#xff08;全球经济/国家政策&a…...

Solon Ai Flow 编排开发框架发布预告(效果预览)

Solon Ai 在推出 Solon Ai Mcp 后&#xff0c;又将推出 Solon Ai Flow。 1、Solon Ai Flow 是个啥&#xff1f; Solon Ai Flow 是一个智能体编排开发框架。它是框架&#xff01;不是工具&#xff0c;不是产品&#xff08;这与市面上流行的工具和产品&#xff0c;有较大差别&a…...

【言语】刷题5(填空)

front&#xff1a;刷题5 第一个词排除人迹罕至 人迹罕至&#xff1a;很少有人去的地方。指偏僻荒涼的地方。&#xff08;荒郊野岭既视感的一个词&#xff09; 第二个空锁定B&#xff0c;太贴合语义了 第三个空排除一文不值&#xff0c;百无一用&#xff0c;现在这题已经可以过了…...

技术解码 | 腾讯云SRT弱网优化

随着互联网基础设施和硬件设备的不断发展。广大直播观众对于直播观看的清晰度&#xff0c;延时等方面的体验要求越来越高&#xff0c;直播也随之进入了低延迟高码率的时代&#xff0c;直播传输技术也面临着越来越高的要求和挑战。 腾讯视频云为此在全链路上针对流媒体传输不断深…...

“分布形态“

一、分布形态的基础分类 1、正态分布(对称分布) (1)特征:钟型曲线,均值=中位数=众数;约68%数据在μσ范围内,95%在μ2σ内。 (2)应用:身高、体重、测量误差等自然现象。 (3)重要性:多数统计方法(如T检验、方差分析)假设数据正态性。 2、偏态分布 (1)左偏(负…...

Android minSdk从21升级24后SO库异常

问题 minSdk从21调整到24后&#xff1a; java.nio.file.NoSuchFileException: /data/app/~~Z9s2NfuDdclOUwUBLKnk0A/com.rs.unity- Bg31QvFwF4qsCwv2XCqT-w/split_config.arm64_v8a.apkjava.nio.file.NoSuchFileException: /data/app/~~Z9s2NfuDdclOUwUBLKnk0A/com.rs.unity-…...

C#进阶(2)stack(栈)

前言 我们前面介绍了ArrayList,今天就介绍另一种数据结构——栈。 这是栈的基本形式,博主简单画了一下,你看个意思就行,很明显,这种数据有一种特征:先进后出。因为先进来的数据会在下面,下面是密闭的,所以只能取后面进来的。 C#为我们封好了这种数据结构,我们不用担…...

Linux du 命令终极指南:从基础到精通

文章目录 Linux du 命令终极指南&#xff1a;从基础到精通du 命令简介常用参数详解常见用法示例查看当前目录总大小查看当前目录及其子目录占用空间只显示当前目录总占用空间查看目录下每个文件和子目录的大小查看某目录深度为 1 的大小分布查看某目录并排除日志文件查看多个目…...

【Linux网络】数据链路层

数据链路层 用于两个设备&#xff08;同一种数据链路节点&#xff09;之间进行传递。 认识以太网 “以太网” 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了一些物理层的内容。例如&#xff1a;规定了网络拓扑结…...

水库雨水情测报与安全监测系统解决方案

一、方案概述 本水库雨水情测报与安全监测解决方案的核心目标在于利用尖端的技术手段&#xff0c;确保对水库雨水情势以及大坝安全状况的持续监控和及时预警&#xff0c;从而为水库的稳定运行提供坚实的支持和保障。该方案严格遵循“统筹协调、因库制宜、实用有效、信息共享”的…...

Shotcut:免费开源的视频编辑利器

Shotcut是一款功能强大且完全免费的开源视频编辑软件&#xff0c;专为需要高效、灵活视频编辑的用户设计。它支持多种常见视频格式&#xff0c;如MP4、AVI、MOV等&#xff0c;并提供了丰富的视频编辑功能&#xff0c;满足用户在不同场景下的需求。无论是初学者还是专业人士&…...

学习海康VisionMaster之直方图工具

一&#xff1a;进一步学习了 今天学习下VisionMaster中的直方图工具&#xff1a;就是统计在ROI范围内进行灰度级分布的统计 二&#xff1a;开始学习 1&#xff1a;什么是直方图工具&#xff1f; 直方图工具针对输入灰度图像的指定ROI区域&#xff0c;输出该区域的图像灰度直方…...

AI 笔记 -基于retinaface的FPN上采样替换为CARAFE

上采样替换为CARAFE 引言内容感知特征重组&#xff08;CARAFE&#xff09;公式化核预测模块 引言 简介&#xff1a;CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;&#xff0c;是用于增强卷积神经网络特征图的上采样方法&#xff0c;论文被 ICCV 2019 接…...

Visual Studio 2022 中添加“高级保存选项”及解决编码问题

文章目录 一、背景二、方法方法一&#xff1a;通过菜单栏手动添加&#xff08;推荐&#xff09;方法二&#xff1a;通过拖拽快速添加&#xff08;替代方案&#xff09; 三、验证与使用四、补充说明五、所能解决的问题 一、背景 VS 在开发cmake项目的过程中&#xff0c;可能会遇…...

SQLMesh 增量模型从入门到精通:5步实现高效数据处理

本文深入解析 SQLMesh 中的增量时间范围模型&#xff0c;介绍其核心原理、配置方法及高级特性。通过实际案例说明如何利用该模型提升数据加载效率&#xff0c;降低计算资源消耗&#xff0c;并提供配置示例与最佳实践建议&#xff0c;帮助读者在实际项目中有效应用这一强大功能。…...

嵌入式开发书籍推荐

嵌入式开发是将计算机技术、微电子技术与各行业应用相结合的综合技术&#xff0c;学习过程中需要多方面知识储备。以下精选书籍&#xff0c;从基础到进阶&#xff0c;助你系统掌握嵌入式开发知识。 基础理论类 《计算机组成原理》&#xff08;唐朔飞版&#xff09;&#xff1…...

实变函数 第二章 点集

2 点集 2.1 欧式空间 2.1.1 度量空间、欧式空间 Definition \textbf{Definition} Definition 度量空间 (距离空间) 若 ∀ x , y ∈ X : ∃ d : ( x , y ) → R \forall x,y\in X:\exists d:(x,y)\to\mathbb{R} ∀x,y∈X:∃d:(x,y)→R&#xff0c;满足&#xff1a; d ( x , y…...

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应

在汽车应用中&#xff0c;轮速传感器可用于车轮速度感应&#xff0c;为 ABS、ESC 等安全系统提供精确的轮速信息&#xff0c;帮助这些系统更好地发挥作用&#xff0c;在紧急制动或车辆出现不稳定状态时&#xff0c;及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…...

MySQL中innodb的ACID

一、什么ACID A&#xff1a;原子性&#xff0c;事务是一个不可分割的工作单位&#xff0c;事务中的操作要么全部成功&#xff0c;要么全部失败回滚&#xff1b;C&#xff1a;一致性&#xff0c;事务必须保证数据库从一个一致性的状态变换成另一个一致性的状态&#xff0c;如A给…...