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

Linux虚拟文件系统(2)

2.3 目录项-dentry

       目录项,即 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。和上一章中超级块和索引节点不同,目录项并不是实际存在于磁盘上的,在使用的时候在内存中创建目录项对象,目录项是由内核维护的一个内存数据结构,所以通常也被叫做目录项缓存。其实通过索引节点已经可以定位到指定的文件,但是索引节点对象的属性非常多,在查找,比较文件时,直接用索引节点效率不高,所以引入了目录项的概念。

目录项的目的就是提高文件查找,比较的效率,所以访问过的目录项都会缓存在slab中。

slab中缓存的名称一般就是 dentry,可以通过如下命令查看:

dentry的相关属性结构

/* 目录项对象结构 */
struct dentry {atomic_t d_count;       /* 使用计数:跟踪该目录项被引用的次数。当d_count变为0时,表示没有其他部分在使用这个目录项,可以考虑释放它。 */unsigned int d_flags;   /* 目录项标识:用于标记目录项的状态或特性,如是否为负目录项(即不存在的文件)等。 */spinlock_t d_lock;      /* 单目录项锁:一个自旋锁,用于保护对这个目录项进行并发访问时的数据一致性。 */int d_mounted;          /* 是否登录点的目录项:指示该目录项是否是一个挂载点。如果是,则值大于0,表示在其下有挂载的文件系统。 */struct inode *d_inode;  /* 相关联的索引节点:指向与该目录项相关的inode结构体。如果d_inode为NULL,表示这是一个负目录项。 */struct hlist_node d_hash;/* 散列表:用于将目录项链接到哈希表中,以便快速查找。 */struct dentry *d_parent;/* 父目录的目录项对象:指向上一级目录的目录项。根目录的d_parent指向自身。 */struct qstr d_name;     /* 目录项名称:包含目录项的名字及其长度和哈希值。 */struct list_head d_lru; /* 未使用的链表:当目录项不再被使用时,会被加入到LRU链表中,等待回收。 *//** d_child and d_rcu can share memory*/union {struct list_head d_child; /* child of parent list: 将当前目录项链接到父目录的子目录项链表中。 */struct rcu_head d_rcu;    /* RCU机制头:用于RCU(Read-Copy Update)机制的支持,保证删除过程中的读写安全。 */} d_u;struct list_head d_subdirs; /* 子目录链表:用于维护该目录下的所有子目录项,形成树状结构。 */struct list_head d_alias;   /* 索引节点别名链表:将所有具有相同inode的目录项链接在一起,因为多个路径可能指向同一个inode。 */unsigned long d_time;       /* 重置时间:记录了最近一次对该目录项执行某些操作的时间,比如更新其状态等。 */const struct dentry_operations *d_op; /* 目录项操作相关函数:指向一组函数,这些函数定义了如何操作目录项。 */struct super_block *d_sb;   /* 文件的超级块:指向该目录项所属文件系统的超级块结构。 */void *d_fsdata;              /* 文件系统特有数据:提供给具体文件系统使用,可用于存储特定于该文件系统的额外信息。 */unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* 短文件名:内联存储的短文件名,用于加速访问。如果文件名较长,则不会使用此字段。 */
};

       dentry有两个特殊的成员变量d_lrud_hash。这其实关联于两张dentry cache表,顾名思义,该表保存的是一系列已分配过的dentry的缓存池,用于文件操作中快速的查找和使用。

LRU表

  • 作用:LRU(Least Recently Used)表是一个链表,用于管理最近最少使用的dentry对象。当系统需要回收内存时,会优先从LRU表中选择最久未使用的dentry进行释放
  • 操作:当一个dentry的引用计数变为0时,它会被加入到LRU表中。

散列表

  • 作用:hash散列表用于快速查找dentry对象。每个dentry根据其名称和父目录计算出一个哈希值,并插入到相应的散列桶中。
  • 操作:当需要查找一个文件或目录时,系统会根据路径名计算哈希值,并在散列表中查找对应的dentry。

这两个列表之间会产生复杂的关系:

  • 引用为 0:一个在散列表中的 dentry 变成没有人引用了,就会被加到 LRU 表中去;
  • 再次被引用:如果一个之前未被使用的dentry再次被引用,其引用计数会增加,并从LRU表中移除,表示它又变成了一个活跃的dentry;
  • 分配:当 dentry 在散列表中没有找到,则从 Slub 分配器中分配一个;
  • 过期归还:当 LRU 表中最长时间没有使用的 dentry 应该释放回 Slub 分配器;
  • 文件删除:如果该dentry的引用计数为0,则可以直接从缓存中移除;否则,需要等待所有引用被释放后再进行处理。文件被删除了,相应的 dentry 应该释放回 Slub 分配器;
  • 结构复用:为了提高效率,Linux内核会尽量复用已经存在的dentry结构体,而不是每次都创建新的实例。当一个dentry的引用计数变为0时,它会被标记为可复用,并在下次需要时重新初始化。
/* 目录项相关操作函数 */
struct dentry_operations {/* 该函数判断目录项对象是否有效。VFS准备从dcache中使用一个目录项时会调用这个函数 */int (*d_revalidate)(struct dentry *, struct nameidata *);/* 为目录项对象生成hash值 */int (*d_hash) (struct dentry *, struct qstr *);/* 比较 qstr 类型的2个文件名 */int (*d_compare) (struct dentry *, struct qstr *, struct qstr *);/* 当目录项对象的 d_count 为0时,VFS调用这个函数 */int (*d_delete)(struct dentry *);/* 当目录项对象将要被释放时,VFS调用该函数 */void (*d_release)(struct dentry *);/* 当目录项对象丢失其索引节点时(也就是磁盘索引节点被删除了),VFS会调用该函数 */void (*d_iput)(struct dentry *, struct inode *);char *(*d_dname)(struct dentry *, char *, int);
};
2.4 文件对象·-file

       在Linux内核中,文件对象(file结构体)是用于表示一个打开的文件实例的核心数据结构。每当用户空间的应用程序通过系统调用(如open())打开一个文件时,内核会创建一个file结构体对象来跟踪该文件的所有相关信息。

file的相关属性结构

struct file {union {struct llist_node fu_llist; // 用于链表操作,支持轻量级锁机制struct rcu_head fu_rcuhead; // RCU(Read-Copy Update)机制头,用于安全删除} f_u;struct path f_path;           /* 文件路径信息,包括挂载点和目录项 */struct inode *f_inode;        /* 指向与该文件关联的inode结构体 */const struct file_operations *f_op; /* 文件操作函数指针,定义了对该文件可以执行的操作 */spinlock_t f_lock;            /* 自旋锁,用于保护对文件对象的并发访问 */atomic_long_t f_count;        /* 使用计数,表示当前有多少地方在使用这个文件对象 */unsigned int f_flags;         /* 打开文件时指定的标志位,如O_RDONLY, O_WRONLY等 */fmode_t f_mode;               /* 访问模式,指示文件是只读、只写或两者皆可 */loff_t f_pos;                 /* 当前文件指针位置,即下一次读写操作将从哪里开始 */struct fown_struct f_owner;   /* 用于实现信号发送机制,允许进程接收特定事件的通知 */struct cred *f_cred;          /* 凭证信息,包含打开文件时的安全凭证,如UID和GID */struct file_ra_state f_ra;    /* 读取提前(readahead)状态,有助于预读取文件内容以提高性能 */u64 f_version;                /* 版本号,每次修改都会增加,可用于检测文件对象的变化 */void *private_data;           /* 私有数据,通常由设备驱动程序使用,存储驱动需要的状态信息 */struct list_head f_ep_links;  /* epoll相关的链表,用于异步I/O通知 */struct address_space *f_mapping;/* 映射到的地址空间,用于管理文件映射到内存的情况 */
};
  1. 文件对象表示进程已打开的文件,从用户角度来看,我们在代码中操作的就是一个文件对象。
  2. 根据上述结构中的struct path f_path知道文件对象反过来指向一个目录项对象(根据struct dentry结构体知道目录项反过来指向一个索引节点)
  3. 其实只有目录项对象才表示一个已打开的实际文件,虽然一个文件对应的文件对象不是唯一的,但其对应的索引节点和目录项对象却是唯一的。

补充:

  •  一个文件可以被多个进程以不同的方式打开,因此可能存在多个文件对象对应同一个实际文件。
  •  尽管一个文件可能有多个文件对象(因为被多次打开),但它的目录项对象是唯一的,因为它代表了一个具体的文件名及其在文件系统树中的位置。
  • 对于每一个实际的文件而言,无论它被多少次打开,其索引节点都是唯一的。这意味着即使有多个文件对象和目录项对象指向同一个文件,它们都将共享同一个索引节点。
  • 目录项对象才表示一个已打开的实际文件。它不仅仅是一个文件的名称,而是包括了该文件在文件系统中的完整路径信息,并直接关联到具体的索引节点。因此,当提到“实际文件”的时候,我们实际上是指文件系统中某个具体位置上的那个文件,而这个位置是由目录项对象唯一确定的。即使有多个文件对象(由于多次打开同一个文件),它们都指
  • 向同一个目录项对象,进而指向同一个索引节点

3.示例

       (1)例如 打开/data/test.txt

  1. 📁 VFS沿路径逐级查找dentry缓存

  2. 💾 未命中则从磁盘加载inode并创建dentry

  3. 📝 创建file结构体,绑定进程fd与目标inode

    (2) 例如 向/data/test.txt写入文件时

  1. ✍️ 通过file→inode找到数据块地址
  2. 🔄 修改inode中的文件大小和更新时间
  3. 📌 超级块同步记录文件系统状态变化 

相关文章:

Linux虚拟文件系统(2)

2.3 目录项-dentry 目录项,即 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。和上一章中超级块和索引节点不同,目录项并不是实际存在于磁盘上的&#xff0c…...

遥感影像-语义分割数据集:光伏数据集详细介绍及训练样本处理流程

原始数据集详情 简介:数据集包括504张亚米级卫星图片的农业光伏数据集,该数据集用于亚米级影像中的农业光伏提取任务。 KeyValue卫星类型亚米级卫星覆盖区域未知场景未知分辨率0.5m数量504张单张尺寸1024*1024原始影像位深8位标签图片位深8位原始影像通…...

【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计

一、降级决策的核心逻辑:资源博弈下的生存选择 1.1 大促场景的资源极限挑战 在电商大促等极端流量场景下,系统面临的资源瓶颈呈现指数级增长: 流量特征: 峰值QPS可达日常的50倍以上(如某电商大促下单QPS从1万突增至50万)流量毛刺持续时间短(通常2-4小时),但对系统稳…...

工业物联网网关在变电站远程监控中的安全传输解决方案

一、项目背景 随着智能电网的快速发展,对变电站的智能化监控需求日益迫切。传统变电站采用人工巡检和就地监控的方式,存在效率低、实时性差、数据不准确等问题,难以满足现代电力系统对变电站安全、稳定、高效运行的要求。而智能变电站通过引…...

车载诊断架构 --- LIN 节点 ECU 故障设计原则

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

编程技能:字符串函数09,strncmp

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:字符串函数08,strcmp 回到目录…...

UML 时序图 使用案例

UML 时序图 UML 时序图 (Sequence Diagram)时序图的主要元素消息类型详解时序图示例时序图绘制步骤时序图的应用场景 UML 时序图 (Sequence Diagram) 时序图是UML(统一建模语言)中用于展示对象之间交互行为的动态视图,它特别强调消息的时间顺序。 时序图的主要元素…...

业务逻辑篇水平越权垂直越权未授权访问检测插件SRC 项目

# 逻辑越权 - 检测原理 - 水平 & 垂直 & 未授权 1 、水平越权:同级别的用户之间权限的跨越 2 、垂直越权:低级别用户到高级别用户权限的跨越 3 、未授权访问:通过无级别用户能访问到需验证应用 PHPStudy Metinfo4.0 会员后台中…...

Android开发——不同布局的定位属性 与 通用属性

目录 不同布局的定位属性1. 线性布局(LinearLayout)2. 相对布局(RelativeLayout)3. 约束布局(ConstraintLayout)4. 表格布局(TableLayout)5. 网格布局(GridLayout&#x…...

【DB2】SQL1639N 处理

背景 测试环境21套DB2需要创建只读用户并赋予权限,在20套都成功的情况下,有一套报错了,具体细节为,赋权成功,但是使用被赋权的账户连接失败,报错如下 SQL1639N The database server was unable to perfor…...

禾纳EAT3152AP MOS电源芯片PIN TO PIN替代泰德TDM3307/2307方案

AET3152AP特性 VDS-30V,ID-40A RDS (ON)11mΩ (TYP.)VGS-10V, ID-10A RDS (ON)15mΩ (TYP.)VGS-4.5V, ID-5A 快速切换 l 低电阻 不含卤素和锑,符合Rohs标准 温度范围:-55℃~125℃ 封装:PDFN3030 AET3152AP应用 交换机切换 便携式/台式机中的…...

Python Day28 学习

继续聚类算法的学习 浙大疏锦行 DBSCAN聚类 Q1. 该算法的原理是什么? 总体而言,DBSCAN聚类是一种基于密度的聚类算法,适合发现任意形状的簇和检测噪声点 Q2. 代码实现 import numpy as np import pandas as pd from sklearn.cluster impo…...

企业网站架构部署与优化-Nginx核心功能

目录 #1.1正向代理 1.1.1编译安装Nginx 1.1.2配置正向代理 #2.1反向代理 2.1.1配置nginx七层代理 2.1.2配置nginx四层代理 1.1正向代理 正向代理(Forward Proxy)是一种位于客户端和目标服务器之间的服务器,用于代表客户端向服务器发送请求并…...

Java 多态

文章目录 多态向上转型和向下转型向上转型和重写重写和重载的区别动态绑定和静态绑定用代码来解释什么是多态向下转型 多态的优点 总结 多态 什么是多态?为什么要使用多态? 简单来说是多种形态,具体来说是去完成某个事情,当不同对…...

机器学习中的泛化能力

我们常常提到模型的泛化能力,什么是泛化能力呢? 百度百科这样解释:是指机器学习算法对新鲜样本的适应能力。 学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输…...

第七章:数据存储策略与状态恢复机制实录

经过状态机、UI交互、逻辑驱动等章节的打磨,前端体系已经具备较强的调度与展示能力。但真正能决定组件在异常情况下能否“满血复活”的关键,落在了“状态恢复”这一关卡。尤其在安卓端环境复杂、网络波动频繁的前提下,若没有稳定的本地数据存…...

digitalworld.local: FALL靶场

digitalworld.local: FALL 来自 <digitalworld.local: FALL ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.4 3&…...

Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan Java 集合框架提供了一组接口和类&#xff0c;以实现各种数据结构和算法。 以下是关于 Java 集合的核心内容说明&#xff1a; /*** Java Collection Framework 说明&#xff1a;** 在 Java 中&#xff0c;集合&#xff08;Collec…...

直线型绝对值位移传感器:精准测量的科技利刃

在科技飞速发展的今天&#xff0c;精确测量成为了众多领域不可或缺的关键环节。无论是工业自动化生产线上的精细操作&#xff0c;还是航空航天领域中对零部件位移的严苛把控&#xff0c;亦或是科研实验中对微小位移变化的精准捕捉&#xff0c;都离不开一款高性能的测量设备——…...

Kotlin 极简小炒 P9 - 数组(数组的创建、数组元素的访问与修改、数组遍历、数组操作、多维数组、数组与可变参数)

Kotlin 概述 Kotlin 由 JetBrains 开发&#xff0c;是一种在 JVM&#xff08;Java 虚拟机&#xff09;上运行的静态类型编程语言 Kotlin 旨在提高开发者的编码效率和安全性&#xff0c;同时保持与 Java 的高度互操作性 Kotlin 是 Android 应用开发的首选语言&#xff0c;也可…...

Server-Driven UI:Kotlin 如何重塑动态化 Android 应用开发

以下是一篇整合详细代码示例的完整博客&#xff0c;深入探讨Kotlin在Server-Driven UI&#xff08;SDUI&#xff09;中的核心作用&#xff1a; Server-Driven UI&#xff1a;Kotlin 如何重塑动态化 Android 应用开发 1. Server-Driven UI 的核心价值 SDUI通过将UI描述与业务逻…...

基于多传感器融合的智能驾驶环境感知系统

摘要 随着自动驾驶技术的发展,单一传感器的局限性日益凸显。本文提出了一种基于多传感器(摄像头、毫米波雷达、激光雷达)融合的环境感知系统,通过深度学习算法实现车辆周围环境的精确感知。文章详细介绍了传感器标定、数据融合、目标检测与跟踪等关键技术,并提供了Python…...

JC/T 2848-2024 玻璃纤维增强石膏(GRG)装饰制品检测

玻璃纤维增强石膏装饰制品是指以玻璃纤维为主要增强材料&#xff0c;高强石膏为主要胶凝材料&#xff0c;适当掺入集料&#xff0c;外加剂的石膏装饰制品&#xff0c;GRG具有防火&#xff0c;隔音&#xff0c;被广泛应用于&#xff0c;墙板&#xff0c;装饰构件等。 JC/T 2848…...

每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)

&#x1f9e9; 最长回文子串问题&#xff1a;三种经典解法全解析&#xff08;含代码注释&#xff09; 本文将系统讲解“最长回文子串”问题的三种常见解法&#xff1a;中心扩展法、动态规划、马拉车算法&#xff08;Manacher’s Algorithm&#xff09;&#xff0c;并进行对比与…...

【Java高阶面经:数据库篇】13. MySQL 并发控制秘籍:MVCC 协议与隔离级别深度解析

一、MVCC核心原理:多版本并发控制的基石 1.1 为什么需要MVCC? 在传统锁机制中,读写操作会互相阻塞,导致高并发场景下性能下降。MVCC通过多版本数据快照避免读写阻塞,实现: 读不加锁:快照读(普通SELECT)不阻塞写操作写不阻塞读:写操作生成新版本,读操作访问历史版本…...

分布式集群中的共识算法及其在时序数据库IoTDB中的应用

一、引言 在分布式集群环境中&#xff0c;为了实现海量数据的横向扩展&#xff0c;数据通常被划分为多个子集并分散存储在集群的各个节点上。为了确保数据的高可用性&#xff0c;每个数据子集都会在多个物理节点上存储副本。然而&#xff0c;这种多副本机制也带来了新的挑战&a…...

Java面试实录:从JVM调优到Spring Cloud实践

Java大厂面试&#xff1a;当严肃面试官遇上搞笑程序员 场景设定 面试官&#xff1a;拥有多年行业经验的技术专家&#xff0c;对Java及相关技术栈有着深入的理解。明哥&#xff1a;一位自认为是“水货”的程序员&#xff0c;擅长用幽默化解紧张气氛&#xff0c;但面对复杂问题…...

自定义协议与序列反序列化

目录 引子&#xff1a; 一、再谈 "协议" 二、自定义协议与网络版计算器 1.约定方案一: 2.约定方案二: 3.我们采用的协议 三、网络计算器代码 Log.hpp 日志 Makefile Socket.hpp 套接字封装 Protocol.hpp 协议 序列化反序列化 结构化数据格式规定 TcpSe…...

SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践

专题三&#xff1a;ABAP异常处理与SAP现代技术融合 —— 面向云原生、微服务与低代码场景的创新实践 一、SAP技术演进与异常处理的挑战 随着SAP技术栈向云端、微服务化和低代码方向演进&#xff0c;异常处理面临新场景&#xff1a; Fiori UX敏感度&#xff1a;用户期望前端友…...

JavaScript面试题之消息队列

JavaScript消息队列详解&#xff1a;单线程的异步魔法核心 在JavaScript的单线程世界中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步编程的核心机制&#xff0c;它像一位高效的调度员&#xff0c;让代码既能“一心多用”又避免卡顿。本文将深入剖析消…...

【低代码】如何使用明道云调用 Flask 视图函数并传参(POST 方法实践)

在自动化办公或业务流程管理中,明道云提供了强大的 HTTP 请求节点,可以直接调用第三方 API,包括我们常见的 Flask 服务端接口。本文将详细介绍如何使用明道云通过 POST 方法调用 Flask 视图函数并传参,包括配置要点与 Python 后端的参数接收方法。 一、场景介绍 我们希望…...

广州卓远VR受邀参加2025智能体育典型案例调研活动,并入驻国体华为运动健康联合实验室!

近日&#xff0c;“2025年智能体育典型案例调研活动”在东莞松山湖成功举办。本次调研活动由国家体育总局体育科学研究所和中国信息通信研究院联合主办&#xff0c;旨在深入贯彻中央关于培育新型消费的战略部署&#xff0c;通过激活智能健身产品消费潜力&#xff0c;加快运动健…...

【WebRTC】源码更改麦克风权限

WebRTC源码更改麦克风权限 仓库: https://webrtc.googlesource.com/src.git分支: guyl/m125节点: b09c2f83f85ec70614503d16e4c530484eb0ee4f...

spring cloud alibaba-Geteway详解

spring cloud alibaba-Gateway详解 Gateway介绍 在 Spring Cloud Alibaba 生态系统中&#xff0c;Gateway 是一个非常重要的组件&#xff0c;用于构建微服务架构中的网关服务。它基于 Spring Cloud Gateway 进行扩展和优化&#xff0c;提供了更强大的功能和更好的性能。 Gat…...

结课作业01. 用户空间 MPU6050 体感鼠标驱动程序

目录 一. qt界面实现 二. 虚拟设备模拟模拟鼠标实现体感鼠标 2.1 函数声明 2.2 虚拟鼠标实现 2.2.1 虚拟鼠标创建函数 2.2.2 鼠标移动函数 2.2.3 鼠标点击函数 2.3 mpu6050相关函数实现 2.3.1 i2c设备初始化 2.3.2 mpu6050寄存器写入 2.3.3 mpu6050寄存器读取 2.3.…...

Linux操作系统:信号

信号的基本介绍 信号是系统响应某个条件而产生的事件&#xff0c;进程接收到信号会执行响应的操作&#xff1b; &#xff08;1&#xff09;信号的储存位置 vim /usr/include/x86_64-linux-gnu/bits/signum.h 旧版 新版&#xff1a; vim /usr/include/x86_64-linux-gnu/bit…...

OpenCV CUDA模块特征检测与描述------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createBoxMaxFilter()函数创建的是一个 最大值滤波器&#xff08;Maximum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最…...

有没有其他影视app可以像群晖video station一样可以被Windows的本地网络驱动器找到

你是在寻找可以通过Windows本地网络&#xff08;SMB共享&#xff09;访问的影视媒体服务程序&#xff0c;就像群晖的 Video Station 一样&#xff0c;可以浏览、播放或挂载电影资源。以下是一些可选方案&#xff1a; ✅ 具备与 Synology Video Station 类似功能&#xff0c;并支…...

【神经网络与深度学习】流模型的通俗易懂的原理

流模型&#xff08;Flow-based Model&#xff09;简介 引言 流模型是一种强大的生成模型&#xff0c;它通过可逆变换将简单的概率分布转化为复杂的数据分布。相比于扩散模型和生成对抗网络&#xff08;GAN&#xff09;&#xff0c;流模型可以精确计算数据的概率&#xff0c;并…...

OpenCV CUDA模块图像特征检测与描述------图像中快速检测特征点类cv::cuda::FastFeatureDetector

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::FastFeatureDetector 是 OpenCV 的 CUDA 加速模块中的一部分&#xff0c;用于在图像中快速检测特征点。FAST&#xff08;Features fro…...

分享一些多模态文档解析思路

多模态文档解析思路小记 作者&#xff1a;Arlene 原文&#xff1a;https://zhuanlan.zhihu.com/p/1905635679293122466 多模态文档解析内容涉及&#xff1a;文本、表格和图片 解析思路v1 基于mineru框架对pdf文件进行初解析 其具备较完整的布局识别和内容识别&#xff0c;并将…...

【OCCT+ImGUI系列】009-Geom2d-Geom2d_AxisPlacement

一、Geom2d_AxisPlacement 简介 在 OpenCASCADE 的二维几何库中&#xff0c;Geom2d_AxisPlacement 是一个用于定义二维坐标系的几何类&#xff0c;主要包含一个原点&#xff08;gp_Pnt2d&#xff09;和一个方向向量&#xff08;gp_Dir2d&#xff09;。它在构造与控制二维几何对…...

【深度学习:理论篇】--Pytorch之nn.Module详解

目录 1.torch.nn.Module--概述 2.torch.nn.Module--简介 3.torch.nn.Module--实现 3.1.Sequential来包装层 3.2.children和modules 1.torch.nn.Module--概述 1. PyTorch vs. Keras 的设计差异 Keras&#xff08;高层框架&#xff09;&#xff1a; 推荐通过继承 Layer 类…...

SQLMesh 宏操作符详解:@IF 的条件逻辑与高级应用

SQLMesh 的 IF 宏提供了一种在 SQL 查询中嵌入条件逻辑的方法&#xff0c;允许根据运行时条件动态调整查询结构。本文深入探讨 IF 的语法、使用场景及实际案例&#xff0c;帮助开发者构建更灵活、可维护的 SQL 工作流。 1. IF 宏简介 IF 是 SQLMesh 提供的条件逻辑宏&#xff…...

最新版Chrome浏览器调用ActiveX控件之eDrawings Viewer专用包v2.0.42版本发布

背景 eDrawings是一款轻量级的2D和3D浏览/可视化软件&#xff0c;主要用于查看和分享由SolidWorks创建的3D模型和2D工程图。它支持多种CAD文件格式&#xff0c;使得用户能够方便地在不同CAD系统之间转换和查看设计数据。‌适用于设计师和工程师之间的即时协作&#xff0c;通过电…...

人工智能应用时代:个人成长与职业突围的底层逻辑

当人工智能从实验室走向现实场景&#xff0c;从概念热词变为生产力工具&#xff0c;一场静默却深刻的变革正在重塑人类社会的运行规则。无论是算法驱动的智能推荐、语言模型支撑的自动化创作&#xff0c;还是工业机器人对传统生产线的颠覆&#xff0c;人工智能应用已渗透至社会…...

STM32之串口通信蓝牙(BLE)

一、串口通信的原理与应用 通信的方式 处理器与外部设备之间或者处理器与处理器之间通信的方式分两种&#xff1a;串行通信和并行通信。 串行通信 传输原理&#xff1a;数据按位依次顺序传输&#xff08;每一位占据固定的时间长度 MSB or LSB&#xff09; 优点&#xff1a…...

【Spring Boot】配置实战指南:Properties与YML的深度对比与最佳实践

目录 1.前言 2.正文 2.1配置文件的格式 2.2properties 2.2.1基础语法 2.2.2value读取配置文件 2.2.3缺点 2.3yml 2.3.1基础语法 2.3.2配置不同数据类型 2.3.3配置读取 2.3.4配置对象和集合 2.3.5优缺点 2.4综合练习&#xff1a;验证码案例 2.4.1分析需求 2.4.2…...

数据结构篇--优先级队列排序--实验报告

实验简介框架代码实验步骤运行结果实验总结 实验概述 优先队列排序算法的基本思想是&#xff1a; 将所有待排序元素依次插入到优先队列中&#xff0c;然后按照从大到小的顺序&#xff0c;通过重复删除优先队列中的最大元素&#xff0c;取出所有元素&#xff0c;从而实现排序…...

【图像大模型】基于深度对抗网络的图像超分辨率重建技术ESRGAN深度解析

基于深度对抗网络的图像超分辨率重建技术ESRGAN深度解析 一、技术背景与核心创新1.1 图像超分辨率技术演进1.2 核心技术创新对比 二、算法原理深度解析2.1 网络架构设计2.1.1 RRDB模块结构 2.2 损失函数设计2.2.1 对抗损失&#xff08;Adversarial Loss&#xff09;2.2.2 感知损…...