Matlab(画图进阶)

news2024/12/23 13:39:00

       

目录

大纲

 1.特殊的Plots

1.1 loglog(双对数刻度图)

​1.3 plotyy(创建具有两个y轴的图形)

 1.4yyaxis(创建具有两个y轴的图)

1.5 bar

3D条形图(bar3)

1.6 pie(饼图)

3D饼图

1.7 polar

 2.Stairs And Ste阶梯图

 3.Boxplot 箱型图和Error Bar误差条形图

3.1 boxplot

 3.2 errorbar

 4.fill(创建二维填充补片)

 5.RGB颜色

 6.imagesc(使用缩放颜色显示图像)

7.颜色条和方案

 8.3D Plots

 8.1.plot3

 8.2 mesh()和surf()

 8.3 contour()

 8.4 meshc()和surfc()

 9.view()视角

10.光线light():

 11.patch()


       在我们实际应用Matlab的过程中,往往还需要更加高难度的画图技术才可以满足我们的需求,高超的技术往往需要最朴实的手法,今天让我们一探究竟!!!

大纲

 1.特殊的Plots

plots函数
loglog图与对数刻度为两个轴
semilogxx轴为对数刻度,y轴为线性刻度的图形
semilogyy轴为对数刻度,x轴为线性刻度的图形
yyaxis左边和右边有y标记标签的图形
hist直方图、柱形图
bar条形图
pie饼图
polarlot极坐标图

1.1 loglog(双对数刻度图)

语法一:loglog(x,y) 在 x 轴和 y 轴上应用以 10 为底的对数刻度来绘制 x 和 y 坐标

  • 要绘制由线段连接的一组坐标,将x和y指定为相同长度的向量
  • 在同一组坐标区上绘制多组坐标,将x和y中的至少一个指定为矩阵

示例:

将 x 定义为一个由区间 [10−1,102] 内的 50 个对数间距数组成的向量。将 y 定义为 2x。然后绘制 x 和 y,并调用 grid 函数显示网格线

x = logspace(-1,2);%loglog默认就是以10为底的指数,所以这里只用定义上标数值便可
y = 2.^x;
loglog(x,y)
grid on

 语法二:loglog(x1,y1,...,xn,yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。

示例:

创建一个由 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给 loglog 绘制两个线条。

x = logspace(-1,2);
y1 = 10.^x;
y2 = 1./10.^x;
loglog(x,y1,x,y2)
grid on

 语法三:loglog(x,y,LineSpec) 使用指定的线型、标记和颜色创建绘图

示例:

创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。将线型指定为 's' 以显示不带连接线的方形标记。将标记填充颜色指定为 RGB 三元组 [0 0.447 0.741],它对应于深蓝色。

x = logspace(-1,2,20);
y = 10.^x;
loglog(x,y,'s','MarkerFaceColor',[0 0.447 0.741])
grid on

1.2 semilogx(双对数图,x轴对数刻度)

语法一:semilogx(x,y) 在 x 轴上使用以 10 为底的对数刻度、在 y 轴上使用线性刻度来绘制 x 和 y 坐标。

  • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

  • 要在同一组坐标区上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

示例:

将 x 定义为一个由从 0.1 到 100 的对数间距值组成的向量,将 y 定义为 x 的副本。创建 x 和 y 的线性对数图,并调用 grid 函数显示网格线。

x = logspace(-1,2);
y = x;
semilogx(x,y)
grid on

 语法二:semilogx(x1,y1,...,xn,yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式

示例:

创建一个由对数间距 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 x-y 对组传递给 semilogx 绘制两个线条。

%y = logspace(a,b) 生成一个由在 10^a 和 10^b(10 的 N 次幂)之间的 50 个对数间距点组成的行向量 y。logspace 函数对于创建频率向量特别有用。该函数是 linspace 和“:”运算符的对数等价函数。
x = logspace(-1,2);
y1 = x;
y2 = -x;
semilogx(x,y1,x,y2)
grid on

 语法三:semilogx(x,y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

示例:

创建一组 x 坐标和 y 坐标,并将其显示在线性对数图中。将线型指定为 'o' 以显示不带连接线的圆形标记。将标记填充颜色指定为 RGB 三元组 [0 0.447 0.741],它对应于深蓝色。

%在10的幂10^-1和10^2之间生成15个点
x = logspace(-1,2,15);
y = 12 + x;
semilogx(x,y,'o','MarkerFaceColor',[0 0.447 0.741])
grid on

​1.3 plotyy(创建具有两个y轴的图形)

不建议使用,有版本兼容问题

语法一:plotyy(X1,Y1,X2,Y2)绘制 Y1 对 X1 的图,在左侧显示 y 轴标签,并同时绘制 Y2 对 X2 的图,在右侧显示 y 轴标签。

示例:

  • 使用两个不同的y轴在一个图上绘制两个数据集
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure 
plotyy(x,y1,x,y2)

  • 使用两个y轴在一个图上绘制两个数据集,添加标题和轴标签
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);

figure % new figure
%hAx是两个坐标轴的句柄,hLine1和hLine2分别是第一条曲线和第二条曲线的句柄
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);


title('Multiple Decay Rates')
xlabel('Time (\musec)')

ylabel(hAx(1),'Slow Decay') % left y-axis 
ylabel(hAx(2),'Fast Decay') % right y-axis

 1.4yyaxis(创建具有两个y轴的图)

语法一:yyaxis left 激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。

示例:

创建左右两侧都有 y 轴的坐标区。基于左侧 y 轴绘制一组数据的图。然后使用 yyaxis right 激活右侧,使后续图形函数作用于该侧。基于右侧 y 轴绘制第二组数据的图,并为右侧 y 轴设置范围。

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

语法二:yyaxis right 激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。

语法三:yyaxis(ax,___) 指定 ax 坐标区(而不是当前坐标区)的活动侧。如果坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。指定坐标区作为第一个输入参数。使用单引号将 'left' 和 'right' 引起来。

从R2019b开始,我们可以使用 tiledlayout 和 nexttile 函数显示分块图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。通过指定 ax1 作为 yyaxis 的第一个输入,在顶部坐标区中添加第二个 y 轴。如果不指定坐标区,yyaxis 将向当前坐标区添加第二个 y 轴。

>> colororder({'b','m'})%可以更改左右侧的颜色 b-蓝色  m-粉色

x = linspace(1,10);
tiledlayout(2,1)%创建一个2*1分块图布局

% Top plot
ax1 = nexttile;%调用函数nexttilt函数创建坐标区对象
yyaxis(ax1,'left')
plot(ax1,x,sin(x))
yyaxis(ax1,'right')
plot(ax1,x,exp(x))

% Bottom plot
ax2 = nexttile;
plot(ax2,1:10)

1.5 bar

语法一:bar(y) 创建一个条形图,y 中的每个元素对应一个条形。

  • 要绘制单个条形序列,请将 y 指定为长度为 m 的向量。这些条形沿 x 轴从 1 到 m 依次放置。

  • 要绘制多个条形序列,请将 y 指定为矩阵,每个序列对应一列。

示例:

  • 创建条形图
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)

  • 指定沿x轴的条形位置
x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)

  •  指定条形宽度
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)%将各条形的宽度设置为各条形可用总空间的 40%。

  •  显示条形组
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];%显示四个条形组,每一组包含三个条形。
bar(y)

  •  显示堆叠条形图
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y,'stacked')%为矩阵中的每一行显示一个条形。每个条形的高度是行中各元素之和。

  •  在条形末端指定标签
x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = bar(x,vals);

       我们可以使得在条形序列的末端显示值,通过获得Bar对象的XEndPoints和YEndPoints属性,获取条形末端的坐标,将这些坐标传递给text函数,并指定垂直和水平对齐的方式,让值显示在条形末端上方居中处

xtips1 = b(1).XEndPoints;
ytips1 = b(1).YEndPoints;
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')

xtips2 = b(2).XEndPoints;
ytips2 = b(2).YEndPoints;
labels2 = string(b(2).YData);
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')

  • 3D条形图(bar3)

x = [1 2 5 4 8]; y = [x;1:5];
subplot(1,3,1); bar(x); title('A bargraph of vector x');
subplot(1,3,2); bar(y); title('A bargraph of vector y');
subplot(1,3,3); bar3(y); title('A 3D bargraph');

1.6 pie(饼图)

语法一:pie(x) 使用 X 中的数据绘制饼图。饼图的每个扇区代表 X 中的一个元素。

  • 如果 sum(X) ≤ 1X 中的值直接指定饼图扇区的面积。如果 sum(X) < 1pie 仅绘制部分饼图。

  • 如果 sum(X) > 1,则 pie 通过 X/sum(X) 对值进行归一化,以确定饼图的每个扇区的面积。

  • 如果 X 为 categorical 数据类型,则扇区对应于类别。每个扇区的面积是类别中的元素数除以 X 中的元素数的结果。

示例:

  • 创建带偏移扇区的饼图
X = [1 3 0.5 2.5 2];
pie(X)%创建向量 X 的饼图。

我们可以将对应的explode元素设置为1来偏移第二和第四块饼图扇区

explode = [0 1 0 1 0];
pie(X,explode)

  • 指定饼图的文本标签
X = 1:3;
labels = {'斗破','火影','海贼'};
pie(X,labels)

  •  修改饼图的文本标签
>> X = 1:3;
labels = {'斗破','火影','海贼'};
p=pie(X,labels)

 获取标签“Profit”的文本对象。更改其颜色和字体大小。使用圆点表示法设置属性。

t=p(6);
>> t.BackgroundColor='yellow';
>> t.EdgeColor='red';
>> t.FontSize=15

t = 

  Text (海贼) - 属性:

                 String: '海贼'
               FontSize: 15
             FontWeight: 'normal'
               FontName: 'Helvetica'
                  Color: [0 0 0]
    HorizontalAlignment: 'left'
               Position: [1.1000 -2.6942e-16 0]
                  Units: 'data'

  显示 所有属性 可修改属性

        BackgroundColor: [1 1 0]
           BeingDeleted: 'off'
             BusyAction: 'queue'
          ButtonDownFcn: ''
               Children: [0×0 GraphicsPlaceholder]
               Clipping: 'off'
                  Color: [0 0 0]
              CreateFcn: ''
              DeleteFcn: ''
              EdgeColor: [1 0 0]
                Editing: 'off'
                 Extent: [1.1000 -0.0897 0.2804 0.1794]
              FontAngle: 'normal'
               FontName: 'Helvetica'
               FontSize: 15
          FontSmoothing: 'on'
              FontUnits: 'points'
             FontWeight: 'normal'
       HandleVisibility: 'on'
                HitTest: 'on'
    HorizontalAlignment: 'left'
            Interpreter: 'tex'
          Interruptible: 'on'
              LineStyle: '-'
              LineWidth: 0.5000
                 Margin: 3
                 Parent: [1×1 Axes]
          PickableParts: 'visible'
               Position: [1.1000 -2.6942e-16 0]
               Rotation: 0
               Selected: 'off'
     SelectionHighlight: 'on'
                 String: '海贼'
                    Tag: ''
                   Type: 'text'
          UIContextMenu: [0×0 GraphicsPlaceholder]
                  Units: 'data'
               UserData: []
      VerticalAlignment: 'middle'
                Visible: 'on'
  •  指定百分比标签的格式
X = [1/3 2/3];
pie(X,'%.3f%%')%要在标签中包含百分号,请在表达式末尾指定 '%%'。

 

  • 3D饼图

>> X = 1:3;
labels = {'斗破','火影','海贼'};
pie3(X,labels)

1.7 polar

%theta 弧度角  r 每个点的半径值
x = 1:100; theta = x/10; r = log10(x);
subplot(1,4,1); polar(theta,r);
theta = linspace(0, 2*pi); r = cos(4*theta);
subplot(1,4,2); polar(theta, r);
theta = linspace(0, 2*pi, 6); r = ones(1,length(theta));
subplot(1,4,3); polar(theta,r);
theta = linspace(0, 2*pi); r = 1-sin(theta);
subplot(1,4,4); polar(theta , r);

 2.Stairs And Ste阶梯图

stair阶梯图
stem绘制离散序列数据
x = linspace(0, 4*pi, 40); y = sin(x);
subplot(1,2,1); stairs(y);
subplot(1,2,2); stem(y);

 3.Boxplot 箱型图和Error Bar误差条形图

boxplot用箱线图可视化汇总统计量
errorbar含误差条的线图

3.1 boxplot

箱线图提供样本数据的汇总统计量的可视化,并包含以下特性:

  • 每个箱子的底部和顶部分别表示样本的第 25 个和第 75 个百分位数。每个箱子的底部和顶部之间的距离表示四分位差。

  • 每个箱子中间的红线表示样本中位数。如果中位数不在箱子的中心,则绘图显示样本偏度。

  • 须线是自每个箱子的顶部向上延伸和底部向下延伸的线条。须线从四分位差的端点延伸到须线长度内最远的观测值(相邻值)。

  • 超出须线长度的观测值标记为离群值。默认情况下,离群值是距离箱子底部或顶部超过 1.5 倍四分位差的值。不过,您可以通过使用额外的输入参数来调整此值。离群值显示为红色 + 号。

  • 缺口显示样本间中位数的变异性。计算缺口的宽度,使得缺口不重叠的框在 5% 显著性水平上具有不同中位数。显著性水平基于正态分布假设,但对于其他分布,中位数比较也可合理地认为是稳健的。比较箱线图中位数就像目测假设检验,类似于用于均值的 t 检验。在某些情况下,缺口可能会延伸到箱子外部。

 3.2 errorbar

errorbar(x,y,neg,pos) 在每个数据点处绘制一个垂直误差条,其中 neg 确定数据点下方的长度,pos 确定数据点上方的长度。

 4.fill(创建二维填充补片)

语法一:fill(x,y,c) 将填充多边形区域绘制为补片,其顶点位于由 x 和 y 指定的 (x,y) 位置。

  • 要绘制一个区域,请将 X 和 Y 指定为向量。

  • 要绘制多个区域,请将 X 和 Y 指定为矩阵,其中每列对应一个多边形。

示例:

x = [0 4 5 2 1];
y = [0 0 2 4 3];
fill(x,y,'r')

t =(1:2:15)'*pi/8; %关键算弧度
x = sin(t); y = cos(t);
fill(x,y,'r'); axis square off;
text(0,0,'STOP','Color', 'w', 'FontSize', 80, ...
'FontWeight','bold', 'HorizontalAlignment', 'center');

 练习:

 5.RGB颜色

 颜色自查表:

 6.imagesc(使用缩放颜色显示图像)

语法一:imagesc(C) 将数组 C 中的数据显示为一个图像,该图像使用颜色图中的全部颜色。C 的每个元素指定图像的一个像素的颜色。生成的图像是一个 m×n 像素网格,其中 m 和 n 分别是 C 中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心。

示例:

创建矩阵 C。显示 C 中数据的图像。向图添加颜色栏以显示当前颜色图。默认情况下,imagesc 色阶颜色范围以便图像使用颜色图中的所有颜色,其中 C 中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。

>> C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(C)
>> colorbar

  •  向三维视图的坐标区添加图像
Z = 10 + peaks;
surf(Z)
hold on
imagesc(Z)

 语法二:imagesc(x,y,C) 指定图像位置。使用 x 和 y 可指定与 C(1,1) 和 C(m,n) 对应的边角的位置。要同时指定两个边角,请将 x 和 y 设置为二元素向量。要指定第一个边角并让 imagesc 确定另一个,请将 x 和 y 设为标量值。图像将根据需要进行拉伸和定向。

示例:

放置图像,使其位于 x 轴上的 5 和 8 之间及 y 轴上的 3 和 6 之间。

x = [5 8];
y = [3 6];
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(x,y,C)

注意:对应于 C(1,1) 的像素在点 (5,3) 上居中显示。对应于 C(3,4) 的像素在点 (8,6) 上居中显示。imagesc 在这两个点之间确定图像其余部分的位置和方向。

7.颜色条和方案

>> [x, y] = meshgrid(-3:.2:3,-3:.2:3);
z = x.^2 + x.*y + y.^2; surf( x, y, z); box on;
set(gca,'FontSize', 16); zlabel('z');
xlim([-4 4]); xlabel('x'); ylim([-4 4]); ylabel('y');
imagesc(z); axis square; xlabel('x'); ylabel('y');
>> colorbar
>> colormap(hot);

 colormap(cool);

colormap(spring);

 颜色总表:

 8.3D Plots

plot3三维线图像
surf三维阴影曲面图
surfc三维阴影表面下的轮廓图
surface创建表面对象
meshc在网格图下绘制等值线图
contour矩阵等高线图
contourf填充了二维等高线图

如何将2维平面用3D视角观看:

x=0:0.1:2*pi;
plot(x,sin(x));

方法一:

 方法二:

>> x=0:0.1:2*pi;
plot(x,sin(x));
>> rotate3d on

 8.1.plot3

x=0:0.1:3*pi; z1=sin(x); z2=sin(2.*x); z3=sin(3.*x);
y1=zeros(size(x)); y3=ones(size(x)); y2=y3./2;
plot3(x,y1,z1,'r',x,y2,z2,'b',x,y3,z3,'g');
grid on;
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');

 三维曲面图原理:

  • 通常用于绘图功能:Z=f(x,y)
  • 需要为Matlab提供一组(x,y,z)点
x = -2:1:2;
y = -2:1:2;
[X,Y] = meshgrid(x,y)

 8.2 mesh()和surf()

x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1); mesh(X,Y,Z);
subplot(1,2,2); surf(X,Y,Z);

 8.3 contour()

x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(2,1,1);
mesh(X,Y,Z);
axis square;
subplot(2,1,2);
contour(X,Y,Z);
axis square;

 各种等高线的表示:

x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);
subplot(1,3,1); contour(Z,[-.45:.05:.45]); axis square;
subplot(1,3,2); [C,h] = contour(Z);
clabel(C,h); axis square;
subplot(1,3,3); contourf(Z); axis square;

 8.4 meshc()和surfc()

%比mesh()和surf()多了等高线
x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1); meshc(X,Y,Z);
subplot(1,2,2); surfc(X,Y,Z);

 9.view()视角

>> sphere(50); shading flat;
light('Position',[1 3 2]);
light('Position',[-3 -1 3]);
material shiny;
axis vis3d off;
set(gcf,'Color',[1 1 1]);
view(-45,20);

10.光线light()

[X, Y, Z] = sphere(64); h = surf(X, Y, Z);
axis square vis3d off;
reds = zeros(256, 3); reds(:, 1) = (0:256.-1)/255;
colormap(reds); shading interp; lighting phong;
set(h, 'AmbientStrength', 0.75, 'DiffuseStrength', 0.5);
L1 = light('Position', [-1, -1, -1]);
set(L1, 'Position', [-1, -1, 1]);
set(L1, 'Color', 'g');

 11.patch()

v = [0 0 0; 1 0 0 ; 1 1 0; 0 1 0; 0.25 0.25 1; ...
0.75 0.25 1; 0.75 0.75 1; 0.25 0.75 1];
f = [1 2 3 4; 5 6 7 8; 1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8];
subplot(1,2,1); patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(6), 'FaceColor', 'flat');
view(3); axis square tight; grid on;
subplot(1,2,2); patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(8), 'FaceColor', 'interp');
view(3); axis square tight; grid on;

       Matlab画图这方面确实是太强了,在我们游戏中有些图用Matlab也是可以画出来的,加油吧,少年!!!

load cape
X=conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
surf(X,'EdgeColor','none','EdgeLighting','Phong',...
'FaceColor','interp');
colormap(map); caxis([-10,300]);
grid off; axis off

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

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

相关文章

国外地址如何地理编码?Python三行代码解决!

对于单个地址基于Python中的geocoder库获取经纬度非常方便&#xff0c;代码如下&#xff1a; # codingutf-8 import geocoder # 输入地址 address Akala Temple lonLat geocoder.osm(address) print(lonLat.latlng) # 输出结果 [27.8569644, 84.0893767]若地址数量较多&am…

Gradio项目所学

从项目中学习Gradio&#xff1a;快速搭建AI算法可视化部署演示(侧重项目搭建与案例分享) 我们通常使用的两款AI可视化交互应用&#xff1a; Gradio 与 StreamList 本次我们通过项目案例对Gradio从简单使用到进阶进行讲解介绍 Gradio的优势 Gradio的优势在于其代码结构的简单性与…

Java“牵手”京东商品详情数据,京东API接口申请指南

京东平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

面试总结 - 计算机网络

计算机网络 1 OSI 七层模型 | TCP与UDP | 响应状态码 OSI 模型 应用层: 计算机用户&#xff0c;以及各种应用程序和网络之间的接口&#xff0c;其功能是直接向用户提供服务&#xff0c;完成用户希望在网络上完成的各种工作。 HTTP SMTP FTP DNS 表示层: 负责数据格式的转换&…

鸿蒙系列-如何更好地使用 ArkUI 的 Image 组件?

如何使用好 ArkUI 的 Image 组件&#xff1f; 开发者经常需要在应用中显示一些图片&#xff0c;例如&#xff1a;按钮中的logo、网络图片、本地图片等。在应用中显示图片需要使用 Image 组件实现&#xff0c;Image支持多种图片格式&#xff0c;包括png、jpg、bmp、svg和gif&am…

实现公网远程访问:Windows本地快速搭建SFTP文件服务器并配置端口映射

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

镜头翻转大师:视频剪辑高手的魔法技巧

在数字媒体时代&#xff0c;视频制作已成为各种规模的组织和个人的必备技能。无论是小型家庭活动还是大型企业项目&#xff0c;都需要通过视频来展示成果、传播信息&#xff0c;或是仅仅为了分享生活的美好瞬间。然而&#xff0c;视频制作并非易事&#xff0c;其中最困难的步骤…

气传导蓝牙耳机排行榜,值得大家选择的气传导耳机推荐!

​随着科技的不断进步&#xff0c;气传导耳机已经成为了市场上备受瞩目的产品之一。相比传统耳机&#xff0c;气传导耳机的音质表现更加出色&#xff0c;同时还具有更好的佩戴感受。下面跟着我脚步来&#xff0c;推荐几款值得大家选择的气传导耳机&#xff0c;看看哪款更好&…

【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )

文章目录 一、问题描述二、解决方案 一、问题描述 在 【错误记录】IntelliJ IDEA 导出可执行 jar 包执行报错 ( java.lang.ClassNotFoundException | 打包时没有选择依赖库 ) 博客中遇到 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriverat j…

[LeetCode周赛复盘] 第 360 场周赛20230827

[LeetCode周赛复盘] 第 360 场周赛20230827 一、本周周赛总结2833. 距离原点最远的点1. 题目描述2. 思路分析3. 代码实现 2834. 找出美丽数组的最小和2. 思路分析3. 代码实现 2835. 使子序列的和等于目标的最少操作次数1. 题目描述2. 思路分析3. 代码实现 2836. 在传球游戏中最…

Leetcode328 奇偶链表

思路&#xff1a;分别处理奇偶&#xff0c;保存奇偶的第一个和最后一个节点&#xff0c;注意最后链接的时候需要把偶数的next去掉再拼接不然就成环了 class Solution:def oddEvenList(self, head: ListNode) -> ListNode:if not head or not head.next or not head.next.ne…

数据结构与算法-递归回溯分治

引入思考&#xff1a; 1.微信分销系统中有一个返利&#xff0c;大家应该都知道&#xff0c;比如B是A的下线&#xff0c;C是B的下线&#xff0c;那么在分钱返利的时候A可以分B&#xff0c;C的钱&#xff0c;这时候我们是不是就要分别找B,C的最后上级。这个问题我们一般怎么来解决…

数据通信——传输层TCP(可靠传输机制的滑动窗口)

引言 之前提到过拥塞问题&#xff0c;如果大量数据疯狂涌入&#xff0c;接收端无法及时处理就会导致数据丢包&#xff0c;从而使得通信受到干扰。之前的连续ARQ如果不加以节制&#xff0c;疯狂发送报文&#xff0c;接收端无法及时返回ACK就会导致网络瘫痪。 滑动窗口机制协议 这…

Linux服务器部署JavaWeb后端项目

适用于&#xff1a;MVVM前后台分离开发、部署、域名配置 前端&#xff1a;Vue 后端&#xff1a;Spring Boot 这篇文章只讲后端部署&#xff0c;前端部署戳这里 目录 Step1&#xff1a;服务器上搭建后端所需环境1、更新服务器软件包2、安装JDK83、安装MySQL4、登录MySQL5、修…

一百六十六、MySQL——systemctl stop mysqld无法停止MySQL8.0服务

一、目的 为了解决MySQL的中文乱码问题&#xff0c;需要对/etc/my.cnf文件进行参数配置。 而对/etc/my.cnf文件进行配置参数之前&#xff0c;需要先停止MySQL服务 二、错误命令语句示范 &#xff08;一&#xff09;错误的命令语句 # systemctl stop mysqld &#xff08;…

SQL分组后取topN

准备数据 create table SC( SId varchar(10) comment "学生ID", CId varchar(10) comment "课程ID", score decimal(18,1) comment "课程成绩");insert into SC values(01 , 01 , 80); insert into SC values(01 , 02 , 90); insert into SC va…

用最少数量的箭引爆气球【贪心算法】

用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地…

Debian12 Gnome环境下的办公软件安装

一、禁用Wayland&#xff0c;启用xorg 当前Debian12 默认采用Wayland来支持gnome环境&#xff0c;但是许多软件无法在该系统下显示&#xff0c;例如&#xff1a;openoffice&#xff0c;yozo-office&#xff0c;weixin&#xff0c;fcitx。所以要在gdm3的配置文件中&#xff0c;…

港交所MMDH行情协议

目录 一、交易时间 二、MMDH与OMD的差异 三、MMDH消息类型 四、MMDH的市场快照数据 内地市场数据枢纽-证券市场(OMD-MMDH) 港交所OMD-C对接笔记 - skylerjiang - 博客园 (cnblogs.com) 一、交易时间 图 1 港交所交易时间段 图 2 消息序列 二、MMDH与OMD的差异 图 3 标准…

Leetcode213 打劫家舍2

思路&#xff1a;既然头尾不能同时取&#xff0c;那就分别算只取头或者只取尾&#xff0c;不考虑特殊情况的话是一个简单的动态规划 class Solution:def rob(self, nums: list[int]) -> int:if len(nums) < 3:return max(nums)max_sum [nums[0], max(nums[1], nums[0])…