当前位置: 首页 > news >正文

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表

1、Matplotlib Pyplot

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。

使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt:

import matplotlib.pyplot as plt

就可以使用 plt 来引用 Pyplot 包的方法。

以下实例,我们通过两个坐标 (0,0) 到 (6,100) 来绘制一条线:

import matplotlib.pyplot as plt
import numpy as np
# 使用 numpy 构造数组作为数据
x=np.array([0,6]) # x轴的数据
y=np.array([0,100]) # y轴的数据
plt.plot(x, y)
plt.show() # 让图形得到显示

在这里插入图片描述
plot() 用于画图它可以绘制点和线,语法格式如下:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
  • x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
  • fmt:可选,定义基本格式(如颜色、标记和线条样式)。
  • **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

颜色字符:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色

线型参数:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。

标记字符:‘.’ 点标记,‘,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,‘^’ 上三角标记,‘>’ 右三角标记,‘<’ 左三角标记…等等。

2、实例:绘制sin、cos函数,并指定线型和颜色

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,4*np.pi,0.1) # 0-4pi 每隔0.1取一个数
# 直接调用numpy里面的三角函数
y=np.sin(x)
z=np.cos(x)
plt.plot(x,y,'r-.',x,z,'b:')# 第一条线的参数、样式,第二条线的参数、样式
plt.show()

在这里插入图片描述

3、绘制散点图

import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5,6])
y=np.array([1,2,3,4,5,6])
plt.plot(x,y,'o')#实心点,绘制散点图
plt.show()

在这里插入图片描述

以上只是简单的使用了pyplot库。

二、Matplotlib 绘图标记

绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用 plot() 方法的 marker 参数来定义。
fmt 参数
fmt 参数定义了基本格式,如标记、线条样式和颜色。

fmt = '[marker][line][color]'

marker 可以定义的符号如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述标记大小与颜色
我们可以自定义标记的大小与颜色,使用的参数分别是:

  • markersize,简写为 ms:定义标记的大小。
  • markerfacecolor,简写为 mfc:定义标记内部的颜色。
  • markeredgecolor,简写为 mec:定义标记边框的颜色。

线的宽度
线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:1、2.0、5.67 等。

1、综合案例

(1)拐点带样式的散点图

y = np.array([1,5,3,54,6,3,67,4,23])
plt.plot(y,marker='o') # x轴参数不指定,则按0-n对应y轴参数plt.show()   

在这里插入图片描述
(2)多参数

import matplotlib.pyplot as plt
import numpy as np
y=np.array([3,5,1,8,4])
plt.plot(y,'o-.b',ms=15,mfc='r',mec='g')# 线条的样式、标记的大小、标记内部填充的颜色、标记的边框颜色
plt.show()

在这里插入图片描述

三、Matplotlib 轴标签和标题

设置轴标签和标题时,如果使用中文,可能会出现乱码情况,可以使用以下两行代码解决

plt.rcParams['font.sans-serif'] = [u'SimHei'] # SimHei就是中文字体
# 因为设置了中文后,负号就乱码了,所以还要设置负号的编码
plt.rcParams['axes.unicode_minus'] = False # 修改坐标轴中符号的编码

1、轴标签

可以使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签。

2、标题

我们可以使用 title() 方法来设置标题。

案例

import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
plt.plot(x,y,'.-.',linewidth=1)
plt.title('matplotlib')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

在这里插入图片描述

3、标题与标签的定位

  • title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: ‘bottom’, ‘top’, 和 ‘center’, 默认值为 ‘center’。

4、使用中文字体

方法有很多种,这里使用系统的字体。
查看字体种类:

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])for i in a:print(i)

绘图中添加字体:

plt.rcParams['font.family']=['STFangsong']

实例:

import matplotlib.pyplot as pltimport numpy as np
plt.rcParams['font.family']=['FangSong']x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
plt.plot(x,y,'.-.',linewidth=1)
plt.title('绘图',fontsize=25)
plt.xlabel('x轴',loc='right',fontsize=18)
plt.ylabel('y轴',loc='top',fontsize=18)
plt.show()

在这里插入图片描述

四、Matplotlib 网格线

我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。

grid() 方法语法格式如下:

matplotlib.pyplot.grid(b=None, which='major', axis='both', )
  • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
  • which:可选,可选值有 ‘major’、‘minor’ 和 ‘both’,默认为 ‘major’,表示应用更改的网格线。
  • axis:可选,设置显示哪个方向的网格线,可以是取 ‘both’(默认),‘x’ 或 ‘y’,分别表示两个方向,x 轴方向或 y 轴方向。
  • **kwargs:可选,设置网格样式,可以是 color=‘r’, linestyle=‘-’ 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

实例:

1、使用默认值

import numpy as np
from matplotlib import pyplot as pltplt.rcParams['font.sans-serif'] = [u'SimHei'] # SimHei就是中文字体
# 因为设置了中文后,负号就乱码了,所以还要设置负号的编码
plt.rcParams['axes.unicode_minus'] = False # 修改坐标轴中符号的编码x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
plt.plot(x,y,'.-.',linewidth=1)
plt.title('绘图',fontsize=25)
plt.xlabel('x轴',loc='right',fontsize=18)
plt.ylabel('y轴',loc='top',fontsize=18)plt.grid() # 使用默认值plt.show()  

在这里插入图片描述

2、自定义网格线

import matplotlib.pyplot as pltimport numpy as np
plt.rcParams['font.family']=['FangSong']x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
plt.plot(x,y,'.-',linewidth=1)
plt.title('绘图',fontsize=25)
plt.xlabel('x轴',loc='right')
plt.ylabel('y轴',loc='top')
# 只有平行于x轴方向有网格线
plt.grid(axis='y',color='r',linestyle='--',linewidth=0.5)
plt.show()

在这里插入图片描述
参数说明:

  • color:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’
    青绿色,‘#008000’ RGB 颜色符串。
  • linestyle:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
  • linewidth:设置线的宽度,可以设置一个数字。

五、Matplotlib 绘制多图

我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。
subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。

1、subplot

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1…N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

设置 numRows = 1,numCols = 2,就是将图表绘制成 1x2 的图片区域, 对应的坐标为:(1, 1), (1, 2)
plotNum = 1, 表示的坐标为(1, 1), 即第一行第一列的子图。
plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。

可以使用 suptitle函数设置公共的标题 注意是sup(超级),也就是父级标题

import matplotlib.pyplot as pltimport numpy as np#plot1
x1=np.array([1,2,3,4,5])
y1=np.array([1,4,9,16,25])
plt.subplot(1,2,1)
plt.plot(x1,y1)
plt.title('plot1')#plot2
x2=np.array([1,4,9,16,25])
y2=np.array([1,2,3,4,5])
plt.subplot(1,2,2)
plt.plot(x2,y2)
plt.title('plot2')plt.suptitle('subplot')#总标题suptitle
plt.show()#最后调用show方法

在这里插入图片描述

2、subplots()

subplots() 方法语法格式如下:

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, 
sharex=False, sharey=False, squeeze=True, 
subplot_kw=None, gridspec_kw=None, **fig_kw)
  • nrows:默认为 1,设置图表的行数。
  • ncols:默认为 1,设置图表的列数。
  • sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 ‘none’、‘all’、‘row’ 或 ‘col’。 False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 ‘all’:所有子图共享 x 轴或 y 轴,‘row’ 设置每个子图行共享一个 x 轴或 y 轴,‘col’:设置每个子图列共享一个 x 轴或 y 轴。
  • squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N1 或 1N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。
  • subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。
  • gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。
  • **fig_kw:把详细的关键字参数传给 figure() 函数。
import matplotlib.pyplot as plt
import numpy as np# 创建一些测试数据 -- 图1
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)# 创建一个画像和子图 -- 图2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')# 创建两个子图 -- 图3
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)# 创建四个子图 -- 图4
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)# 共享 x 轴
plt.subplots(2, 2, sharex='col')# 共享 y 轴
plt.subplots(2, 2, sharey='row')# 共享 x 轴和 y 轴
plt.subplots(2, 2, sharex='all', sharey='all')# 这个也是共享 x 轴和 y 轴
plt.subplots(2, 2, sharex=True, sharey=True)# 创建10 张图,已经存在的则删除
fig, ax = plt.subplots(num=10, clear=True)plt.show()

六、散点图、柱形图、饼图

1、Matplotlib 散点图

我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。

scatter() 方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None,norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。marker:点的样式,默认小圆圈 'o'。cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。vmin,vmax::亮度设置,在 norm 参数存在时会忽略。alpha::透明度设置,0-1 之间,默认 None,即不透明。linewidths::标记点的长度。edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。**kwargs::其他参数。
import matplotlib.pyplot as plt
import numpy as npx=np.array([1,2,3,4,5])
y=np.array([1,2,3,4,5])
plt.scatter(x, y, s=25,c='r',alpha=0.6)# 大小为25像素、颜色为红色、透明度为0.6

在这里插入图片描述
两组数据

x1 = np.array([1,4,3,7,34])
y1 = np.array([78,23,19,16,25])
plt.scatter(x1, y1, c='r', s=25)x2 = np.array([22,15,34,51,21,4,12,45,1,47,5,78,34])
y2 = np.array([1,3,4,5,6,8,2,6,2,90,8,2,23])
plt.scatter(x2, y2, c='g', s=95)plt.show()  

在这里插入图片描述

2、Matplotlib 柱形图

我们可以使用 pyplot 中的 bar() 方法来绘制柱形图。

bar() 方法语法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, 
bottom=None, *, align='center', data=None, **kwargs)
x:浮点型数组,柱形图的 x 轴数据。height:浮点型数组,柱形图的高度。width:浮点型数组,柱形图的宽度。bottom:浮点型数组,底座的 y 坐标,默认 0。align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'**kwargs::其他参数。

例子:

import matplotlib.pyplot as plt
import numpy as npx=np.array(['google','baidu','jingdong','alibaba','taobao'])
y=np.array([11,32,34,24,15])
plt.bar(x,y)
plt.show()

在这里插入图片描述

垂直方向的柱形图可以使用 barh() 方法来设置:

import matplotlib.pyplot as plt
import numpy as npx=np.array(['google','baidu','jingdong','alibaba','taobao'])
y=np.array([11,32,34,24,15])
plt.barh(x,y)
plt.show()

在这里插入图片描述

设置柱形图宽度,bar() 方法使用 width 设置,barh() 方法使用 height 设置 height:

import matplotlib.pyplot as plt
import numpy as npx=np.array(['google','baidu','jingdong','alibaba','taobao'])
y=np.array([11,32,34,24,15])
plt.bar(x,y,width=0.2)
plt.show()

在这里插入图片描述

x = ['一月','二月','三月','四月','五月']
y = [20,56,23,12,33]
plt.barh(x,y, height=0.2)
plt.show()  

在这里插入图片描述

还可以使用color属性自定义每个柱形的颜色

x = ['一月','二月','三月','四月','五月']
y = [20,56,23,12,33]
plt.barh(x,y, height=0.2, color = ["#4CAF50","red","hotpink","#556B2F"])
plt.show()  

在这里插入图片描述

3、Matplotlib 饼图

我们可以使用 pyplot 中的 pie() 方法来绘制饼图。

注意:默认情况下,第一个扇形的绘制是从 x 轴开始并逆时针移动:

pie() 方法语法格式如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, 
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, 
counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, 
rotatelabels=False, *, normalize=None, data=None)[source]
x:浮点型数组,表示每个扇形的面积。explode:数组,表示各个扇形之间的间隔,默认值为0。labels:列表,各个扇形的标签,默认值为 None。colors:数组,表示各个扇形的颜色,默认值为 None。autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。shadow::布尔值 TrueFalse,设置饼图的阴影,默认为 False,不设置阴影。radius::设置饼图的半径,默认为 1。startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。
import matplotlib.pyplot as plt
import numpy as npy=np.array([15,35,25,5,20]) # 每块所占的大小
label=['A','B','C','D','E']#设置饼图标签
color=['r','b','g','y','g']#设置饼图颜色
plt.pie(y,labels=label,colors=color)
plt.show()

在这里插入图片描述

突出显示第二个扇形,并格式化输出百分比:

import matplotlib.pyplot as plt
import numpy as npy=np.array([15,35,25,5,20])
label=['A','B','C','D','E']#设置饼图标签
color=['r','b','g','y','g']#设置饼图颜色
explodes=[0,0.2,0,0,0]# 第二部分突出显示,值越大,距离中心越远
plt.pie(y,labels=label,colors=color,explode=explodes,autopct='%.2f%%')#格式化输出百分比
plt.show()

在这里插入图片描述

七、设置坐标轴的刻度

以设置x轴的刻度为例

xticks(ticks, [labels], **kwargs)

参数说明:
ticks:数组类型,用于设置X轴刻度间隔
[labels]:数组类型,用于设置每个间隔的显示标签
**kwargs:用于设置标签字体倾斜度rotation和颜色color等外观属性。

不设置刻度时的样式

x = np.arange(1, 13)
y = np.arange(1, 13)plt.plot(x, y)
plt.show()

在这里插入图片描述

可以发现,本来x和y都是1-12,但是刻度却只显示偶数,这是Matplotlib默认的样式。

我们可以自己定义刻度

x = np.arange(1, 13)
y = np.arange(1, 13)# 第一个参数是x轴刻度间隔,x是包含1-12的数组
# calendar.month_name[1:13] 获取1-12月份对应的英文名 即 1 - January
# rotation 设置label的旋转角度
# color设置label字体颜色
plt.xticks(x,calendar.month_name[1:13],rotation=45,color='b',fontsize=14)
plt.yticks(y)
plt.plot(x, y)
plt.show()

在这里插入图片描述

另一种情况就是当x轴每个label太长时,需要增大刻度,减少label

x = ['2021/3/4','2021/2/14','2021/9/4','2021/5/24','2021/3/14','2021/7/4','2021/8/14','2021/1/14']
y = [100,200,300,400,500,600,700,800]
plt.plot(x, y)
plt.show()

在这里插入图片描述
x轴太密集,不方便观看

x = ['2021/3/4','2021/2/14','2021/9/4','2021/5/24','2021/3/14','2021/7/4','2021/8/14','2021/1/14']
y = [100,200,300,400,500,600,700,800]
plt.xticks(range(1,len(x),2), ['日期%s'%i for i in x[1:len(x):2]], rotation=45)
plt.plot(x, y)
plt.show()

在这里插入图片描述

这样x轴的刻度减少了一半

相关文章:

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库&#xff0c;提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块&#xff0c;能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数&#xff0c;每个函数会对当前的图像进行…...

mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)

以上四个事件都是与鼠标相关的事件&#xff0c;其中mouseenter和mouseover均是鼠标移入时触发的事件&#xff0c;但是使用mouseover的时候会触发冒泡事件&#xff0c;也就是&#xff0c;当父元素和子元素均绑定mouseover事件的时候&#xff0c;如果触发子元素的mouserover事件&…...

【论文阅读】基于深度学习的时序预测——Autoformer

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…...

【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数

AI学习目录汇总 1、什么是块? 在线性模型中,我们关注过单个神经元(单个神经网络的输入和输出); 在多层感知机中,我们关注过整层的神经元(前一层的输出作为后一层的输入); 如果将“多层感知机”视为一整体,称为“块”,可以将前一个块的输出作为后一个块的输入。 块…...

Flink之Task解析

Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…...

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…...

如何使用Kali Linux进行密码破解?

今天我们探讨Kali Linux的应用&#xff0c;重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务&#xff0c;Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动&#xff0c;旨在通过不同的方法和工具来破解密码…...

【Freertos基础教程】任务管理之基本使用

文章目录 前言一、freertos任务管理是什么&#xff1f;二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本fre…...

VMware安装BC-linux-eluer 21.10,配置网络

参考配置&#xff1a;https://hiworld.blog.csdn.net/article/details/121608950 /etc/sysconfig/network-scripts/ifcfg-ens33 配置内容如下&#xff1a; TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_…...

2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程

安装MSYS2 msys2是一款跨平台编译套件&#xff0c;它模拟linux编译环境&#xff0c;支持整合mingw32和mingw64&#xff0c;能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有&#xff1a;msys&#xff0c;cygwin&#xff0c;mingw 优势&…...

【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁

1、Redisson 介绍 Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。Redisson 在基于 NIO 的 Netty 框架上,充分的利用了 Redis 键值数据库提供的一系列优势,在 Java 实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的…...

宝藏级画图工具-drawio

今天推荐一款非常好用的免费开源画图工具drawio. Drawio即可以下载安装到本地&#xff0c;也可以在线编辑&#xff0c;在线编辑网址为 https://app.diagrams.net/。 本地版下载地址为https://github.com/jgraph/drawio-desktop/releases 1、支持各类图形 Drawio可以非常便捷…...

36_windows环境debug Nginx 源码-使用 VSCode 和WSL

文章目录 配置 WSL编译 NginxVSCode 安装插件launch.json配置 WSL sudo apt-get -y install gcc cmake sudo apt-get -y install pcre sudo apt-get -y install libpcre3 libpcre3-dev sudo apt-get...

海康威视iVMS综合安防系统任意文件上传(0Day)

漏洞描述 攻击者通过请求/svm/api/external/report接口任意上传文件,导致获取服务器webshell权限,同时可远程进行恶意代码执行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和…...

SOME/IP通信对数据包的大小有要求

SOME/IP通信对数据包的大小有要求,因为SOME/IP是基于UDP协议的,而UDP协议有一个最大传输单元(MTU)的限制,即每个数据包的大小不能超过MTU的值。 不同的网络环境下,MTU的值可能不同,一般在1500字节到9000字节之间。 如果SOME/IP数据包的大小超过了MTU的值,那么就需要进…...

苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除

苹果电脑是很多人喜欢使用的一种电脑&#xff0c;它有着优美的外观&#xff0c;流畅的操作系统&#xff0c;丰富的应用程序和高效的性能。但是&#xff0c;随着时间的推移&#xff0c;苹果电脑也会产生一些不必要的文件和数据&#xff0c;这些文件和数据就是我们常说的垃圾。那…...

【0216】stats collector(统计信息收集器)资源初始化之获取IPV4套接字地址信息(2)

相关阅读: 【0215】stats collector(统计信息收集器)工作原理之资源初始化(1) 1. 如何获取ipv4套接字地址信息 在【0215】stats collector(统计信息收集器)工作原理之资源初始化(1)一文的2.1.3节中讲解了stats collector进程会创建UDP,与其他进程进行通信,从而实现…...

uni-app 面容、指纹识别插件(uni-face-login)

面容、指纹识别插件(uni-face-login) 介绍 人脸指纹登录授权&#xff0c;可以使用手机自带的人脸、指纹进行生物识别&#xff0c;进而判断是否机主本人&#xff0c;从而进行授权验证&#xff0c;适配安卓、iOS、鸿蒙设备 猛戳这里去插件市场看看 使用 该插件支持鸿蒙、安卓…...

专治疗懒病:GO、KEGG富集分析一体函数

之前我们写过GO、KEGG的富集分析&#xff0c;参见&#xff1a;补充更新&#xff1a;GO、KEGG&#xff08;批量分组&#xff09;分析及可视化。演示了差异基因KEGG或者GO的分析流程。其实差异基因的富集分析输入的文件只需要一组基因就可以了。所以我们发挥了专治懒病的优良传统…...

pygame第6课——贪吃蛇小游戏

今天我们开始Pygame的第六课&#xff0c;前几节课的内容在这里【点我】&#xff0c;欢迎大家前去考古&#xff1a; 今天我们一起来学习制作一个小游戏【贪吃蛇】&#xff0c;这是一个非常经典的小游戏&#xff0c;那么我们一起开始吧 1、游戏准备工作 import pygame, random,o…...

iptables之iptables表、链、规则 、匹配模式、扩展模块、连接追踪模块(一)

一、iptables的链 1.请求到达本机&#xff1a; PREROUTING --> INPUT --> Local Process &#xff08;本机&#xff09; 2.请求经过本机&#xff1a; PREROUTING --> FORWARD --> POSTROUTING 3.请求从本机发出&#xff1a;local Process&#xff08;本机&#xf…...

Mac 卸载appium

安装了最新版的appium 2.0.1,使用中各种问题&#xff0c;卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium&#xff1a; npm uninstall -g appium 出现报错&#xff1a;Error: EACCES: permiss…...

数据结构----哈夫曼树

这里写目录标题 基本概念引子基本概念各种路径长度各种带权路径长度结点的带权路径长度树的带权路径长度哈夫曼树 哈夫曼树的构造理论基础构造思想总结 哈夫曼树的实现哈夫曼编码前缀编码哈夫曼编码的思想案例代码实现 编码与解码 基本概念 引子 哈夫曼树就是寻找构造最优二叉…...

Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例

Spring之Aop切面---日志收集&#xff08;环绕处理、前置处理方式&#xff09;--使用/教程/实例 简介系统登录日志类LoginLogEntity .java 一、环绕处理方式1、自定义注解类LoginLogAop.class2、切面处理类LogoutLogAspect.java 二、前置处理方式&#xff1a;1、自定义注解类Log…...

UE4/UE5 照明构建失败 “Lightmass crashed”解决“数组索引越界”

在构建全局光照时,经常会出现“Lightmass crashed”的错误,导致光照构建失败。本文将分析这一问题的原因,并给出解决建议。 UE4 版本4.26 报错如下&#xff1a; <None> Lightmass crashed: Assertion failed: (Index > 0) & (Index < ArrayNum) [File:d:\bu…...

并发编程系列-Semaphore

Semaphore&#xff0c;如今通常被翻译为"信号量"&#xff0c;过去也曾被翻译为"信号灯"&#xff0c;因为类似于现实生活中的红绿灯&#xff0c;车辆是否能通行取决于是否是绿灯。同样&#xff0c;在编程世界中&#xff0c;线程是否能执行取决于信号量是否允…...

3年 Android 开发的面试心经(后悔当初没有拿 N+1)

作者&#xff1a;勇闯天涯 当某人顺利通过大厂面试时&#xff0c;总会有人认为这是运气比较好罢了&#xff0c;但他们不曾得知对方之前受过多少苦和委屈&#xff0c;又付出了多少努力一步步去突破这些困境。正是因为他们的努力付出&#xff0c;在合适的时间与地点&#xff0c;用…...

【c语言】 -- 指针进阶

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习指针进阶。 让我们开启c语言学习…...

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况&#xff0c;来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中&#xff0c;经常会遇到一些性能瓶颈和稳定性问题&#xff0c;而软件压力测试的作…...

Stephen Wolfram:那么…ChatGPT 在做什么,为什么它有效呢?

So … What Is ChatGPT Doing, and Why Does It Work? 那么…ChatGPT在做什么&#xff0c;为什么它有效呢&#xff1f; The basic concept of ChatGPT is at some level rather simple. Start from a huge sample of human-created text from the web, books, etc. Then train…...