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

【大模型基础_毛玉仁】5.3 附加参数法:T-Patcher


目录

    • 5.3 附加参数法:T-Patcher
      • 5.3.1 补丁的位置
        • 1)键值存储体
        • 2)补丁设计
      • 5.3.2 补丁的形式
      • 5.3.3 补丁的实现
        • 1)准确性
        • 2)局部性


5.3 附加参数法:T-Patcher

附加参数法:通过引入可训练的额外参数实现模型知识编辑,在准确性、泛化性等方面表现优异。

其中,T-Patcher作为代表性方法,在Transformer模型的最后一个前馈层中添加"补丁"参数,通过训练这些参数实现特定知识编辑,且不改变原始模型架构。

该方法主要从补丁位置(如前馈层)、补丁形式(参数结构设计)及实现方式(训练策略) 三方面展开。

图 5.9: T-Patcher 方法 (图中紫色图块为补丁)

在这里插入图片描述

.

5.3.1 补丁的位置

T-Patcher选择在Transformer模型最后一个全连接前馈层添加补丁参数,将全连接前馈层视为键值存储体。通过向该层注入少量可训练参数形成新记忆单元,结合精确的激活控制机制,既能针对性修正特定输入的知识,又可避免干扰无关输入。这种设计因FFN结构简单而具备参数高效性,仅需少量参数即可实现有效编辑。

.

1)键值存储体

图 5.10: 键值存储体 (省略激活函数)
在这里插入图片描述

包含:键向量矩阵 W f c = [ k 1 , k 2 , . . . , k n ] W_{fc} = [k_1, k_2, . . . , k_n] Wfc=[k1,k2,...,kn] 及其偏置向量 b k b_k bk、激活函数 σ 和值向量矩阵 W p r o j = [ v 1 , v 2 , . . . , v n ] W_{proj} = [v_1, v_2, . . . , v_n] Wproj=[v1,v2,...,vn] 及其偏置向量 b v b_v bv

  • 键向量矩阵​:对应输入文本中的特定模式。

  • 值向量矩阵​:关联模型输出的概率分布。

查询过程:输入 Token 的查询向量 q 与 Wfc​ 相乘计算激活值向量 a,然后与 Wproj​ 相乘得到输出结果。

a = σ ( q ⋅ W f c + b k ) F F N ( q ) = a ⋅ W p r o j + b v \begin{aligned} a = \sigma(q \cdot W_{fc} + b_k) \\ \\ FFN(q) = a \cdot W_{proj} + b_v \end{aligned} a=σ(qWfc+bk)FFN(q)=aWproj+bv

隐藏层维度:代表模型“记忆”的文本模式数量。

.

2)补丁设计
  • 位置:在 Transformer 模型的最后一个全连接前馈层添加补丁。

  • 作用:通过添加少量参数(键值对)插入新事实信息,实现模型编辑。

  • 优势:参数高效,针对性强,避免干扰无关输入。

.

5.3.2 补丁的形式

补丁的形式如下图所示,主要包括一个键向量 k_p、一个值向量 v_p 和一个偏置项 b_p。

图 5.11: 补丁的形式
在这里插入图片描述

在添加补丁后,全连接前馈层的输出被调整为:

[ a a p ] = σ ( q ⋅ [ W f c k p ] + [ b k b p ] ) F F N p ( q ) = [ a a p ] ⋅ [ W p r o j v p ] ⊤ + b v = F F N ( q ) + a p ⋅ v p \begin{aligned} [a \quad a_p] &= \sigma(q \cdot [W_{fc} \quad k_p] + [b_k \quad b_p]) \\ \\ FFN_p(q) &= [a \quad a_p] \cdot [W_{proj} \quad v_p]^{\top} + b_v = FFN(q) + a_p \cdot v_p \end{aligned} [aap]FFNp(q)=σ(q[Wfckp]+[bkbp])=[aap][Wprojvp]+bv=FFN(q)+apvp

其中,

  • a_p 为补丁的激活值,代表补丁对输入查询的响应程度。

  • 添加补丁后,a_p 与值向量 v_p 的乘积会形成偏置项叠加到全连接前馈层的原始输出之上,以调整模型的输出。

补丁就像一个很小的修正器,只会被相关的输入查询激活。

.

5.3.3 补丁的实现

T-Patcher 为每个需要编辑的 Token 都添加一个补丁,从而精确针对每个编辑需求进行调整。

最后,T-Patcher 从编辑的准确性局部性两个角度出发对损失函数进行设计。接下来对其损失函数进行介绍。

.

1)准确性

对于补丁的准确性, T-Patcher 主要关注两个方面:

  • (1)确保补丁可以在目标输入下可以被激活;

  • (2)一 旦被激活,补丁应该能够准确地调整模型输出以符合预期的结果。

为此,T-Patcher 设计了准确性损失 L a c c L_{acc} Lacc,它包括激活损失 l a l_a la编辑损失 l e l_e le

L A c c = l a ( k p , b p ) + α l e ( k p , v p , b p ) L_{Acc} = l_a(k_p, b_p) + \alpha l_e(k_p, v_p, b_p) LAcc=la(kp,bp)+αle(kp,vp,bp)
l a ( k p , b p ) = exp ⁡ ( − q e ⋅ k p − b p ) l_a(k_p, b_p) = \exp(-q_e \cdot k_p - b_p) la(kp,bp)=exp(qekpbp)
l e ( k p , v p , b p ) = C E ( y e , p e ) l_e(k_p, v_p, b_p) = CE(y_e, p_e) le(kp,vp,bp)=CE(ye,pe)

其中,

  • q e q_e qe 是编辑样本在全连接前馈层处的查询向量,

  • y e y_e ye 是该补丁对应的目标 Token,

  • p e p_e pe 是模型在补丁作用下的预测输出,

  • CE 是交叉熵损失函数,

  • α 是激活损失 l a l_a la 的权重。

激活损失l_a

  • 激活损失确保补丁在目标输入下被激活。

  • 通过最大化编辑样本的查询向量 q_e 对补丁的激活值,确保补丁对特定编辑需求的响应。

编辑损失l_e

  • 编辑损失确保补丁在被激活后能够将模型输出调整为目标 Token。

  • 使用交叉熵损失函数评估补丁调整后的输出 p_e 与目标 Token y_e 的一致性,确保补丁的调整正确实现预期的修正效果。

.

2)局部性

为了保证编辑的局部性,T-Patcher 设计了特定的损失函数来限制补丁的激活范围,确保其只在相关的输入上被激活。具体而言,T-Patcher 通过以下方式实现:

记忆数据集 D M D_M DM:随机保留先前处理过的与当前编辑目标无关的查询向量,组成记忆数据集 D M = q i i = 1 ∣ D M ∣ D_M = {q_i}_{i=1}^{|D_M|} DM=qii=1DM

记忆损失 L m L_m Lm:定义了记忆损失 L m L_m Lm 来保证编辑的局部性,该损失包含 l m 1 l_{m1} lm1 l m 2 l_{m2} lm2 两项:

  • l m 1 l_{m1} lm1:确保记忆数据集中的查询向量在补丁上的激活值低于阈值 β \beta β

  • l m 2 l_{m2} lm2:确保记忆数据集中的查询向量与编辑样本的查询向量 q e q_e qe 在补丁上的激活差异低于阈值 γ \gamma γ

L m = l m 1 ( k p , b p ) + l m 2 ( k p , b p , q e ) L_m = l_{m1}(k_p, b_p) + l_{m2}(k_p, b_p, q_e) Lm=lm1(kp,bp)+lm2(kp,bp,qe)
l m 1 ( k p , b p ) = 1 ∣ D M ∣ ∑ i = 1 ∣ D M ∣ ( max ⁡ ( q i ⋅ k p + b p − β , 0 ) ) l_{m1}(k_p, b_p) = \frac{1}{|D_M|} \sum_{i=1}^{|D_M|} (\max(q_i \cdot k_p + b_p - \beta, 0)) lm1(kp,bp)=DM1i=1DM(max(qikp+bpβ,0))
l m 2 ( k p , b p ) = 1 ∣ D M ∣ ∑ i = 1 ∣ D M ∣ ( max ⁡ ( ( q i − q e ) ⋅ k p + b p − γ , 0 ) ) l_{m2}(k_p, b_p) = \frac{1}{|D_M|} \sum_{i=1}^{|D_M|} (\max((q_i - q_e) \cdot k_p + b_p - \gamma, 0)) lm2(kp,bp)=DM1i=1DM(max((qiqe)kp+bpγ,0))

将这些损失项整合,T-Patcher 的总损失函数 L_p 可以表达为:

L p = L A c c + β ⋅ L m = l e + α ⋅ l a + β ⋅ ( l m 1 + l m 2 ) L_p = L_{Acc} + \beta \cdot L_m = l_e + \alpha \cdot l_a + \beta \cdot (l_{m1} + l_{m2}) Lp=LAcc+βLm=le+αla+β(lm1+lm2)

通过这些损失函数,T-Patcher 确保补丁在无关输入上不会被激活,从而保证编辑的局部性。

T-Patcher 在 GPT-J 模型上表现出较好的准确性和泛化性,但也存在局限性,如在不同模型架构上性能波动较大,批量编辑时内存需求高,限制了其在资源受限环境下的应用。

相比之下,ROME 方法更加稳定,通过将知识编辑视为一个带有线性等式约束的最小二乘问题,实现了对模型特定知识的精确修改,在准确性、泛化性和局部性等方面表现出色。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!

相关文章:

【大模型基础_毛玉仁】5.3 附加参数法:T-Patcher

目录 5.3 附加参数法:T-Patcher5.3.1 补丁的位置1)键值存储体2)补丁设计 5.3.2 补丁的形式5.3.3 补丁的实现1)准确性2)局部性 5.3 附加参数法:T-Patcher 附加参数法:通过引入可训练的额外参数实…...

【19期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股实时交易数据及接口API说明文档

​ 在量化分析领域,实时且准确的数据接口是成功的基石。经过多次实际测试,我将已确认可用的数据接口分享给正在从事量化分析的朋友们,希望能够对你们的研究和工作有所帮助,接下来我会用Python、JavaScript(Node.js&…...

RSA 简介及 C# 和 js 实现【加密知多少系列_4】

〇、简介 谈及 RSA 加密算法,我们就需要先了解下这两个专业名词,对称加密和非对称加密。 对称加密:在同一密钥的加持下,发送方将未加密的原文,通过算法加密成密文;相对的接收方通过算法将密文解密出来原文…...

Koordinator-Metric查询

以CollectAllPodMetricsLast()举例,看看koordinator怎样使用tsdb进行查询。 CollectAllPodMetricsLast() GenerateQueryParamsLast()传入metric采集间隔2倍时间调用CollectAllPodMetrics()func CollectAllPodMetricsLast(statesInformer statesinformer.StatesInformer, metr…...

LeetCode1两数之和

**思路:**懒得写了,如代码所示 /*** Note: The returned array must be malloced, assume caller calls free().*/ struct hashTable {int key;//存值int val;//存索引UT_hash_handle hh; }; int* twoSum(int* nums, int numsSize, int target, int* re…...

AOA与TOA混合定位,MATLAB例程,三维空间下的运动轨迹,滤波使用EKF,附下载链接

本文介绍一个MATLAB代码,实现基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络&am…...

Java算法模板

合并区间 统计不同区间的元素个数 //合并区间List<Integer> result new ArrayList<>();int start intervals.get(0)[0];int end intervals.get(0)[1];for(int i1;i<intervals.size();i){int[] curr intervals.get(i);if(curr[0]>end){//不能合并&…...

软件架构设计中的软件过程模型初识

软件架构设计中的软件过程模型是指导软件开发过程的框架&#xff0c;它们定义了软件开发的不同阶段、活动、任务和角色。结合具体的使用场景&#xff0c;可以更好地理解这些模型如何在实际项目中应用。以下将详细介绍几种常见的软件过程模型&#xff0c;并结合典型场景进行讲解…...

征程 6E mipi tx 系列之方案介绍

MIPI TX 到车机显示系统设计指南 IDE 介绍 征程 6 IDE 架构图 IDE&#xff08;Image Display Engine&#xff09;包含图像显示单元&#xff08;Image Display Unit&#xff09;、图像数据输出模块&#xff08;MIPI CSI2 Device 和 MIPI DSI&#xff09;。通过 IDU 从内存中读…...

std::reference_wrapper 和 std::function的详细介绍

关于 std::reference_wrapper 和 std::function 的详细介绍及具体测试用例&#xff1a; 1. std::reference_wrapper&#xff08;引用包装器&#xff09; 核心功能 包装引用&#xff1a;将引用转换为可拷贝、可赋值的对象支持隐式转换&#xff1a;可自动转换为原始引用类型容器…...

【day4】数据结构刷题 树

6-1 二叉树的遍历 函数接口定义&#xff1a; void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中BinTree结构定义如下&#xff1a; typedef struct TNode *Po…...

基于Selenium的IEEE Xplore论文数据爬取实战指南

基于Selenium的IEEE Xplore论文数据爬取实战指南 一、项目背景与目标 IEEE Xplore作为全球知名的学术资源平台,收录了大量高质量科技文献。本教程将演示如何通过Python的Selenium库实现: 自动化获取指定领域论文列表(以"构音障碍"为例)完整提取论文标题、摘要、…...

Vue2 项目将网页内容转换为图片并保存到本地

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

flutter 专题 七十一 Flutter 自定义单选控件

在Flutter 应用开发中&#xff0c;经常会遇到各种单选效果&#xff0c;虽然官方提供了Radio组件&#xff0c;但是并不能满足我们实际的开发需求&#xff0c;所以往往还需要自定义控件才能满足平时的开发需求。下面就平时开发中用到的单选进行介绍&#xff1a; 自定义SegmentBa…...

质因数个数--欧拉函数中统计纯素数

和互质数不同&#xff0c;这里统计的是纯素数部分 就是x/i那一部分 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> PII; int n,m,k; ll eular(ll x) { ll an0;ll px;for(ll i2;i*i<x;i){if(x%i…...

RAG基建之PDF解析的“无OCR”魔法之旅

PDF文件转换成其他格式常常是个大难题,大量的信息被锁在PDF里,AI应用无法直接访问。如果能把PDF文件或其对应的图像转换成结构化或半结构化的机器可读格式,那就能大大缓解这个问题,同时也能显著增强人工智能应用的知识库。 嘿,各位AI探险家们!今天我们将踏上了一段奇妙的…...

Web开发:数据的加密和解密

一、常见通用术语解析 加盐&#xff1a;在密码中加入随机数据&#xff0c;提高安全性。摘要&#xff1a;固定长度的输出&#xff0c;用于数据完整性验证。加密&#xff1a;将数据转换为不可读形式&#xff0c;确保安全。撞库&#xff1a;通过暴力破解比对常见密码的攻击方式。…...

从零开始研发GPS接收机连载——15、使用新射频成功打卡日本地标

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 从零开始研发GPS接收机连载——15、使用新射频成功打卡日本地标 前言MAX2771配置测试MAX2771完整程序测试 前言 话说笔者花了一笔巨资买了一个指甲盖般大小的MAX2771射频板&…...

linux压缩指令

今天我们来了解一下linux压缩指令,压缩是我们文件传输的一种重要手段,对此,我们是必须学习压缩指令的,那么话不多说,来看. 1.grep过滤查找&#xff0c;管道符&#xff0c;“&#xff5c;”&#xff0c;表示将前一个命令的处理结果输出传递给后面的命令处理。 基本语法&#x…...

智能提示词生成器:助力测试工程师快速设计高质量测试用例

在软件测试中,测试用例设计方法的选择和实施是确保软件质量的重要步骤。测试工程师经常需要根据不同的测试场景、参数维度和业务需求,设计出覆盖率高且有效的测试用例。然而,设计测试用例并非易事,特别是在面对复杂的业务逻辑时。 为了帮助测试工程师高效生成测试用例提示…...

QML中使用Image显示图片和使用QQuickItem显示图片

在QML中显示图片时&#xff0c;Image元素和自定义QQuickItem有不同的特性和适用场景。以下是两者的详细对比及性能分析&#xff1a; 1. Image 元素 优点&#xff1a; 声明式语法&#xff1a;简单直观&#xff0c;适合静态图片或简单动态需求 Image {source: "image.png&…...

若依赖前端处理后端返回的错误状态码

【背景】 后端新增加了一个过滤器&#xff0c;用来处理前端请求中的session 若依赖存放过滤器的目录&#xff1a;RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\ 【问题】 后端返回了一个状态码为403的错误&#xff0c;现在前端需要处理这…...

C++23:现代C++的模块化革命与零成本抽象新高度

以下代码为伪代码&#xff0c;仅供参考 一、标准库的范式突破 1. std::expected&#xff1a;类型安全的错误处理 std::expected<DataPacket, ErrorCode> parsePacket(ByteStream& stream) {if (stream.header_valid()) return decode_packet(stream);elsereturn s…...

【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端

目录 1、TCP TCP特点 TCP三次握手&#xff08;建立TCP连接&#xff09;&#xff1a; TCP四次握手【TCP断开链接的时候需要经过4次确认】&#xff1a; TCP网络程序开发流程 客户端开发&#xff1a;用户设备上的程序 服务器开发&#xff1a;服务器设备上的程序 2、UDP 为…...

《Spring Cloud Eureka 高可用集群实战:从零构建高可靠性的微服务注册中心》

从零构建高可用 Eureka 集群 | Spring Cloud 微服务架构深度实践指南 本文核心内容基于《Spring Cloud 微服务架构开发》第1版整理&#xff0c;结合生产级实践经验优化 实验环境&#xff1a;IntelliJ IDEA 2024 | JDK 1.8| Spring Boot 2.1.7.RELEASE | Spring Cloud Greenwich…...

Dust3r、Mast3r、Fast3r

目录 一.Dust3r 1.简述 2.PointMap与ConfidenceMap 3.模型结构 4.损失函数 5.全局对齐 二.Mast3r 1.简述 2.MASt3R matching 3.MASt3R sfm 匹配与标准点图 BA优化 三.Fast3r 1.简述 2.模型结构 3.损失函数 三维重建是计算机视觉中的一个高层任务&#xff0c;包…...

HTML5 Web SQL 数据库学习笔记

HTML5 的 Web SQL 数据库曾是一种用于在浏览器客户端存储数据的技术&#xff0c;但目前已被废弃。尽管如此&#xff0c;了解其基本概念和操作方法仍具有一定的学习价值。以下是关于 Web SQL 数据库的学习笔记。 一、Web SQL 数据库概述 1.1 状态与替代方案 Web SQL API 已被…...

Plastiform复制胶泥:高精度表面复制与测量的高效工具

在工业制造和质量检测领域&#xff0c;表面复制和测量是确保产品质量的关键环节。Plastiform复制胶泥作为一种创新材料&#xff0c;凭借其出色的性能和多样化的应用&#xff0c;为用户提供了可靠的解决方案。它能够快速捕捉复杂表面的细节&#xff0c;确保测量结果的准确性&…...

安装 `torch-sparse` 和 `torch-cluster`

✅ 安装 torch-sparse 和 torch-cluster 请直接运行下面这条 一行命令 来装 PyG 剩余依赖&#xff08;适配我已装好的 PyTorch 2.5.1cpu&#xff09;&#xff1a; pip install torch-sparse torch-cluster -f https://data.pyg.org/whl/torch-2.5.1cpu.html✅ 或者自己去官网…...

Linux之基础知识

目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…...

[mlr3] Bootstrap与交叉验证k-fold cross validation

五折交叉验证因其无放回分层抽样和重复验证机制&#xff0c;成为超参数调优的首选&#xff1b; 而Bootstrap因有放回抽样的重复性和验证集的不稳定性&#xff0c;主要服务于参数估计&#xff08;置信区间的计算&#xff09;而非调优。 实际应用中&#xff0c;可结合两者优势&am…...

自动化构建攻略:Jenkins + Gitee 实现 Spring Boot 项目自动化构建

Jenkins Gitee 实现 Spring Boot 项目自动化构建 环境准备安装配置jdk安装配置maven安装git安装配置Jenkins 测试构建测试自动化触发 环境准备 云服务器环境&#xff1a; 系统版本&#xff1a;Ubuntu 24.04 64位ecs规格&#xff1a;4核(vCPU)8 GiB公网带宽&#xff1a;10Mbi…...

Python 中的不可变数据类型的解析

# Python 中的不可变数据类型的解析 在 Python 的世界里&#xff0c;数据类型扮演着至关重要的角色。根据数据是否可以在创建后被修改&#xff0c;Python 数据类型可分为可变和不可变两类。本文将聚焦于不可变数据类型&#xff0c;详细介绍它们的特点&#xff0c;并结合具体实例…...

【Kafka】分布式消息队列的核心奥秘

文章目录 一、Kafka 的基石概念​主题&#xff08;Topic&#xff09;​分区&#xff08;Partition&#xff09;​生产者&#xff08;Producer&#xff09;​消费者&#xff08;Consumer&#xff09;​ 二、Kafka 的架构探秘​Broker 集群​副本机制​ 三、Kafka 的卓越特性​高…...

基于Promise链式调用的多层级请求性能优化

代码优化-循环嵌套关联请求 1. 背景 在实际开发中&#xff0c;我们经常会遇到需要嵌套关联请求的场景&#xff0c;比如&#xff1a; 获取项目列表获取项目详情获取项目进度 2. 问题 在这种场景下&#xff0c;我们可能会遇到以下问题&#xff1a; 串行请求瀑布流&#xff…...

RuoYi基础学习

1 若依搭建 前后端分离版本&#xff1a;RuoYi-Vue利用SpringBoot作为后端开发框架&#xff0c;与Vue.js结合&#xff0c;实现了前后端分离的开发模式。这种架构有助于提高开发效率&#xff0c;前后端可以独立开发和部署&#xff0c;更适合现代化的Web应用开发。 RuoYi-Vue3&a…...

解决关于原生gmssl无法直接输出sm2私钥明文的问题

解决关于原生gmssl无法直接输出sm2私钥明文的问题 问题描述解决方法解决方法一解决方法二 问题描述 通过gmssl生成sm2公私钥对时&#xff0c;输出的是加密的sm2私钥&#xff0c;无法获取到SM2私钥明文。 解决方法 解决方法一 手动解密&#xff1a; 解决方法二 修改源码&…...

AT24Cxx移植第三方库到裸机中使用

简介 MCU : STM32F103C8T6 库: HAL库裸机开发 EEPROM : AT24C02, 256Byte容量&#xff0c;I2C接口 电路图 AT24C02 电路图 电路图引用 逻辑直接读写 // 写入数据到 EEPROM HAL_StatusTypeDef EEPROM_WriteByte(uint16_t MemAddress, uint8_t Data) {// 发送数据uint8_t …...

【落羽的落羽 C++】内存区域、C++的内存管理

文章目录 一、内存区域二、C的内存管理1. new和delete2. new和delete的特点3. 实现的原理 一、内存区域 C语言和C中&#xff0c;我们常把计算机的内存分为不同的区域&#xff0c;有各自不同的功能&#xff1a; 栈区&#xff1a;存放函数的局部变量、参数、返回地址等。堆区&a…...

星际旅行(去年蓝桥杯省赛b组-第7题)

题目链接: 蓝桥账户中心 朋友分享给我一道题&#xff0c;我刚开始其实先用dfs写&#xff0c;但是直接就超时了(很大的一部分原因是截图中没有数据范围) #include<bits/stdc.h> using namespace std; const int MAXN 1e97; vector<int> graph[MAXN]; bool visite…...

转发和重定向的区别详解

转发&#xff08;Forward&#xff09;和重定向&#xff08;Redirect&#xff09;是 Web 开发中两种常用的请求处理方式&#xff0c;主要用于将客户端请求从一个资源转移到另一个资源。它们在实现机制、行为表现和应用场景上有显著区别&#xff0c;以下是对两者的详细解析&#…...

HarmonyOS NEXT——【鸿蒙相册图片以及文件上传Picker封装】

1、鸿蒙系统文件/图片上传base64&#xff1a; 鸿蒙应用需要上传图片或者文件时&#xff0c;由于更高的安全性与更严谨的访问权限&#xff0c;通常无法直接从系统相册或文件管理中直接上传&#xff0c;因此我们可以通过picker对象去拉起相册访问的能力&#xff0c;引导用户选择…...

Java中文件copy的5种方式

Java中文件copy的5种方式 传统字节流缓冲流jdk7 Files.copy通道&#xff08;零拷贝&#xff09;内存映射对比 传统字节流 缓冲流 jdk7 Files.copy 通道&#xff08;零拷贝&#xff09; 内存映射 对比...

Nacos Client 模块的作用是什么?是如何与 Server 端通信的?

Nacos Client 模块是 Nacos 架构中的重要组成部分&#xff0c;它负责与 Nacos Server 端进行交互&#xff0c;实现服务注册、服务发现、配置管理等核心功能。 可以将 Nacos Client 理解为 Nacos 提供给应用程序使用的 SDK。 Nacos Client 模块的主要作用: 服务注册 (Service R…...

c中的变量命名规则

在 C 中&#xff0c;变量命名需要遵循一定的规则和约定&#xff0c;以确保代码的可读性和合法性。以下是 C 变量命名的详细规则&#xff1a; 1. 基本规则 字母开头&#xff1a;变量名必须以字母&#xff08;a-z 或 A-Z&#xff09;或下划线&#xff08;_&#xff09;开头&…...

DDR(Double Data Rate)详解

一、DDR的定义与核心特性 DDR&#xff08;双倍数据率同步动态随机存取存储器&#xff09; 是一种 基于时钟上升沿和下降沿传输数据的高速内存技术&#xff0c;广泛应用于计算机、嵌入式系统、移动设备等领域。其核心特性包括&#xff1a; 双倍数据率&#xff1a;每个时钟周期传…...

aocache:AOCache 新增功能深度解析:从性能监控到灵活配置的全方位升级

最近对aocache 进行了重要升级&#xff0c;最新版本0.6.0增加了几项新功能&#xff1a;性能分析日志&#xff0c;AOCache性能分析工具&#xff0c;切入点自定义配置&#xff0c;全局配置&#xff0c;本文详细说明这几项目新功能的作用和使用方式。 一、性能分析日志 需求背景…...

IsaacLab最新2025教程(7)-引入IK solver控制机器人

机器人控制可以直接给定关节角进行驱动实现功能&#xff0c;完成任务&#xff0c;但是关节角不是很直观而且做teleoperation或者是结合VLA模型时候&#xff0c;用eef pose会更符合直觉一些&#xff0c;isaacsim用的是LulaKinematics&#xff0c;因为IsaacLab现在是ETHZ的团队在…...

【测试】每日3道面试题 3/30

每日更新&#xff0c;建议关注收藏点赞。 白盒测试逻辑覆盖标准&#xff1f;哪种覆盖标准覆盖率最高&#xff1f; 5种。语句覆盖、分支/判定覆盖、条件覆盖、条件组合覆盖【覆盖率最高&#xff0c;所有可能条件组合都验证】、路径覆盖【理论上最高&#xff0c;但实际很难实现】…...

矩阵中对角线的遍历问题【C++】

1&#xff0c;按对角线进行矩阵排序 题目链接&#xff1a;3446. 按对角线进行矩阵排序 - 力扣&#xff08;LeetCode&#xff09; 【题目描述】 对于一个m*n的矩阵grid&#xff0c;要求对该矩阵进行 变换&#xff0c;使得变换后的矩阵满足&#xff1a; 主对角线右上的所有对角…...