2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序

2022年第十一届数学建模国际赛小美赛

A题 翼龙如何飞行

原题再现:

  翼龙是翼龙目中一个已灭绝的飞行爬行动物分支。它们存在于中生代的大部分时期:从三叠纪晚期到白垩纪末期。翼龙是已知最早进化出动力飞行的脊椎动物。它们的翅膀是由皮肤、肌肉和其他组织膜形成的,这些组织从脚踝延伸到显著延长的第四根手指[1]。
  翼龙有两种主要类型。基底翼龙是体型较小的动物,通常有全齿颚和长长的尾巴。它们宽阔的翅膜可能包括并连接后腿。在地面上,它们会有一个尴尬的伸展姿势,但它们的关节解剖结构和强壮的爪子会使它们成为有效的攀爬者,而且它们可能生活在树上。基生翼龙是小型脊椎动物的食虫动物或捕食者。后来翼龙(翼龙目)进化出许多体型、形状和生活方式。翼龙的翅膀较窄,后肢自由,尾巴高度缩小,脖子较长,头部较大。在地面上,翼龙的四肢都走得很好,姿态直立,后脚直立,翼指向上折叠,在三指“手”上行走。化石轨道表明,至少有一些物种能够奔跑、涉水或游泳[2]。
  翼龙身上有一层被称为比重瓶纤维的毛发状细丝,覆盖着它们的身体和翅膀的一部分[3]。在生活中,翼龙会有光滑或蓬松的皮毛,与鸟类的羽毛不同。早期的说法是,翼龙在很大程度上是冷血动物,像现代蜥蜴一样从环境中获得温暖,而不是燃烧卡路里。然而,后来的研究表明,它们可能是温血(吸热)、活跃的动物。呼吸系统使用气囊进行有效的单向“流通”呼吸,气囊将骨骼挖空到极致。翼龙的成年体型多种多样,从非常小的无颌类到已知最大的飞行生物,包括翼展至少9米的Quetzalcoatlus和Hatzegopteryx[4][5]。吸热、良好的氧气供应和强壮的肌肉相结合,使翼龙成为强大而能干的飞行者。
  翼龙飞行的机制目前还没有完全理解或建模。佐藤胜富美利用现代鸟类进行了计算,得出结论认为翼龙不可能在高空停留[6]。在《翼龙的姿态、运动和古生态学》一书中,有理论认为翼龙之所以能够飞行,是因为白垩纪晚期富含氧气、稠密的大气层[7]。然而,佐藤和《翼龙的姿态、运动和古生态学》一书的作者的研究都基于翼龙类海鸟的过时理论,而体型限制不适用于陆生翼龙,如阿志达翼龙和带翅翼龙。此外,Darren Naish得出结论,巨型翼龙不需要现在和中生代之间的大气差异[8]。
  另一个很难理解的问题是翼龙是如何起飞的。如果翼龙是冷血动物,那么体型巨大、冷血动物代谢效率低下的大型翼龙如何能够实现类似鸟类的起飞策略,只使用后肢产生推力,从而升空,目前尚不清楚。后来的研究表明,它们是温血动物,拥有强大的飞行肌肉,并使用飞行肌肉作为四足动物行走[9]。朴茨茅斯大学的Mark Witton和约翰·霍普金斯大学的Mike Habib认为翼龙使用跳跃机制来获得飞行[10]。它们翅膀前肢的巨大力量将使它们能够轻松起飞[9]。翼龙一旦升空,速度可达120公里/小时,飞行数千公里[10]。
  您的团队被要求根据化石测量,为至少一种大型翼龙的飞行过程建立一个合理的数学模型,并回答以下问题。

  1.对于您选择的翼龙物种,估计其正常飞行期间的平均速度。

  2.对于你选择的翼龙物种,估计它在正常飞行中的翅膀拍打频率。

  3.研究大型翼龙是如何起飞的;它们有可能像平地或水面上的鸟一样起飞吗?定量解释原因。

整体求解过程概述(摘要)

  翼龙的飞行原理一直困扰着进化生物学家。巨大的面积,再加上化石保存不善,使得对翼龙飞行的解释成了问题,而且常常引起争议。
  为了研究翼龙飞行的主题,我们创建了三个空气动力学模型,如下所示:

  模型一:滑动模型;
  模型二:机翼颤振模型;
  模型三:四足发射起飞模型。

  在模块I中,我们使用运动方程(EOM)来描述翼龙向下滑翔的动力学过程。该模型的约束条件主要是翼龙的重量和翼尖距地面或海面的高度。考虑到直接求解以函数为变量的优化问题具有挑战性,本文采用配点法。我们建立了步长为1s的离散点来描述翼龙在每个时刻的飞行状态。产生的滑动轨迹是一条平滑的曲线。
  在模块二中,根据EOMs和叶片单元理论,建立了基于颤振角和扭转角的机翼颤振模型。考虑到周期边界飞行姿态的约束,我们假设翼龙将上升到其原始高度。我们计算了翼龙在拍动翅膀时的运动状态的变化。
  基于相关文献和上述模型,本文提出了一个包含滑翔和颤振起飞的翼龙两级飞行模型。模型中的一个周期被假定为由滑动和连续拍打组成。通过计算机模拟,我们确定翼龙和格查尔亚特龙的平均速度分别为38.65m/s和42.49m/s,拍动频率分别为1.06Hz和0.83Hz。
  在模块III中,我们假设以下起飞程序:翼龙使用四足发射,然后在达到一定高度后利用空气动力爬升。建立参数后,模型模拟翼龙拍打翅膀和起飞的过程,评估其飞行趋势,判断其是否具备起飞的必要条件。
  模拟结果表明,翼龙和格查尔阿特拉斯四足动物在平地上发射后,可以借助上升气流起飞。而由于支撑力不足,水面阻力大,使得格查尔亚特鱼几乎不可能在水面上起飞,而翼龙则可以在特定角度上起飞。
  为了测试对空气密度的敏感性,我们还评估了在高空气密度环境中的飞行性能。总体而言,我们的结果对空气密度不确定性具有鲁棒性。分析表明,该模型对升力系数等关键参数具有较强的鲁棒性。

模型假设:

  通过对问题的全面分析,为了简化我们的模型,我们做出以下合理的假设。

  •假设1:所有相关文献中的翼龙化石数据和根据化石估计的身体数据都是可靠的,并且在允许的误差范围内。
  理由:所有化石数据都经过精确测量,所得数据可靠。现代三维重建方法[7]可以通过三维建模恢复恐龙的结构和外观,得到准确的恢复数据。

  •假设2:风向沿y轴,风速仅取决于海拔高度
  理由:在离地面不到400米的天空中,风向可以近似地视为与地面平行,风速取决于海拔高度[8]。然后我们可以人为地把风向作为y轴的正方向。

  •假设3:在大型翼龙的正常飞行过程中,翼龙使用一种飞行策略,先拍打翅膀升起,然后滑动一段距离。以一次上升和一次下滑为周期,周期开始和结束时的高度基本不变。
  理由:现存最大的鸟——秃鹫gryphus,翼展为5米,使用与上述类似的飞行策略,这是节省能源和增加飞行距离的最佳方式[9]。

  •假设4:在滑翔和拍打阶段,关节点的姿态移动是瞬时的。
  理由:扑翼阶段的过程比较复杂。翼龙会调整它的姿态来完成上升。这种姿态变化可视为飞行过程中的突然变化。

问题重述:

问题背景

  翼龙是一种已经灭绝的爬行动物,有近100种。尽管翼龙和恐龙生活在同一个时代,但它们不是恐龙。
  因为它们太大了,所以关于它们是否不能飞,或者如果能够飞,它们可能的功率能力、起飞方法和飞行特性可能是什么,也有争论。
  本课题组选取了两种具有代表性的翼龙——无齿翼龙和无齿翼龙作为研究对象。Quetzalcatlus是一种存在于晚白垩世晚期的翼手目动物,是已知最大的飞行动物。无齿翼龙是翼展为7-9米的翼龙,生活在公元前70-65百万年前的晚白垩世[1]。
  根据化石测量数据和建立的模型,可以更合理地量化两种翼龙的飞行能力。然后测定了这两种翼龙在正常飞行时的平均速度和翼瓣频率,判断它们是否有可能像鸟一样在平地或水面上起飞。
在这里插入图片描述
  问题重述

  考虑到问题陈述中确定的背景信息和限制条件,我们需要开发模型来评估两只翼龙的飞行能力,并解决以下问题:
  •问题1:通过化石和相关研究恢复选定翼龙的身体数据,并建立模型预测翼龙正常飞行时的速度。
  •问题2:根据前面问题中获得的模型和机翼颤振模型,计算所选翼龙的机翼襟翼频率。
  •问题3:讨论选定的大型翼龙是如何起飞的,以及它们是否可以像鸟一样在平地或水面起飞。

  相关工作

  翼龙一直是古生物学研究的热点。然而,随着翼展为5−7米的翼龙的发现,人们开始关注大型翼龙的飞行。
  但已经灭绝的动物的运动能力只能用有限的方法来评估。直接的实验是不可能的,所以分析必须依赖于对生物形态的功能类比和对保存下来的结构的生物力学分析。就翼龙而言,必须对现代滑翔机和飞行器的飞行能力进行评估[3]。
  近几十年来,人们在巴西早白垩世发现了精美的三维翼龙化石骨架,并保存了软组织,这为翼龙的飞行能力提供了重要的见解。
  19世纪中期,人们开始用工程学的方法研究人造机器的动力飞行,随后就开始讨论翼龙飞行的力学和空气动力学[6]。对翼龙飞行的讨论主要分为三个阶段:19世纪至20世纪中叶的早期描述,20世纪70年代和80年代的新活动,以及最近的空气动力学建模方法。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

1 clear;
2 clc;
3 v=[]; v(1)=10; %initial speed
4 gma=[]; gma(1)=0;
5 psi=[]; psi(1)=0;
6 x=[]; x(1)=0;
7 y=[]; y(1)=0;
8 h=[]; h(1)=200;
9 z=[];
10 m=18.6; %quality
11 Sw=2.26; %wing area
12 b=5.34; %span
13 w10=25; %basic wind speed
14 CL=1.6;
15 rho=1.23;
16 phi=0;
17 L=[]; L(1)=abs(0.5*rho*CL*Sw*v(1)^2);
18 Cdpro=0.014;
19 g=9.8;
20 k=1.1;
21 pi=3.14;
22 hmin=0.03;
23 i=1;
24 t=0.01;
25 W=[];
26 D=[];
27 a=h(1);
28 while(L(i)<=(m*g*3) && h(i)>0.5 && a>0)
29 D(i) = 0.5*rho*Cdpro*Sw*v(i)^2+0.5*rho*0.01*Sw*v(i)^2+(rho*k*(CL*Sw*v(i
))^2)/(2*pi*b^2);
30 W(i) = w10*log(h(i)/hmin)/log(10/hmin);
31 x(i+1) = v(i)*cos(gma(i))*cos(psi(i))*t+x(i);
32 y(i+1) = (v(i)*cos(gma(i))*sin(psi(i))-W(i))*t+y(i);
33 z(i) = (-v(i)*sin(gma(i)))*t;
34 h(i+1) = h(i)+z(i);
35 gma(i+1) = (L(i)*cos(phi)-m*g*cos(gma(i))+m*(w10*(-v(i))*sin(gma(i))/(
log(10/hmin)*h(i)))*sin(gma(i))*sin(psi(i)))*t/(m*v(i))+gma(i);
36 psi(i+1) = (L(i)*sin(phi)+m*(w10*(-v(i))*sin(gma(i))/(log(10/hmin)*h(i)
))*cos(psi(i)))*t/(m*v(i)*cos(gma(i)))+psi(i);
37 v(i+1) = (-D(i)+m*g*sin(gma(i))+m*(w10*(-v(i))*sin(gma(i))/(log(10/hmin
)*h(i)))*cos(gma(i))*sin(psi(i)))*t/m+v(i);
38 L(i+1) = 0.5*rho*CL*Sw*v(i)^2;
39 i = i+1;
40 fprintf(’%d’, v(i));
41 a = h(i)-b/2*abs(sin(phi))*cos(gma(i));
42 end
43 T = i*t
44 scatter3(x, y, h, ’p’);
45 xlabel(’X’), ylabel(’Y’), zlabel(’Z’);
46 grid on;
1 clear;
2 clc
;
3 v=[]; 4 v(1)=15.8121;
%initial speed
5 rou=1.23; 6 Cdpro=0.014; 7 m=18.6; %quality 8 g=9.8; 9 Sw=2.26; %wing area
10 CL=1.6;
11 k=1.1;
12 pai=3.14;
13 b=5.34;
%span
14 hmin=0.03;
15 w10=25;
%basic wind speed
16 i=1;
17 t=0.01;
18 L=[];
19
20 W=[];
21 phi=0;
22 gma=[];
23 gma(1)=1.283;
24 psi=[];
25
%psi(1)=-0.0176;
26 psi=-0.0267;
27 x=[];
28 x(1)=22.5759;
29 y=[];
30 y(1)=-88.6534;
31 z=[];
32 h=[];
33 h(1)=189.752;
34 D=[];
35 a=h(1);
36
37 n=[-b/2:0.01:b/2];
38 ky=[];
39 sum=0;
40 for d=1:(b/(2
*0.01))+1
41 ky(d)=-0.2
*n(d)^2+0.2
*b^2;
42 sum=ky(d)+sum
;
43 end
44 lambda=2
*sum/(b/0.01+1);
45
46 t_pudong=0.5;
47 theta_Max=45;
48 theta0=0;
49 theta=[];
50 dao_theta=[];
51
52 beta_Max=15;
53 beta0=0;
54 beta=[];
55 dao_beta=[];
56 f=4.96;
57 omega=[];
58 v_xiangdui=[];
59 yingjiao=[];
60 z_yingjiao=[];
61 Fnc=[];
62 Fna=[];
63 Fdf=[];
64 bianhua=[];
65 bianhua(1)=0;
66
67 for i=1:f*t_pudong/0.01
68 for j=1:(b/0.01)+1
69 Fnc(i)=0;
70 Fna(i)=0;
71 Fdf(i)=0;
72 t=i*0.01;
73 theta(i,j)=45*cos(2*pai*f*t)+theta0;
74 dao_theta(i,j)=2*n(j)*pai*f*theta_Max*(2*pai*f*t);
75 beta(i,j)=n(j)*(beta_Max*cos(2*pai*f*t)+beta0)/b;
76 dao_beta(i,j)=-0.25*((-0.2)*n(j)^2+0.2*b^2)*(2*pai*f*abs(n(j))*
beta_Max*cos(2*pai*f*t))/b;
77 omega(i,j)=(2*(0+2+beta(i,j))*v(i))/(2+lambda);
78 v_xiangdui(i,j)=(((dao_theta(i,j)-dao_beta(i,j))*cos(2+beta(i,j))-
omega(i,j))^2+(v(i)+(dao_theta(i,j)-dao_beta(i,j))*sin(2+beta(i,j)))^2)
^(1/2);
79 yingjiao(i,j)=atan(((dao_theta(i,j)-dao_beta(i,j))*cos(2))/(v(i)+(
dao_theta(i,j)-dao_beta(i,j))*sin(2)));
80 z_yingjiao(i,j)=yingjiao(i,j)+theta(i,j)+2;
81 Nc(i,j)=0.5*rou*v_xiangdui(i,j)^2*2*pai*z_yingjiao(i,j)*(-0.2*n(j)
^2+0.2*b^2)*0.00001;
82 Fnc(i)=abs(Nc(i,j)*0.00001)+Fnc(i);
83 ax(i,j)=abs(n(j))*4*pai^2*f^2*45*cos(2*pai*f*t)+bianhua(i)*sin(2+
beta(i,j))+v(i)*cos(2+beta(i,j))+0.5*((-0.2)*n(j)^2+0.2*b^2)*(-n(j)*
beta_Max*4*pai^2*f^2*cos(2*pai*f*t)/b);
84 Na(i,j)=0.25*rou*pai*(-0.2*n(j)^2+0.2*b^2)^2*ax(i,j);
85 Fna(i)=Na(i,j)*0.001+Fna(i);
86 Df(i,j)=0.664*(z_yingjiao(i,j))*(v(i)*cos(2+beta(i,j))+omega(i,j)*
sin(2+beta(i,j)));
87 Fdf(i)=Df(i,j)*0.001+Fdf(i);
88 end
89 t=0.01;
90 W(i)=w10*log(h(i)/hmin)/log(10/hmin);
91 x(i+1)=v(i)*cos(gma(i))*cos(psi(i))*t+x(i);
92 y(i+1)=(v(i)*cos(gma(i))*sin(psi(i))-W(i))*t+y(i);
93 z(i)=(-v(i)*sin(gma(i)))*t;
94 h(i+1)=h(i)-z(i);
95
96 gma(i+1)=(Fnc(i)*cos(phi)-(m*g+Fna(i))*cos(gma(i))+(m+Fna(i)/9.8)*(w10
*(-v(i))*sin(gma(i))/(log(10/hmin)*h(i)))*sin(gma(i))*sin(psi(i)))*t/(m*
v(i))+gma(i);
97 psi(i+1)=(Fnc(i)*sin(phi)+(m+Fna(i)/9.8)*(w10*(-v(i))*sin(gma(i))/(log
(10/hmin)*h(i)))*cos(psi(i)))*t/(m*v(i)*cos(gma(i)))+psi(i);
98 v(i+1)=(Fdf(i)+(m*g+Fna(i))*sin(gma(i))+(m+Fna(i)/9.8)*(w10*(-v(i))*sin
(gma(i))/(log(10/hmin)*h(i)))*cos(gma(i))*sin(psi(i)))*t/m+v(i);
99 a=h(i)-b/2*abs(sin(phi))*cos(gma(i));
100 bianhua(i+1)=(v(i+1)-v(i))/0.01;
101 if(h(i)>200.5||a<0)
102 break;
103 end
104 end
105 scatter3(x,y,h,’p’);
106 xlabel(’X’),ylabel(’Y’),zlabel(’Z’);
107 grid on;
1 clc;
2 clear;
3 data=xlsread(’sensitivity analysis.xlsx’);
4 x=data(:,1);
5 y=data(:,2);
6 z=data(:,3);
7 scatter3(x,y,z)
8 figure
9 [X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))’,linspace(min(y),max(y)),’v4
’);
10 pcolor(X,Y,Z);shading interp
11 figure,contourf(X,Y,Z)
12 figure,surf(X,Y,Z);
13 figure,meshc(X,Y,Z)
14 view(0,0);
15 figure,meshc(X,Y,Z);
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

云服务器与nas实现在冷热资源访问,nginx代理

在实际项目中&#xff0c;我们的文件存储是一个必不可少的环节&#xff0c;本博主了解到现在的存储方案有 购买纯系统的云服务器&#xff0c;自己安装个mino,再使用nginx代理给web使用购买OSS服务&#xff0c;现在有云厂商都有提供&#xff0c;储存价格也挺便宜的&#xff0c;…

13款趣味性不错(炫酷)的前端动画特效及源码(预览获取)分享(附源码)

文字激光打印特效 基于canvas实现的动画特效&#xff0c;你既可以设置初始的打印文字也可以在下方输入文字可实现激光字体打印&#xff0c;精简易用。 预览获取 核心代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

生物动力葡萄酒的快速指南

虽然我们大多数人都熟悉有机酿酒和农业&#xff0c;但围绕生物动力学仍有许多困惑和神秘。无论你是否完全陌生&#xff0c;或者你已经听到一些小道消息&#xff0c;我们在这里揭开这种独特的葡萄酒生产方法的神秘面纱。 生物动力葡萄酒就是一个更全面的有机酿酒过程&#xff0c…

Ros智行mini,opencv,Gmapping建图,自主导航auto_slam,人脸识别,语音控制

功能 一、Gmapping建图 二、自主导航 起始点 、终点 三、人脸识别 四、语音控制 完成任务: 机器人先建图 建完图后给出目标点&#xff0c;机器人就可以完成调用自主导航走到目标点&#xff0c;期间会调用激光雷达扫描局部环境来进行自主避障&#xff0c;到达终点后进行语音…

HCIP考试实验

实验更新中&#xff0c;部分配置解析与分析正在完善中........... 实验拓扑图 实验要求 要求 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3…

持续集成交付CICD:Jenkins使用GitLab共享库实现自动更新前后端项目质量配置

目录 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 2.Jenkins使用GitLab共享库实现自动更新前端项目质量配置 二、问题 1.Sonarqube如何添加自定义质量阈 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 (1)修改GitLab的Sonar.gr…

bert其他内容个人记录

Pre-training a seq2seq model BERT只是一个预训练Encoder&#xff0c;有没有办法预训练Seq2Seq模型的Decoder&#xff1f; 在一个transformer的模型中&#xff0c;将输入的序列损坏&#xff0c;然后Decoder输出句子被破坏前的结果&#xff0c;训练这个模型实际上是预训练一个…

【LeetCode刷题】-- 79.单词搜索

79.单词搜索 方法&#xff1a;使用回溯 使用dfs函数表示判断以网格的(i.j)位置出发&#xff0c;能否搜索到word(k)&#xff0c;其中word(k)表示字符串word从第k个字符开始的后缀子串&#xff0c;如果能搜索到&#xff0c;返回true,反之返回false 如果board[i][j]≠word[k]&am…

Netty线程模型

Netty线程模型 Netty中两个线程池, 分别是BossGroup和WorkGroup, 线程模型如下图所示&#xff1a; 模型解释&#xff1a; Netty 抽象出两组线程池BossGroup和WorkerGroup&#xff0c;BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写BossGroup和WorkerGr…

vue2 echarts饼状图,柱状图,折线图,简单封装以及使用

vue2 echarts饼状图&#xff0c;柱状图&#xff0c;折线图&#xff0c;简单封装以及使用 1. 直接上代码&#xff08;复制可直接用&#xff0c;请根据自己的文件修改引用地址&#xff0c;图表只是简单封装&#xff0c;可根据自身功能&#xff0c;进行进一步配置。&#xff09; …

springcloud多环境部署打包 - maven 篇

背景 在使用 springboot 和sringcloudnacos开发项目过程中&#xff0c;会有多种环境切换&#xff0c;例如开发环境&#xff0c;测试环境&#xff0c;演示环境&#xff0c;生产环境等&#xff0c;我们通过建立多个 yml 文件结合 profiles.active 属性进行环境指定&#xff0c;但…

k8s 安装 Longhorn

Longhorn 的 helm 模板官网地址&#xff1a;Longhorn 加入仓库 helm repo add longhorn https://charts.longhorn.iohelm repo update开始部署 helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.5.3检查pod运行状态是…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍&#xff1a; Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。该词来源于希腊语 chronos(χρ…

【桑基图】绘制桑基图

绘制桑基图 一、绘制桑基图&#xff08;1&#xff09;方法一&#xff1a;去在线网站直接绘制&#xff08;2&#xff09;方法二&#xff1a;写html之后在vscode上运行 二、遇到的问题&#xff08;1&#xff09;当导入一些excel的时候&#xff0c;无法绘制出桑基图 一、绘制桑基图…

用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

1、模式标准 模式名称&#xff1a;外观模式 模式分类&#xff1a;结构型 模式意图&#xff1a;为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上&#xff0c;使用户可以更方便地使用整个系统。 结构图&#xff1a; 适用于&#xff1a; 当你想为…

Nginx的安装、升级和管理

目录 一. nginx介绍 1. nginx简介 2. nginx和apache区别 二. nginx编译安装 1. 下载解压nginx安装包&#xff0c;并安装nginx依赖包 2. 创建运行用户和组 3. 编译安装并补全 4. 效验结果 三. 平滑升级nginx 1. 下载解压nginx安装包 2. 编译安装 3. 替换二进制文件 …

SpringMvc入坑系列(一)----maven插件启动tomcat

springboot傻瓜式教程用久了&#xff0c;回过来研究下SSM的工作流程&#xff0c;当然从Spring MVC开始&#xff0c;从傻瓜式入门处理请求和页面交互&#xff0c;再到后面深入源码分析。 本人写了一年多的后端和半年多的前端了。用的都是springbioot和vue&#xff0c;源码一直来…

机器学习实验六:聚类

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…

持续集成交付CICD: Sonarqube REST API 查找与新增项目

目录 一、实验 1.SonarQube REST API 查找项目 2.SonarQube REST API 新增项目 一、实验 1.SonarQube REST API 查找项目 &#xff08;1&#xff09;Postman测试 转换成cURL代码 &#xff08;2&#xff09;Jenkins添加凭证 &#xff08;3&#xff09;修改流水线 pipeline…

node切换版本

可打开黑窗口来进行命令输入操作&#xff1a; 1. node -v &#xff1a;查看当前版本 2.nvm list :查看已经下载的版本 3.nvm list available查看可用的node.js版本号&#xff1a; 4.nvm install node版本号(例如&#xff1a;nvm install 12.17.0)即可安装对应版本以及自动安装…