MATLAB 之 图形对象及其句柄和图形窗口与坐标轴

news2024/9/28 11:19:51

这里写目录标题

  • 一、图形对象及其句柄
    • 1. 图形对象
    • 2. 图形对象句柄的使用
    • 3. 图形对象属性
      • 3.1 属性名与属性值
      • 3.2 属性的操作
      • 3.3 图形对象的公共属性
  • 二、图形窗口与坐标轴
    • 1. 图形窗口对象
    • 2. 坐标轴对象

一、图形对象及其句柄

  • MATLAB 的图形系统是面向图形对象的。图形对象是 MATLAB 图形元素的集合,是用于显示图形和设计用户界面的基本要素。

1. 图形对象

  • 在 MATLAB 中,每一个具体的图形都是若干个不同的图形对象组成的。所有的图形对象都按父对象和子对象的方式组成层次结构,其形式如下图所示。

在这里插入图片描述

  • 在图形对象的层次结构中,计算机屏幕是产生其他对象的基础,称为根对象(root)。MATLAB 图形系统只有一个根对象,其他对象都是它的子对象。当 MATLAB 启动时,系统自动创建根对象。
  • 图形窗口(figure)是显示图形和用户界面的窗口。用户可建立多个图形窗口,所有图形窗口对象的父对象都是根对象,而其他图形对象都是图形窗口的子对象。图形窗口对象有 3 种子对象:用户界面对象(user interface,UI)、坐标轴(axes)和标注对象(annotation)。
  • 用户界面对象用于构建图形用户界面。
  • 坐标轴有 3 种子对象:核心对象(core object)、绘图对象(plot object)和组对象(group object)。对坐标轴及其 3 种子对象的操作即构成低层绘图操作,也就是对图形句柄的操作。
  • 标注对象用于给图形添加标注,从而增强图形的表现能力。通常可以利用图形窗口的工具栏或“插入”菜单给图形添加标注,但也可用 annotation 函数通过创建标注对象来添加标注。
  • 根对象可包含一个或多个图形窗口,每一一个图形窗口可包含一组或多组坐标轴,每一组坐标轴上又可绘制多种图形,包括曲线、曲面、文本、图像、区域块、方块和光源对象等基本的绘图对象,它们都是坐标轴的子对象。
  • 创建图形对象的低层绘图函数与所创对象有相同名称。例如,line 函数创建曲线对象(line)、text 函数创建文本对象(text)等。
  • 绘图对象是由核心图形对象组合而成,使用绘图对象的属性可以简单、快速地访问核心图形对象的重要属性。组对象允许将坐标轴的多个子对象作为一个整体进行处理。
  • 例如,可以是整个组可见或不可见,单击组对象时可选择改组所有对象,或用一个变换矩阵改变对象的位置。

2. 图形对象句柄的使用

  • 在以前的 MATLAB 版本中,图形对象句柄是一个数值,而从 MATLAB R2014b 起,图形对象句柄就代表图形对象,句柄变量相当于对象名,可以是一个图形对象的标识。例如下面程序所示。
>> x=0:pi/10:2*pi;
>> y=sin(x);
>> h0=plot(x,y,'r')		%曲线对象的句柄

h0 = 

  Line - 属性:

              Color: [1 0 0]
          LineStyle: '-'
          LineWidth: 0.5000
             Marker: 'none'
         MarkerSize: 6
    MarkerFaceColor: 'none'
              XData: [0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416 3.4558]
              YData: [0 0.3090 0.5878 0.8090 0.9511 1 0.9511 0.8090 0.5878 0.3090 1.2246e-16 -0.3090]

  显示 所有属性

  • plot 函数绘制二维曲线,返回图形句柄,存入变量 h0 中,h0 表示一个具体的曲线对象。通过图形句柄可以访问图形对象的属性。例如下面程序所示。
>> h0,Color

h0 = 

     1     2     3
  	
  • 说明 h0 对象的 Color 属性是 [1,0,0],即曲线的颜色是红色。也可以通过下面的命令来改变曲线对象的颜色。
>> h0,Color=[0,1,0];
  • 就可以将颜色从红色改为绿色。
  • MATLAB 提供了若干个函数用于获取已有图形对象的句柄,常用的函数如下。
  • (1) gcf:获取当前图形窗口的句柄(get current figure)。
  • (2) gca:获取当前坐标轴的句柄(get current axis)。
  • (3) gco:获取最近被选中的图形对象的句柄(get current object)。
  • (4) findobj:按照指定的属性来获取图形对象的句柄。
  • 例如:
>> h1=gcf

h1 = 

  Figure (1) - 属性:

      Number: 1
        Name: ''
       Color: [0.9400 0.9400 0.9400]
    Position: [488 342 560 420]
       Units: 'pixels'

  显示 所有属性

3. 图形对象属性

  • 每种图形对象都具有各种各样的属性,MATLAB 正是通过对属性的操作来控制和改变图形对象的。

3.1 属性名与属性值

  • 为方便属性的操作,MATLAB 给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。例如,LineStyle 是曲线对象的一个属性名,它的值决定着线型,取值可以是 ‘-’、‘:’、‘-.’ 、‘–’ 或 ‘none’。
  • 在属性名的写法中,不区分字母的大小写,而且在不引起歧义的前提下,属性名不必写全。例如,lines 就代表 LineStyle.此外,属性名要用单引号括起来。

3.2 属性的操作

  • 当创建一一个对象时,必须给对象的各种属性赋予必要的属性值,否则,系统自动使用默认属性值。用户可以通过 set 函数重新设置对象属性,同时也可以通过 get 函数获取这些属性值。
  • set 函数的调用格式如下:
	set(句柄,属性名1,属性值1,属性名2,属性值2,...)
  • 其中,句柄用于指明要操作的图形对象。如果在调用 set 函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。
  • 绘制二维曲线时,通过选择不同的选项可以设置曲线的颜色、线型和数据点的标记符号,下面用图形句柄操作来实现。假定要绘制正弦曲线,程序如下:
x=0:pi/10:2*pi;
h=plot(x,sin(x));
set(h,'Color','r','LineStyle',':','Marker','p');
  • 先用默认属性绘制正弦曲线并保存曲线句柄,然后通过改变曲线的属性来设置曲线的颜色、线型和数据点的标记符号。事实上,还有很多其他属性,通过改变这些属性,可对曲线作更进一步的控制。
  • get 函数的调用格式如下:
	V=get (句柄,属性名)
  • 其中,V 是返回的属性值。如果在调用 get 函数时省略属性名,则将返回句柄所有的属性值。用 get 函数来获得上述曲线的属性值。例如:
>> col=get(h,'Color')

col =
     1     0     0
  • 将得到曲线的颜色属性值 [1,0,0],即红色。也可以使用以下命令:
>> col=h.Color

col =
     1     0     0
  • get 函数可获取屏幕的分辨率,程序如下:
>> V=get(0,'ScreenSize')

V =

           1           1        1536         864

  • get 函数返回一个 1 × 4 1×4 1×4 的向量 V V V,其中前两个分量分别是屏幕的左下角横纵坐标 ( 1 , 1 ) (1,1) (1,1),而后两个分量分别是屏幕的宽度和高度。
  • 假如屏幕分辨率设置为 1280 × 1024 1280×1024 1280×1024,则 V V V 的值为 [1,1,1280,1024],这有助于依据现行屏幕的分辨率来设置窗口的大小。

3.3 图形对象的公共属性

  • 图形对象具有各种各样的属性,有些属性是所有对象共同具备的,有些则是各对象所特有的。
  • (1) Children 属性:该属性的取值是该对象所有子对象的句柄组成的一个向量。
  • (2) Parent 属性:该属性的取值是该对象的父对象的句柄。
  • (3) Tag 属性:该属性的取值是一个字符串,它相当于给该对象定义了一个标识符。定义了 Tag 属性后,在任何程序中都可以通过 findobj 函数获取该标识符所对应图形对象的句柄。
  • 例如,hf=findobj(0,Tag',Flag1') 将 在屏幕对象及其子对象中寻找 Tag 属性为 Flag1 的对象,并返回句柄。
  • (4) Type 属性:表示该对象的类型。显然,该属性的值是不可改变的。
  • (5) UserData 属性:该属性的取值是一个矩阵,默认值为空矩阵。在程序设计中,可以将一个图形对象有关的比较重要的数据存储在这个属性中,借此可以达到传递数据的目的。
  • 具体做法是,先用 set 函数给某一句柄添加一些附加数据(一个矩阵),如果想使用这样的矩阵,再用 get 函数调用出来。
  • (6) Visible 属性:该属性的取值是 ‘on’(默认值)或 ‘off’。决定着图形窗口是否在屏幕上显示出来。
  • 当它的值为 ‘off’ 时,可以用来隐藏该图形窗口的动态变化过程,如窗口大小的变化、颜色的变化等。注意,对象存在与否与对象是否可见是两回事,对象可以存在,同时又是不可见的。
  • (7) ButtonDownFen 属性:该属性的取值是一个字符串,一般是某个脚本文件名或一组 MATLAB 命令。图形对象决定了一个作用区域,当单击该区域时,MATLAB 自动执行该程序或命令。
  • (8) CreateFcn 属性:该属性的取值是一个字符串,一般是某个脚本文件名或一组 MATLAB 命令。当创建该对象时,MATLAB 自动执行该程序或命令。
  • (9) DeleteFcn 属性:该属性的取值是一个字符串,一般是某个脚本文件名或一组 MATLAB 命令。当取消该对象时,MATLAB 自动执行该程序段或命令。
  • 例如,我们在同一坐标下绘制红、绿两根不同的曲线,希望获得绿色曲线的句柄,并对其进行设置。
  • 程序如下:
x=0:pi/50:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'g');      %绘制两根不同的曲线
Hl=get(gca,'Children');     %获取两曲线句柄向量Hl
for k=1:size(Hl)
    if get(H1(k),'Color')==[0,1,0]  %[0,1,0]代表绿色
        H1g=Hl(k);          %获取绿色线条句柄
    end
end
pause                       %便于观察设置前后的效果
set(Hlg,'LineStyle',':','Marker','p');  %对绿色线条进行设置

二、图形窗口与坐标轴

  • 除根对象外,所有图形对象都可以由与之同名的低层函数创建。所创建的对象置于适当的父对象之中,当父对象不存在时,MATLAB 会自动创建它。例如,用 line 函数画一根曲线,假如在画线之前,坐标轴、图形窗口不存在,MATLAB 会自动创建它们。
  • 假如在画线之前,坐标轴、图形窗口已经存在,那么将在当前坐标轴上画线,且不影响该坐标轴上已有的其他对象。这一点与高层绘图函数完全不同,需特别注意。创建对象的低层函数调用格式类似,关键要了解对象的属性及其取值。

1. 图形窗口对象

  • 图形窗口是 MATLAB 中很重要的一类图形对象。MATLAB 的一切图形图像的输出都是在图形窗口中完成的。掌握好图形窗口的控制方法,对于充分发挥 MATLAB 的图形功能和设计高质量的用户界面是十分重要的。
  • 建立图形窗口对象使用 figure 函数,其调用格式如下:
	句柄变量=figure(属性名1,属性值1,属性名2,属性值2,...)
  • MATLAB 通过对属性的操作来改变图形窗口的形式,也可以使用 figure 函数按 MATLAB 默认的属性值建立图形窗口,其调用格式如下:
	figure
	句柄变量=figure
  • MATLAB 通过 figure 函数建立图形窗口之后,还可以调用 figure 函数来显示该窗口,并将之设定为当前窗口,调用格式如下:
	figure(窗口句柄)
  • 如果这里的句柄不是已经存在的图形窗口句柄,而是一个整数,则也可以使用这一函数,它的作用是以这一整数为图形窗口序号生成一个新的图形窗口,并将之定义为当前窗口。
  • 如果引用的窗口句柄不是一个图形窗口的句柄,也不是一个整数,则该函数返回一条错误信息。要关闭图形窗口,使用 close 函数,其调用格式如下:
	close(窗口句柄)
  • 另外,closeall 命令可以关闭所有的图形窗口,clf 命令则是清除当前图形窗口的内容,但不关闭窗口。
  • MATLAB 为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性如下。
  • (1) MenuBar 属性:该属性的取值可以是 ‘figure’ (默认值)或 ‘none’,用来控制图形窗口是否应该具有菜单条。
  • 如果它的属性值为 ‘none’,则表示该图形窗口没有菜单条。这时用户可以采用 uimenu 函数来加入自己的菜单条。
  • 如果它的属性值为 ‘figure’,则该窗口将保持图形窗口默认的菜单条,这时也可以采用 uimenu 函数在原默认的图形窗口菜单后面添加新的菜单项。
  • (2) Name 属性:该属性的取值可以是任何字符串,它的默认值为空。这个字符串作为图形窗口的标题,一般情况下, 其标题形式为 "Figuren: 字符串”。
  • (3) NumberTitle 属性:该属性的取值是 ‘on’(默认值)或 'off ',决定着在图形窗口的标题中是否以 “Figure n:” 为标题前缀,这里 n 是图形窗口的序号。
  • (4) Resize 属性:该属性的取值是 ‘on’(默认值)或 ‘off’, 决定着在图形窗口建立后可否用鼠标改变该窗口的大小。
  • (5) Position 属性:该属性的取值是一个由 4 个元素构成的向量,其形式为[ x,y,w,h]。这个向量定义了图形窗口对象在屏幕上的位置和大小,其中 x、y 分别为窗口左下角的横纵坐标值,w、h 分别为窗口的宽度和高度,它们的单位由 Units 属性决定。
  • (6) Units 属性:该属性的取值可以是下列字符串中的任何一种:‘pixels’(像素,为默认值)、‘normalized’(相对单位)、‘inches’(英寸)、‘centimeters’(厘米)和 ‘points’(磅)。
  • Units 属性定义图形窗口使用的长度单位,由此决定图形窗口的大小与位置。除了 normalized 以外,其他单位都是绝对度量单位。
  • 相对单位 normalized 将屏幕左下角对应为 (0,0),而右上角对应为 (1.0, 1.0)。该属性将影响一切定义大小的属性项,如前面的 Position 属性。如果在程序中改变过 Units 属性值,在完成相应的计算后,最好将 Units 属性值设置为默认值,以防止影响其他函数计算。
  • (7) Color 属性:属性的取值是一个颜色值,既可以用字符表示,也可以用 RGB 三元组表示,默认为浅灰色,用于设定图形窗口背景的颜色。
  • (8) Pointer 属性::属性的取值是 ‘arrow’(默认值)、‘crosshair’、‘watch’、‘topl’、‘topr’、‘botl’、‘botr’、‘circle’、‘cross’ 、‘fleur’ 、'custom’等, 用于设定鼠标标记的显示形式。
  • (9) 对键盘及鼠标响应属性:MATLAB 允许对键盘和鼠标键按下这样的动作进行响应,这类属性有 KeyPressFcn(键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应)、WindowButtonMotionFcn(鼠标移动响应)及 WindowButtonUpFcn(鼠标键释放响应)等。
  • 这些属性所对应的属性值可以为用 MATLAB 编写的程序或命令,表示一旦键盘键或鼠标键按下之后,将自动执行给出的程序或命令。
  • 例如,我们建立一个图形窗口。 该图形窗口设有菜单条,标题名称为“图形窗口示例”,起始于屏幕左下角,宽度和高度分别为 300 像素点和 150 像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示 “Hello,World!" 字样。
  • 程序如下:
hf=figure('Color',[0,1,0],'Position',[1,1,300,150],...
'Name','图形窗口示例','NumberTitle','off','MenuBar','none',...
'KeyPressFcn','disp(''Hello,World!'')');
  • 程序运行结果如下:

在这里插入图片描述

  • 例如,我们分别在4个不同的图形窗口绘制出正弦、余弦、正切、余切曲线。要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第4个窗口并绘图。
  • 程序如下:
x=linspace(0,2*pi,60);
y=sin(x);
z=cos(x);
t=tan(x);
ct=1./(t+eps);      
%命令组待用
C4=['figure(''Name'',''cotangent (x)'',''NumberTitle'',',...
'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];
C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...
'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];
C2=['figure(''Name'',''cos(x)'',''DeleteFcn'',C3,'....
'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];
%先创建一个图形窗口并绘制曲线
figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off');
plot(x,y);
axis([0,2*pi,-1,1]);
  • sin(x)、cos(x)、tan(x) 和 cot(x) 依次关闭并打开。

2. 坐标轴对象

  • 坐标轴是 MATLAB 中另一类很重要的图形对象。坐标轴对象是图形窗口的子对象,每个图形窗口中可以定义多个坐标轴对象,但只有一个坐标轴是当前坐标轴,在没有指明坐标轴时,所有的图形图像都是在当前坐标轴中输出。
  • 必须弄清一个概念,所谓在某个图形窗口中输出图形图像,实质上是指在该图形窗口的当前坐标轴中输出图形图像。
  • 建立坐标轴对象使用 axes 函数,其调用格式如下:
	句柄变量=axes(属性名1,属性值1,属性名2,属性值2,...)
  • 调用 axes 函数用指定的属性在当前图形窗口创建坐标轴,并将其句柄赋给左边的句柄变量。也可以使用 axes 函数按 MATLAB 默认的属性值在当前图形窗口创建坐标轴,其调用格式如下:
	axes
	句柄变量=axes
  • axes 函数建立坐标轴之后,还可以调用 axes 函数将之设定为当前坐标轴,且坐标轴所在的图形窗口自动成为当前图形窗口,调用格式如下:
axes (坐标轴句柄)
  • 这里需要注意的是,这里引用的坐标轴句柄必须存在,这与 figure 函数的对应调用形式不同。
  • MATLAB 为每个坐标轴对象提供了很多属性。除公共属性外,其他常用属性如下。
  • (1) Box 属性:该属性的取值是 ‘on’ 或 ‘of’(默认值),它决定坐标轴是否带有边框。
  • (2) GridLineStyle 属性:该属性的取值可以是 ‘:’(默认值)、‘-’、‘-.’、‘–’ 或 ‘none’,用于定义网格线的类型。
  • (3) Position 属性:该属性的取值是一个由 4 个元素构成的向量,其形式为 [x,y,w,h]。这个向量在图形窗口中决定一个矩形区域,坐标轴就位于其中。该矩形的左下角相对于图形窗口左下角的坐标为 (x,y),矩形的宽和高分别 w 和 h。它们的单位由 Units 属性决定。
  • (4) Units 属性:该属性的取值是 ‘normalized’(相对单位,为默认值)、‘inches’(英寸)、‘centimeters’(厘米)和 ‘points’(磅),用于定义 Position 属性的度量单位。
  • (5) Title 属性:该属性的取值是坐标轴标题文字对象的句柄,可以通过该属性对坐标轴标题文字对象进行操作。
  • 例如,要改变标题的颜色,可执行以下命令:
>> h=get(gca,'Title');		%获得标题文字对象句柄
>> set(h,'Color','r');		%设置标题颜色
  • (6) ColorOrder 属性:用于设置多条曲线的颜色顺序,其值是元素为 RGB 值的 n × 3 n×3 n×3 矩阵,每行代表用 RGB 三元组表示的一种颜色,默认有 7 种颜色。以下命令显示了当前坐标轴的默认颜色顺序。
>> get(gca,'ColorOrder')

ans =

         0    0.4470    0.7410
    0.8500    0.3250    0.0980
    0.9290    0.6940    0.1250
    0.4940    0.1840    0.5560
    0.4660    0.6740    0.1880
    0.3010    0.7450    0.9330
    0.6350    0.0780    0.1840

  • (7) XLabel、YLabel、ZLabel 属性:3 种属性的取值分别是 x、y、z 轴说明文字的句柄。其操作与 Title 属性相同。例如,要设置 x 轴文字说明,可使用以下命令:
>> h=get(gca,'XLabel');		%获得 x 轴文字对象句柄.
>> set (h,'String','Values of X axis');		%设置 x 轴文字说明
  • (8) XLim、YLim、ZLim 属性:3 种属性的取值都是具有两个元素的数值向量,分别定义各坐标轴的上下限,默认值为 [0, 1]。
  • (9) XScale、YScale、 ZScale 属性:3 种属性的取值都是 ‘linear’(默认值)或 ‘log’,用于定义各坐标轴的刻度类型。
  • (10) View 属性:该属性的取值是 2 元素数值向量,定义视点方向。
  • 例如,我们利用坐标轴对象 实现图形窗口的任意分割。
  • 利用 axes 函数可以在不影响图形窗口上其他坐标轴的前提下建立一个新的坐标轴,从而实现图形窗口的任意分割。
  • 程序如下:
clf;    %清图形窗口
x=linspace(0,2*pi,20);
y=sin(x);
axes('Position',[0.2,0.2,0.2,0.7],'GridLineStyle','-.');
plot(y,x);
title('sin(x)-1');
axes('Position',[0.4,0.5,0.2,0.1]);
stairs(x,y);
title('sin(x)-2');
axes('Position',[0.55,0.6,0.25,0.3]);
stem(x,y) ;title('sin(x)-3');
axes('Position',[0.55,0.2,0.25,0.3]);
[x,y] =meshgrid(-8:0.5:8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); 
mesh(x,y,z); title('mesh(x,y,z)');
  • 程序运行结果如下图所示。

在这里插入图片描述

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

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

相关文章

Redis新功能

Redis 新功能 ACL 参考官网:https://redis.io/topics/acl 基本介绍 1、Redis ACL 是Access Control List(访问控制列表)的缩写,该功能根据可以执行的命令和可以访问的键来限制某些连接 2、在Redis 5 版本之前,Red…

使用python做一个批量重命名文件的小工具

🛴 放松 端午放假前的下午🙄 没事儿可做,一个准备开始弄的项目里面有大量的图片,但是名字都乱七八糟的,作为一个稍微带点强迫症的人看不下去。 既然如此,想直接重命名,可是Windows的重命名效果…

《XrayGLM:基于VisualGLM-6B微调训练对X光胸片进行医学诊断》学习分享与本地项目微调部署实践

XrayGLM据说是首个会看胸部X光片的中文多模态医学大模型,我最近也是因为关注这个所以就找时间学习了一下,顺便把学习资料对应记录分享一下。 官方提供了开源的项目,地址在这里,如下所示: 最近,通用领域的大…

MySQL - 第6节 - MySQL表的增删查改

1.MySQL表的增删查改概述 • 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。 • CRUD的操作对象是对…

抖音小店有哪些常见扣分原因?如何避免在抖音小店中被扣分?

抖音小店现在已经成为了很多商家的首选电商平台,但是在使用抖音小店的过程中,也会出现一些扣分的情况。接下来,四川不若与众将为大家介绍抖音小店扣分的原因和避免办法。 一、抖音小店扣分原因 1. 服务不到位:商家没有及时回复用户…

2023-01-06 VMWare桥接网络配置.md

VMWare16 桥接网络配置 一 环境清单 VMWare 16虚拟机:Centos7宿主机:Windows 10 二 配置过程 查看宿主机的IP相关信息 ipconfig -all 配置虚拟网络编辑器 2.1 打开VMware Workstation Pro,点击左上角编辑-->虚拟网络编辑器 2.2 点击更改配…

CRM商机管理:提升客户体验和销售效率

如何利用CRM系统提升商机管理? 花点时间思考一下你的企业管理商机的方法,是否有以下情况: ● 不知道渠道中的商机是否可行。 ● 不知道应该关注哪些商机。 ● 花了几个小时或几天的时间来跟进商机。 ● 不知道赢得商机与失去商机的比例。 如…

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决 目录 前言 一、错误发生的原因 二、问题如何解决 前言 今天在运行kafka时,出现了如下图的报错Suppressed: java.nio.file.AccessDeniedException,怎么启动也启动不起来。那此问…

C/C++的命令执行分析

背景 最近发现一个命令执行风险; 一开始提供修复建议,是对特殊字符进行过滤,但是业务侧没有办法过滤,因为输入点是没有办法限制的,然后提供另一个方案是将用户的输入写到配置文件中,然后再进行操作&#x…

LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1…

蓝牙 - 抓包工具BPA600介绍

BPA 600开箱后,先把天线(antenna)装在后面的SMA接口上。 SMA connectors: SMA(SubMiniature version A)连接器是在20世纪60年代开发的半精密同轴射频连接器,是一种用于同轴电缆的最小连接器接口,具有螺旋式耦合机制。…

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

近日,复旦大学高校专区在飞桨人工智能学习与实训社区AI Studio上线,双方将携手搭建人工智能教学实训平台专区,汇集优质教学实训资源,校企共同培育复合型 AI 人才,为国家输送高质量人才,促进国家智能化进程。…

【机器学习】Kullback-Leibler散度实现数据监控

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence 一、说明 本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通…

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程: 解密过程: 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

qt 时间编程之时钟

这里写目录标题 开启time格式自动 QTIM打点 qtime qt的时间类 qtimer qt的定时类 头文件包含以及定义 #include<QTime> #include<QTimer>QTime * time; QTimer * timer;开启 右键槽 timer start&#xff08;50&#xff09; 到达50毫米的时候会触发 time out信号…

Unreal 5 实现场景环境控制组件

我在场景中发现了一个环境控制器&#xff0c;这个场景实现了雨天天气和晴天风沙天气&#xff0c;接下来我分析一下这个天气控制器是如何实现。 实现流程&#xff1a; 将环境控制器拖入场景&#xff0c;在配置项上面设置相应的雾&#xff0c;主光源&#xff0c;天空光。在环境控…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 自定义Loadbalancer微服务注册元信息修改自定义LoadBalancer使用 测试代码放到了github上[地址]() 灰…

STM32F4_CAN详解

目录 1. CAN简介 2. CAN协议的物理层 2.1 CAN协议中的差分信号 3. CAN协议的协议层 3.1 CAN的报文种类及结构 4. STM32的CAN外设 4.1 CAN框图 5. CAN相关结构体 6. CAN相关寄存器 7. 硬件设计 7.1 TJA1050芯片 8. 库函数配置CAN初始化 9. 实验代码 9.1 main.c 9…

SpringBoot问题-----------可以同时处理多少个请求

SpringBoot之可以同时处理多少个请求 SpringBoot的运行方式springBoot中tomcat的位置最小、最多工作线程数最大连接数等待数 SpringBoot的运行方式 SpringBoot项目中内嵌了tomcat 程序的运行就是通过tomcat来实现的&#xff1b;springBoot可以同时处理多少个请求其实就是在说 …