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

推荐系统重排:DPP 多样性算法

行列式点过程(DPP)算法:原理、应用及优化

推荐系统【多样性算法】系列文章(置顶)

1.推荐系统重排:MMR 多样性算法
2.推荐系统重排:DPP 多样性算法

引言

行列式点过程(Determinantal Point Process, DPP)是一种用于建模多样性和相关性的概率模型,在推荐系统、图像处理、文本摘要等多个领域有着广泛的应用。本文将深入探讨DPP的基本原理、其在推荐系统中的具体应用,特别是Hulu公司提出的快速求解方法,并介绍如何通过滑动窗口和规则约束进一步优化DPP算法。


一、背景

行列式点过程(DPP)是一种概率模型,最初用于描述粒子物理学中的某些现象,如费米子的分布。它通过行列式的数学构造来捕捉集合中元素之间的负相关性,即当两个元素非常相似时,它们同时出现在同一集合中的概率会降低。这种特性使得DPP非常适合应用于推荐系统中,以确保推荐结果既具有高度的相关性又不会过度集中于某一类内容。

二、原理

1. 定义

DPP可以通过一个对称矩阵 L L L(称为L-ensemble或核矩阵)来定义,其中 L i j L_{ij} Lij表示元素 i i i j j j之间的相似度。对于任意子集 A A A,其出现的概率由以下公式给出:
P ( A ) = det ⁡ ( L A ) det ⁡ ( L + I ) P(A) = \frac{\det(L_A)}{\det(L + I)} P(A)=det(L+I)det(LA)
这里, L A L_A LA是矩阵 L L L中仅保留行和列对应于子集 A A A部分后的子矩阵; I I I是单位矩阵。该公式表明,如果 A A A中包含过于相似的元素,则 det ⁡ ( L A ) \det(L_A) det(LA)将较小,从而减少这些元素共同出现的概率。

2. 行列式取值和与元素相似之间的关系

行列式的值反映了矩阵中列向量(或行向量)之间的线性无关程度。当矩阵中的列向量趋于线性相关时,行列式的值会接近零。在DPP的应用中,这意味着如果候选集合 A A A 中包含过于相似的元素,则对应的行列式 det ⁡ ( L A ) \det(L_A) det(LA) 将较小。下面我们详细解释这一现象的原因及其对推荐系统的影响。

2.1 行列式的几何意义

行列式的绝对值可以被理解为由矩阵的列向量所张成的平行多面体的体积。对于一个 n × n n \times n n×n 的方阵 M M M,其行列式 det ⁡ ( M ) \det(M) det(M) 表示这些列向量构成的空间体积。具体来说:

  • 如果这些列向量完全线性无关(即它们指向不同的方向),那么行列式的值较大,表示这些向量构成了一个较大的空间体积。
  • 如果这些列向量趋于线性相关(即它们指向几乎相同的方向),那么行列式的值将趋近于零,因为这些向量无法构成一个有效的多维空间。
2.2 特征向量与相似度

在DPP中,每个物品都有一个特征向量 v i ∈ R d v_i \in \mathbb{R}^d viRd,这些特征向量描述了物品的多维属性。核矩阵 A A A 的元素定义为 a i j = v i T v j a_{ij} = v_i^T v_j aij=viTvj,即两个物品特征向量的内积。这个内积值衡量了两个物品之间的相似度:

  • a i j a_{ij} aij 接近1时,表示物品 i i i 和物品 j j j 非常相似。
  • a i j a_{ij} aij 接近0时,表示物品 i i i 和物品 j j j 相似度较低。
2.3 行列式与多样性

考虑一个子集 S S S,其对应的特征向量矩阵为 V S V_S VS,则 A S = V S T V S A_S = V_S^T V_S AS=VSTVS 是一个 k × k k \times k k×k 的矩阵。行列式 det ⁡ ( A S ) \det(A_S) det(AS) 衡量了这些特征向量之间的线性无关程度,从而反映了子集 S S S 的多样性:

  • 高多样性:如果子集 S S S 中的物品特征向量线性无关(即它们指向不同的方向),那么 det ⁡ ( A S ) \det(A_S) det(AS) 的值较大,表示这些物品具有较高的多样性。
  • 低多样性:如果子集 S S S 中的物品特征向量趋于线性相关(即它们指向几乎相同的方向),那么 det ⁡ ( A S ) \det(A_S) det(AS) 的值将趋近于零,表示这些物品非常相似,缺乏多样性。
2.4 Cholesky 分解的影响

通过Cholesky分解,我们可以将 A S A_S AS 分解为 A S = L L T A_S = L L^T AS=LLT,其中 L L L 是一个下三角矩阵。在这种情况下,行列式 det ⁡ ( A S ) \det(A_S) det(AS) 等于 det ⁡ ( L ) 2 \det(L)^2 det(L)2,而 det ⁡ ( L ) \det(L) det(L) 又等于 L L L 对角线元素的乘积:

det ⁡ ( A S ) = ( ∏ i = 1 k L i i ) 2 \det(A_S) = \left( \prod_{i=1}^{k} L_{ii} \right)^2 det(AS)=(i=1kLii)2

如果 A S A_S AS 中的元素过于相似,导致 L L L 的某些对角线元素接近零,那么 det ⁡ ( A S ) \det(A_S) det(AS) 的值也会接近零。这表明,当子集 S S S 中的物品过于相似时,行列式的值会显著减小,进而影响DPP算法的选择结果。

2.5 对推荐系统的影响

在推荐系统中,我们希望推荐的内容既能满足用户的兴趣(高相关性),又能涵盖多种不同类型的内容(高多样性)。如果推荐列表中包含过于相似的物品,不仅会导致用户体验下降,还可能陷入“信息茧房”问题,即用户只能接收到与其已有偏好高度相似的内容。因此,通过最大化行列式的值,DPP确保了推荐结果的多样性,避免了这种问题的发生。

2.6 总结

综上所述,当候选集合 A A A 中包含过于相似的元素时,对应的行列式 det ⁡ ( L A ) \det(L_A) det(LA) 将较小。这是因为相似的元素使得特征向量趋于线性相关,降低了行列式的值。通过最大化行列式的值,DPP能够有效地平衡推荐结果的相关性和多样性,提供更加丰富和个性化的用户体验。

3. 目标

DPP旨在从一个大的候选集合中选出一个小的子集 S S S,使得该子集既具有高度的相关性又不会过度集中于某一类内容。具体来说,DPP的目标是最大化以下表达式的值:

arg max ⁡ S : ∣ S ∣ = k { log ⁡ ( det ⁡ ( V S T V S ) ) } \argmax_{S:|S|=k} \{ \log(\det(V_S^T V_S)) \} S:S=kargmax{log(det(VSTVS))}

其中 V S V_S VS 是由选中物品对应的特征向量组成的矩阵, k k k 是要选择的物品数量。这里的 log ⁡ ( det ⁡ ( V S T V S ) ) \log(\det(V_S^T V_S)) log(det(VSTVS)) 衡量了子集 S S S 的多样性,因为行列式的值越大,说明这些物品之间的相似度越低,从而保证了推荐结果的多样性。

4. 计算复杂度

直接计算上述表达式的时间复杂度较高,尤其是在大规模数据集上。对于每个可能的子集 S S S,计算 det ⁡ ( V S T V S ) \det(V_S^T V_S) det(VSTVS) 的时间复杂度为 O ( ∣ S ∣ 3 ) O(|S|^3) O(S3),而遍历所有可能的子集则需要 O ( n k ) O(n^k) O(nk) 的时间。因此,传统的暴力搜索方法在实际应用中并不实用。下面我们将详细探讨DPP的计算复杂度

4.1 行列式的计算

对于每个可能的子集 S S S,我们需要计算 det ⁡ ( V S T V S ) \det(V_S^T V_S) det(VSTVS),其中 V S V_S VS 是由选中物品对应的特征向量组成的矩阵。具体来说:

  • V S V_S VS:是由子集 S S S 中物品的特征向量组成的 k × d k \times d k×d 矩阵。
  • V S T V S V_S^T V_S VSTVS:是一个 k × k k \times k k×k 的对称矩阵,表示这些特征向量之间的相似度。

计算一个 k × k k \times k k×k 矩阵的行列式的时间复杂度为 O ( k 3 ) O(k^3) O(k3)。这是因为行列式的计算通常涉及矩阵的三角分解或其他复杂操作,如LU分解或QR分解。

4.2 遍历所有可能的子集

假设总共有 n n n 个候选物品,我们需要从这 n n n 个物品中选出 k k k 个物品组成子集 S S S。遍历所有可能的 k k k 大小子集的数量为组合数 ( n k ) \binom{n}{k} (kn),即 O ( n k ) O(n^k) O(nk)。因此,直接计算所有可能子集的行列式的时间复杂度为:

O ( ( n k ) ⋅ k 3 ) = O ( n ! ( n − k ) ! k ! ⋅ k 3 ) O(\binom{n}{k} \cdot k^3) = O\left(\frac{n!}{(n-k)!k!} \cdot k^3\right) O((kn)k3)=O((nk)!k!n!k3)

n n n k k k 较大时,这种复杂度是非常高的,导致传统的暴力搜索方法在实际应用中并不实用。

三、求解

为了克服传统方法的高计算复杂度问题,Hulu提出了一种基于Cholesky分解的快速数值算法,显著降低了计算成本。具体步骤如下:

1.构建核矩阵

首先,根据给定的特征向量 v 1 , . . . , v n ∈ R d v_1, ..., v_n \in \mathbb{R}^d v1,...,vnRd,构建核矩阵 A A A,其元素定义为 a i j = v i T v j a_{ij} = v_i^T v_j aij=viTvj。这一步骤的时间复杂度为 O ( n 2 d ) O(n^2 d) O(n2d)

2. Cholesky 分解

对核矩阵 A A A 进行Cholesky分解,得到 A = L L T A = LL^T A=LLT,其中 L L L 是下三角矩阵。利用Cholesky分解可以简化后续的行列式计算,因为下三角矩阵的行列式等于其对角线元素的乘积。

3. 快速更新行列式

在每一轮迭代中,我们只需要基于上一轮的结果快速更新新的行列式值,而不是重新计算整个矩阵的行列式。这样可以将每次更新的时间复杂度从 O ( ∣ S ∣ 3 ) O(|S|^3) O(S3) 降低到 O ( k 2 ) O(k^2) O(k2)

4. 贪心算法

结合贪心策略,在每一步选择能够最大化边际增益的物品加入当前集合 S S S 中。最终,整个算法的时间复杂度为 O ( n 2 d + n k 2 ) O(n^2 d + nk^2) O(n2d+nk2),远低于传统方法的 O ( n 2 d + n k 4 ) O(n^2 d + nk^4) O(n2d+nk4)

四、扩展与优化

1. 滑动窗口机制

随着集合 S S S 的增大,其中相似物品越来越多,物品向量趋于线性相关,导致行列式坍缩到零。为了避免这种情况,可以引入滑动窗口 W W W 来替代公式中的 S S S,从而保持一定的多样性:

arg max ⁡ i ∈ R { θ ⋅ r e w a r d i + ( 1 − θ ) ⋅ log ⁡ ( det ⁡ ( A W ∪ { i } ) ) } \argmax_{i\in R } \{ \theta \cdot reward_i + (1-\theta) \cdot \log(\det(A_{W\cup\{i\}})) \} iRargmax{θrewardi+(1θ)log(det(AW{i}))}

这里 θ \theta θ 是一个权重参数,平衡了奖励和多样性的贡献。

2. 规则约束

除了使用滑动窗口外,还可以通过对候选物品集 R R R 施加规则约束来进一步优化推荐效果。例如,排除掉不符合特定条件的物品,只考虑剩余物品进行选择:

arg max ⁡ i ∈ R ′ { θ ⋅ r e w a r d i + ( 1 − θ ) ⋅ log ⁡ ( det ⁡ ( A W ∪ { i } ) ) } \argmax_{i\in R' } \{ \theta \cdot reward_i + (1-\theta) \cdot \log(\det(A_{W\cup\{i\}})) \} iRargmax{θrewardi+(1θ)log(det(AW{i}))}

其中 R ′ ⊆ R R' \subseteq R RR 是经过筛选后的候选物品集。这种做法不仅提高了推荐结果的质量,还增强了系统的灵活性。

五、总结与展望

行列式点过程(DPP)作为一种强大的数学工具,已经在多个领域展现了其独特的优势。通过不断的技术创新和优化,DPP不仅能够有效地解决实际问题,还能为未来的个性化推荐和服务提供更多的可能性。希望本文能为广大读者提供一个全面了解DPP的机会,并激发更多关于这一领域的研究和探索。

相关文章:

推荐系统重排:DPP 多样性算法

行列式点过程(DPP)算法:原理、应用及优化 推荐系统【多样性算法】系列文章(置顶) 1.推荐系统重排:MMR 多样性算法 2.推荐系统重排:DPP 多样性算法 引言 行列式点过程(Determinanta…...

【业务场景】sql server从Windows迁移到Linux

目录 1.背景 2.Linux安装sql server 3.服务器不开端口的问题 4.数据库导入导出问题 1.背景 博主在24年年底接手运维了一个政府的老系统,整个应用和数据库单点部署在一台Windows Server服务器上,数据库选型是经典的老项目标配——sql server。随着近…...

SpringMVC(三)请求

目录 一、RequestMapping注解 1.RequestMapping的属性 实例 1.在这里创建文件,命名为Test: 2.复现-返回一个页面: 创建test界面(随便写点什么): Test文件中编写: ​编辑 运行: 3.不返回…...

【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

HeadFirst设计模式开胃菜 前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模…...

Spring线程池优雅关闭

前言 线程池大家一定不陌生,常被用来异步执行一些耗时的任务。但是线程池如何优雅的关闭,却少有人关注。 当 JVM 进程关闭时,你提交到线程池的任务会被如何处理?如何保证任务不丢? ThreadPoolExecutor Java 对线程…...

Spring为什么要用三级缓存解决循环依赖?

1.什么是循环依赖 本文为了方便说明,先设置两个业务层对象,命名为AService和BService。其中Spring是如何把一个Bean对象创建出来的,其生命周期如下: 构造方法–> 不同对象 --> 注入依赖 -->初始化前 --> 初始化后–&…...

【苏德矿高等数学】第4讲:数列极限定义-1

2. 数列极限 数列极限是整个微积分的核心。它的思想贯穿整个微积分之中。 数列极限是最基本的、最核心的、最重要的、最难的。 2.1 数列 【定义】无限排列的一列数 a 1 , a 2 , ⋯ , a n , ⋯ a_1,a_2,\cdots,a_n,\cdots a1​,a2​,⋯,an​,⋯就称为数列,记作 { …...

Go语言的 的并发编程(Concurrency)核心知识

Go语言的并发编程(Concurrency)核心知识 在现代软件开发中,尤其是处理高并发任务时,优秀的并发编程能力显得尤为重要。Go语言(或称Golang)是为并发编程而生的一种编程语言,它通过简洁的语法和强…...

Go语言中的逃逸分析:深入浅出

Go语言中的逃逸分析:深入浅出 在Go语言中,逃逸分析(Escape Analysis)是一个非常重要且强大的编译器优化技术。它帮助编译器决定一个变量是在栈上分配还是在堆上分配,从而影响程序的性能和内存管理。本文将深入探讨Go语…...

flux中的缓存

1. cache,onBackpressureBuffer。都是缓存。cache可以将hot流的数据缓存起来。onBackpressureBuffer也是缓存,但是当下游消费者的处理速度比上游生产者慢时,上游生产的数据会被暂时存储在缓冲区中,防止丢失。 2. Flux.range 默认…...

Vue3中使用 Vue Flow 流程图方法

效果图: 最近项目开发时有一个流程图的功能,需要做流程节点的展示,就搜到了 Vue Flow 这个插件,这个插件总得来说还可以,简单已使用,下边就总结一下使用的方法: Vue Flow官网:https…...

[Effective C++]条款42 typename

本文初发于 “天目中云的小站”&#xff0c;同步转载于此。 条款42 : 了解typename的双重意义 本条款中我们将了解typename的两种使用场景, 对typename的内涵及使用加深认知. template声明式 在template的声明中, template<class T>和template<typename T>都是被允…...

MySQL 8 主从同步配置(Master-Slave Replication)

📋 MySQL 8 主从同步配置(Master-Slave Replication) 🔧 目标: 配置 MySQL 8 主从同步,实现 主库(Master) 处理写操作,从库(Slave) 处理读操作,达到 读写分离 和 高可用性 的目的。 🔑 核心步骤: 配置 主库(Master)配置 从库(Slave)启动主从复制验证主从…...

STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)

一&#xff1a;步进电机简介 步进电机又称为脉冲电机&#xff0c;简而言之&#xff0c;就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩&#xff0c;步进电机的角位移量与输入的脉冲个数严格成正…...

模拟(算法-6)

模拟简介 模拟就是根据题目要求&#xff0c;比着葫芦画瓢&#xff0c;即直接按照题目要求写就行了 考察的是我们的编码能力 步骤&#xff1a; 演草纸上画图模拟&#xff08;重要&#xff09; 代码编写 虽然很多时候此类题比较简单&#xff0c;但是也有例外&#xff0c;如本文第…...

Clickhouse集群部署(3分片1副本)

Clickhouse集群部署 3台Linux服务器&#xff0c;搭建Clickhouse集群3分片1副本模式 1、安装Java、Clickhouse、Zookeeper dpkg -i clickhouse-client_23.2.6.34_amd64.deb dpkg -i clickhouse-common-static_23.2.6.34_amd64.deb dpkg -i clickhouse-server_23.2.6.34_amd64…...

MySQL(六)MySQL 案例

1. MySQL 案例 1.1. 设计数据库 1、首先根据相关业务需求(主要参考输出输入条件)规划出表的基本结构   2、根据业务规则进行状态字段设计   3、预估相关表的数据量进行容量规划   4、确定主键   5、根据对相关处理语句的分析对数据结构进行相应的变更。   设计表的时…...

【网络协议栈】TCP/IP协议栈中重要协议和技术(DNS、ICMP、NAT、代理服务器、以及内网穿透)

每日激励&#xff1a;“请给自己一个鼓励说&#xff1a;Jack我很棒&#xff01;—Jack” 绪论​&#xff1a; 本章是TCP/IP网络协议层的完结篇&#xff0c;本章将主要去补充一些重要的协议和了解一些网络中常见的名词&#xff0c;具体如&#xff1a;DNS、ICMP、NAT、代理服务器…...

NLP中特征提取方法的总结

1. Bag of Words (BOW) 描述&#xff1a;将文本表示为一个词汇表中的词频向量&#xff0c;忽略词的顺序。 优点&#xff1a;实现简单&#xff0c;广泛应用。 缺点&#xff1a;不考虑词序和上下文信息&#xff0c;向量空间维度可能非常大。 应用&#xff1a;文本分类、情感分…...

《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发

随着HarmonyOS NEXT发布&#xff0c;鸿蒙生态日益壮大&#xff0c;广大开发者对于系统化学习平台和课程的需求愈发强烈。近日&#xff0c;华为精心打造的《HarmonyOS第一课》全新上线&#xff0c;集“学、练、考”于一体&#xff0c;凭借多维融合的教学模式与系统课程设置&…...

JMeter + Grafana +InfluxDB性能监控 (二)

您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。 下面&#xff0c;笔者详细介绍具体的搭建过程。 安装并配置InfluxDB 您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包&#xff0c;这里笔者下载的是influxdb-1.8.0.x86_…...

【微服务】3、配置管理

微服务配置管理 已掌握的微服务组件及配置管理问题引出 已掌握注册中心、Openfan、远程调用、负载均衡、网关等组件&#xff0c;具备微服务开发能力&#xff0c;但仍存在其他问题待解决。微服务和网关存在大量配置文件&#xff0c;其中包含很多重复配置&#xff0c;如数据库、日…...

数据结构(顺序表)

文章目录 数据结构概述什么是数据结构数据结构的类型常见的数据结构 线性表概念举例 顺序表基本概念基本操作 完整代码顺序表优缺点总结 数据结构概述 什么是数据结构 数据结构&#xff1a;数据结构就是计算机存储&#xff0c;组织&#xff0c;管理数据的方式方法 数据结构的…...

ARM架构服务器安装部署KVM虚拟化环境

一、查看内核是否支持KVM虚拟化 针对ARM架构服务器&#xff0c;若/dev/kvm 和 /sys/module/kvm任意一个不存在&#xff0c;都说明内核不支持KVM虚拟化 [rootlocalhost ~]# ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 May 6 09:18 /dev/kvm[rootlocalhost ~]# ls /sys/mo…...

Azkaban其二,具体使用以及告警设置

目录 Azkaban的使用 1、使用Flow1.0(比较老旧&#xff09; 2、Flow2.0的用法 1、小试牛刀 2、YAML格式的数据 3、多任务依赖 4、内嵌流&#xff08;嵌套流&#xff09;案例 5、动态传参 3、Azkaban的报警机制 1&#xff09;邮箱通知 2&#xff09;电话报警机制 4、关…...

不只是mini-react第一节:实现最简单mini-react

项目总结构&#xff1a; ├─ &#x1f4c1;core │ ├─ &#x1f4c4;React.js │ └─ &#x1f4c4;ReactDom.js ├─ &#x1f4c1;node_modules ├─ &#x1f4c1;tests │ └─ &#x1f4c4;createElement.spec.js ├─ &#x1f4c4;App.js ├─ &#x1f4c4;in…...

MySQL数据库备份与恢复策略

数据是企业和应用的核心资产,可靠的备份和恢复策略是确保数据安全性和业务连续性的关键。在本篇文章中,我们将详细介绍 MySQL 数据库的备份和恢复方法,包括逻辑备份、物理备份、自动化备份,以及常见问题的处理方法。 一、逻辑备份 逻辑备份是通过导出数据库的结构和数据生…...

SpringBoot下载文件的几种方式

小文件&#xff1a;直接将文件一次性读取到内存中&#xff0c;文件大可能会导致OOM GetMapping("/download1")public void download1(HttpServletResponse response) throws IOException {// 指定要下载的文件File file new File("C:\\Users\\syd\\Desktop\\do…...

探索现代 Web 开发中的流行技术:深入学习 Vite 的使用

在前端开发的世界中&#xff0c;构建工具扮演着越来越重要的角色。从 Webpack 到 Parcel&#xff0c;再到 Rollup&#xff0c;每个工具都有自己的独特定位和目标。而今天&#xff0c;我们要讨论的是一款近年来迅速崛起并受到广泛欢迎的构建工具— Vite。 本文将从基本原理到实…...

React虚拟DOM:理解和应用

写在前面 在现代前端开发中&#xff0c;React 是一个非常流行的 JavaScript 库&#xff0c;用于构建用户界面。它引入了一个名为“虚拟 DOM”&#xff08;Virtual DOM&#xff09;的概念&#xff0c;这个概念对于 React 的高效性能和易用性至关重要。本文将深入探讨 React Vir…...

C++和SFML游戏入门

让我们深入探讨一下如何使用C和SFML&#xff08;Simple and Fast Multimedia Library&#xff09;来创建一个更为详细的游戏代码示例。我们将构建一个简单的2D游戏&#xff0c;其中包含一个可移动的角色、基本的碰撞检测以及简单的得分系统。 项目结构 首先&#xff0c;我们定…...

Django 表单

Django 表单 Django 表单是 Web 开发中一个重要的组成部分,它允许用户与网站进行交互。在 Django 框架中,表单用于收集和验证用户输入的数据。Django 提供了一个强大的表单处理系统,使得开发者能够轻松地创建表单,处理表单数据,并进行验证。 1. Django 表单基础 Django…...

Ubuntu 安装英伟达显卡驱动问题记录

建议 无论什么版本的系统,都建议从官网下载驱动,一般下载下来后是一个 run 开头的可执行程序,直接在命令行执行就可以。 之所以这么建议,是因为使用 包管理工具安装的驱动一般都是社区版本,社区版本的问题就是没有签名,需要在 BIOS 内关闭 security boot 才可以加载对应…...

机器视觉面试题PDF

以下是一些机器视觉面试题PDF资源的推荐&#xff1a; GitHub仓库• 《百面计算机视觉》面试题整理&#xff1a;这个GitHub仓库整理了计算机视觉算法岗的面试题&#xff0c;包括深度学习基础、机器学习高频面试题、传统CV(Opencv面试题)、目标检测、图像分类、图像分割、Transfo…...

【网络协议】IPv4 地址分配 - 第一部分

文章目录 十进制与二进制网络如何被寻址地址类型网络地址广播地址主机地址 如何确定网络和主机部分的位数&#xff1f;网络中的主机数量与前缀号的关系计算每个前缀的主机数量公式 子网掩码二进制与操作&#xff08;Binary ANDing&#xff09;与操作&#xff08;AND Operation&…...

掌握 Dockerfile:格式、解析器指令、环境变量替换

Docker 是一个开源平台&#xff0c;旨在自动化应用程序的构建、交付和运行。通过 Dockerfile&#xff0c;您可以定义镜像的构建过程。Dockerfile 是由一系列指令组成的文件&#xff0c;Docker 根据这些指令构建镜像。本文将介绍常用的 Dockerfile 指令、格式、解析器指令以及环…...

AWS Glue基础知识

AWS Glue 是一项完全托管的 ETL&#xff08;提取、转换、加载&#xff09;服务&#xff0c;与考试相关&#xff0c;尤其是在数据集成、处理和分析方面。 1.数据集成和 ETL&#xff08;提取、转换、加载&#xff09; AWS Glue 主要用于构建 ETL 管道以准备数据以进行分析。作为…...

单片机-LED实验

1、51工程模版 #include "reg52.h" void main(){ while(1){ } } 2、LED灯亮 #include "reg52.h" sbit LED1P2^0; void main(){ while(1){ LED10; } } 3、LED闪烁 #include "reg52.h" sbit LED1P2^0; //P2大…...

使用Python实现健康跟踪应用:打造智能健康管理助手

随着人们对健康的关注日益增强,智能健康管理逐渐成为热门趋势。通过持续跟踪身体状况、饮食、运动和睡眠等方面的数据,我们可以更好地了解自己的健康状态,并采取相应的措施来保持身体健康。Python,作为一种简洁且功能强大的编程语言,非常适合用来开发健康跟踪应用。本文将…...

结构型模式6.享元模式

结构型模式 适配器模式&#xff08;Adapter Pattern&#xff09;桥接模式&#xff08;Bridge Pattern&#xff09;组合模式&#xff08;Composite Pattern&#xff09;装饰器模式&#xff08;Decorator Pattern&#xff09;外观模式&#xff08;Facade Pattern&#xff09;享元…...

AWS S3文件存储工具类

pom依赖 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…...

MacDriver 项目推荐

MacDriver 项目推荐 macdriver Native Mac APIs for Go. Soon to be renamed DarwinKit! 项目地址: https://gitcode.com/gh_mirrors/ma/macdriver 1. 项目基础介绍和主要编程语言 MacDriver 是一个开源项目&#xff0c;旨在为 Go 语言提供原生的 macOS API 支持。该项…...

笔记:一次mysql主从复制延迟高的处理尝试

背景 mysql 5.7 主从复制 主库进行了一次灌数&#xff0c;导致多个大事务产生&#xff0c;主从延迟下不去&#xff0c;经确认该表最终truncate&#xff0c;并且该表仅有insert和select操作&#xff0c;故对该表的事务进行跳过&#xff0c;直到同步至truncate 跳过事务需谨慎&…...

《Vue3实战教程》40:Vue3安全

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 安全​ 报告漏洞​ 当一个漏洞被上报时&#xff0c;它会立刻成为我们最关心的问题&#xff0c;会有全职的贡献者暂时搁置其他所有任务来解决这个问题。如需报告漏洞&#xff0c;请发送电子邮件至 securityvuejs.org。…...

Linux 基础 6.进程

文章目录 6.1 进程和程序1. **程序 (Program)**2. **进程 (Process)**3. **程序与进程的区别**4. **进程的创建与执行**5. **总结** 6.2 进程号和父进程号1. **进程号 (PID)**2. **进程号的分配**3. **父进程号 (PPID)**4. **进程树结构**5. **进程号的限制与调整**6. **总结**…...

LeetCode:700.二叉搜索树中的搜索

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;700.二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你…...

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象&#xff0c;有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据&#xff1a; 获取session获取数据&#xff1a; 请求存储&#xff1a; 请求获取&#xff1a; 数据正常打印&#xff1a…...

有哪几种方法可以使html脱离文档流?

position: absolute:会使元素脱离文档流&#xff0c;并且相对于最近的已定位的祖先元素进行定位。如果没有已定位的祖先元素&#xff0c;则相对于 <html> 元素定位。 元素脱离文档流&#xff0c;不再占据空间。 不会影响后续元素的位置和布局。 可以通过 top、right、…...

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?

BIOS&#xff08;基本输入输出系统&#xff09;是计算机硬件与操作系统之间的桥梁&#xff0c;它负责初始化和测试系统硬件组件&#xff0c;并加载启动操作系统。在某些情况下&#xff0c;如调整启动顺序、更改系统时间或日期、修改硬件配置等&#xff0c;您可能需要进入BIOS进…...

Fast R-CNN模型详解及分析

模型背景 在目标检测领域的发展历程中,R-CNN系列模型标志着一个重要转折点。然而,在Fast R-CNN问世之前,这一领域的研究仍面临一些显著挑战: 计算效率低下 :早期模型如R-CNN和SPPNet虽然在准确性方面取得进展,但在计算效率上仍有待提高。特别是R-CNN需要多次运行CNN并单…...