指令层级:训练大型语言模型优先处理特权指令
指令层级:训练大型语言模型优先处理特权指令
- The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions
- 关键要点:
- 快速浏览:
- 1. 引言(Introduction)
- 2. 指令层级(The Instruction Hierarchy)
- 指令层次结构
- 理想模型行为
- 数据生成方法
- 实验结果
- 主要结果
- 泛化结果
- 过度拒绝结果
- 总结
The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions
本文讨论了语言模型在执行应用程序时面临的安全风险,尤其是对抗性注入攻击(jailbreaks)。作者提出了一个指令层次结构(instruction hierarchy),将系统消息放在优先级较高的位置,用户消息放在优先级较低的位置,以使模型能够优先遵守系统消息的指令,以减少LLM被攻击的风险,提高模型的鲁棒性。通过合成数据生成和上下文浓缩的原则,作者训练了模型来执行不同类型的操作,包括开放域任务和闭合域任务。实验结果表明,训练后的模型能够更好地遵守指令,并拒绝执行有害操作。作者还提出了改进模型的几种方法,包括改进训练数据、扩展模型架构和进行更多的对抗性训练。最后,作者感谢其他研究人员的反馈和讨论,并希望继续改进模型的性能。
论文:The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions
地址:https://arxiv.org/pdf/2404.13208
关键要点:
- 研究提出了一种训练语言模型以优先考虑特定指令的方法。
- 方法包括生成带有复合请求和分解指令的数据,并将其放置在不同的层次中进行训练。
- 对抗性攻击被用于生成数据集,其中包括对系统提示提取等攻击。
- 方法提高了模型的鲁棒性和通用能力。
- 研究者还观察到一些回归现象,但相信可以通过进一步收集数据来解决。
快速浏览:
大模型安全在工业界,特别是AI模型落地时,是非常重要的一个考量。例如之前很火的prompt攻击方式“奶奶漏洞”,通过让GPT扮演奶奶睡前讲故事,可以套路GPT,让他说出某些正版软件的密钥。很显然这会给LLM公司带来法律风险。虽然这种直接注入漏洞已经被修复了,但是现在LLM结合工具/Agent之后,会有更多间接注入攻击让我们的LLM没有按照希望的方式去工作。
为了解决这个问题,这篇研究提出了一种指令层次结构(instruction hierarchy)。它明确定义了不同指令的优先级,以及当不同优先级的指令发生冲突时,LLM应该如何表现。通过这种方式,LLM会区别开系统指令和来自不受信任用户的指令之间的优先级,而不是像之前一样对所有的prompt都一视同仁。再根据优先级冲突时制定的策略以规范LLM的表现,从而减少LLM被攻击的风险。
这篇研究还提出了一种自动数据生成方法,来演示这种层次指令的跟踪行为,从而教会LLM有选择地忽略权限较低的指令。实验表明在几乎不影响LLM的标准能力的情况下,极大地提高了模型的鲁棒性。特别是即使在对训练期间从未见过的攻击类型也是如此!说明这种方法在应对未知的攻击时也是有一定的泛化性的。
1. 引言(Introduction)
背景:现代LLMs不仅作为自动完成系统,还可能成为具有代理能力的应用程序,如网页代理、电子邮件秘书、虚拟助手等。然而,这些应用的广泛部署存在被敌手欺骗执行不安全或灾难性动作的风险。例如,通过提示注入攻击,LLM驱动的电子邮件助手可能被用来泄露用户的私人邮件。
问题:敌手可以通过各种攻击手段,如越狱、系统提示提取和直接或间接的提示注入,来攻击应用程序或用户,例如绕过开发者限制、暴露公司知识产权、泄露私人数据等。
2. 指令层级(The Instruction Hierarchy)
概念:指令层级明确定义了在不同优先级指令冲突时模型应如何行为。例如,系统消息(由应用开发者提供)应优先于用户消息,用户消息优先于第三方内容。
方法:通过自动化数据生成方法来演示这种层级指令遵循行为,教会LLMs有选择地忽略低优先级的指令。
指令层次结构
LLM之所以会受到#prompt注入#、#越狱#等攻击,主要原因是LLM通常认为系统提示与来自不受信任的用户和第三方的文本具有相同的优先级。这样当然会导致LLM把不安全的prompt当成和系统提示同样重要的指令来工作。从而给了prompt攻击以可趁之机。以下是个例子:
从上图可以看到,通过工具输出(Tool Output)间接实现了prompt注入攻击。背后的机制在于LLM缺乏指令特权(instruction privileges)。即缺乏对指令优先级的定义。因此这篇研究将不同类型的指令赋予了不同的优先级,具体而言:系统消息优先于用户消息,用户消息优先于第三方内容(如工具输出) 。如下图所示:
理想模型行为
当存在多个指令时,较低特权的指令可能与较高特权的指令对齐或不对齐。理想的模型应该根据与较高级别指令的一致性,有条件地遵循较低级别的指令。
- 对齐指令,即与更高级别的指令具有相同的约束、规则或目标的指令。因此需要LLM遵守这一指令;
- 不对齐指令,即和更高级别的指令有冲突的指令。例如上图中
ToolOutputs
中的Web Reuslt1
并没有回答用户问题(这是系统级指令),而是尝试提取对话记录。我们希望LLM忽略,或者拒绝遵守这种提取对话记录的指令。
读到目前为止,这篇研究的动机还是很直观的,接下来我们一起看看具体是怎么做的吧~
数据生成方法
为了有效地将指令层次结构融入LLM,需要用具有层次结构的指令数据微调LLM,所以本篇提出了创建层次结构的指令训练数据的方法,该方法使用了上下文合成(Context Synthesis)和上下文忽略(Context Ignorance)两种策略:
- 上下文合成(Context Synthesis):对于对齐指令,将指令分解成更小的部分,然后将分解后的小指令放置在层次结构的不同级别,微调模型来预测真实的响应;(例如将“用西班牙语写一个20行的诗”分解成更小的指令片段,如“写诗”、“使用西班牙语”、“使用20行”,然后将这些指令放到不同的层级中。)
- 上下文忽略(Context Ignorance):对于未对齐指令,会采取完全相反的方法:训练LLM,当它从未见过低级别的指令时,生成相同的答案。
生成数据时,注意不要触发过度拒绝行为,即对于对齐的低层次指令,模型也拒绝遵守或执行。因为这会极大地损害模型的指令遵循能力。
对于对齐的指令,我们将指令分解成更小的部分,然后放入层次结构的不同级别。如下图所示,将一段定期检查银行状态的指令放入用户层级中。对应LLM而言,应该表现的就好像它在系统消息中看到了整个组合指令(System Message
+ UserInput
)一样;所以它的输出也会提醒用户定期检查。
对于没有对齐的低层次指令(例如用户的输入),我们让模型的输出为拒绝访问或者直接忽视,如下图所示,用户层级试图直接prompt注入攻击,LLM应该忽略或者拒绝回答,所以它输出我无法帮助您。
注:由于篇幅有限,其他领域\攻击方式的数据构造模板请阅读原文哦。
通过这两种策略,我们就可以构建层次结构的指令供大模型微调啦。接下来看看实验是怎么做的。
实验结果
实验方法:有监督微调+基于人类反馈的强化学习(SFT+RLHF)
模型:GPT-3.5 Turbo
数据:上述生成数据
Baseline LM:为了评估指令层次结构的有效性,选择了一个类似的模型做微调,但是它的数据没有采用指令层次结构。
研究使用监督微调和基于人类反馈的强化学习,对上述数据微调了GPT-3.5 Turbo以观察模型的鲁棒性,作为对比,作者还微调了一个类似的模型作为BaselineL。唯一的区别在于Baseline LM没有使用层序结构的指令作为训练数据,而是正常的指令数据。下面我们来看看结果:
主要结果
如下图所示,指令层次结构训练的模型在各种攻击中具有显着更高的鲁棒性。最高提高了63.1% !
泛化结果
在训练期间,虽然没有为越狱攻击(jailbreaks) 构建指令层次结构的训练数据。但是根据下图的实验结果,依然将鲁棒性提高了34%,这说明LLM学会了指令层次的结构,对未曾见过的prompt也有一定的泛化性。
过度拒绝结果
由于上文提到的创建训练数据的方法会比较容易导致过度拒绝的问题,所以需要和BaselineLM比较下大模型遵循指令的性能。如下图所示,在遵循不冲突的指令的性能方面,基本上和Baseline匹配,没有出现模型行为的明显下降。
总结
这篇论文提出了一种新的框架,即指令层级,用于提高 LLMs 的安全性和鲁棒性,同时保持其遵循正常指令的基本能力不受损害。并且通过实验验证了他们的方法比当今LLM的现状有了巨大的进步。
OpenAI 的研究者将基于 LLM 的产品使用总结分为三种情形:
- 应用的构建者:定义了LLM 应用的底层指令和逻辑
- 产品的用户:LLM 产品的实际使用者
- 第三方输入:工具或接口返回的内容,作为 LLM 的输入
而攻击的底层逻辑往往是在以上三方之间引入冲突(conflicts),比如产品用户输入的指令要求覆盖应用构建者的原始指令。
常见攻击形式可以概括为如下三类:
- 提示注入(Prompt Injections):这种攻击的目标不是 LLM 本身,而是基于 LLM 构建的应用(比如邮件助手的例子),因为基于 LLM 构建的应用往往需要给 LLM 一定的权限,使它可以访问重要的数据或执行现实世界的操作
- 越狱(Jailbreaks):这种攻击形式主要针对的是 LLM,让其脱离原本在训练中学到的安全行为,但并不一定与应用指令冲突。下面的例子是当 LLM 作为有帮助且无害的聊天助手应用时,攻击者让模型“帮助”他给奥巴马写钓鱼邮件(写钓鱼邮件这个行为往往会在训练阶段就被对齐抑制掉):
- 系统消息提取(System Message Extraction):应用构建者通过 System Message 来定义应用的行为和逻辑,这部分内容有可能具备很高的商业价值或携带隐私信息(如帐号密码):
相关文章:
指令层级:训练大型语言模型优先处理特权指令
指令层级:训练大型语言模型优先处理特权指令 The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions关键要点:快速浏览:1. 引言(Introduction)2. 指令层级(The Instruction Hie…...
高效人脸关键点检测算法HRNet-Facial-Landmark-Detection
高效人脸关键点检测算法HRNet-Facial-Landmark-Detection 300 W data 数据标注格式 helen/trainset/1271089376_2.jpg,2.105,642.5,643.5,453.88947199999996,562.431791,457.882374,607.338625,471.39681399999995,655.136824,489.458724,702.023327,508.36972599999996,743.…...
LeetCode 3375 题解
题解 如题所示,允许暴力,虽然是暴力,但复杂度也就O(n) 还是如昨天的题目一样,使用Set.add的方法去判断即可 分三种情况 因为是set集合的原因,所以可以排除值相同的原因 当遍历数组有值小于k就return -1 当遍历数组遇…...
leetcode_数组 189. 轮转数组
189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3输出: [5,6,7,1,2,3,4] 示例 2: 输入:nums [-1,-100,3,99], k 2输出:[3,99,-1,-100] 思…...
MySQL | 三大日志文件
Undo Log(回滚日志) 实现原理与分类 原理:Undo Log 记录的是数据修改前的旧值,通过这些旧值可以将数据恢复到修改之前的状态。它采用的是逻辑日志,即记录的是如何撤销操作,而不是物理数据的实际值。 分类…...
GIS-AI 融合引擎架构:智慧景区导览系统的毫秒级响应与千级并发优化实战
本文面向 文旅行业技术决策者、GIS 开发者、AI 算法工程师,旨在解决传统景区导览系统 定位精度低、交互体验差、运营成本高 的核心痛点,提供从技术选型到落地部署的全链路解决方案。 如需获取智慧景区导览系统解决方案请前往文章最下方获取,如…...
WSA(Windows 安卓子系统)过检测教程
windows安卓子系统WSA的root和magisk的安装教程 安卓子系统WSLWSA的rootmagisk安装 WSA(Windows 安卓子系统)过检测的方法与思路 一、引言 Windows 安卓子系统(WSA)为 Windows 用户提供了在电脑上运行安卓应用的便利。然而&…...
Spark原理及代码
一、 Spark运行架构 运行架构 Spark 框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。 Spark 框架有两个核心组件: 1、Driver Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实…...
esp32cam -> 服务器 | 手机 -> 服务器 直接服务器传输图片
服务器先下载python : 一、Python环境搭建(CentOS/Ubuntu通用) 一条一条执行 安装基础依赖 # CentOS sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel # Ubuntu sudo apt update && sudo apt install b…...
RHCSA Linux系统 数据流和重定向 tee 命令
一.数据流和重定向 1. 数据流 (1) 标准输入(stdin,代码 0):默认从键盘获取输入,只读。 (2) 标准输出(stdout,代码 1):命令执行正确信息默认输出到屏幕,只写…...
libev实现Io复用及定时器事件服务器
客户端和服务器都绑定在了enp2s0网卡,需要SERVER_IP和SERVER_PORT改为其ip,注意不能是127.0.0.1,因为这个是lo虚拟网口。 安装libev sudo apt-get install libev-dev客户端: #include <iostream> #include <string>…...
【项目实训项目博客】prompt初版实践
通过对camel技术的理解,我们向其中添加了市场营销角色的prompt 初版设计如下: chatchainconfig.json { "chain": [ { "phase": "DemandAnalysis", "phaseType": "SimplePhase", "max_turn_step…...
底盘---全向轮(Omni Wheel)
一、基本定义与起源 定义: 全向轮是一种通过在主轮外周安装多个 垂直于主轮轴线的横向小滚轮 实现多向移动的轮式结构。小滚轮可自由转动,允许设备在纵向(主轮驱动方向)和横向(小滚轮滚动方向)同时受力&…...
Python标准库json完全指南:高效处理JSON数据
一、json库概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,Python的json模块提供了JSON数据的编码和解码功能。该模块可以将Python对象转换为JSON字符串(序列化),也可以将JSON字符串转换为Python对象…...
用一个实际例子快速理解MCP应用的工作步骤
已经有很多的文章介绍MCP server,MCP Client工作原理,这里不做太多介绍。但是很多介绍都只是侧重介绍概念,实际的工作原理理解起来对初学者还是不太友好。本文以一个智能旅游咨询系统为例,详细说明在利用 Model Context Protocol&…...
Element Plus 图标使用方式整理
Element Plus 图标使用方式整理 以下是 Element Plus 图标的所有使用方式,包含完整代码示例和总结表格: 1. 按需引入图标组件 适用场景:仅需少量图标时,按需导入减少打包体积 示例代码: <template><div>…...
力扣题解:142. 环形链表 II
在链表学习中,我们已经了解了单链表和双链表,两者的最后一个结点都会指向NULL;今天我们介绍的循环列表则不同,其末尾结点指向的这是链表中的一个结点。 循环链表是一种特殊类型的链表,其尾节点的指针指向头节点&#…...
图灵逆向——题七-千山鸟飞绝
目录列表 过程分析headers头部M参数分析载荷x参数分析响应数据解密分析 代码实现 一进来还是一个无限debugger,前面有讲怎么过,这里直接过掉~ 老规矩,养成习惯,先看请求头里有没有加密参数发现好像是有个M,它是个32位…...
双相机结合halcon的条码检测
以下是针对提供的C#代码的详细注释和解释,结合Halcon库的功能和代码结构进行说明: --- ### **代码整体结构** 该代码是一个基于Halcon库的条码扫描类GeneralBarcodeScan,支持单台或双台相机的条码检测,并通过回调接口返回结果。…...
Transformer Decoder Block的几个优化方案
写在前面 在大型语言模型(LLM)的演进浪潮中,Transformer 架构凭借其强大的并行计算能力和对长距离依赖的出色捕捉,奠定了核心地位。然而,标准的 Transformer Decoder Block 遵循着一种相对固定的模式:先进行自注意力(Self-Attention)捕捉上下文信息,再通过前馈神经网…...
工业科学级天文相机:跨界融合的高精密成像解决方案
随着国内科技的快速发展,工业相机领域正悄然兴起一场"天文级"的技术革命。这类兼具工业设备可靠性与天文观测精度的特殊相机,正在半导体制造、天文观测、空间探测等领域开辟新的应用疆域。其核心技术突破不仅体现在传感器性能的提升࿰…...
颠覆传统!复旦微软联合研发MagicMotion,重新定义图生视频可能性
导读简介: 尽管基于DiT的模型在生成高质量和长视频方面表现出色,但许多文本到视频的方法在精确控制物体运动和相机运动等属性方面存在不足。因此,细粒度轨迹可控的视频生成技术应运而生,这对于在现实场景中生成可控视频至关重要。…...
华为数字芯片机考2025合集5已校正
1. 题目内容 下列选项中()不是 Verilog HDL 的关键字。() A. tri B. for C. force D. edge 解析 1. Verilog 关键字分类 Verilog 关键字是语言预定义的保留字,用于语法结构或特定功能。 2. 选项分析 选项类型说明…...
QML Loader:延迟加载与动态切换
目录 引言相关阅读工程结构LoaderDelay.qml - 延迟加载实现完整代码HeavyComponent.qml代码解析运行效果 LoaderSwitch.qml - 动态切换组件完整代码代码解析运行效果 Main.qml - 主界面实现完整代码主界面结构代码解析 总结下载链接 引言 QML的Loader组件提供了一种强大的机制…...
C语言--常用的链表操作
利用C语言实现链表,并定义一些常用的操作 文章目录 链表定义新建一个链表结点打印链表插入结点头插法(常用)运行 尾插法(使用较少)运行 返回链表长度链表转置运行 合并两个有序的链表运行 删除最小结点运行 打印倒数第…...
ngx_conf_param
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_param-CSDN博客 定义在 src\core\ngx_conf_file.c char * ngx_conf_param(ngx_conf_t *cf) {char *rv;ngx_str_t *param;ngx_buf_t b;ngx_conf_file_t conf_file;param &cf->cycle->conf…...
C++day9
思维导图 牛客练习 练习: 将我们写的 myList 迭代器里面 operator[] 和 operator 配合异常再写一遍 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector>…...
算法题:两数相加
题目:2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&a…...
SCI科学论文的重要组成部分
科学论文的核心结构 科学论文通常遵循IMRAD结构,即: 引言(Introduction)方法(Methods)结果(Results)讨论(Discussion) 除此之外,还包括其他几个关键部分。让我为您详细介绍每个部分的作用和重要性: 1. 标题(Title) 标题是论文…...
Go 微服务框架 | 路由实现
文章目录 不用框架实现web接口实现简单的路由实现分组路由支持不同的请求方式支持同一个路径的不同请求方式前缀树应用前缀树完善路由代码 不用框架实现web接口 // blog main.go 文件 package mainimport ("fmt""log""net/http" )func main() {…...
2025年AI开发学习路线
目录 一、基础阶段(2-3个月) 1. 数学与编程基础 2. 机器学习入门 二、核心技能(3-4个月) 1. 深度学习与框架 2. 大模型开发(重点) 三、进阶方向(3-6个月) 1. 多模态与智能体…...
TimescaleDB 2.19.2 发布
TimescaleDB 2.19.2 已于 2025 年 4 月 7 日发布2。此次发布是基于 PostgreSQL 的开源时序数据库 TimescaleDB 的一次更新。 从 GitHub 上的 Pull Request 信息可知,此次发布主要是将相关更改合并到 2.19.x 分支,涉及到一系列的测试和构建配置,包括不同版本 PostgreSQL(如 …...
「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
第一,正确设置Scrollbar。 设置Scrollbar之后,不能设置Text Component的Font Size为Auto Size,否则Scrollbar无法正确计算显示。 那么,要想自动适配字体大小,可以让Placeholder中的Font Size设置为Auto,这…...
HTML 是什么?网页创建的核心标记语言
原文:HTML 是什么?网页创建的核心标记语言 | w3cschool笔记 HTML 是什么? HTML 是一种标记语言,用于创建网页。简单来说,HTML 就像一本魔法书,它告诉电脑如何展示网页上的内容,比如文字、图片…...
考研单词笔记 2025.04.09
act v表现,行动,做事,扮演,充当,担任,起作用n行为,行动,法案,法令 action n行为,行动 behave v表现,行事,守规矩,举止端…...
map/multimap
1.概念 map中所有元素都是pair<key,value>,key 是map的键,value 是map的值 所有元素都会根据key自动排序 map/multimap属于关联式容器,底层结构是用二叉树实现。 map和multimap区别: map不允许容器中有重复key值元素 m…...
CSS 定位属性的生动比喻:以排队为例理解 relative 与 absolute
目录 一、理解标准流与队伍的类比 二、relative 定位:队伍中 “小范围活动” 的人 三、absolute 定位:队伍中 “彻底离队” 的人 在学习 CSS 的过程中,定位属性relative和absolute常常让初学者感到困惑。它们的行为方式和对页面布局的影响较…...
基于二叉堆实现的 PriorityQueue
基于二叉堆实现的 PriorityQueue 是一种常见的数据结构,广泛用于任务调度、路径搜索、事件模拟等场景。下面我将用 Java 语言实现一个简单的基于最小堆的 PriorityQueue,即优先级最小的元素先出队。 ✅ 实现目标 使用数组实现二叉最小堆(即父…...
大模型分布式推理和量化部署
一、小常识 1、计算大模型占用多少显存 对于一个7B(70亿)参数的模型,每个参数使用16位浮点数(等于 2个 Byte)表示,则模型的权重大小约为: 7010^9 parameters2 Bytes/parameter14GB 70亿个参数…...
循环神经网络 - 长程依赖问题及改进方案
循环神经网络在学习过程中的主要问题是由于梯度消失或爆炸问题,很难建模长时间间隔(Long Range)的状态之间的依赖关系。 本文我们来学习长程依赖问题及其对应的改进方案,在这部分知识的学习过程中,我建议大家着重理解,对于数学公…...
点击抽奖功能总结
首先用户打开网页,映入眼帘的是一个输入框和一个提交按钮。当用户在输入框中输入自己的年龄并点击提交后,系统会根据输入的年龄给出相应提示。若年龄达到 60 岁,页面将显示一个新的抽奖区域,用户可以点击 “抽奖” 按钮开始抽奖。…...
AWS Bedrock生成视频详解:AI视频创作新时代已来临
💡 TL;DR: AWS Bedrock现已支持AI视频生成功能,让企业无需深厚AI专业知识即可创建高质量视频内容。本文详解Bedrock视频生成能力的工作原理、应用场景和实操指南,助你快速掌握这一革命性技术。 🎬 AWS Bedrock视频生成:改变内容创作的游戏规则 还记得几年前,制作一个专…...
理解 TOGAF®标准中的架构原则
原则是帮助组织实现其使命的基本规则和指南。它们旨在长期稳定且很少修改,在各个领域中充当决策和行动的指南针。在企业架构(EA)的背景下,原则在指导架构框架的开发和应用方面发挥着至关重要的作用。本文将探讨企业原则和架构原则…...
基于视觉密码的加密二值图像可逆数据隐藏
接下来,分享一篇论文,标题为《Multi-Party Reversible Data Hiding in Ciphertext Binary Images Based on Visual Cryptography》,由Bing Chen等人发表在《IEEE Signal Processing Letters》上。该论文提出了一种基于视觉密码学的多方可逆数…...
ubuntu22.04 中 No module named ‘_bz2‘问题解决方案
前言 本篇是介绍ubuntu22.04中 No module named ‘_bz2‘问题解决方案 网上版本很多,比如安装libbz库什么的,可能别人有用,但是我自己这边出了一堆问题 一、流程 1.1 查看bz2.xx.so文件 看自己的python版本,我新安装了个pyth…...
什么是声波,声波的传播距离受哪些因素影响?
一、声波的定义: 声波是一种机械波,它是通过介质(如空气、水、固体等)传播的振动。以下是关于声波的详细介绍: 1、声波的产生 声波是由物体的振动产生的。例如,人说话时,声带振动产生声波&…...
用PHPExcel 封装的导出方法,支持导出无限列
用PHPExcel 封装的导出方法,支持导出无限列 避免PHPExcel_Exception Invalid cell coordinate [1 异常错误 /*** EXCEL导出* param [string] $file_name 保存的文件名及表格工作区名,不加excel后缀名* param [array] $fields 二维数组* param [array] $…...
STL-stack栈和queue队列
stack栈和queue队列 在STL中 stack 和 queue 设计为容器适配器,容器适配器是使用特定容器类的封装对象作为其基础容器的类,提供一组特定的成员函数来访问其元素。 在我的STL系列中之前的容器 vector、list、deque 都是从底层类型一步步封装而来的,但是 stack 和 queue 没有…...
AI 提示词不会写?试试 PromptIDE
这段时间,AI 技术大爆炸 已经改变了我们的工作方式,而 会不会用 AI,已经成为区分工作能力的关键! 💡 在这个AI重构工作方式的时代,会用和不会用AI的人正在拉开巨大差距: √ 高手用AI——效率飙…...
【python读取并显示遥感影像】
在Python中读取并显示遥感影像,可以使用rasterio库读取影像数据,并结合matplotlib进行可视化。以下是一个完整的示例代码: import rasterio import matplotlib.pyplot as plt import numpy as np# 打开遥感影像文件 with rasterio.open(path…...