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

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来,生成式 AI 安全市场正迅速发展。据 IDC 预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%,而 Gartner 则预估到 2025 年约 30% 的网络攻击将利用生成式 AI 技术。与此同时,Capgemini 的调查显示,近 74% 的企业认为 AI 驱动的安全防护至关重要,加上 Cybersecurity Ventures 报告指出,与生成式 AI 相关的安全事件年增长率超过 20%,这充分表明企业和安全供应商正面临日益严峻的安全挑战,并加大投入以构建更全面的防护体系。今天要介绍的就是如何设计生成式AI应用安全解决方案,抵御OWASP Top 10攻击。未来也会分享更多的AI安全解决方案,欢迎大家关注。

目前我们生活中有各色各样的生成式 AI应用,常见的场景之一就是生成式AI对话助手。然而在部署之前,通常还要对应用进行评估,其中包括了解安全态势、监控和日志记录、成本跟踪、弹性等问题。在这些评估中,安全性通常是最高优先级。如果存在无法明确识别的安全风险,我们就无法有效解决这些风向,这可能会阻碍生成式AI应用向生产环境部署的进度。

在本文章中,小李哥将向大家展示一个自己设计的生成式应用的真实场景,并演示如何利用 OWASP安全框架,基于大语言模型应用常见的Top 10安全攻击来评估应用的安全态势,以及实施缓解措施。

生成式 AI 范围框架

在我们开始介绍方案前,我们首先要了解生成式AI应用的两种模式,托管和私有化部署。当我们使用亚马逊云科技的生成式AI安全框架,我们要理解适用于我们应用的部署模式以及对应安全控制,和如何利用亚马逊责任共担模型提升应用安全性。例如下图中我们就针对不同的部署模式对应了5个scope范围,Scope 1的“Consumer Apps”类应用中,比如亚马逊的PartyRock或OpenAI的ChatGPT,通常是面向公众的应用,大部分内部安全由服务提供商掌控,大家在安全方面的责任主要在客户端。与此相对的是Scope 4/5层应用,在这类应用中,大家不仅要自行构建和保障生成式AI应用,还需要负责对底层大语言模型进行微调和训练。Scope 4/5应用的安全控制范围会更多、更广,从前端、后端到LLM模型的安全都有涉及。本文将重点讨论Scope 3生成式AI应用的安全解决方案,这是实际应用中较为常见的案例。

下图展示了亚马逊云科技生成式AI安全范围矩阵的5个scope,并总结了各个范围下模型/部署的类型。

针对大语言模型的OWASP Top 10攻击框架

接下来我们将利用OWASP Top 10攻击框架来理解目前生成式AI应用的威胁和缓解措施,OWASP是评估应用安全性最常见的方法之一。针对大语言模型的OWASP Top 10攻击框架专门应用于生成式AI应用,帮助大家发现、理解并防护生成式 AI 所面临的新型威胁。

生成式AI应用安全解决方案设计

接下来,我们从一个完整的生成式AI的应用架构图出发,展示如何对一个典型的生成式AI应用,在OWASP大语言模型威胁框架下进行风险评估。流程图如下图所示。

在这一架构中,用户的API请求通常会经过以下云环境内的系统组件:

身份验证层

这一层主要是验证连接到AI应用的用户的身份。我们通常通过身份提供商(IdP)功能实现,比如 Okta、亚马逊云科技IAM Identity Center或Amazon Cognito。

应用层

这一层包含大部分应用业务逻辑,负责决定如何处理传入应用的用户请求,包括生成AI模型的提示词并处理AI模型返回的响应,之后再将结果返回给终端的用户。

AI模型与代理

AI基础模型是提供生成式AI应用的核心能力,而AI代理则负责协调完成请求所需的各个任务步骤,这些步骤可能同时涉及AI模型调用和从外部数据源获取数据,以及外部API集成。

代理插件控制层

该组件负责与外部数据源和API集成,同时存储着AI代理引用的外部系统组件的逻辑名称和物理名称之间的匹配关系。

RAG知识库数据存储

知识库检索增强生成(RAG)的数据存储通过数据连接器,从对象存储S3、数据仓库、数据库RDS以及其他SaaS应用中提取最新、精准且有权限管理限制下的信息。

我们将大语言模型的OWASP Top 10风险框架应用到到我们云端应用堆栈的各层,可以识别出从用户界面到后端系统的漏洞。下面我们将讨论位于应用堆栈每个层面的风险,并提供一个基于亚马逊云科技的生成式AI应用安全设计方法,以消除这些风险。

下图展示了在亚马逊云科技上实现生成式AI应用的安全最佳实践架构图。下面我会将下图中应用于各层的解决方案依次进行介绍。

身份验证层(Amazon Cognito)

我们生活中一直活跃着常见的网络攻击,如暴力破解攻击、会话劫持和拒绝服务(DoS/DDoS)攻击等。为了解决这些风险和攻击,我们需要在系统方案中实施安全最佳实践,比如多因素认证(MFA)、网页请求速率限制、会话安全管理、会话超时timeout配置以及定期访问令牌轮换。此外,我们还可以部署亚马逊云科技WAF和分布式拒绝服务(DDoS)解决方案AWS Shield等边缘安全措施,帮助我们防护常见的网络攻击,并在攻击期间保持服务可用性。

在上述架构图中,我们将亚马逊云科技WAF与Amazon API Gateway进行了集成,用于过滤和屏蔽恶意的访问请求,从而保护应用免受SQL注入、跨站脚本(XSS)和DoS/DDoS等攻击。亚马逊云科技WAF Bot Control的功能可以进一步提升应用的安全性,通过对机器人等自动化脚本流量的可视性和控制功能,让大家可以屏蔽或对恶意的机器人进行限速和阻挡。该功能可通过亚马逊云科技 Firewall Manager在多个账号间集中管理,从而为应用提供一致而强大的保护。

Amazon Cognito服务更可以增强这些防御措施,该服务主要功能是实现用户身份验证,支持不同种多样的用户池和身份池,使大家能够在不同设备间无缝切换,而使用相同的用户身份授权并与第三方身份提供商集成。Amazon Cognito也提供其他多样化的安全功能包括MFA、OAuth 2.0、OpenID Connect、安全会话管理以及基于用户行为风险的动态调整的身份验证,防止用户未经授权的访问,该动态调整机制可以通过对登录请求中可疑活动的评估,并通过额外的安全措施(如 MFA 或屏蔽登录)进行响应。此外Amazon Cognito还强制防止密码重用,从而进一步降低密码泄露的风险。

亚马逊云科技Shield Advanced则是为了应对复杂的DDoS攻击提供了额外的保护。它与亚马逊云科技WAF集成,通过定制化攻击检测和基于系统健康状况的评估,为我们的AI应用提供全面的边界保护,增强了我们对DDoS攻击的响应能力。Shield Advanced还提供了全天候的客服支持,由亚马逊云科技Shield客服响应团队提供24*7的支持,服务内容包括了DDoS成本保护,确保应用在保持安全的同时安全成本可控。Shield Advanced与亚马逊云科技WAF结合搭配,为生成式AI应用构建了一个既能抵御各种安全共计与威胁,又能保持服务高可用性的安全框架。

以上的安全方案有效解决了两大OWASP常见的安全攻击问题,分别是LLM10:2025不受限制的使用(DoS/DDoS攻击)和LLM02:2025敏感信息泄露的问题(避免web攻击盗取数据),确保应用既具备弹性又安全。

相关文章:

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来,生成式 AI 安全市场正迅速发展。据 IDC 预测,到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元,年复合增长率超过 30%…...

mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数

函数 一 字符串函数 二 数值函数 三 日期函数 四 流程函数...

WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载

Windows中安装wsl2,wsl2里安装ubuntu。 1. Wsl启动后 1)Windows下ip ipconfig 以太网适配器 vEthernet (WSL (Hyper-V firewall)): 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.19.32.1 子网掩码 . . . . . . . .…...

7.2.背包DP

背包DP 在C中,背包动态规划(Knapsack DP) 是解决资源分配类问题的核心算法范式,尤其在处理物品选择与容量限制的组合优化问题时表现优异。以下是针对不同背包类型的详细解析与代码实现: 一、背包DP问题分类 类型特点…...

芝法酱学习笔记(2.6)——flink-cdc监听mysql binlog并同步数据至elastic-search和更新redis缓存

一、需求背景 在有的项目中,尤其是进销存类的saas软件,一开始为了快速把产品做出来,并没有考虑缓存问题。而这类软件,有着复杂的业务逻辑。如果想在原先的代码中,添加redis缓存,改动面将非常大&#xff0c…...

pandas习题 071:字典元素列表构造 DataFrame

(编码题)以下有一个列表嵌套字典 data,列表中的每个字典 fields 中的列表为每行数据的值,另有一个 col 为列名,利用这两个数据构造一个 DataFrame。 data = [{fields: [2024-10-07T21:22:01, USER-A, 21, 0,...

FFmpeg rtmp推流直播

文章目录 rtmp协议RTMP协议组成RTMP的握手过程RTMP流的创建RTMP消息格式Chunking(Message 分块) rtmp服务器搭建Nginx服务器配置Nginx服务器 librtmp库编译推流 rtmp协议 RTMP(Real Time Messaging Protocol)是由Adobe公司基于Flash Player播放器对应的…...

北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评

在IT行业中,地理信息系统(GIS)是用于处理、分析和展示地理空间数据的重要工具,而ArcGIS则是GIS领域中的一款知名软件。本文将详细解析标题和描述中提及的知识点,并结合“门头沟区建筑物数据”这一标签,深入…...

Verilog基础(一):基础元素

verilog基础 我先说,看了肯定会忘,但是重要的是这个过程,我们知道了概念,知道了以后在哪里查询。语法都是术,通用的概念是术。所以如果你有相关的软件编程经验,那么其实开启这个学习之旅,你会感…...

Games104——游戏引擎Gameplay玩法系统:基础AI

这里写目录标题 寻路/导航系统NavigationWalkable AreaWaypoint NetworkGridNavigation Mesh(寻路网格)Sparse Voxel Octree Path FindingDijkstra Algorithm迪杰斯特拉算法A Star(A*算法) Path Smoothing Steering系统Crowd Simu…...

vue生命周期及其作用

vue生命周期及其作用 1. 生命周期总览 2. beforeCreate 我们在new Vue()时,初始化一个Vue空的实例对象,此时对象身上只有默认的声明周期函数和事件,此时data,methods都未被初始化 3. created 此时,已经完成数据观测&#xff0…...

数据分析师使用Kutools for Excel 插件

数据分析师使用Kutools for Excel 插件 Kutools for Excel 是一款功能强大的 Excel 插件,旨在提高 Excel 用户的工作效率,简化复杂的操作。它提供了超过 300 个增强功能,帮助用户快速完成数据管理、格式化、排序、分析等任务,特别…...

毫秒级响应的VoIP中的系统组合推荐

在高并发、低延迟、毫秒级响应的 VoIP 场景中,选择合适的操作系统组合至关重要。以下是针对 Ubuntu linux-lowlatency、CentOS Stream kernel-rt 和 Debian 自定义 PREEMPT_RT 的详细对比及推荐: 1. 系统组合对比 特性Ubuntu linux-lowlatencyCentO…...

unordered_map/set的哈希封装

【C笔记】unordered_map/set的哈希封装 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】unordered_map/set的哈希封装前言一. 源码及框架分析二.迭代器三.operator[]四.使用哈希表封装unordered_map/set后言 前言 哈…...

表格标签的使用

一.表格标签 1.1表格标签的作用 用来显示和展示数据&#xff0c;不是用来布局页面的。 1.2表格的基本语法 <table> //用于定义表格标签 <tr> // table row 用于定义表格中的行&#xff0c;必须嵌套在<table> </table>标签中 <td>单元格内的文…...

python算法和数据结构刷题[5]:动态规划

动态规划&#xff08;Dynamic Programming, DP&#xff09;是一种算法思想&#xff0c;用于解决具有最优子结构的问题。它通过将大问题分解为小问题&#xff0c;并找到这些小问题的最优解&#xff0c;从而得到整个问题的最优解。动态规划与分治法相似&#xff0c;但区别在于动态…...

【cocos creator】【模拟经营】餐厅经营demo

下载&#xff1a;【cocos creator】模拟经营餐厅经营...

编程AI深度实战:给vim装上AI

系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编程AI&…...

信息学奥赛一本通 2088:【22CSPJ普及组】逻辑表达式(expr) | 洛谷 P8815 [CSP-J 2022] 逻辑表达式

【题目链接】 ybt 2088&#xff1a;【22CSPJ普及组】逻辑表达式(expr) 洛谷 P8815 [CSP-J 2022] 逻辑表达式 【题目考点】 1. 表达式树&#xff1a;中缀表达式建树 可以看该问题信息学奥赛一本通 1356&#xff1a;计算(calc) 了解中缀表达式建树过程。 【解题思路】 解法…...

Linux系统管理

文章目录 一、进程与服务二、systemctl基本语法操作 三、系统运行级别Linux进程运行级别查看当前运行级别修改当前运行级别 四、关机重启命令 一、进程与服务 守护进程与服务是一个东西。 二、systemctl 基本语法 systemctl start|stop|restart|status 服务名查看服务的方法…...

CTFSHOW-WEB入门-命令执行71-77

题目&#xff1a;web 71 题目&#xff1a;解题思路&#xff1a;分析可知highlight_file() 函数被禁了&#xff0c;先想办法看看根目录&#xff1a;cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇&#xff1a;&#xff08;全是&#xff1f;&#xff09;这种情况我也…...

[MRCTF2020]Ez_bypass1(md5绕过)

[MRCTF2020]Ez_bypass1(md5绕过) ​​ 这道题就是要绕过md5强类型比较&#xff0c;但是本身又不相等&#xff1a; md5无法处理数组&#xff0c;如果传入的是数组进行md5加密&#xff0c;会直接放回NULL&#xff0c;两个NuLL相比较会等于true&#xff1b; 所以?id[]1&gg…...

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算四、使用宏设置设置页面切换和音频同步一、 插入音频及音频设置 1.插入音频:点击菜单栏插入-音频-选择PC上的音频(已存在的音频)或者录制音频(现场录制) …...

Modbus Slave RTU 在 AVP28335(兼容德州仪器TMS 320 28335) 上实现含源码及注释。

今天先把题目先给出来&#xff0c; 在近两天会把源码 &#xff08;含详细注释 &#xff09;及部署、测试结果给出来&#xff0c; 希望能给大家帮助。&#xff08;原来这个程序在CSDN中&#xff0c;有小伙伴已经写了一些&#xff0c;但是发现里面埋了很多坑&#xff0c;例如&…...

git-secret 使用教程

以下是一份详细的 git-secret 使用教程&#xff0c;包含常见场景的 Bash 代码示例&#xff1a; 1. 安装 git-secret # Ubuntu/Debian sudo apt-get install git-secret# macOS (Homebrew) brew install git-secret# 其他 Linux (Snap) sudo snap install git-secret# 验证安装…...

防火墙安全策略

目录 一.拓扑及需求 二.需求分析 三.配置详细信息 防火墙&#xff1a; OA server&#xff1a; Web Server&#xff1a; PC1&#xff1a; ​编辑PC2&#xff1a; PC3&#xff1a; 配置安全区域&#xff1a; 交换机&#xff1a; 四.需求实现以及测试&#xff1a; 1.…...

蓝桥杯python基础算法(2-2)——基础算法(D)——进制转换*

目录 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 例题 P1230 进制转换 作业 P2095 进制转化 作业 P2489 进制 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 int_to_char "0123456789ABCDEF" def Ten_to_K(k, x):answer "…...

VSCode源码分析参考资料

VSCode Architecture Analysis - Electron Project Cross-Platform Best Practices 中文版 VSCode 架构分析 - Electron 项目跨平台最佳实践 Sihan Li博客上的vscode源码分析系列&#xff1a;分析了微服务架构、事件体系、资源管理、配置系统等 文召博客上的vscode 源码解析…...

深入理解 Rust 模块中的路径与公开性:绝对路径、相对路径和 `pub` 的应用

1. 路径的两种形式&#xff1a;绝对路径与相对路径 在 Rust 中&#xff0c;路径类似于文件系统中的目录路径&#xff0c;用来告诉编译器去哪里查找某个项。路径主要有两种形式&#xff1a; 绝对路径 绝对路径从 crate 的根开始。对于当前 crate 的代码&#xff0c;绝对路径以关…...

DeepSeek R1 大模型本地部署指南

以下是部署DeepSeek R1大模型的详细Markdown指南&#xff0c;可直接保存为.md文件并分享&#xff1a; # DeepSeek R1 大模型本地部署指南**适用系统**&#xff1a;Windows 10/11 & Linux (Ubuntu 20.04)---## 目录 1. [硬件要求](#硬件要求) 2. [准备工作](#准备工作) 3. […...

从Proxmox VE开始:安装与配置指南

前言 Proxmox Virtual Environment (Proxmox VE) 是一个开源的虚拟化平台&#xff0c;基于Debian Linux&#xff0c;支持KVM虚拟机和LXC容器。它提供了一个强大的Web管理界面&#xff0c;方便用户管理虚拟机、存储、网络等资源。Proxmox VE广泛应用于企业级虚拟化、云计算和开…...

Docker 安装详细教程(适用于CentOS 7 系统)

目录 步骤如下&#xff1a; 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版&#xff08;免费&#xff0c;支持周期7个月&#xff09;&#xf…...

前端 | 浅拷贝深拷贝

在前端开发中&#xff0c;我们经常需要复制对象或数组&#xff0c;但不同的复制方式可能会影响数据的完整性和应用的稳定性。本文将深入探讨浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09;的区别、实现方式及适用场景。 1. 浅拷贝 1.…...

巧用 Cursor+Coze,轻松简化小程序开发

一、为啥要用 Cursor+Coze 简化小程序开发 家人们,如今小程序简直火出圈啦!不管你是电商从业者,还是服务行业的工作者,又或是自媒体运营者,拥有一个小程序,就相当于给业务插上了腾飞的翅膀,能带来更多的流量和机会。但是,小程序开发的过程,那可真是充满了挑战。从最开…...

Spring Boot常用注解深度解析:从入门到精通

今天&#xff0c;这篇文章带你将深入理解Spring Boot中30常用注解&#xff0c;通过代码示例和关系图&#xff0c;帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解&#xff1a; SpringBootApplication Confi…...

解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题

mac安装软件时&#xff0c;如果出现这个问题&#xff0c;其实很简单 首先打开终端&#xff0c;输入下面的命令 sudo xattr -r -d com.apple.quarantine 输入完成后&#xff0c;先不要回车&#xff0c;点击访达--应用程序--找到你无法打开的app图标&#xff0c;拖到终端窗口中…...

爱普生L3153打印机无线连接配置流程

家里使用的是移动宽带中兴路由器&#xff0c;有WPS功能&#xff0c;进入192.168.1.1管理员页面&#xff0c;用户名user&#xff0c;密码在路由器背面&#xff08;可以登录后修改密码&#xff09;。在网络-WLAN网络配置-WPS中&#xff0c;点击push button&#xff0c;激活路由器…...

第二十章 存储函数

目录 一、概述 二、语法 三、示例 一、概述 前面章节中&#xff0c;我们详细讲解了MySQL中的存储过程&#xff0c;掌握了存储过程之后&#xff0c;学习存储函数则肥仓简单&#xff0c;存储函数其实是一种特殊的存储过程&#xff0c;也就是有返回值的存储过程。存储函数的参数…...

pytorch实现门控循环单元 (GRU)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 特性GRULSTM计算效率更快&#xff0c;参数更少相对较慢&#xff0c;参数更多结构复杂度只有两个门&#xff08;更新门和重置门&#xff09;三个门&#xff08;输入门、遗忘门、输出门&#xff09;处理长时依赖一般适…...

unity报错不存在类型或者命名空间

导入资源或者打开项目时&#xff0c;突然发现多了一堆报错&#xff0c;如 Assets\2DGamekit\Utilities\DefaultPlayables\ScreenFader\ScreenFaderBehaviour.cs(5,19): error CS0234: The type or namespace name UI does not exist in the namespace UnityEngine (are you mi…...

Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器

一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外&#xff0c;还有一个小众的市场&#xff0c;那就是多媒体展厅场景&#xff0c;这个场景目前处于垄断地位的软件是HirenderS3&#xff0c;做的非常早而且非常全面&#xff0c;都是通用的需求&…...

Spring Bean 的生命周期介绍

Spring Bean 的生命周期涉及多个阶段&#xff0c;从实例化到销毁&#xff0c;在开发中我们可以通过各种接口和注解介入这些阶段来定制化自己的功能。以下是详细的生命周期流程&#xff1a; 1. Bean 的实例化&#xff08;Instantiation&#xff09; 方式&#xff1a;通过构造函…...

奥卡姆剃刀原理:用简单的力量,解锁复杂的世界

奥卡姆剃刀原理 大名鼎鼎的奥卡姆剃刀原理&#xff08;Occam’s Razor&#xff09;&#xff0c;其含义很简单&#xff0c;就一句话&#xff1a;“如无必要&#xff0c;勿增实体”。 这句看似简单却蕴含着深刻智慧的话&#xff0c;是由14世纪的英格兰逻辑学家、圣方济各会修士…...

STM32 串口发送与接收

接线图 代码配置 根据上一章发送的代码配置&#xff0c;在GPIO配置的基础上需要再配置PA10引脚做RX接收&#xff0c;引脚模式可以选择浮空输入或者上拉输入&#xff0c;在USART配置串口模式里加上RX模式。 配置中断 //配置中断 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE…...

如何生成强密码:提高网络安全性的全面指南

引言 在数字化时代&#xff0c;密码的安全性至关重要。随着我们在社交媒体、电子邮件、在线银行等平台上储存越来越多的个人信息&#xff0c;强密码的使用变得更加关键。强密码能有效防止暴力破解、字典攻击等安全威胁。因此&#xff0c;在本文中&#xff0c;我们将深入探讨如…...

如何不更新application.yml而更新spring的配置

更改应用程序外部属性的位置 默认情况下&#xff0c;来自不同来源的属性会按定义的顺序添加到 Spring 中&#xff08;有关确切顺序&#xff0c;请参阅“Spring Boot 功能”部分中的“外部化配置”&#xff09;。Environment 您还可以提供以下系统属性&#xff08;或环境变量&…...

【Unity踩坑】Unity项目管理员权限问题(Unity is running as administrator )

问题描述&#xff1a; 使用Unity Hub打开或新建项目时会有下面的提示。 解决方法&#xff1a; 打开“本地安全策略”&#xff1a; 在Windows搜索栏中输入secpol.msc并回车&#xff0c;或者从“运行”对话框&#xff08;Win R&#xff0c;然后输入secpol.msc&#xff09;启…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter1-什么是 JavaScript

一、什么是 JavaScript 虽然 JavaScript 和 ECMAScript&#xff08;发音为“ek-ma-script”&#xff09; 基本上是同义词&#xff0c;但 JavaScript 远远不限于 ECMA-262 所定义的那样。没错&#xff0c;完整的 JavaScript 实现包含以下几个部分。 核心&#xff08;ECMAScript&…...

队列 + 宽搜(4题)

目录 1.n叉树的层序遍历 2.二叉树的锯齿形层序遍历 3.二叉树的最大宽度 4.在每个树行中找最大值 1.n叉树的层序遍历 429. N 叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 我们只需要把某个节点出队的时候把它的孩子节点添加进来即可。 出队的次数就是最开始队列…...

二、面向对象

一、结构体类型 结构体类型是一种自定义类型&#xff0c;用于创建我们游戏或者实际业务中的自定义类型. 代码中变量有通用的&#xff0c;可以使用结构体&#xff0c;包裹起来。 1、成员变量 /// <summary> /// 英雄结构体 /// </summary> struct Hero {//成员p…...