2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)

龙卷风优化算法(Tornado optimizer with Coriolis force)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法

01.引言

当自然界的狂暴之力,化身数字世界的智慧引擎:龙卷风,自然界最神秘的力量之一——雷暴盘旋、风切变激荡、科里奥利力牵引,最终凝聚成摧毁万物的旋转风暴。科学家们从这场“天地博弈”中捕捉灵感,打造出​「Tornado Optimizer with Coriolis Force (TOC)」​算法,将风暴形成的动态过程转化为优化问题的终极解法。无需复杂数学模型,不依赖初始参数,仅凭对自然规律的模拟,即可在浩瀚解空间中精准捕获最优答案!

传统算法的困局:为什么我们需要一场“风暴革命”?

在人工智能与工程优化领域,经典算法正面临三大挑战:

​梯度陷阱:传统方法依赖精确的数学梯度,面对噪声数据或非线性问题时束手无策。

​早熟收敛:元启发式算法常陷入局部最优,如同探险者被困山谷,错失远方高峰。

​维度灾难:高维问题中,解空间呈指数级膨胀,计算资源如泥牛入海。

TOC算法的突破,在于用自然界的混沌之力对抗数学的确定性困局——龙卷风的形成、旋转与消散,恰好映射了优化过程中探索、聚焦与迭代的智慧。

02.优化算法的流程

所提出的具有科里奥利力 (TOC) 的龙卷风优化器的想法是基于对龙卷风形成和消散以及风暴和雷暴如何在自然界中演变形成龙卷风的观察而受到启发。为了进一步澄清,关于龙卷风如何产生并向陆地移动的一些基本知识,它们遵循可识别的生命周期,如下所述:当风暴系统内的风速和风向发生变化时,该周期就开始了。这会产生一种旋转效果,该效果由穿过雷云的上升气流垂直倾斜。在这种情况下,风暴通常会发生在那个点。当风暴增强时,它通常会变成超级单体雷暴。另一种说法是,强大的雷暴在大气层几英里高的地方发展出一个旋转系统,成为超级单体或雷云单体。这些超级单体雷暴是独特的、孤立的单体,不属于风暴线的一部分。超级单体风暴是兜兜转转的风暴。当旋转的垂直气柱和超级单体雷暴一起时,风暴云可能会产生龙卷风。龙卷风形成过程的各个阶段可以在图下中观察到。

1. 风暴初生:种群的混沌与秩序

算法初始化时,随机生成三类“风暴个体”:

​普通风暴​(随机探索者):广泛散布在解空间,寻找潜力区域。

​雷暴​(精英个体):当前较优解,吸引周围风暴向其靠拢。

​龙卷风​(全局最优):吞噬能量,成为局部区域的绝对核心。

​自然隐喻:就像真实风暴需要温度、湿度与风切变的配合,算法通过动态调整“风暴能量”,平衡搜索的广度与深度。

​2. 科里奥利效应:给优化加上“地球自转”的智慧

龙卷风在北半球逆时针旋转、南半球顺时针旋转的现象,被抽象为方向扰动机制:

​北半球模式:解向量向右偏转,增强对未知区域的探索。

​南半球模式:解向量向左偏转,强化对已知优势区域的挖掘。

这种动态偏转有效避免了算法“原地打转”,仿佛为搜索过程装上导航罗盘。

​3. 气旋平衡方程:暴力美学中的数学优雅

借鉴流体力学中的梯度风速模型,TOC将气压梯度力、离心力与科里奥利力的平衡关系转化为迭代公式:

​高压区​(局部最优解):离心力主导,推动个体逃离“舒适区”。

​低压区​(潜力区域):科里奥利力牵引,引导种群螺旋式逼近。

整个过程宛如一场精心编排的“风暴之舞”,在破坏与重建中逼近全局最优。

​4. 消散与重生:劣解的淘汰与新星的崛起

当风暴能量衰减(适应度不再提升),算法自动触发“消散机制”:

淘汰停滞个体,释放计算资源。

随机生成新风暴,注入新鲜血液。

这一机制完美复刻自然界的物竞天择,确保种群永葆进化活力。

论文伪代码:

3.论文中算法对比图

04.本代码效果图

05.部分代码

function [TornadoCost,Tornadoposition,ccurve]=TOC(n,max_it,lb,ub,dim,fobj,nto,nt)
%% Convergence curve
ccurve=zeros(1,max_it);%% Generate initial population for the Tornado Optimizer with Coriolis force (TOC) 
% Create initial population for Tornado, thunderstorms, and windstorms, and initialize the positions of populationy=initialization(n,dim,ub,lb);
% Evaluate the fitness of initial population for Tornado, thunderstorms, and windstorms 
fit = zeros(size(y,1),1);
for i=1:size(y,1)fit(i,1)=fobj(y(i,:));
end
[~,index]=sort(fit) ;
%% Forming Windstorms, Thunderstorms, and Tornado of the Tornado Optimizer with Coriolis force (TOC) 
% nto: Number of thunderstorms and tornadoes
% Nt : Number of thunderstorms
% To:  Number of tornadoes
% nw: number of windstorms
To= nto - nt;% Tornadoes
nw=n-nto; % Windstorms
%================ Forming and evaluating the population of the Tornadoes ================
Tornadoposition=y(index(1:To),:) ; % 
TornadoCost=fit(index(1:To)); %================ Forming and evaluating the population of the Thunderstorms ================
Thunderstormsposition(1:nto-1,:)=y(index(2:nto),:);
ThunderstormsCost(1:nto-1)=fit(index(2:nto));
bThunderstormsCost = ThunderstormsCost;
gThunderstormsCost=zeros(1,nto-1);[~,ind]=min(ThunderstormsCost);
bThunderstormsposition = Thunderstormsposition; % Initial best Thunderstorms position
gThunderstormsCost = Thunderstormsposition(ind,:); % Initial global Thunderstorms position
%================ Forming and evaluating the population of the Windstorms ================Windstormsposition(1:nw,:)=y(index(nto+1:nto+nw),:) ; 
WindstormsCost(1:nw)=fit(index(nto+1:nto+nw)) ;  
gWindstormsposition=zeros(1,nw);
bWindstormsCost = WindstormsCost;
[~,ind]=min(WindstormsCost);
bWindstormsposition = Windstormsposition; % % Initial best windstorms position (Update the best positions of windstorms)
gWindstormsposition = Windstormsposition(ind,:); % Initial global windstorms position%% Velcity term of TOC 
vel_storm = 0.1*Windstormsposition; % Velocity of windstorms
%%  Designate windstorms to thunderstorms and Tornadoes 
nwindstorms=1:nw;nwindstorms=nwindstorms(sort(randperm(nw,nto)));% Combining windstorms to tornado
nWT=diff(nwindstorms)';
nWT(end+1)= nw-sum(nWT);
% nWT1=sort(nWT1,'descend');
nWT1 = nWT(1);
% Combining windstorms to thunderstorms
nWH=nWT(2:end);
%% Parameter setting s for TOC
b_r=100000;  
fdelta=[-1,1];
%% Key functions of Tornado Optimizer with Coriolis force (TOC) 
chi=4.10;
eta=2/abs(2-chi-sqrt(chi^2-4*chi)) ;
%% ================  Main Loop for TOC ================ 
disp('================  Tornado Optimizer with Coriolis force (TOC) ================ ');
t=1;while t<=max_it%% Key adaptive functions (Adaptive parameters) of TOCnu  =(0.1*exp(-0.1*(t/max_it)^0.1))^16;mu = 0.5 + rand/2;ay=(max_it-(t^2/max_it))/max_it ;Rl = 2/(1+exp((-t+max_it/2)/2)) ;  Rr = -2/(1+exp((-t+max_it/2)/2)) ;  %%  Evolution of windstorms to Tornadoes% Update velocity     
for i=1:nwfor j = 1:dimif rand > 0.5delta1=fdelta(ceil(2*rand()));zeta=ceil((To).*rand(1,To))'; %  wmin=1; wmax=4.0; rr=wmin+rand()*(wmax-wmin);wr= (((2*rand()) - (1*rand()+rand()))/rr); c=b_r*delta1*wr;omega = 0.7292115E-04; 
%            w_r = sin(-1 + 2.*rand(1,1));f= 2*omega*sin(-1 + 2.*rand(1,1));phi(i,j) = Tornadoposition(zeta,j) - Windstormsposition(i,j);if sign(Rl)>=0 if sign(phi(i,j))>=0 phi(i,j) = -phi(i,j);endendCFl =(((f^2*Rl^2)/4) -Rl* 1 *phi(i,j));if sign(CFl)< 0 CFl= -CFl;endvel_storm(i,j)= eta*  (mu*vel_storm(i,j) - c* (f*Rl)/2 +(sqrt(CFl)));elsedelta1=fdelta(ceil(2*rand()));zeta=ceil((To).*rand(1,To))'; %  rmin=1; rmax=4.0; rr=rmin+rand()*(rmax-rmin);wr= (((2*rand()) - (1*rand()+rand()))/rr); c=b_r*delta1*wr; phi(i,j) = Tornadoposition (zeta,j)-Windstormsposition(i,j);if sign(Rr)<=0 if sign(phi(i,j))<=0 phi(i,j) = -phi(i,j);endendomega =0.7292115E-04;% s�1
%          w_r = sin(-1 + 2.*rand(1,1));f= 2*omega*sin(-1 + 2.*rand(1,1));CFr =(((f^2*Rr^2)/4) -Rr* 1 *phi(i,j));if sign(CFr)<0 CFr= -CFr;end vel_storm(i,j)= eta  *(mu* vel_storm(i,j) - c* (f*Rr)/2 +(sqrt(CFr)))  ;        endendend %% %% Exploration - Evolution of windstorms to Tornadoesfor i=1:nWT1rand_index = floor((nWT1).*rand(1,nWT1))+1;rand_w = Windstormsposition(rand_index, :);alpha=abs(2*ay*rand-1*rand)   ;Windstormsposition(i,:)=Windstormsposition(i,:)+2*alpha*(Tornadoposition  - rand_w(i,:)) + vel_storm(i,:);
%  ub_=Windstormsposition(i,:)>ub; lb_=Windstormsposition(i,:)<lb;Windstormsposition(i,:)=(Windstormsposition(i,:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;WindstormsCost (i)=fobj(Windstormsposition(i,:));%%% Finding out the best positionsif WindstormsCost(i)<bWindstormsCost(i)bWindstormsposition(i,:)=Windstormsposition(i,:) ; % Best solutionsbWindstormsCost(i)=WindstormsCost(i);   % Best costendend[minTornadoCost,in]=min(bWindstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bWindstormsposition(in,:); % Update the global best positionsend %% ================ Exploitation -  Evolution of windstorms to thunderstorms ================ 
%% ================  Combining windstorms together to form thunderstorms ================  for i=1:ntfor j=1:nWH(i)rand_index = floor((nt).*rand(nt))+1;rand_w = Windstormsposition(rand_index, :);c1=abs(2*ay*rand-1*ay); c2=abs(ay - 2*ay*rand);Windstormsposition((j+sum(nWT(1:i))),:)=Windstormsposition((j+sum(nWT(1:i))),:)+2*rand*(Thunderstormsposition(i,:)-Windstormsposition((j+sum(nWT(1:i))),:))+...+ 2*rand*(Tornadoposition (1,:)-Windstormsposition((j+sum(nWT(1:i))),:));ub_=Windstormsposition((j+sum(nWT(1:i))),:)>ub; lb_=Windstormsposition((j+sum(nWT(1:i))),:)<lb;Windstormsposition((j+sum(nWT(1:i))),:)=(Windstormsposition((j+sum(nWT(1:i))),:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;WindstormsCost((j+sum(nWT(1:i))))=fobj(Windstormsposition((j+sum(nWT(1:i))),:));if WindstormsCost((j+sum(nWT(1:i))))<ThunderstormsCost(i)              bThunderstormsposition(i,:) =Windstormsposition((j+sum(nWT(1:i))),:);Thunderstormsposition(i,:)=Windstormsposition((j+sum(nWT(1:i))),:);ThunderstormsCost(i)=WindstormsCost((j+sum(nWT(1:i))));end endend   %[minTornadoCost, in]=min(ThunderstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bThunderstormsposition(in,:); % Update the global best positionsend %% ================  Evolution of thunderstorms to tornado ================ for i=1:nt        zeta=ceil((To).*rand(1,To)); %  alpha=abs(2*ay*rand-1*rand)    ; p = floor((nt).*rand(1,nt))+1;rand_w = Thunderstormsposition(p, :);Thunderstormsposition(i,:)=Thunderstormsposition(i,:)+2.*alpha*(Thunderstormsposition(i,:) - Tornadoposition(zeta,:))+...+2.*alpha*(rand_w(i,:) - Thunderstormsposition(i,:));ub_=Thunderstormsposition(i,:)>ub; lb_=Thunderstormsposition(i,:)<lb;Thunderstormsposition(i,:)=(Thunderstormsposition(i,:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;ThunderstormsCost(i) =fobj(Thunderstormsposition(i,:));if ThunderstormsCost(i)<bThunderstormsCost(i)         bThunderstormsposition(i,:) =Thunderstormsposition(i,:);bThunderstormsCost(i) =ThunderstormsCost(i);endend[minTornadoCost,in]=min(bThunderstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bThunderstormsposition(in,:); % Update the global best positionsend %%   ================  Random formation of windstorms, tornadoes and thunderstorms ================ % Check windstorms formation for windstorms and tornadoesfor i=1:nWT1if  ((norm(Windstormsposition(i,:)-Tornadoposition)<nu))delta2=fdelta(floor(2*rand()+1));Windstormsposition(i,:)=  Windstormsposition(i,:) - (2*ay*(rand*(lb-ub) - lb))*delta2;end
end  % Check windstorms formation for windstorms and thunderstormsfor i=1:ntif  ((norm(Windstormsposition(i,:)-Thunderstormsposition(i,:))<nu))for j=1:nWH(i)delta2=fdelta(floor(2*rand()+1)) ;Windstormsposition((j+ sum(nWT(1:i))),:)=  Windstormsposition((j+ sum(nWT(1:i))),:) - (2*ay*(rand*(lb-ub) - lb))*delta2;endend
end %% Results and Plot   disp(['Iteration: ',num2str(t),'   minTornadoCost= ',num2str(TornadoCost)]);ccurve(t)=TornadoCost;%{if t>2line([t-1 t], [ccurve(t-1) ccurve(t)],'Color','b'); title({'Convergence characteristic curve'},'interpreter','latex','FontName','Times','fontsize',12);xlabel('Iteration');ylabel('Best score obtained so far');drawnow end 
%}t=t+1;endend

✅作者简介:信号处理方向在校博士研究生,目前专研于MATLAB算法及科学绘图等,熟知各种信号分解算法、神经网络时序、回归和分类预测算法、数据拟合算法以及滤波算法。提供一个可以相互学习相互进步的平台

🚩技术信仰:知行合一,让每一行代码都成为解决问题的利器

🔍后台私信备注个人需求(比如TOC-BP)定制以下TOC算法优化模型(看到秒回):

1.回归/时序/分类预测类:BP、RF、XGBoost、RBF、LSSVM、SVM、ELM、DELM、ESN、RELM等等均可,优化算法优化BP为例,可达到以下效果:

(1)优化BP神经网络的数据时序预测

(2)优化BP神经网络的数据回归(多输入多输出)预测

(3)优化BP神经网络的数据回归预测

2.分解类:EEMD、VMD、REMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可,优化算法优化VMD/ICEEMDAN为例,可达到以下效果:

(1)基于改进天鹰优化算法(IAO)优化的VMD参数

(2)基于改进天鹰优化算法(IAO)优化ICEEMDAN参数

3.去噪算法算法类:VMD/CEEMDAN/ICEEMDAN/SVMD+小波阈值/SVD去噪,可在去噪算法前加智能优化算法优化参数以VMD-WT/SVD为例,可达到以下效果:

(1)基于VMD-SpEn(样本熵)联合小波阈值去噪

(2)基于SVMD-SVD的信号去噪算法

(3)基于ZOA优化VMD-IAWT岩石声发射信号降噪算法

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

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

相关文章

面试中如何回答性能优化的问题

性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。 对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用…

CMake 函数和宏

CMake 函数 CMake 函数定义语法如下, 其中 name 为函数名, <arg1> 为参数名, <commands> 为函数体. 函数定义后, 可以通过 name 调用函数. 函数名允许字母数字下划线, 不区分大小写. function(name [<arg1> ...])<commands> endfunction()如下的样例…

【QA】Qt有哪些迭代器模式的应用?

在 Qt/C 中&#xff0c;迭代器模式的设计主要分为 标准 C 风格 和 Qt 框架特有风格&#xff0c;以下结合代码详细说明两种实现方式的关键设计及其应用场景&#xff1a; 一、Qt 框架中的迭代器模式设计 Qt 提供了两种迭代器风格&#xff1a;Java 风格&#xff08;显式迭代器&am…

Mysql表的简单操作

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 3.1 创建表 3.2 查看表结构 3.3 修改表 1. 添加字段 2. 修改字段 3…

【云馨AI-大模型】自动化部署Dify 1.1.2,无需科学上网,Linux环境轻松实现,附Docker离线安装等

Dify介绍 官网&#xff1a;https://dify.ai/zh生成式 AI 应用创新引擎开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&#xff0c;轻松构建和运营生成式 AI 原生应用。 Dify安装脚本 目录创建 mkdir -p /data/yunxinai &&a…

WordPress上传图片时显示“未提供数据”错误

在WordPress中上传图片时显示“未提供数据”的错误&#xff0c;通常是由多种原因引起的&#xff0c;以下是一些常见的问题及其解决方法&#xff1a; 1. 文件权限问题 WordPress需要正确的文件和目录权限才能正常上传图片。如果权限设置不正确&#xff0c;可能会导致无法上传图…

python3面试题20个(python web篇)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 1.python asyncio的原理?2.对Flask蓝图(Blueprint)的理解?3.Flask 和 Django 路由映射的区别?4.什么是wsgi,uwsgi,uWSGI?5.Django、Flask、Tornado的对比?6.CORS 和 CSRF的区别?7.Session,Cookie,JWT的理解8.简…

RedisTemplate和RedissonClient适用的场景有什么不同

在 Spring Boot 项目中&#xff0c;RedisTemplate 和 RedissonClient 分别针对不同的使用场景设计&#xff0c;以下是它们的核心区别和适用场景分析&#xff1a; 一、RedisTemplate&#xff08;Spring Data Redis&#xff09; 定位 Spring 官方提供的 Redis 操作工具&#xf…

人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)

最近终于把毕业大论文忙完了&#xff0c;众所周知硕士大论文需要有三个工作点&#xff0c;表情识别领域的第三个工作点一般是做一个表情识别系统出来&#xff0c;如下图所示。 这里分享一下这个表情识别系统&#xff1a; 采用 深度学习OpenCVPyQt5 构建&#xff0c;主要功能包…

GitHub供应链攻击事件:Coinbase遭袭,218个仓库暴露,CI/CD密钥泄露

此次供应链攻击涉及GitHub Action "tj-actions/changed-files"&#xff0c;最初是针对Coinbase的一个开源项目的高度定向攻击&#xff0c;随后演变为范围更广的威胁。 攻击过程与影响 Palo Alto Networks Unit 42在一份报告中指出&#xff1a;“攻击载荷主要针对其…

Redis 核心源码解析:从设计哲学到企业级应用实践

一、Redis 的核心设计哲学 Redis 的成功源于其 「用内存换时间」 的核心理念&#xff0c;围绕以下三个核心原则构建&#xff1a; 极简主义&#xff1a;单线程模型避免锁竞争&#xff0c;代码保持高度内聚。 性能至上&#xff1a;所有数据常驻内存&#xff0c;网络层采用事件驱…

GZCTF平台搭建及题目上传

前言 我用手里的Ubuntu虚拟机搭建的&#xff0c;大家根据自己的实际情况来吧 安装及部署 首先&#xff0c;你的虚拟机需要有Docker和Docker-Compose&#xff0c;前者可以看我之前的文章&#xff0c;另外一个可以输入下面的命令安装&#xff0c;注意先获取管理员权限&#xff…

Pycharm社区版创建Flask项目详解

一、创建工程项目 二、配置工程目录 新建的空项目下创建目录。 1、新建app.py文件 2、app.py代码如下&#xff1a; from flask import Flask, render_templateapp Flask(__name__)app.route("/") def root():"""主页:return: Index.html"&qu…

CentOS 7 64位安装Docker

以下是在已有的 CentOS 7 64 位虚拟机上安装 Docker 并配置华为镜像源的详细步骤&#xff1a; 1. 备份原有 Yum 源&#xff08;可选&#xff0c;建议操作&#xff09; # 备份原有仓库文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu…

运动仿真——phased.Platform

在雷达仿真过程中&#xff0c;运动仿真的必要性&#xff0c;以及运动仿真可以实现哪些功能&#xff0c;在matlab对应的user guide中已经讲的很清楚了&#xff0c;这里不再赘述。 本文主要介绍phased.Platform的一些“坑”&#xff0c;和典型的用法。 第一坑&#xff1a;系统对…

缓存删除三级补偿方案:延迟队列+消息队列+定时任务兜底

问题背景: 在 Cache-Aside 模式中&#xff0c;更新数据库后删除缓存失败会导致数据不一致。本文提供工业级三级补偿方案&#xff0c;实现最终一致性保障。 整体架构: 更新操作触发 → 一级延迟队列 → 二级消息队列 → 三级定时任务方案实现: 一、第一级补偿&#xff1a;延迟队…

从零开始实现 C++ TinyWebServer 数据库连接池 SqlConnectPool详解

文章目录 数据库连接池是什么&#xff1f;Web Server 中为什么需要数据库连接池&#xff1f;SqlConnectPool 成员变量实现 Init() 函数实现 ClosePool() 函数SqlConnectRAII 类SqlConnectPool 代码SqlConnectPool 测试 从零开始实现 C TinyWebServer 项目总览 项目源码 数据库连…

C++题目

1、内存管理 1.内存模型 栈:在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。 堆&#xff1a;就是那些由new分配的内存块&#xff0c;其释放由程序员控制&#xff08;一个new对应一个delete&#xff09…

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String&#xff1b;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…

Java并发编程面试汇总

Java并发编程 一、 基础概念1. 进程与线程的区别是什么&#xff1f;2. 创建线程的几种方式&#xff1f;3. 线程的生命周期&#xff08;状态&#xff09;有哪些&#xff1f;4. 什么是守护线程&#xff08;Daemon Thread&#xff09;&#xff1f;5. 线程优先级&#xff08;Priori…