MATLAB 之 低层绘图操作和光照及材质处理

news2024/11/17 23:48:05

这里写目录标题

  • 一、低层绘图操作
    • 1. 曲线对象
    • 2. 曲面对象
    • 3. 文本对象
    • 4. 其他核心对象
      • 4.1 区域块对象
      • 4.2 方框对象
  • 二、光照和材质处理
    • 1. 光照处理
    • 2. 材质处理
      • 2.1 图形对象的反射特性
      • 2.2 material 函数

一、低层绘图操作

  • MATLAB 将曲线、曲面、文本等图形均视为对象,通过句柄设置这些对象的属性,从而绘制出更具个性化的图形。

1. 曲线对象

  • 曲线对象是坐标轴的子对象,它既可以定义在二维坐标系中,也可以定义在三维坐标系中。建立曲线对象使用 line 函数,其调用格式如下:
	句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,...)
  • 其中,对 x、y、z 的解释与高层曲线函数 plotplot3 等一样,其余参数的解释与前面介绍过的 figureaxes 函数类似。
  • 每个曲线对象也具有很多属性。除公共属性外,其他常用属性如下。
  • (1) Color 属性:该属性的取值是代表某颜色的字符或 RGB 值,用于定义曲线的颜色,默认值为当前坐标轴对象的 ColorOrder 属性定义的颜色。
  • (2) LineStyle 属性:定义线型,默认值为 ‘-’,即实线。
  • (3) LineWidth 属性:定义线宽,默认值为 0.5 磅。
  • (4) Marker 属性:定义数据点标记符号,默认值为 ‘none’。
  • (5) MarkerSize 属性:定义数据点标记符号的大小,默认值为 6 磅。
  • (6) XData、YData、ZData 属性:3 种属性的取值都是数值向量或矩阵,分别代表曲线对象的 3 个坐标轴数据。
  • 例如,我们利用曲线对象绘制曲线 y = sin ⁡ ( 2 π t ) y=\sin (2\pi t) y=sin(2πt) y = 3 2 e − 4 t sin ⁡ ( 4 3 t + π 3 ) y=\frac{\sqrt{3}}{2}e^{-4t}\sin (4\sqrt{3}t+\frac{\pi}{3}) y=23 e4tsin(43 t+3π)
  • 程序如下:
t=0:pi/100:pi/2;
y1=sin(2*pi*t);
y2=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);
figh=figure;
axes('GridLineStyle',':','XLim',[0,pi/2],'YLim',[-1,1]);
line('XData',t,'YData',y1,'LineWidth',1);
line(t,y2);
grid on
  • 程序运行结果如下图所示。

在这里插入图片描述

2. 曲面对象

  • 曲面对象也是坐标轴的子对象,它定义在三维坐标系中,而坐标系可以在任何视点下。建立曲面对象使用 surface 函数,其调用格式如下:
	句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2,...)
  • 其中,对 x、y、z 的解释与高层曲面函数 meshsurf 等一样,其余参数的解释与前面介绍过的 figureaxes 等函数类似。
  • 每个曲面对象也具有很多属性。除公共属性外,其他常用属性如下。
  • (1) EdgeColor 属性:该属性的取值是代表某颜色的字符或 RGB 值,还可以是 ‘flat’、‘interp’ 或 ‘none’,默认为黑色。定义曲面网格线的颜色或着色方式。
  • (2) FaceColor 属性:该属性的取值是代表某颜色的字符或 RGB 值,还可以是 ‘flat’(默认值)、‘interp’ 或 ‘none’。 定义曲面网格片的颜色或着色方式。
  • (3) LineStyle 属性:定义曲面网格线的线型,默认为实线。
  • (4) LineWidth 属性:定义曲面网格线的线宽,默认值为 0.5 磅。
  • (5) Marker 属性:定义曲面数据点标记符号,默认值为 ‘none’。
  • (6) MarkerSize 属性:定义曲面数据点标记符号的大小,默认值为 6 磅。
  • (7) XData、YData、ZData 属性:3 种属性的取值都是数值向量或矩阵,分别代表曲面对象的 3 个坐标轴数据。
  • 例如,我们利用曲面对象绘制三维曲面 y = sin ⁡ y cos ⁡ x y=\sin y\cos x y=sinycosx
  • 程序如下:
x=0:0.1:2*pi;
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
axes('view',[-37.5,30]);
hs=surface(x,y,z,'FaceColor','w','EdgeColor','flat');
grid on; 
xlabel('x-axis');
ylabel('y-axis');
zlabel('z-axis');
title('mesh-surf');
pause;
set(hs,'FaceColor','flat');
  • 开始网格片的颜色设置为白色,实际上得到的是网格图,如下图所示,这与高层函数 mesh 所画曲面相同。

在这里插入图片描述

  • 暂停后,诚信设置网格片的颜色,得到着色表面图,如下图所示。

在这里插入图片描述

3. 文本对象

  • 文本对象主要用于给图形添加文字标注。在文本对象中除使用一般的文本以外,还允许使用 LaTeX 字符。
  • 使用 text 函数可以根据指定位置和属性值添加文本说明,并保存句柄。该函数的调用格式如下:
	句柄变量=text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,...)
  • 其中,说明文字中除使用标准的 ASCII 字符外,还可使用 LaTeX 格式的控制字符。例如:
>> h=text(0.5,0.5,'{\gamma}={\rho}^2');
  • 将得到标注效果: γ = ρ 2 \gamma =\rho ^{2} γ=ρ2
  • 除公共属性外,文本对象的其他常用属性如下。
  • (1) Color 属性:定义文本对象的显示颜色,默认为黑色。
  • (2) String 属性:该属性的取值是字符串或字符串矩阵,它记录着文字标注的内容。
  • (3) Interpreter 属性:该属性的取值是 ‘tex’(默认值)或 ‘none’,该属性控制对文字标注内容的解释方式,即 LaTeX 方式或 ASCII 方式。
  • (4) FontSize 属性:定义文本对象的大小,其默认值为 10 磅。
  • (5) Rotation 属性:该属性的取值是数值量,默认值为 0。它定义文本对象的旋转角度,取正值时表示逆时针方向旋转,取负值时表示顺时针方向旋转。
  • 例如,我们利用曲线对象绘制 y = sin ⁡ θ y=\sin \theta y=sinθ y = cos ⁡ θ y=\cos \theta y=cosθ 并利用文字对象完成标注。
  • 程序如下:
theta=-pi:.1:pi;
y1=sin(theta);
y2=cos(theta);
h=line(theta,y1,'LineStyle',':','Color','g');
line(theta,y2,'LineStyle','--','Color','b');
xlabel('-\pi \leq \theta \leq \pi')
ylabel('sin\theta')
title('Plot of sin\theta')
text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4) ', 'FontSize',12)
set(h,'Color','r','LineWidth',2)   %改变曲线1的颜色和线宽
  • 程序运行结果如下图所示。

在这里插入图片描述

4. 其他核心对象

4.1 区域块对象

  • 区域块对象是指一个任意多边形区域。在 MATLAB 中,可以使用 patch 函数创建一个或多个多边形。有两种形式的 patch 函数,一种是高级语法形式,另一种是低级语法形式。
  • 前者通过指定每个小面的顶点坐标和颜色来创建区域块对象,后者通过指定所有顶点的坐标和各小面的顶点和颜色来创建。
  • 使用高级语法形式时,patch 函数的调用格式如下:
	patch(x,y,z,c)
  • 该函数在当前坐标轴中创建二维或三维空间中带填充模式的区域块对象。x、y、z 确定顶点坐标。如果 x、y、z 为矩阵,则 MATLAB 按列创建多个多边形。c 指定每一区 域块对象的颜色,它既可以用字符表示,也可以用 RGB 三元组表示。
  • 例如,我们将绘制一个用红色填充的正方形区域。
  • 程序如下:
x=[10, 10,25,25];
y=[10,25,25,10];
patch(x,y,[1,0,0])
  • 程序运行结果如下所示。

在这里插入图片描述

  • 例如,我们生成一个正十边形,其中用黄色填充。
  • 程序如下:
t=0:pi/5:2*pi;
patch(sin(t),cos(t),'y');
axis equal
  • 程序运行结果如下图所示。

在这里插入图片描述

  • patch 函数的低级语法格式只接受属性名和属性值配对参数,其调用格式如下:
	句柄变量=patch(属性名1,属性值1,属性名2,属性值2,...)
  • 除公共属性外,区域块对象的其他常用属性如下。
  • (1) Faces 属性:定义各小面的顶点。
  • (2) Vertices 属性:定义各顶点的坐标。
  • (3) FaceColor 属性:该属性的取值是代表某颜色的字符或 RGB 值,还可以是 ‘flat’、‘interp’ 或 ‘none’,默认为黑色。定义小面的颜色。
  • (4) EdgeColor 属性:该属性的取值是代表某颜色的字符或 RGB 值,还可以是 'flat、‘interp’ 或 ‘none’,默认为黑色。定义小面边缘的颜色。
  • (5) FaceVertexCData 属性:定义用 Faces/Vertices 方法所需要的颜色数据,其值是元素为 RGB 值的 n × 3 n×3 n×3 矩阵。
  • 例如,我们绘制一个用红色填充的正方形区域,可用 patch 函数的低级形式。
  • 程序如下:
>> vert=[10,10;10,25;25,25;25,10];
>> fac=[1,2,3,4];
>> patch('Faces',fac,'Vertices',vert,'FaceColor','r');
  • 程序运行结果如下图所示。

在这里插入图片描述

  • 例如,我们为说明 patch 函数的用法,下 面用它两种不同的格式来绘制一个由4个小面组成的扇面。
  • 首先通过小面顶点坐标和颜色进行创建,用 x、y、z 定义小面的顶点坐标,用 c 定义小面的颜色,程序如下:
x=[0,0,0,0;1,0.8,0.5,0;1,1,0.8,0.5];
y=[0,0,0,0;0.5,0.8,1,1;0,0.5,0.8,1];
z=[0.5,0.5,0.5,0.5;1.5,1.5,1.5,1.5;1.5,1.5,1.5,1.5];
mc=jet(4);      %定义色图矩阵
c(1,1,1:3)=mc(1,:);
c(1,2,1:3)=mc(2,:);
c(1,3,1:3)=mc(3,:);
c(1,4,1:3)=mc(4,:);
patch(x,y,z,c);
axis([0,1,0,1,0,2]);
grid
  • 程序运行后,生成如下图所示的 4 个小三角形组成的扇面。

在这里插入图片描述

  • 下面使用 patch 函数的第二种格式,用 vert 定义各顶点的坐标,用 fac 定义组成各小面的顶点的编号。程序如下:
vert=[0,0,0.5;1,0,1.5;1,0.5,1.5;0.8,0.8,1.5;0.5,1,1.5;0,1,1.5];
fac=[1,3,2;1,4,3;1,5,4;1,6,5];
mc=jet(4);
patch('Faces',fac,'Vertices',vert,'FaceVertexCData',mc, ...
    'FaceColor', 'Flat') ;
axis([0,1,0,1,0,2]);
grid
  • 程序运行后,生成如下图所示的图形。采用第 2 种格式建立区域块的时候,需要的数据更少,多个小面的公共顶点只需定义一次就够了,所以对于有多个小面的区域快更合适。

在这里插入图片描述

4.2 方框对象

  • 在 MATLAB 中,矩形、椭圆以及两者之间的过渡图形,如圆角矩形都称为方框对象。创建方框对象的低层函数是 rectangle,其调用格式如下:
	句柄变量=rectangle(属性名1,属性值1,属性名2,属性值2,...)
  • 除公共属性外,方框对象的其他常用属性如下。
  • (1) Position 属性:与坐标轴的 Position 属性基本相同,相对坐标轴原点定义方框的位置。该属性的取值格式为 [x, y, w, h],(x, y) 确定方框对象的左下角坐标,w、 h 分别指定方框的宽和高。
  • (2) Curvature 属性:定义方框边的曲率。该属性指定曲率,其取值格式为 [x, y],其中 x 为水平曲率,y 为垂直曲率。
  • 当值为 [0, 0] 时,创建矩形;当值为 [1, 1] 时,创建椭圆。
  • 如果只指定一个值,则水平边和垂直边都会发生相同长度的弯曲。曲率的大小由短的边确定。
  • 不带任何参数的 rectangle 函数绘制一个单位正方形,左下角坐标为 [0, 0],右上角坐标为 [1,1],曲率为 [0,0](即没有曲率)。
  • (3) LineStyle 属性:定义线型,默认为实线。
  • (4) LineWidth 属性:定义线宽,默认值为 0.5 磅。
  • (5) EdgeColor 属性:定义边框线的颜色,默认为黑色。
  • (6) FaceColor 属性:定义填充颜色,默认值为 ‘none’。
  • 例如,我们在同一个图形窗口种创建矩形、圆角矩形、椭圆和圆各一个,并使用不同的线型和线宽。
  • 程序如下:
subplot(2,2,1);
rectangle('Position',[2,3,25,15],'LineWidth',3);
subplot(2,2,2);
rectangle('Position',[3,5,15,8],'Curvature',0.4,'LineWidth',2);
subplot(2,2,3);
rectangle('Position',[5,3,10,15],'Curvature',[1,1]);
subplot(2,2,4);
rectangle('Position',[5,3,10,10],'Curvature',[1,1],...
    'LineStyle', '--','FaceColor','r');
axis equal

  • 程序运行结果如下图所示。

在这里插入图片描述

二、光照和材质处理

  • 使用光源对象实现光照处理,可以将图形表现得更加真实,使图形表面微妙的差异更清楚。光源对象是不可见的,但是可以像设置其他图形对象的属性那样设置光源对象的类型、颜色、位置和其他属性。
  • 材质体现了图形对象的反射特性,修改区域块和曲面对象的反射特性,可以改变在场景中应用光照时对象的显示外观。

1. 光照处理

  • MATLAB 提供 light 函数创建光源对象,其调用格式如下:
	句柄变量=light(属性名1,属性值1,属性名2,属性值2,...)
  • 发光对象有如下 3 个重要属性。
  • (1) Color 属性:设置光的颜色,默认为白色。
  • (2) Style 属性:设置光源对象是否在无穷远,可取值为 ‘infinite’(默认值)和 ‘local’,分别表示无穷远光和近光。
  • (3) Position 属性:该属性的取值是数值向量,取三维坐标点组成的向量形式 [x, y, z],用于设置光源对象与坐标轴原点的距离,发光对象的位置与 Style 属性有关。
  • 若 Style 属性为 ‘local’,则设置的是光源的实际位置。
  • 若Style 属性为 ‘infinite’,则设置的是光线射过来的方向,表示穿过该点射向原点。
  • 假如函数不包含任何参数,则采用默认设置:白光、无穷远、穿过 (1,0,1) 点射向坐标原点。
  • 利用 lighting 命令可以设置光照模式,其格式如下:
	lighting选项
  • 其中,选项有 4 种取值:flat、gouraud、phong、none。 flat 选项使得入射光均匀洒落在图形对象的每个面上,是默认选项;gouraud 选项先对顶点颜色插补,再对顶点勾画的面上颜色进行插补,用于表现曲面;phong 选项对顶点处的法线插值,再计算各个像素的反光,它生成的光照效果好,但更费时;none 选项关闭所有光源。
  • 例如,我们绘制光照处理后的球面并观察不同光照模式下的效果。
  • 程序如下:
[x,y,z]=sphere(20);
subplot(1,4,1);
surf(x,y,z);
axis equal;
shading interp;
hold on;
subplot(1,4,2);
surf(x,y,z);
axis equal;
light('Position',[0,1,1]);
shading interp;
lighting flat;
hold on;
plot3(0,1,1,'p');
text(0,1,1,'light');
subplot(1,4,3);
surf(x,y,z);
axis equal;
light('Position',[0,1,1]);
shading interp;
lighting gouraud;
hold on;
subplot(1,4,4);
surf(x,y,z);
axis equal;
light('Position',[0,1,1]);
shading interp; 
lighting phong;
  • 程序运行结果如下。4 个球分别是没有使用光照,使用 flat 光照,使用 gouraud 光照和使用 phong 光照时的显示效果,第二个球还标出了光源的位置

在这里插入图片描述

2. 材质处理

  • 材质体现了图形对象的反射特性,修改区域块和曲面对象的反射特性,可以改变在场景中应用光照时对象的显示外观。

2.1 图形对象的反射特性

  • 图形对象的反射特性包括镜面反射和漫反射、环境光、镜面反射指数、镜面反射光的颜色和背面光照,可以组合使用这几种特性来生成特殊的显示结果。
  • (1) 镜面反射和漫反射。区域块和曲面对象的 SpecularStrength 属性用来控制对象表面镜面反射的强度,属性值取 0~1 之间的数,默认取 0.9。DiffuseStrength 属性用来控制对象表面漫反射的强度,属性值取 0~1 之间的数,默认值取 0.6。
  • (2) 环境光。环境光不是镜面光,它均匀地洒在场景中的所有对象上。只有在坐标系中有 Light 对象时环境光才可见。AmbientStrength 属性是一个用于区域块和曲面对象的属性,确定特定对象上环境光的强度,属性值取 0~1 之间的数,默认值取 0.3。
  • (3) 镜面反射指数。镜面反射光的大小与区域块和曲面对象的 SpecularExponent 属性有关,该属性的值介于 1~500 之间,默认值为 10。
  • (4) 镜面反射光的颜色。镜面反射光的颜色可以有一个变化范围,即从对象颜色与光源颜色的组合色变到只有光源颜色。区域块和曲面对象的 SpecularColorReflectance 属性控制这个颜色,属性值取 0~1 之间的数,默认值为 1。
  • (5) 背面光照。背面光照可用于显示对象内表面和外表面的差别。区域块和曲面对象的 BackFaceLighting 属性控制该效果,属性取值为 ‘unlit’、‘lit’ 和 ‘reverselit’(默认值)。

2.2 material 函数

  • 使用 material 函数也可以设置区域块和曲面对象的表面反射特性,其调用格式如下:
  • (1) material shiny:镜面反射光的强度比漫反射光和环境光的强度要高得多,镜面光的颜色只决定于光源的颜色。
  • (2) material dull:要进行漫反射,没有镜面反射,但是反射光的颜色只与光源有关。
  • (3) material metal:镜面反射很强,环境光和漫反射光较弱,反射光的颜色与光源和对象的颜色都有关系。
  • (4) material([ka,kd,ks]):设置对象的环境光、漫反射光和镜面光的强度。
  • (5) material([ka,kd,ks,n]):设置环境光、漫反射光、镜面光的强度以及对象的镜面反射指数。
  • (6) material([ka,kd,ks,n,sc]):设置环境光、漫反射光、镜面光的强度、对象的镜面反射指数以及镜面反射光的颜色。
  • (7) material default:将环境光、漫反射光、镜面光的强度、对象的镜面反射指数和镜面反射光的颜色设置为默认值。
  • 这里需要注意的是,material 函数设置坐标系中所有区域块和曲面对象的 AmbientStrength、 DiffuseStrength、SpecularStrength、 SpecularExponent 和 SpecularColorReflectance 属性。坐标系中必须有一个可见的 Light 对象。
  • 例如,我们生成一个球体和一个立方体,观察表面反射特性设置效果。
  • 程序如下:
sphere(36);
h=findobj('Type','surface');
set (h,'FaceLighting','phong','FaceColor','interp', ...
    'EdgeColor',[0.4,0.4,0.4],'BackFaceLighting','lit')
hold on
vert=[2,0,-1;2,1,-1;3,0,0;3,0,-1;2,0,0;2,1,0;3,1,0;3,0,0];
fac=[1,2,3,4;2,6,7,3;4,3,7,8;1,5,8,4;1,2,6,5;5,6,7,8];
patch('Faces',fac,'Vertices',vert,'FaceColor','y');
light('Position',[1,3,2]);
light('Position',[-3,-1,3]);
material shiny
axis equal
hold off
  • 程序中用 findobj 函数查找 Type 属性为 surface 的对象,从而可以获取该球面的句柄,进而设置其属性。
  • 球面使用了 phong FaceLighting 属性值,因为生成了最平滑的光照插值效果。
  • vertfac 定义立方体。默认时,立方体使用 flat Facelighting 属性值增强每个边的可见性。
  • material shiny 命令会影响立方体和球体的反射属性。因为球体是闭合的,所以 BackFaceLighting 属性从默认设置变成了正常光照,删除了不必要的边缘效应。程序运行后,生成的图形效果如下图所示。
    在这里插入图片描述

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

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

相关文章

五、一些经典的网络架构

一、Alexnet 2012年卷积神经网络的开篇鼻祖 但放到现在确实有很多的弊端和有待改进的地方 1,网络基本架构 8层网络,其中有5层卷积,3层全连接 网络层数的定义:主要看有没有参数运算的参与,例如卷积层和全连接就可以…

Xubuntu22.04之安装少儿编程scratch3.3(一百八十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

SPEC CPU 2006 gcc version 8.3.0 (Uos 8.3.0.3-3+rebuild) x86_64 源码编译tools 错误处理笔记

编译tools 拷贝tools到安装目录 cp /mnt/iso/tools /opt/speccpu2006/ -r 执行编译 su rootcd /opt/speccpu2006/tools/src sh -x buildtools 错误 undefined reference to __alloca 编辑./make-3.82/glob/glob.c,注释掉以下宏判断 you should not run config…

「网络编程」第二讲:socket套接字(四 - 完结)_ Linux任务管理与守护进程 | TCP协议通讯流程

「前言」文章是关于网络编程的socket套接字方面的,上一篇是网络编程socket套接字(三),这篇续上篇文章的内容,下面开始讲解! 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先…

linux之用户和用户组

在此之前我们需要先了解用户和用户组的区别 用户是我们可以登录的账号,而用户组是用户的小组,组也可以分为主组和附属组,主组是用户的主要组,附属而是用户的附加组 目录 1.添加新用户账号 2.用户口令的管理 3.用户组命令 1.添加…

被测系统架构与数据流分析

开源项目litemall系统架构(https://github.com/linlinjava/litemall) 角色与数据用户产品前端技术栈后端技术栈数据存储 开源项目Mall的系统架构(https://github.com/macrozheng/mall) 角色与数据用户产品前端技术栈后端技术栈服务治理技术栈监控技术栈大数据处理技术栈数据存…

校园视频AI分析预警系统 TesnorFlow

校园视频AI分析预警系统通过分布式TensorFlow模型训练,校园视频AI分析预警系统对学生的行为进行实时监测,当系统检测到学生出现打架、翻墙、倒地、抽烟等异常行为时,校园视频AI分析预警系统将自动发出警报提示相关人员及时采取措施。深度学习…

Elasticsearch 和数据架构:改进分析和存储的 4 个基本工具

作者:Emily McAlister 组织越来越依赖数据来做出有效的、基于证据的决策来推动业务成果。 无论是评估市场状况和改善客户体验、确保应用程序正常运行时间还是保护组织安全,来自多个来源(包括消费者和内部系统)的数据对于日常运营都…

开源URL短链接服务Shlink

最近一直有人在问,docker 查询注册表失败的问题,目前老苏验证可用的方法有 2 个: 方法一(可用): 看过老苏以前文章的读者都知道,在遇到发布到 ghcr.io 的镜像时,老苏都会推荐用 do…

MacOS Ventura 13.4.1 (22F82) 带 OC 引导双分区黑苹果镜像

苹果今日向 Mac 电脑用户推送了 macOS 13.4.1 更新(内部版本号:22F82),根据Apple的发布说明,该更新提供了重要的安全修复,并建议所有用户进行更新。Apple还为无法运行Ventura的用户发布了macOS 11.7.8和mac…

Git进阶系列 | 5. Rebase vs Merge

Git是最流行的代码版本控制系统,这一系列文章介绍了一些Git的高阶使用方式,从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章,这是第5篇。原文:Rebase vs. Merge: Integrating Changes in Git[1] 大多数开发人员都理解在G…

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上 python项目打包成exe可执行文件 ## 步骤一、安装pyinsatller ## 步骤二、使用pyinstaller打包Python程序 ## 操作演示 ## 注意事项!! python的Flask接口部署(Linux) ##…

二叉树-理论基础

文章目录 前言一、二叉搜索树平衡二叉搜索树 二、二叉树的存储方式二叉树的遍历方式二叉树的定义总结 前言 二叉树有两种主要的形式:满二叉树和完全二叉树。满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上…

16.vant Weapp

目录 1 使用npm 2 安装 vant 3 构建npm 4 去除 style:v2 5 使用 vant 6 样式变量 1 使用npm 微信小程序不支持下面三种包 不支持依赖 Node.js 内置库的包不支持依赖 浏览器内置对象 的包不支持依赖 C插件 的包 除去上面三种,能用的包就不多了&#…

面向AI的新编程范式

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 联合制作 / 声网 产品统筹 / bobo 录音间 / 声湃轩北京站 在这期播客节目中,我们将探讨AI与程序员如何共同进步。随着AI热潮席卷全球,许多程序员尝试着使…

python爬虫_python基础数据类型

文章目录 ⭐前言⭐python💖 Number💖 String💖 List💖 Tuple💖 Dict ⭐结束 ⭐前言 大家好,我是yma16,本文分享关于python的基础数据类型,作为python爬虫专栏的基石。 ⭐python 发…

【Note8】网络管理

文章目录 1.MII介绍2.BMC MAC3.MDIO&MDC4. 1.MII介绍 SOC内部没有网络MAC外设:缺:网络效率不高,一般芯片内置的MAC会网络加速引擎,如网络专用DMA,网络处理效率会很高。 SOC内部集成网络MAC外设:MII/RM…

【MySQL】不就是子查询

前言 今天我们来学习多表查询的下一个模块——子查询,子查询包括了标量子查询、列子查询、行子查询、表子查询,话不多说我们开始学习。 目录 前言 目录 一、子查询 1. 子查询的概念 2. 子查询语法格式 2.1 根据子查询结果不同可以分为:…

C++——内联函数

目录 1. 概念 2.特性 3. 经典面试题 1. 概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。 以Add函数为例: int Add(int x, int y) {int z x…

RabbitMQ基础与实操复习

RabbitMQ基础复习 1、MQ引言1.1 什么是MQ1.2 MQ有哪些1.3 不同MQ特点 2、RabbitMQ引言2.1 RabbitMQ2.2 RabbitMQ安装 3、RabbitMQ配置3.1 RabbitMQ命令行3.2 Web管理界面3.2.1 overview概览3.2.2 Admin用户和虚拟主机管理 4、RabbitMQ常用消息模型测试4.1 RabbitMQ支持的消息模…