安全AI系统开发指南

执行摘要

本文件建议为使用人工智能(AI)的任何系统的提供商提供指导方针,无论这些系统是从头开始创建的,还是建立在他人提供的工具和服务之上的。实施这些指导方针将有助于提供商构建按预期运行、在需要时可用的人工智能系统,并且在不向未经授权的方透露敏感数据的情况下工作。

本文档主要针对使用组织托管的模型或使用外部应用程序编程接口(API)的人工智能系统提供商。我们敦促所有利益相关者(包括数据科学家、开发人员、管理人员、决策者和风险所有者)阅读这些指南,帮助他们就人工智能系统的设计、开发、部署和运营做出明智的决定。

关于指南

人工智能系统有潜力为社会带来许多好处。然而,对于人工智能的机会必须以一种安全和负责任的方式开发、部署和运行它。

人工智能系统存在新的安全漏洞,需要与标准的网络安全威胁一起考虑。当发展速度很快时——就像人工智能的情况一样——安全往往是次要考虑因素。安全性必须是一个核心需求,不仅在开发阶段,而且在系统的整个生命周期中都是如此。

因此,该指南在人工智能系统开发生命周期内分为四个关键领域:安全设计、安全开发、安全部署以及安全运维。对于每一节,我们都提出了有助于降低组织人工智能系统开发过程总体风险的考虑因素和缓解措施。

1.安全设计

本节包含适用于人工智能系统开发生命周期设计阶段的指南。它涵盖了对风险和威胁建模的理解,以及在系统和模型设计中需要考虑的特定主题和权衡。

2.安全开发

本节包含适用于人工智能系统开发生命周期开发阶段的指南,包括供应链安全、文档以及资产和技术债务管理。

3.安全部署

本节包含适用于人工智能系统开发生命周期部署阶段的指南,包括保护基础设施和模型免受损害、威胁或损失、开发事件管理流程和负责任的发布。

4.安全操作和维护

本节包含适用于人工智能系统开发生命周期的安全操作和维护阶段的指南。它提供了关于系统部署后特别相关的行动的指导方针,包括日志记录和监测、更新管理和信息共享。

该指南遵循“默认安全”方法,并与NCSC的安全开发和部署指南、NIST的安全软件开发框架以及CISA、NCSC和国际网络机构发布的“设计安全原则”中定义的实践密切一致。他们优先考虑:

>为客户取得安全成果的所有权

>采用激进的透明度和问责制

>通过设计建立如此安全的组织结构和领导力是企业的首要任务

介绍

人工智能系统有可能给社会带来许多好处。然而,为了充分实现人工智能的机会,必须以安全和负责任的方式开发、部署和运营人工智能。网络安全是人工智能系统安全性、弹性、隐私性、公平性、有效性和可靠性的必要前提。

然而,人工智能系统存在新的安全漏洞,需要与标准的网络安全威胁一起考虑。当发展速度很快时——就像人工智能的情况一样——安全往往是次要考虑因素。安全性必须是一个核心需求,不仅在开发阶段,而且在系统的整个生命周期中都是如此。

本文件为使用人工智能的任何系统的提供商推荐了指南,无论这些系统是从头开始创建的,还是建立在他人提供的工具和服务之上的。实施这些指导方针将有助于提供商构建按预期运行、在需要时可用的人工智能系统,并且在不向未经授权的方透露敏感数据的情况下工作。

应结合既定的网络安全、风险管理和事件响应最佳实践来考虑这些指南。特别是,我们敦促提供商遵循美国网络安全和基础设施安全局(CISA)、英国国家网络安全中心(NCSC)和我们所有的国际合作伙伴制定的“设计安全”2原则。原则优先考虑:

>为客户取得安全成果的所有权

>采用激进的透明度和问责制

>通过设计建立如此安全的组织结构和领导力是企业的首要任务。

遵循“设计安全”原则需要在系统的整个生命周期中投入大量资源。这意味着开发人员必须投资于在系统设计的每一层以及开发生命周期的所有阶段优先考虑保护客户的功能、机制和工具的实施。这样做将防止以后进行昂贵的重新设计,并在短期内保护客户及其数据。

为什么人工智能安全不同?

在本文档中,我们使用“AI”专门指机器学习(ML)应用程序3。所有类型的ML都在范围内。我们将ML应用程序定义为以下应用程序:

>涉及软件组件(模型),允许计算机识别数据中的模式并将上下文引入数据中,而无需由人类明确编程规则

>基于统计推理生成预测、建议或决策

除了现有的网络安全威胁外,人工智能系统还存在新型漏洞。术语“对抗性机器学习”(AML)用于描述对ML组件(包括硬件、软件、工作流和供应链)中基本漏洞的利用。AML使攻击者能够在ML系统中造成意外行为,包括:

>影响模型的分类或回归性能

>允许用户执行未经授权的操作

>提取敏感模型信息

有很多方法可以实现这些效果,例如在大型语言模型(LLM)域中进行即时注入攻击,或者故意破坏训练数据或用户反馈(称为“数据中毒”)。

谁应该阅读这份文件?

本文档主要针对人工智能系统的提供商,无论是基于组织托管的模型还是使用外部应用程序编程接口(API)。然而,我们敦促所有利益相关者(包括数据科学家、开发人员、管理人员、决策者和风险所有者)阅读这些指南,帮助他们就机器学习人工智能系统的设计、部署和运营做出明智的决定。

也就是说,并非所有的指导方针都将直接适用于所有组织。攻击的复杂程度和方法将因针对人工智能系统的对手而异,因此应将该指南与组织的用例和威胁简介一起考虑。

谁负责开发安全的人工智能?

现代人工智能供应链中通常有许多参与者。一种简单的方法假设有两个实体:

>负责数据管理、算法开发、设计、部署和维护的“提供商”

>提供输入和接收输出的“用户”

虽然这种提供商-用户方法在许多应用程序中使用,但它越来越不常见,因为提供商可能希望将第三方提供的软件、数据、模型和/或远程服务合并到他们自己的系统中。这些复杂的供应链使最终用户更难理解安全人工智能的责任在哪里。

用户(无论是“最终用户”还是包含外部人工智能组件的提供商)通常没有足够的可见性和/或专业知识来完全理解、评估或解决与他们使用的系统相关的风险。因此,根据“设计安全”原则,人工智能组件提供商应对供应链下游用户的安全结果负责。

供应商应尽可能在其模型、管道和/或系统内实施安全控制和缓解措施,在使用设置的情况下,将最安全的选项作为默认选项。如果风险无法减轻,供应商应负责:

>通知供应链下游的用户他们和(如果适用)他们自己的用户正在接受的风险

>建议他们如何安全地使用组件

如果系统泄露可能导致有形或广泛的物理或声誉损害、业务运营的重大损失、敏感或机密信息的泄露和/或法律影响,人工智能网络安全风险应视为关键风险。

安全人工智能系统开发指南

该指南分为人工智能系统开发生命周期中的四个关键领域:安全设计、安全开发、安全部署以及安全运维。对于每个领域,我们都提出了有助于降低组织人工智能系统开发过程总体风险的考虑因素和缓解措施。

本文档中列出的指导方针与软件开发生命周期实践紧密一致

定义于:

>NCSC的安全开发和部署指南

>美国国家标准与技术研究所(NIST)安全软件开发框架(SSDF)

1.安全设计

本节包含适用于人工智能系统开发生命周期设计阶段的指南。它涵盖了对风险和威胁建模的理解,以及在系统和模型设计中需要考虑的特定主题和权衡。

提高员工对威胁和风险的认识

系统所有者和高级领导了解人工智能安全的威胁及其缓解措施。您的数据科学家和开发人员保持对相关安全威胁和故障模式的认识,并帮助风险所有者做出明智的决策。您为用户提供有关人工智能系统面临的独特安全风险的指导(例如,作为标准InfoSec培训的一部分),并培训开发人员安全编码技术和安全负责的人工智能实践。

模拟系统面临的威胁

作为风险管理流程的一部分,您应用一个整体流程来评估系统面临的威胁,其中包括了解如果人工智能组件受到损害或出现意外行为,对系统、用户、组织和更广泛的社会的潜在影响7。这个过程包括评估人工智能特定威胁的影响8并记录您的决策。

您认识到,系统中使用的数据的敏感性和类型可能会影响其作为攻击者目标的价值。你的评估应该考虑到,随着人工智能系统越来越被视为高价值目标,以及人工智能本身能够实现新的自动攻击载体,一些威胁可能会增加。

为系统的安全性、功能性和性能进行设计

您确信,使用人工智能可以最恰当地解决手头的任务。确定这一点后,您将评估您的人工智能特定设计选择的适当性。您将考虑您的威胁模型和相关的安全缓解措施,以及功能、用户体验、部署环境、性能、保证、监督、道德和法律要求等因素。例如:

  1. 在选择是内部开发还是使用外部组件时,您会考虑供应链安全,例如:

>您选择训练新模型、使用现有模型(有或没有微调)或通过外部API访问模型都适合您的需求

>您选择与外部模型提供商合作,包括对该提供商自身安全态势的尽职调查评估

>如果使用外部库,则完成尽职调查评估(例如,确保库具有防止系统加载不受信任的模型的控件,而不会立即将其暴露于任意代码执行)

>在导入第三方模型或串行权重时,可以实现扫描和隔离/沙盒,这些模型或权重应被视为不受信任的第三方代码,并可以启用远程代码执行

>如果使用外部API,则对可以发送到组织无法控制的服务的数据应用适当的控制,例如要求用户在发送潜在的敏感信息之前登录并确认

>您对数据和输入进行适当的检查和消毒;这包括在将用户反馈或持续学习数据纳入模型时,认识到训练数据定义了系统行为

  1. 您将人工智能软件系统开发集成到现有的安全开发和运营最佳实践中;人工智能系统的所有元素都是在适当的环境中编写的,使用的编码实践和语言可以减少或消除已知类别的漏洞
  2. 如果人工智能组件需要触发操作,例如修改文件或将输出引导到外部系统,则对可能的操作应用适当的限制(如有必要,包括外部人工智能和非人工智能故障保护)
  3. 围绕用户交互的决策是由人工智能特定的风险决定的,例如:

>您的系统为用户提供可用的输出,而不会向潜在的攻击者透露不必要的详细信息

>如有必要,您的系统会在模型输出周围提供有效的防护措施

>如果向外部客户或合作者提供API,您可以应用适当的控制措施,通过API减轻对AI系统的攻击

>默认情况下,将最安全的设置集成到系统中

>您应用最少特权原则来限制对系统功能的访问

>您向用户解释风险较高的功能,并要求用户选择使用这些功能;您传达被禁止的用例,并在可能的情况下通知用户替代解决方案

在选择人工智能模型时考虑安全优势和权衡

您对人工智能模型的选择将涉及一系列需求的平衡。这包括模型架构、配置、训练数据、训练算法和超参数的选择。您的决策由您的威胁模型决定,并随着人工智能安全研究的进展和对威胁的理解的发展定期进行重新评估。

在选择人工智能模型时,您的考虑因素可能包括但不限于:

  1. 您正在使用的模型的复杂性,即所选择的架构和参数的数量;您的模型所选择的体系结构和参数数量,以及其他因素,将影响它需要多少训练数据,以及它在使用时对输入数据变化的鲁棒性
  2. 模型是否适合您的用例和/或将其适应您的特定需求的可行性(例如通过微调)
  3. 调整、解释和解释模型输出的能力(例如调试、审计或法规遵从性);与更难解释的大型复杂模型相比,使用更简单、更透明的模型可能有好处
  4. 训练数据集的特征,包括大小、完整性、质量、敏感性、年龄、相关性和多样性
  5. 使用模型强化(如对抗性训练)、规则化和/或隐私增强技术的价值
  6. 组件的来源和供应链,包括模型或基础模型、训练数据和相关工具

有关这些因素中有多少影响安全结果的更多信息,请参阅NCSC的“机器学习安全原则”,特别是安全设计(模型架构)

2.安全开发

本节包含适用于人工智能系统开发生命周期开发阶段的指南,包括供应链安全、文档以及资产和技术债务管理。

保护您的供应链

您评估和监控系统生命周期中人工智能供应链的安全性,并要求供应商遵守您所在组织适用于其他软件的相同标准。如果供应商不能遵守您组织的标准,您将按照现有的风险管理政策行事。

在非内部生产的情况下,您可以从经过验证的商业、开源和其他第三方开发人员那里获取并维护安全性良好、文档齐全的硬件和软件组件(例如,模型、数据、软件库、模块、中间件、框架和外部API),以确保系统的强大安全性。

如果不满足安全标准,您已准备好故障切换到任务关键型系统的备用解决方案。您使用NCSC的供应链指南等资源和软件工件供应链级别(SLSA)10等框架来跟踪供应链和软件开发生命周期的证明。

识别、跟踪和保护您的资产

您了解与人工智能相关的资产对您的组织的价值,包括模型、数据(包括用户反馈)、提示、软件、文档、日志和评估(包括关于潜在不安全功能和故障模式的信息),识别它们在哪些方面代表了重大投资,以及在哪些方面可以让攻击者访问它们。您将日志视为敏感数据,并实施控制以保护其机密性、完整性和可用性。

您知道您的资产所在地,并已评估和接受任何相关风险。您有流程和工具来跟踪、验证、版本控制和保护您的资产,并且可以在发生泄露时恢复到已知的良好状态。

你有适当的流程和控制来管理人工智能系统可以访问的数据,并根据人工智能的敏感性(以及生成人工智能的输入的敏感性)管理人工智能生成的内容。

记录您的数据、模型和提示

您可以记录任何模型、数据集和元或系统提示的创建、操作和生命周期管理。您的文档包括安全相关信息,如培训数据来源(包括微调数据和人工或其他操作反馈)

范围和限制、防护栏、加密哈希或签名、保留时间、建议的审查频率和潜在的失败模式。帮助实现这一点的有用结构包括模型卡、数据卡和软件材料清单(SBOM)。编制全面的文件有助于提高透明度和问责制。

管理您的技术债务

与任何软件系统一样,您可以在人工智能系统的整个生命周期中识别、跟踪和管理您的“技术债务”(技术债务是指以牺牲长期利益为代价,做出未能达到最佳实践的工程决策)。与金融债务一样,技术债务本身并不是坏事,但应该从发展的最早阶段就加以管理12。你认识到,在人工智能环境下这样做比标准软件更具挑战性,而且由于开发周期快,缺乏完善的协议和接口,你的技术债务水平可能很高。您确保您的生命周期计划(包括人工智能系统退役过程)评估、确认并减轻未来类似系统的风险。

3.安全部署

本节包含适用于人工智能系统开发生命周期部署阶段的指南,包括保护基础设施和模型免受损害、威胁或损失、开发事件管理流程和负责任的发布。

保护您的基础架构

您将良好的基础架构安全原则应用于系统生命周期的每个部分所使用的基础架构。在研发和部署过程中,您可以对API、模型和数据以及它们的培训和处理管道应用适当的访问控制。这包括对保存敏感代码或数据的环境进行适当的隔离。这也将有助于减轻旨在窃取模型或损害其性能的标准网络安全攻击。

持续保护您的模型

攻击者可以通过直接(通过获取模型权重)或间接(通过应用程序或服务查询模型)访问模型,重建模型的功能或在上训练的数据。攻击者还可能在训练期间或训练后篡改模型、数据或提示,使输出不可信。

您可以通过以下方式分别保护模型和数据免受直接和间接访问:

>实施标准网络安全最佳实践

>在查询接口上实现控制,以检测和防止访问、修改和泄露机密信息的尝试

为了确保消费系统能够验证模型,您可以在模型经过训练后立即计算和共享模型文件(例如,模型权重)和数据集(包括检查点)的加密哈希和/或签名。与密码学一样,良好的密钥管理是必不可少的。

您降低保密风险的方法将在很大程度上取决于用例和威胁模型。有些应用程序,例如那些涉及非常敏感数据的应用程序,可能需要理论保证,但应用起来可能很困难或成本高昂。如果合适,可以使用隐私增强技术(如差分隐私或同态加密)来探索或确保与消费者、用户和攻击者能够访问模型和输出相关的风险水平。

制定事件管理程序

影响您的人工智能系统的安全事件的不可避免性反映在您的事件响应、升级和补救计划中。您的计划反映了不同的场景,并随着系统和更广泛的研究的发展定期进行重新评估。您将关键的公司数字资源存储在离线备份中。响应者已接受过评估和处理人工智能相关事件的培训。您可以免费向客户和用户提供高质量的审核日志和其他安全功能或信息,以启用他们的事件响应过程。

负责任地发布AI

只有在对模型、应用程序或系统进行适当有效的安全评估(如基准测试和红队测试)(以及超出这些指南范围的其他测试,如安全性或公平性)后,您才能发布它们,并且您向用户清楚已知的限制或潜在的故障模式。本文档末尾的进一步阅读部分提供了开源安全测试库的详细信息。

让用户更容易做正确的事情

您认识到,每一个新的设置或配置选项都将与它所带来的业务利益以及它带来的任何安全风险一起进行评估。理想情况下,最安全的设置将作为唯一选项集成到系统中。当需要进行配置时,默认选项应该是针对常见威胁的广泛安全选项(即默认情况下的安全选项)。您可以应用控件来防止以恶意方式使用或部署系统。

您为用户提供了正确使用您的模型或系统的指导,其中包括突出显示限制和潜在的故障模式。您向用户明确说明他们负责哪些方面的安全,并透明地说明他们的数据可以在哪里(以及如何)使用、访问或存储(例如,是否用于模型再培训,或由员工或合作伙伴审查)。

4.安全操作和维护

本节包含适用于人工智能系统开发生命周期的安全操作和维护阶段的指南。它提供了关于系统部署后特别相关的行动的指导方针,包括日志记录和监测、更新管理和信息共享。

监控系统的行为

您可以测量模型和系统的输出和性能,以便观察影响安全性的行为的突然和逐渐变化。您可以解释和识别潜在的入侵和妥协,以及自然的数据漂移。

监控系统的输入

根据隐私和数据保护要求,您可以监控并记录系统的输入(如推理请求、查询或提示),以便在发生泄露或滥用时履行合规义务、进行审计、调查和补救。这可能包括对分布外和/或对抗性输入的显式检测,包括那些旨在利用数据准备步骤(如裁剪和调整图像大小)的输入。

遵循安全的设计方法进行更新

默认情况下,您在每个产品中都包含自动更新,并使用安全的模块化更新过程进行分发。您的更新过程(包括测试和评估制度)反映了这样一个事实,即数据、模型或提示的更改可能会导致系统行为的更改(例如,您将主要更新视为新版本)。您支持用户评估和响应模型更改(例如,通过提供预览访问和版本化API)。

收集和分享经验教训

您参与信息共享社区,在全球工业、学术界和政府生态系统中进行合作,酌情分享最佳实践。您在组织内部和外部保持开放的沟通渠道,以获得有关系统安全的反馈,包括同意安全研究人员研究和报告漏洞。

必要时,您可以将问题上报给更广泛的社区,例如发布公告以回应漏洞披露,包括详细完整的常见漏洞枚举。您可以采取行动快速、适当地缓解和补救问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF特训日记day(4-6)

来复现一下2022QWB决赛的RDP题目 这两天腰疼去了趟医院 题目要求我们攻击XRDP程序,从而达到本地提权的效果。 首先观察XRDP程序的版本信息 rootRDP:/home/rdp/Desktop# xrdp-sesman -version xrdp-sesman 0.9.18The xrdp session managerCopyright (C) 2004-2020…

【eNSP实践】eNSP实战篇(2)之简单实现交换机与主机的配置(图文详解)

目录 写在前面涉及知识1、交换机实验1.1 实验条件1.2 实验步骤A、打开eNSP软件,创建拓扑B、搭建主机与交换机连线C、配置交换机和主机D、验证不同网段设备可通性 1.3 通过交换机查看MAC地址 写在最后 写在前面 其实前面文章我有介绍关于路由器的使用,但…

Java多线程技术二:线程间通信——wait/notify机制

1 概述 线程时操作系统中独立的个体,但这些个体如果不经过特殊的处理是不能成为一个整体的。线程间的通信就是使线程成为整体的比用方案之一,可以说,是线程间进行通信后系统之间的交互性会更强大,CPU利用率会得以大幅提高&#xf…

执法记录仪、一体化布控球等目前支持的AI智能算法、视频智能分析算法有哪些

一、前端设备实现AI算法 主要是基于安卓的布控球实现,已有的算法包括: 1)人脸;2)车牌;3)是否佩戴安全帽;4)是否穿着工装; 可以支持定制开发 烟雾&#xf…

使用晶振遇到的两个问题

并联电阻的问题 在一些方案中,晶振并联1MΩ电阻时,程序运行正常,而在没有1MΩ电阻的情况下,程序运行有滞后及无法运行现象发生。 原因分析: 在无源晶振应用方案中,两个外接电容能够微调晶振产生的时钟频率…

开放式蓝牙耳机什么品牌好?南卡、韶音、cleer开放式耳机哪个好?

开放式耳机采用不入耳的设计,提供更为舒适的佩戴体验,不会给耳朵带来持续的压力和损害,减轻身体负担。同时,由于无需将耳机插入耳朵内,减少了细菌滋生的可能性,避免了一些耳道健康问题。这些优点也是开放式…

P5 Linux 标准C库函数

目录 前言 01 标准输入、标准输出和标准错误 02 打开文件 fopen() 03 新建文件的权限 04 fclose()关闭文件 05 读文件和写文件 06 库函数 fseek 定位 6.1 lseek的使用 07 ftell()函数 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_Chen…

Dinky之安装部署与基本使用

Dinky之安装部署与基本使用 Dinky概览Linux安装部署解压到指定目录初始化MySQL数据库修改配置文件加载依赖启动Dinky Docker部署启动dinky-mysql-server镜像启动dinky-standalone-server镜像 Dinky的基本使用上传jar包Flink配置集群管理集群实例管理集群配置管理 创建作业语句编…

打破界限:SQL数据库水平扩展的8大挑战与机遇

数据库扩展是指提升数据库处理更多数据、更多用户或更多交易的能力。通常,SQL数据库采用垂直扩展的方式,即通过增加更多的CPU、内存或存储空间来增强数据库服务器的性能。然而,这种方法受限于单个服务器的硬件能力。 为了克服这一限制&#…

《形式语言与自动机理论(第4版)》笔记(二)

文章目录 [toc]前导《形式语言与自动机理论(第4版)》笔记(一) 第三章:有穷状态自动机3.1|语言的识别3.2|有穷状态自动机即时描述 s e t ( ) set() set()例题问题 1 1 1解答问题 2 2 2解答 3.3|不确定的有穷状态自动机构…

pandas详细笔记

一:什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二:索引 三:切片 位置索引切片(左闭…

【数据结构(七)】查找算法

文章目录 查找算法介绍1. 线性查找算法2. 二分查找算法2.1. 思路分析2.2. 代码实现2.3. 功能拓展 3. 插值查找算法3.1. 前言3.2. 相关概念3.3. 实例应用 4. 斐波那契(黄金分割法)查找算法4.1. 斐波那契(黄金分割法)原理4.2. 实例应用 查找算法介绍 在 java 中,我们…

Linux快速搭建本地yum更新audit

场景:内网一台服务器上线,需要更新audit版本,因无法与其他服务器通信,需临时配置本地仓库。 1、上传新版本操作系统iso到服务器 2、创建yum仓库文件存储目录 mkdir /opt/myrepo 3、挂载磁盘到/mnt mount /opt/Kylin-Server-V…

电脑CentOS 7.6与Windows系统对比:使用方式、优缺点概述

在多操作系统环境中,CentOS 7.6和Windows系统各自独占鳌头,它们在功能、稳定性、兼容性以及安全性等方面都有着各自的优点。这篇文章将对比分析这两个操作系统,以便用户能更好地了解它们的特点和使用方式。 一、使用方式 CentOS 7.6 CentO…

探索Web前端技术的变革与未来发展

Web前端技术作为构建现代互联网应用的重要一环,自诞生以来已经经历了多轮的发展和变革。本文将回顾过去的进展,介绍当前的前端技术栈,并展望未来前端领域的发展趋势,包括新兴技术和重要概念。 引言 在信息时代的快速发展的背景下&…

【剑指offer|图解|位运算】训练计划VI+撞色搭配

🌈个人主页:聆风吟 🔥系列专栏:数据结构、剑指offer每日一练 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️训练计划VI(题目难度:中等)1.1 题目1.2 示例1.3 …

读书笔记-《数据结构与算法》-摘要3[选择排序]

选择排序 核心:不断地选择剩余元素中的最小者。 找到数组中最小元素并将其和数组第一个元素交换位置。在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序。 性质: 比较次数(N-1)(N-2)(N-3)…21~N^2/2交换次数N运行…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,基于vue的木里风景文化管理平台也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对…

SpringBoot集成mail发送邮件

前言 发送邮件功能,借鉴 刚果商城,根据文档及项目代码实现。整理总结便有了此文,文章有不对的点,请联系博主指出,请多多点赞收藏,您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

CoreDNS实战(七)-日志处理

本文主要用于介绍CoreDNS用来记录日志的几种方式以及在生产环境中遇到的一些问题和解决方案。 1 log插件 coredns的日志输出并不如nginx那么完善(并不能在配置文件中指定输出的文件目录,但是可以指定日志的格式),默认情况下不论…