基于改进粒子群优化的无人机最优能耗路径规划
目录
- 1. Introduction
- 2. Preliminaries
- 2.1. Particle Swarm Optimization Algorithm
- 2.2. Deep Deterministic Policy Gradient
- 2.3. Calculation of the Total Output Power of the Quadcopter Battery
- 3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG
- 3.1.ProblemModelling
- 3.1.1.EnvironmentalModel
- 3.1.2. Basic PSO Design for Path Planning
- 3.2. DDPG-Based Parameter Adaptation Method for PSO Algorithm
- 3.2.1. State Space
- 3.2.2.ActionSpace
- 3.2.3.RewardFunction
- 3.3.PSO-DDPGforPathPlanning
- 4.SimulationAnalysisandDiscussion
- 4.1. Experimental Environment
- 4.2. Case 1: Comparative Analysis under the Different Initial Values of Parameters
- 4.3. Case 2: Simulation Analysis in Different Terrain Environments
- 5.Conclusions
笔记作者:
王海博,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组
研究方向:模式识别与人工智能
电子邮件:1137460680@qq.com
为了提高无人机在山地地形飞行作业时的能量效率,这篇文章提出了一种基于改进粒子群优化(PSO)算法的最优能量路径规划方法,通过合理的路径规划方法,有效降低无人机在飞行作业过程中的非必要能量消耗。首先,以无人机飞行过程中能量消耗最优为目标,设计了基于粒子群优化算法的三维路径规划方法。然后,针对经典粒子群算法全局搜索能力差、易受局部最优性影响等缺点,提出了一种基于深度确定性策略梯度(DDPG)的参数自适应算法。该方法通过监测粒子群解集的状态,动态调整粒子群算法的主要参数。
原文链接:https://www.mdpi.com/2071-1050/15/16/12101
1. Introduction
无人机(Unmanned aerial vehicle, UAVs)通过机载编程或无线电遥控机构进行控制,在火灾监控、目标跟踪、智能农业、灾害救援等领域得到了广泛的应用。无人机根据翼型分为旋翼无人机和固定翼无人机,旋翼无人机中以四旋翼无人机最为普遍。对四旋翼无人机的偏好源于其优势,如低成本,紧凑的尺寸和高机动性,使其在复杂的环境中运行。尽管有这些优势,四旋翼无人机执行任务的能力往往受到电池功耗的限制。因此,研究在不改变电池容量的情况下优化能量消耗的路径规划算法对于提高四旋翼无人机的航程和效率具有重要意义。
在过去的几年里,许多学者对通过在无人机上安装能量收集装置来延长电池储能寿命进行了研究,并取得了研究成果。
对于无人机来说,路径规划是一个不可或缺的方面,其目标是确定无人机的最佳飞行轨迹,确保其避开周围的任何障碍物和其他飞行器。路径规划技术对于在3D空间中描绘无人机的安全路线至关重要。传统的路径规划算法主要有A*算法、Dijkstra算法、Voronoi图、人工势场法等。这些算法需要预先加载地形环境信息,在地形环境复杂时存在计算量大、容易陷入局部最优的缺点。目前,许多专家使用启发式算法来优化路径规划,并取得了一些成果。需要注意的是,上述算法中参数的调优是在程序执行之前完成的,不能在执行过程中进行调整,因此,如果外部环境发生变化,则无法对算法进行调整,从而影响算法的性能。
鉴于此,本文在参数自适应算法中引入深度强化学习算法模型,提出了一种基于参数自适应的改进粒子群算法,并将其应用于山地地形下无人机的最优能量路径规划。本研究为无人机提供了一种可行的节能路径规划方法,以提高无人机在复杂地形环境下的任务执行效率。本文的主要贡献和创新点可以概括为以下几点:
(1)针对山地地形环境下无人机飞行路径不合理造成的能量浪费问题,提出了综合考虑无人机能耗、飞行成本、地形距离和地形碰撞约束的目标成本函数,将无人机最优耗能路径规划问题简化为基于粒子群算法的目标函数优化问题。
(2)为了解决PSO算法在求解复杂高维问题时容易陷入局部最优的缺点,该文提出一种基于DDPG模型的自适应参数控制方法,有效提高了PSO算法的全局收敛性。
本文其余部分的结构如下:第2节简要介绍了PSO算法的基本模型、DDPG深度强化学习模型以及本文讨论的四旋翼飞行器能耗功率的计算方法。第3节详细描述了所提出的PSODDPG算法及其在路径规划问题中的应用。第4节介绍了模拟实验环境以及与其他类似算法的比较分析。最后,第5部分给出了本文的结论。
2. Preliminaries
在本节中,介绍了一些基本的数学符号和算法模型。
2.1. Particle Swarm Optimization Algorithm
粒子群优化算法(Particle Swarm Optimization, PSO)是一种典型的群体智能优化算法,由Kennedy博士和Eberhart博士于1995年首次提出。粒子群算法将粒子的自我经验和社会经验相结合,以粒子的形式导出候选解。该优化方法在搜索空间中使用飞行粒子集合,并向有希望的区域移动,以获得全局最优解。
在经典的粒子群优化中,粒子的速度通常受其先前最佳位置和全局最佳粒子在群体中的位置的影响。为了描述粒子的状态,将第i个粒子的速度Vi和位置Xi定义为:

D表示粒子群搜索空间的维数,N表示粒子个数。随着搜索优化算法的运行,两个粒子的运动向量更新如下:

w为惯性权重,c1为认知加速度系数,c2为社会加速度系数,r1和r2为[0,1]内均匀分布的随机数,Vi(t)表示第t代第i个粒子的速度,pBesti为第i个粒子的个人最佳位置,gBest为群体最佳位置。
2.2. Deep Deterministic Policy Gradient
深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)是深度强化学习算法(Deep reinforcement learning algorithm, DRL)的一种变体,它通过使用Actor网络解决了DQN算法在连续控制问题上的局限性。
如图为深度确定性策略梯度(DDPG)训练过程。

2.3. Calculation of the Total Output Power of the Quadcopter Battery
作为一种无人机,四轴飞行器通过四个电机调节其旋翼的旋转速度,从而管理其自身的方向和位置。地面坐标系(Oe, Xe,Ye, Ze)是基于Oe在地面上的某个位置建立的,机体坐标系(Ob, Xb,Yb, Zb)是基于四轴飞行器框架建立的。图2说明了地面坐标系、机体坐标系和四轴飞行器框架之间的关系。

假设四轴飞行器框架对称,质心与几何中心对齐,忽略外部阻力的影响,我们推导出四轴飞行器姿态动力学简化模型如下:

Ix、Iy 和 Iz 表示四旋翼机的惯性矩,Mx、My 和 Mz 表示四旋翼机姿态通道控制力矩。四旋翼机位置动力学的简化模型可以表述如下:

F为四轴飞行器的拉力,m为四轴飞行器的起飞重量,g为重力加速度。四轴飞行器姿态通道控制转矩M与电机转速wi的关系可表示为:

d表示四轴飞行器机身中心到某电机的距离,取0.4m, cT为螺旋桨的拉伸系数,取值为1.55 × 10−4,cM为螺旋桨的扭矩系数,取值为4.11 × 10−6。
四轴飞行器电池的总输出功率PT可以用下面的公式来确定。

其中,Umi、Imi、Re分别表示无人机电机的等效电压、等效电流和电枢内阻。每台电机的等效电压Um和等效电流Im按下式配置。

Um0为标称空载电压,Im0为标称空载电流,Kv0为电机KV值,M为电机负载转矩,N为电机转速。本文取Um0为22.2,取Im0为1.1,取Kv0为170。
N可由电机的角速度wi计算,M可由下式计算:

P为无人机当前工作环境下的空气密度,取值为1.293kg/m3; Dp为四轴飞行器螺旋桨直径,取值为0.508;Cm为总扭矩系数,取值为0.0031。在本研究的数值模拟实验中,相关参数生成于“https://flyeval.com(访问日期:2023年7月6日)”。
3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG
3.1.ProblemModelling
在本节中,我们设计了一种基于DDPG深度强化学习模型的自适应参数控制方法,并将该算法与粒子群算法相结合,提出了一种最优能耗无人机路径规划算法。
3.1.1.EnvironmentalModel
在三维飞行空间中,无人机路径规划的结果通常可以通过一组离散的航路点fp0, p1, p2,…来描述。第一个航路点p0为起点,最后一个航路点pn+1为目标点,PI的坐标为(xi, yi, zi)。在该算法中,每个路径点都被视为MOPSO算法中的一个粒子
。在有多架无人机参与任务的情况下,无人机的路由是根据它们在编队中的优先级确定的。为了防止飞行过程中频繁的角度变化影响飞行安全,利用三次b样条曲线平滑飞行路线。
无人机路径规划所必需的三维地图环境信息必须从地形模型中得到。有效的地形建模可以大大提高路径规划算法的精度。本文考虑障碍物、环境等因素,建立了以下山谷地形模型。

式中(xmi, ymi)为第i个峰的中心坐标;Hi是控制峰高的地形参数,xsi和ysi是峰沿x轴和y轴的衰减,控制峰的斜率,n表示峰的总数。3D地图内的无障碍区域可以视为路径规划问题的解空间。
3.1.2. Basic PSO Design for Path Planning
无人机路径规划的评价目标函数(适应度函数)包括能耗代价函数F1、距离代价函数F2和约束代价函数F3,适应度函数的数学表达式为:

能量代价函数F1可表示为:

式中,pi为样条插值后得到的第i个路径点得到的电池能耗功率,k1为能量成本因子,本算法中k1 = 1。距离成本函数F2可以表示为:

式中(xi, yi, zi)为规划路径的第I个路径点。K2为路径代价因子,在本算法中K2 = 1。约束代价函数F3可表示为:

3.2. DDPG-Based Parameter Adaptation Method for PSO Algorithm
3.2.1. State Space
状态空间作为Actor网络的输入,决定了算法的收敛速度。对于传统的深度强化学习方法,状态空间设计应满足以下条件:
所选择的状态应该与任务目标相关;所选择的状态应该与任务目标相关;选择的状态应该能够映射到相同的值范围。
根据上述原则,该算法的状态空间包含三个要素:种群的进化进程、种群的多样性和种群当前的优化能力。在粒子群优化中,迭代率是表示算法执行程度的参数。在算法开始时,该迭代进度为0%,逐渐增加,直到算法完成,此时迭代进度达到100%。迭代百分比的定义可以用下式表示:

Nnow为粒子群当前迭代次数,Nmax为粒子群最大迭代次数。
粒子群的多样性表示粒子群之间的变异程度,其公式如下:

式中M为群体中粒子的个数,qij为第i个粒子的第j个位置。其中,Qj为第JTH位蜂群的平均值,q Max j和q min j分别为第JTH位蜂群的最大值和最小值。
粒子群当前的优化能力,是反映粒子群相对于上一代进化程度的度量,由下式确定:

fgbest k (t)为时刻t选取的全局最优解的第k个适应度函数值。
3.2.2.ActionSpace
Action构成Actor网络的输出,用于为PSO优化算法的每次迭代产生参数。在本算法中,我们将连续动作a定义为一个数组(a1, a2, a3), w, c1, c2的值根据以下公式设计:
其中wlast、c1last、c2last为前一轮PSO优化算法的参数。
3.2.3.RewardFunction
奖励函数的目的是计算“行动”在任务环境中获得的奖励。在该算法中,奖励函数是根据下面的方程设计的,从而推动粒子群算法向全局最优解发展:

3.3.PSO-DDPGforPathPlanning
在本节中,应用改进的粒子群算法来解决复杂地形环境下无人机的最优能耗路径规划问题。这个应用基于本研究提出的深度强化学习自适应参数模型。增强算法的实现与算法1中描述的框架保持一致,而算法的关键参数如表1所示。


4.SimulationAnalysisandDiscussion
4.1. Experimental Environment
本节首先概述任务场景设置和用于数值模拟的实验硬件配置。随后,分别对不同参数初始值和不同任务场景进行了数值模拟。通过对仿真结果的对比分析,证明了本文提出的PSO-DDPG算法与其他同类算法相比具有优越的性能。
4.2. Case 1: Comparative Analysis under the Different Initial Values of Parameters
为了评估本文提出的算法的性能,进行了两组数值模拟实验。这些模拟使用的环境模型是一个100 × 100 × 100的3D空间,障碍物使用3.1.1节中描述的山模型函数生成,如图3所示。

值得注意的是,本研究中的数值模拟是在Windows 10 64位系统上使用MATLAB R2021a仿真平台进行的。
4.3. Case 2: Simulation Analysis in Different Terrain Environments
为了评估算法在不同复杂地形环境下的性能,本小节根据障碍峰的数量设置了简单和复杂两种不同的地形场景。我们以经典PSO算法、人工蜂群算法(Artificial Bee Colony algorithm, ABC)和人工鱼群算法(Artificial Fish Swarm algorithm, AFSA)为参照组进行了数值模拟。各测试算法的参数设置如表2所示。

图6为简单地形环境下不同算法生成的最优飞行路径,图7为相同环境下不同算法得到的目标代价函数曲线。从图6和图7可以看出,在简单地形环境下,经典的PSO算法和ABC算法都属于局部优化,AFSA算法在全局收敛方面表现较好,但由于复杂度较高,收敛时间较长,本文提出的PSO- ddpg算法在整体性能上表现最优。
图8和图9为复杂地形环境下不同算法的苍蝇最优飞行路径和目标代价函数曲线。从图8和图9可以看出,经典的PSO和ABC算法随着地形环境中峰值数量的增加,局部最优问题加剧,而AFSA算法的收敛速度较慢的问题仍然存在。相反,本文提出的PSO-DDPG算法虽然收敛速度有所下降,但其综合性能在同类算法中仍然是最好的。



表3和表4给出了四种算法的10次仿真结果和各算法与经典粒子群算法的优化比。对比表3和表4,经典PSO算法和ABC优化算法在简单地形和复杂地形环境下均表现出较差的全局收敛性,AFSA优化算法在简单地形下收敛性较好,但在复杂地形下全局收敛性受到影响。本文提出的PSO-DDPG算法在全局转换方面具有最优的性能。

5.Conclusions
本文提出了一种改进的粒子群优化路径规划算法,采用参数化自适应方法实现山谷地形环境下四旋翼飞行器的最优能耗路径规划。首先,将无人机最优能耗路径规划问题表述为具有碰撞威胁和面积限制约束的目标函数优化问题;利用经典粒子群算法对目标函数进行最优求解。其次,针对经典粒子群算法缺乏自适应性和易受局部最优影响的问题,引入了一种新的粒子群算法,深度确定性策略梯度(DDPG)模型。该模型在运行过程中自适应调整PSO算法中的三个参数w、c1和c2,从而提高了算法的搜索性能。与其他类似算法在三维环境下的数值模拟表明了本文算法的优越性能。与经典PSO算法相比,本文提出的PSO- ddpg算法在简单地形和多峰复杂地形下的优化率分别为7.5%和9.2%。
本研究以山地地形环境下无人机的最优能耗为目标,提出了一种无人机路径规划算法,并通过场景仿真验证了该算法的有效性及其相对同类算法的性能优势。然而,本研究并未考虑环境因素对无人机能耗的影响;例如,在风场中,强烈的阵风会导致无人机产生更大的能量消耗,这是由于无人机需要在风场中保持姿态稳定。在未来的工作中,我们将考虑这些因素对无人机能耗的影响,进一步完善无人机的能耗计算模型,并尝试将算法部署到真实的无人机中,为真实环境下的飞行作业提供有效的控制决策。
相关文章:
基于改进粒子群优化的无人机最优能耗路径规划
目录 1. Introduction2. Preliminaries2.1. Particle Swarm Optimization Algorithm2.2. Deep Deterministic Policy Gradient2.3. Calculation of the Total Output Power of the Quadcopter Battery 3.OptimalEnergyConsumptionPathPlanningBasedonPSO-DDPG3.1.ProblemModell…...
C#中通道(Channels)的应用之(生产者-消费者模式)
一.生产者-消费者模式概述 生产者-消费者模式是一种经典的设计模式,它将数据的生成(生产者)和处理(消费者)分离到不同的模块或线程中。这种模式的核心在于一个共享的缓冲区,生产者将数据放入缓冲区&#x…...
git: hint:use --reapply-cherry-picks to include skipped commits
问: 当我在feture分支写完功能,切换到dev更新了远端dev代码,切回feture分支,git rebase dev分支后出现报错: warning skipped previously applied commit 709xxxx hint:use --reapply-cherry-picks to include skippe…...
AI:对比ChatGPT这类聊天机器人,人形机器人对人类有哪些不一样的影响?
人形机器人与像ChatGPT这样的聊天机器人相比,虽然都属于人工智能技术的应用,但由于其具备的物理形态和与环境的互动能力,它们对人类的影响会有很大的不同。下面从多个角度进行对比,阐述它们各自对人类的不同影响: 1. …...
vue3 +ts 学习记录
1 父子传参 父传子 父组件 <TestFuzichuancan :title"title"/> const title 父组件标题子组件 import { defineProps } from vue; interface Props {title?: string,arr: number[]; } const props withDefaults(defineProps<Props>(), {title: 默认…...
微服务的配置共享
1.什么是微服务的配置共享 微服务架构中,配置共享是一个重要环节,它有助于提升服务间的协同效率和数据一致性。以下是对微服务配置共享的详细阐述: 1.1.配置共享的概念 配置共享是指在微服务架构中,将某些通用或全局的配置信息…...
Scala分布式语言二(基础功能搭建、面向对象基础、面向对象高级、异常、集合)
章节3基础功能搭建 46.函数作为值三 package cn . itbaizhan . chapter03 // 函数作为值,函数也是个对象 object FunctionToTypeValue { def main ( args : Array [ String ]): Unit { //Student stu new Student() /*val a ()>{"GTJin"…...
Chromium 132 编译指南 Windows 篇 - 配置核心环境变量 (三)
1. 引言 在之前的 Chromium 编译指南系列文章中,我们已经完成了编译前的准备工作以及 depot_tools 工具的安装与配置。本篇我们将聚焦于 Chromium 编译过程中至关重要的环境变量设置,这些配置是您顺利进行 Chromium 构建的基石。 2. 启用本地编译&…...
开源文件存储分享平台Seafile部署与应用
Seafile 是一款开源的企业云盘,注重可靠性和性能,支持全平台客户端。Seafile 内置协同文档 SeaDoc ,让协作撰写、管理和发布文档更便捷。适用于团队协作、文件存储和同步的开源解决方案,它提供了可靠、安全和易用的云存储服务。主要有以下特点: 文件存储和同步:Seafile 允…...
MYSQL-创建数据库 CREATE DATABASE (十一)
13.1.11 CREATE DATABASE 语句 -- 创建 数据库的 CREATE 权限 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[create_option] ...create_option: [DEFAULT] {CHARACTER SET [] charset_name| COLLATE [] collation_name } -- 删除 数据库具有 DROP 权限 DROP {DATABASE…...
Java高频面试之SE-11
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 Java中是引用传递还是值传递? 在 Java 中,方法参数传递是通过 值传递 的方式实现的,但这可能会引起一…...
C#结构体,枚举,泛型,事件,委托--10
目录 一.结构体 二.特殊的结构体(ref struct): 三.枚举 四.泛型 泛型的使用: 1.泛型类:定义一个泛型类,使用类型参数T 2.泛型方法:在方法定义中使用类型参数 3.泛型接口 五.委托及泛型委托 委托 泛型委托 六.事件 事件: 泛型事件:使用泛型委托(如Event…...
MapReduce完整工作流程
1、mapreduce工作流程(终极版) 0. 任务提交 1. 拆-split逻辑切片--任务切分。 FileInputFormat--split切片计算工具 FileSplit--单个计算任务的数据范围。 2. 获得split信息和个数。 MapTask阶段 1. 读取split范围内的数据。k(偏移量)-v(行数据) 关键API:TextI…...
网络编程(1)
网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里&#…...
mysql中创建计算字段
目录 1、计算字段 2、拼接字段 3、去除空格和使用别名 (1)去除空格 (2)使用别名:AS 4、执行算术计算 5、小结 博主用的是mysql8 DBMS,附上示例资料: 百度网盘链接: https://pan.baidu.co…...
【算法】判断一个链表是否为回文结构
问: 给定一个单链表的头节点head,请判断该链表是否为回文结构 例: 1 -> 2 -> 1返回true;1 -> 2 -> 2 -> 1返回true;15 -> 6 -> 15返回true 答: 笔试:初始化一个栈用来…...
计算机网络之---ICMP协议与Ping命令
ICMP 协议 ICMP (Internet Control Message Protocol) 是一种网络层协议,主要用于在 IP 网络中传递控制消息。ICMP 主要用于网络设备之间的故障报告和诊断,帮助设备检测网络连接问题。它是 IP 协议的核心部分之一,用于发送错误消息和操作信息…...
【硬件介绍】Type-C接口详解
一、Type-C接口概述 Type-C接口特点:以其独特的扁头设计和无需区分正反两面的便捷性而广受欢迎。这种设计大大提高了用户的使用体验,避免了传统USB接口需要多次尝试才能正确插入的问题。Type-C接口内部结构:内部上下两排引脚的设计虽然可能不…...
【Pandas】pandas Series rtruediv
Pandas2.2 Series Binary operator functions 方法描述Series.add()用于对两个 Series 进行逐元素加法运算Series.sub()用于对两个 Series 进行逐元素减法运算Series.mul()用于对两个 Series 进行逐元素乘法运算Series.div()用于对两个 Series 进行逐元素除法运算Series.true…...
项目开发版本控制Git流程规范
个人&测试&预发布&生产分支命名 1)个人分支: 从sit或者master进行切出,姓名切出分支命名,或者日期切出分支命名 示例:liuys_sit、20250110_sit2)测试分支: sit3)用户验…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
