[python]matplotlib

整体图示

.ipynb 转换md时候图片不能通知携带,所有图片失效,不过直接运行代码可以执行

image

figure figure,axes与axis

image

import matplotlib.pyplot as plt
fig=plt.figure()
fig2=plt.subplots()
fig3,axs=plt.subplots(2,2)
plt.show()
<Figure size 640x480 with 0 Axes>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Axes:一个图形上的数据点

  • 数据限制可以通过 axes.Axes.set_xlim()和 axes.Axes.set_ylim() 方法
  • 每个Axes都有一个标题(通过 set_title() 设置)、一个 x 标签(通过 set_xlabel() 设置)和一个通过 set_ylabel() 设置的 y 标签

Axis

  • number-line的对象,即我们日常说的坐标轴
  • 负责设置图形限制并生成刻度(轴上的标记)和刻度标签(标记刻度的字符串)
  • 刻度的位置由 Locator 对象确定,刻度标签字符串由 Formatter 格式化

Artist

  • 图上看到的所有东西都是Artist(甚至是 Figure、Axes和Axis对象
  • 包括 Text 对象、Line2D 对象、collections对象、Patch 对象
  • 渲染图形时,所有的Artist会被绘制到画布上。其中大多数Artist会被绑在轴上,这些Artist不能被多个轴共享,也不能从一个轴移动到另一个轴
fig,ax=plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])
[<matplotlib.lines.Line2D at 0x123efb690>]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Axes 绘图方法,matplotlib.pyplot 模块中有一个相应的函数可以在“当前”轴上执行该绘图,如果它们尚不存在,则会创建该轴(及其父图形

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
[<matplotlib.lines.Line2D at 0x123f33690>]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个完整的绘画

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#上述代码相当于

fig,ax=plt.subplots()
ax.plot([1,2,3,4],[1,4,2,3])
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绘图函数的输入类型

  • 所有绘图函数都需要 numpy.array 或 numpy.ma.masked_array 作为输入
import pandas as pd
import numpy as npa=pd.DataFrame(np.random.rand(4,5),columns=list('abcde'))
a_asarray=a.values
print(a)
print(a_asarray)
          a         b         c         d         e
0  0.942851  0.469160  0.163871  0.383466  0.482122
1  0.153815  0.297769  0.402677  0.449713  0.501791
2  0.084304  0.471720  0.446233  0.112047  0.172477
3  0.648961  0.762354  0.651969  0.436571  0.151777
[[0.94285104 0.46915987 0.16387077 0.38346593 0.4821217 ][0.15381521 0.2977688  0.4026774  0.44971345 0.50179147][0.08430377 0.47171985 0.44623296 0.11204723 0.172477  ][0.64896052 0.76235361 0.65196889 0.43657115 0.15177734]]
b=np.matrix([[1,2],[3,4]])
b_asarray=np.asanyarray(b)
print(b)
print(b_asarray)
[[1 2][3 4]]
[[1 2][3 4]]

object-oriented接口和pyplot接口

  • 两种使用 Matplotlib 的方法
    • 创建图形和轴,并在它们上调用方法(“面向对象 (OO) ”)
    • 依靠 pyplot 自动创建和管理图形和坐标轴,并使用 pyplot 函数进行绘图
## oo方法
x=np.linspace(0,2,100)
fig,ax=plt.subplots()ax.plot(x,x,label='linear')
ax.plot(x,x**2,label='quadratic')
ax.plot(x,x**3,label='cubic')
ax.set_xlabel('x_label')
ax.set_ylabel('y_label')
ax.set_title("Simple label")
ax.legend() ## 添加图例
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重复利用

def my_plotter(ax,data1,data2,param_dict):out=ax.plot(data1,data2,**param_dict)return out
data1,data2,data3,data4=np.random.randn(4,100)
fig,ax=plt.subplots(1,1)
my_plotter(ax,data1,data2,{'marker':'x'})
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

fig,(ax1,ax2)=plt.subplots(1,2)
data1, data2, data3, data4 = np.random.randn(4, 100)
my_plotter(ax1,data1,data2,{'marker':'x'})
my_plotter(ax2,data3,data4,{'marker':'o'})
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简化

线段简化

  • path.simplify 参数是一个布尔值,指示线段是否被简化

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mply=np.random.rand(100000)
y[50000:]*=2
y[np.linspace(1,np.log10(5000),400).astype(int)]=-1
mpl.rcParams['path.simplify']=True
mpl.rcParams['path.simplify_threshold']=0.0plt.plot(y)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Matplotlib 默认为 1/9 的保守简化阈值

标记简化

  • 标记简化仅适用于 Line2D 对象(通过 markevery 属性
x=[1,2,3,4]
y=[1,3,3,2]
plt.plot(x, y, markevery=10)
[<matplotlib.lines.Line2D at 0x126b66b90>]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

pyplot教程

  • matplotlib.pyplot 是使 matplotlib 像 MATLAB 一样工作的命令样式函数的集合
  • 每个 pyplot 函数都会对图形进行一些更改,例如,创建图形、在图形中创建绘图区域、在绘图区域中绘制一些线、用标签装饰绘图等。

使用 pyplot 生成可视化非常快

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plot() 命令提供单个列表或数组,matplotlib 会假定它是一个 y 值序列,并自动为你生成 x 值.
默认的 x 向量的长度与 y 相同,但从 0 开始,因此 x 数据为 [0, 1, 2, 3]

import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加颜色

import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.axis([0,6,0,20])
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

axis() 命令采用 [xmin, xmax, ymin, ymax] 列表来指定x、y轴的范围

使用数组在一个命令中绘制具有不同样式的多条线

import matplotlib.pyplot as plt
import numpy as npt=np.arange(0.,5.,0.2)
plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用关键字字符串绘图

数据格式允许你使用字符串访问特定变量。例如numpy.recarray 或 pandas.DataFrame
atplotlib 允许你为这样的对象提供 data 关键字参数,并使用与这些变量对应的字符串生成图

data={'a':np.arange(50),'c':np.random.randint(0,50,50),'d':np.random.randn(50),}
data['b']=data['a']+10*np.random.randn(50)
data['d']=np.abs(data['d'])*100plt.scatter('a','b',c='c',s='d',data=data)
plt.xlabel('entry a')
plt.ylabel('entry b')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

import matplotlib.pyplot as pltnames = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]plt.figure(figsize=(9, 3))
## (131) 表示将绘图区域划分为一个 1x3 的网格(1 行 3 列),并选择当前要绘制的子图为第 1 个子图
plt.subplot(131)
plt.bar(names, values)
plt.subplot(132)
plt.scatter(names, values)
plt.subplot(133)
plt.plot(names, values)
plt.suptitle('Categorical Plotting')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线属性

线宽、虚线样式、反走样等

使用关键字参数


x=[1, 2, 3, 4]
plt.plot(x,linewidth=3.0) #设置宽限plt.ylabel('some numbers')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 Line2D 的setter 方法

import matplotlib.pyplot as pltx = [1, 2, 3, 4]
y = [1, 4, 9, 16]line, = plt.plot(x, y, '-')
line.set_antialiased(False) # 关闭antialiasingprint(line) # >>> Line2D(_child0)
plt.show()
Line2D(_child0)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要获取可设置属性的列表,可以使用一行或多行作为参数调用 setp() 函数

import matplotlib.pyplot as pltlines = plt.plot([1, 2, 3])
print(plt.setp(lines))
  agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array and two offsets from the bottom left corner of the imagealpha: scalar or Noneanimated: boolantialiased or aa: boolclip_box: `~matplotlib.transforms.BboxBase` or Noneclip_on: boolclip_path: Patch or (Path, Transform) or Nonecolor or c: colordash_capstyle: `.CapStyle` or {'butt', 'projecting', 'round'}dash_joinstyle: `.JoinStyle` or {'miter', 'round', 'bevel'}dashes: sequence of floats (on/off ink in points) or (None, None)data: (2, N) array or two 1D arraysdrawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'figure: `~matplotlib.figure.Figure`fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}gapcolor: color or Nonegid: strin_layout: boollabel: objectlinestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}linewidth or lw: floatmarker: marker style string, `~.path.Path` or `~.markers.MarkerStyle`markeredgecolor or mec: colormarkeredgewidth or mew: floatmarkerfacecolor or mfc: colormarkerfacecoloralt or mfcalt: colormarkersize or ms: floatmarkevery: None or int or (int, int) or slice or list[int] or float or (float, float) or list[bool]mouseover: boolpath_effects: list of `.AbstractPathEffect`picker: float or callable[[Artist, Event], tuple[bool, dict]]pickradius: floatrasterized: boolsketch_params: (scale: float, length: float, randomness: float)snap: bool or Nonesolid_capstyle: `.CapStyle` or {'butt', 'projecting', 'round'}solid_joinstyle: `.JoinStyle` or {'miter', 'round', 'bevel'}transform: `~matplotlib.transforms.Transform`url: strvisible: boolxdata: 1D arrayydata: 1D arrayzorder: float
None

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 setp() 命令


x = [1, 2, 3, 4]
y = [1, 4, 9, 16]lines = plt.plot(x, y)
plt.step(x,y,color='r',linewidth=2.0)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多个图形和轴

import matplotlib.pyplot as plt
import numpy as npdef f(t):return np.exp(-t) * np.cos(2*np.pi*t)t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)plt.figure()
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

subplot() 命令指定 numrows、numcols、plot_number。

import matplotlib.pyplot as plt
plt.figure(1)                # 第一个图形
plt.subplot(211)             # 第一个图形中的第1个子图
plt.plot([1, 2, 3])
plt.subplot(212)             # 第一个图形中的第2个子图
plt.plot([4, 5, 6])plt.figure(2)                # 第二个图形
plt.plot([4, 5, 6])          # 创建默认子图,默认subplot(111)plt.figure(1)                # 当前图形为figure 1; 由于subplot(212) 在211后面定义,所以当前子图为subplot(212)
plt.subplot(211)             # 定义当前子图为subplot(211) 
plt.title('Easy as 1, 2, 3') # 给211子图定义标题plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文本处理

import matplotlib.pyplot as plt
import numpy as npmu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)# 柱状图
n, bins, patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75)plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plt.xlabel('my data', fontsize=14, color='red')
Text(0.5, 0, 'my data')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注释文本

text() 命令的使用可以将文本放置在轴上的任意位置
文本的一个常见用途是对绘图的某些特征进行注释,并且 annotate() 方法提供了帮助功能使注释变得容易
在注释中,需要考虑两点:参数 xy 表示的被注释位置和文本 xytext 的位置,这两个参数都是 (x, y) 元组

import matplotlib.pyplot as plt
import numpy as npax = plt.subplot(111)t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)
'''
local max:注释的内容
xy:箭头头的坐标xytext:注释内容的起始位置
arrowprops:设置箭头的一些属性,颜色、宽度等
'''
plt.ylim(-2, 2)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对数轴

import matplotlib.pyplot as plt
import numpy as npnp.random.seed(19680801)y=np.random.normal(loc=0.5,scale=4,size=1000)
y=y[(y>0)&(y<1)]
y.sort()
x=np.arange(len(y))plt.figure()#linear
plt.subplot(121)
plt.plot(x,y)
plt.yscale('linear')
plt.title('linear')
plt.grid(True)# log
plt.subplot(122)
plt.plot(x,y)
plt.yscale('log')
plt.title('log')
plt.grid(True)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片处理

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img=mpimg.imread('data.png')
print(img)
[[0.40784314 0.40784314 0.40784314 ... 0.42745098 0.42745098 0.42745098][0.4117647  0.4117647  0.4117647  ... 0.42745098 0.42745098 0.42745098][0.41960785 0.41568628 0.41568628 ... 0.43137255 0.43137255 0.43137255]...[0.4392157  0.43529412 0.43137255 ... 0.45490196 0.4509804  0.4509804 ][0.44313726 0.44313726 0.4392157  ... 0.4509804  0.44705883 0.44705883][0.44313726 0.4509804  0.4509804  ... 0.44705883 0.44705883 0.44313726]]

Matplotlib 已将每个通道的 8 位数据重新缩放为 0.0 到 1.0 之间的浮点数据,每个内部列表代表一个像素
对于 RGB 图像,有 3 个值。由于它是黑白图像,因此 R、G 和 B 都相似
对于 RGBA(其中 A 是 alpha 或透明度),每个内部列表有 4 个值,而简单的亮度图像只有一个值(因此只是一个 2-D 数组,而不是 3-D 数组)

## 将 numpy 数组绘制为图像

Matplotlib 中,可以使用 imshow() 函数来渲染图像数据生成的numpy数组

import matplotlib.pyplot as plt
import matplotlib.image as mpimgimg = mpimg.imread('data.png')
img
#将伪彩色方案应用于图像图
lum_img = np.expand_dims(img, axis=2)
plt.imshow(lum_img)plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

## 增加亮色plt.imshow(lum_img,cmap='hot')
<matplotlib.image.AxesImage at 0x1268284d0>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

imgplot = plt.imshow(lum_img)
imgplot.set_cmap('nipy_spectral')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加入色标

import matplotlib.pyplot as plt
import matplotlib.image as mpimgimg = mpimg.imread('data.png')
img
#将伪彩色方案应用于图像图
lum_img = np.expand_dims(img, axis=2)
plt.imshow(lum_img)
plt.colorbar()
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检查特定数据范围

import matplotlib.pyplot as plt
import matplotlib.image as mpimgimg = mpimg.imread('data.png')
lum_img = np.expand_dims(img, axis=2)plt.hist(lum_img.ravel(), bins=256, range=(0.0, 1.0), fc='k', ec='k')plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对比度

import matplotlib.pyplot as plt
import matplotlib.image as mpimgimg = mpimg.imread('data.png')
lum_img = np.expand_dims(img, axis=2)fig = plt.figure()a = fig.add_subplot(1, 2, 1)
imgplot = plt.imshow(lum_img)
a.set_title('Before')
plt.colorbar(ticks=[0.1, 0.3, 0.5, 0.7], orientation='horizontal')a = fig.add_subplot(1, 2, 2)
imgplot = plt.imshow(lum_img, clim=(0.0, 0.7))
# 也可以:
# imgplot = plt.imshow(lum_img)
# imgplot.set_clim(0.0, 0.7)
a.set_title('After')
plt.colorbar(ticks=[0.1, 0.3, 0.5, 0.7], orientation='horizontal')plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插值

import matplotlib.pyplot as plt
from PIL import Imageimg = Image.open('data.png')
img.thumbnail((64, 64), Image.LANCZOS)
imgplot = plt.imshow(img)plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

imgplot = plt.imshow(img, interpolation="nearest")

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

双三次插值(bicubic)

imgplot = plt.imshow(img, interpolation="bicubic")

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

完整实例

import numpy as np
import matplotlib.pyplot as pltdata = {'Barton LLC': 109438.50,'Frami, Hills and Schmidt': 103569.59,'Fritsch, Russel and Anderson': 112214.71,'Jerde-Hilpert': 112591.43,'Keeling LLC': 100934.30,'Koepp Ltd': 103660.54,'Kulas Inc': 137351.96,'Trantow-Barrows': 123381.38,'White-Trantow': 135841.99,'Will LLC': 104437.60}
group_data = list(data.values())
group_names = list(data.keys())
group_mean = np.mean(group_data)fig, ax = plt.subplots()
ax.barh(group_names, group_data)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

设置样式

import matplotlib.pyplot as plt 
print(plt.style.available)
['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-v0_8', 'seaborn-v0_8-bright', 'seaborn-v0_8-colorblind', 'seaborn-v0_8-dark', 'seaborn-v0_8-dark-palette', 'seaborn-v0_8-darkgrid', 'seaborn-v0_8-deep', 'seaborn-v0_8-muted', 'seaborn-v0_8-notebook', 'seaborn-v0_8-paper', 'seaborn-v0_8-pastel', 'seaborn-v0_8-poster', 'seaborn-v0_8-talk', 'seaborn-v0_8-ticks', 'seaborn-v0_8-white', 'seaborn-v0_8-whitegrid', 'tableau-colorblind10']
plt.style.use('fivethirtyeight') #样式设置成fivethirtyeight
fig, ax = plt.subplots()
ax.barh(group_names, group_data)
<BarContainer object of 10 artists>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

保存图形

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
print(fig.canvas.get_supported_filetypes())
'''
{'eps': 'Encapsulated Postscript', 'jpg': 'Joint Photographic Experts Group', 
'jpeg': 'Joint Photographic Experts Group', 'pdf': 'Portable Document Format', 
'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', 
'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', 
'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', 
'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format'}
'''
{'eps': 'Encapsulated Postscript', 'jpg': 'Joint Photographic Experts Group', 'jpeg': 'Joint Photographic Experts Group', 'pdf': 'Portable Document Format', 'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', 'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', 'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format', 'webp': 'WebP Image Format'}"\n{'eps': 'Encapsulated Postscript', 'jpg': 'Joint Photographic Experts Group', \n'jpeg': 'Joint Photographic Experts Group', 'pdf': 'Portable Document Format', \n'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', \n'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', \n'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', \n'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format'}\n"

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

# 保存图形
fig.savefig('山月.png', transparent=False, dpi=80, bbox_inches="tight")

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

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

相关文章

云原生学习系列之基础环境准备(虚拟机搭建)

最近由于工作需要开始学习云原生相关内容&#xff0c;为方便学习操作&#xff0c;准备在外网搭建自己的环境&#xff0c;然后进行相关的练习&#xff0c;搭建环境的第一步便是虚拟机的安装。 基础软件 这里我用到的是CentOS-7-x86_64的操作系统。 链接&#xff1a;https://pa…

Eureka注册及使用

一、Eureka的作用 Eureka是一个服务注册与发现的工具&#xff0c;主要用于微服务架构中的服务发现和负载均衡。其主要作用包括&#xff1a; 服务提供者将自己注册到Eureka Server上&#xff0c;包括服务的地址和端口等信息。服务消费者从Eureka Server上获取服务提供者的地址…

Go(Golang)的10个常见代码片段用于各种任务

探索有用的Go编程代码片段 提供“前10名”Go&#xff08;Golang&#xff09;代码片段的明确列表是具有挑战性的&#xff0c;因为代码片段的实用性取决于您试图解决的具体问题。然而&#xff0c;我可以为您提供十个常用的Go代码片段&#xff0c;涵盖了各种任务和概念&#xff1…

【驱动序列】简单聊聊开发驱动程序的缘由和驱动程序基本信息

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》&#xff0c;这是《驱动程序》专栏序列文章。 这是2024年第4篇文章&#xff0c;此篇文章是结合了C#知识点实践序列文章&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xf…

树莓派4B-Python使用PyCharm的SSH协议在电脑上远程编辑程序

目录 前言一、pycharm的选择二、添加SSH的解释器使用总结 前言 树莓派的性能始终有限&#xff0c;不好安装与使用高级一点的程序编辑器&#xff0c;如果只用thonny的话&#xff0c;本人用得不习惯&#xff0c;还不如PyCharm&#xff0c;所以想着能不能用电脑中的pycharm来编写…

IO作业2.0

思维导图 1> 使用fread、fwrite完成两个文件的拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {if(argc ! 3) //判断外部参数 {printf("The terminal format is incorrect\n");r…

OpenGL FXAA抗锯齿算法(Qt,Consloe版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前已经提供了使用VCG读取Mesh的方式,接下来就需要针对读取的网格数据进行一些渲染操作了。在绘制Mesh数据时总会遇到图形的抗锯齿问题,OpenGL本身已经为我们提供了一种MSAA技术,但该技术对于一些实时渲染性能有…

计算机组成原理——冯诺依曼计算机硬件框图

存储器&#xff1a;存放数据和程序 运算器&#xff1a;算术运算和逻辑运算 控制器&#xff1a;指挥程序的运算 输入设备&#xff1a;将信息转化成机器能识别的形式 输出设备&#xff1a;将结果转化成人们熟悉的形式

Centos安装Kafka(KRaft模式)

1. KRaft引入 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。其核心组件包含Producer、Broker、Consumer&#xff0c;以及依赖的Zookeeper集群。其中Zookeeper集群是Kafka用来负责集群元数据的管理、控制器的选举等。 由…

使用Apache Commons SCXML实现状态机管理

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们程序员在开发过程中&#xff0c;经常会遇到需要管理不同状态和状态之间转换的场景。比如&#xff0c;一个在线购物的订单&#xff0c;它可能有“新建订单”、“已支付”、“配送中”、“已完成”等状态。在这…

[嵌入式AI从0开始到入土]9_yolov5在昇腾上推理

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

uniapp运行到开发者工具中

uniapp 项目在微信开发者工具中运行&#xff0c;用于开发微信小程序。 微信 appid 获取地址&#xff1a;微信公众平台 运行到微信开发者工具中 一、进入微信公众平台、微信扫码登录、选择开发管理、选择开发设置、复制 appid 。 二、打开 manifest.json 配置文件、选择微信小…

居家康养领导品牌“颐家”完成B轮融资,商业化进程再加速

近日&#xff0c;颐家&#xff08;上海&#xff09;医疗养老服务有限公司&#xff08;以下称“颐家”“公司”&#xff09;宣布引入战略股东。此次融资额达数千万元人民币&#xff0c;资金将主要用于公司业务数智化升级及自费业务产品开发、团队扩展和业务渠道的开拓。本轮融资…

闭包,垃圾回收机制

1.垃圾回收机制 当函数执行完毕后,函数内部的变量就会被销毁。 代码&#xff1a; function fn() {var a 10;a;return a;}console.log(fn()); 输出的结果: 11 持续调用的结果: 2.变量的私有化 代码: function fn() {var a 10;return function fn1() {return a;}…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件&#xff0c;有如下一段话&#xff1a; 在构建 Redis 时&#xff0c;通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc&#xff0c;但在 Linux 系统上&#xff0c;jemalloc 是…

c语言内嵌汇编知识点记录

内容在飞书云文档&#xff0c;点击打开即可。 Docshttps://r0dhfl3ujy9.feishu.cn/docx/EaVIdjGVeoS6fUxiKWkcjAq8nWg?fromfrom_copylink

2024 Win 安装Oracle12C

文章目录 一、下载1.1 官方下载1.2 官方Archive下载1.3 博主提供 二、安装2.1 解压2.2 安装 三、连接3.1 SQL Plus3.2 切换到容器数据库orclpdb3.3 查询SID 四、查看数据4.1 SQL Develop 连接4.2 创建新用户4.3 develop 直接创建新用户4.3.2 SQL 错误: ORA-65096: 公用用户名或…

STM32CubeMX教程13 ADC - 单通道转换

目录 1、准备材料 2、实验目标 3、ADC概述 4、实验流程 4.0、前提知识 4.1、CubeMX相关配置 4.1.1、时钟树配置 4.1.2、外设参数配置 4.1.3、外设中断配置 4.2、生成代码 4.2.1、外设初始化调用流程 4.2.2、外设中断调用流程 4.2.3、添加其他必要代码 5、常用函数…

堆排序(C语言版)

一.堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 升序&#xff1a;建大堆 降序&#xff1a;建小堆 2. 利用堆删除思想来进行排序 1.1.利用上下调整法实现堆排序 第一步&#xff1a;建堆 好了&#xff0c;每次建堆都要问自己…

MVCC 并发控制原理-源码解析(非常详细)

基础概念 并发事务带来的问题 1&#xff09;脏读&#xff1a;一个事务读取到另一个事务更新但还未提交的数据&#xff0c;如果另一个事务出现回滚或者进一步更新&#xff0c;则会出现问题。 2&#xff09;不可重复读&#xff1a;在一个事务中两次次读取同一个数据时&#xff0c…