【python】matplotlib(moon cake)

文章目录
- 1、Style1
- 2、Style2
- 3、Style3
- 4、Style4
- 5、Style5
- 6、Style6
- 7、Style7
- 8、参考的库函数
- matplotlib.patches.Arc
- matplotlib.patches.Wedge
- 9、参考
1、Style1
"""
author: tyran
"""from numpy import sin, cos, pi
import matplotlib.pyplot as pltfrom matplotlib.patches import Arc, Circle, Wedge
from matplotlib.font_manager import FontPropertieslength = 20
R = 3**0.5*length/(3**0.5*cos(pi/12)-sin(pi/12))
r = 2*sin(pi/12)*R/3**0.5arc1 = Arc([0, length], width=2*r, height=2*r,angle=0, theta1=30, theta2=150, ec='orange', linewidth=4) ##ec为线条颜色,可以自由替换arc2 = Arc([-length/2, length/2*3**0.5], width=2*r, height=2*r,angle=0, theta1=60, theta2=180, ec='orange', linewidth=4)
arc3 = Arc([-length/2*3**0.5, length/2], width=2*r, height=2*r,angle=0, theta1=90, theta2=210, ec='orange', linewidth=4)
arc4 = Arc([-length, 0], width=2*r, height=2*r, angle=0, theta1=120, theta2=240, ec='orange', linewidth=4)
arc5 = Arc([-length/2*3**0.5, -length/2], width=2*r, height=2*r,angle=0, theta1=150, theta2=270, ec='orange', linewidth=4)
arc6 = Arc([-length/2, -length/2*3**0.5], width=2*r, height=2*r,angle=0, theta1=180, theta2=300, ec='orange', linewidth=4)
arc7 = Arc([0, -length], width=2*r, height=2*r, angle=0, theta1=210, theta2=330, ec='orange', linewidth=4)
arc8 = Arc([length/2, -length/2*3**0.5], width=2*r, height=2*r,angle=0, theta1=240, theta2=360, ec='orange', linewidth=4)
arc9 = Arc([length/2*3**0.5, -length/2], width=2*r, height=2*r,angle=0, theta1=270, theta2=390, ec='orange', linewidth=4)
arc10 = Arc([length, 0], width=2*r, height=2*r, angle=0, theta1=300, theta2=420, ec='orange', linewidth=4)
arc11 = Arc([length/2*3**0.5, length/2], width=2*r, height=2*r,angle=0, theta1=330, theta2=450, ec='orange', linewidth=4)
arc12 = Arc([length/2, length/2*3**0.5], width=2*r, height=2*r,angle=0, theta1=0, theta2=120, ec='orange', linewidth=4)circle = Circle((0,0), R, ec='orange', fc='white', linewidth=4) ##ec为线条颜色,fc为填充颜色,可以自由替换wedge1 = Wedge([-2, 2], R-5, 90, 180, ec='orange',fc=r'white', linewidth=4) ##ec为线条颜色,fc为填充颜色,可以自由替换
wedge2 = Wedge([-5, 5], R-12, 90, 180, ec='orange',fc=r'white', linewidth=4)
wedge3 = Wedge([-2, -2], R-5, 180, 270, ec='orange',fc=r'white', linewidth=4)
wedge4 = Wedge([-5, -5], R-12, 180, 270, ec='orange',fc=r'white', linewidth=4)
wedge5 = Wedge([2, -2], R-5, 270, 360, ec='orange',fc=r'white', linewidth=4)
wedge6 = Wedge([5, -5], R-12, 270, 360, ec='orange',fc=r'white', linewidth=4)
wedge7 = Wedge([2, 2], R-5, 0, 90, ec='orange',fc=r'white', linewidth=4)
wedge8 = Wedge([5, 5], R-12, 0, 90, ec='orange',fc=r'white', linewidth=4)art_list = [arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11, arc12]art_list.extend([circle, wedge1, wedge2, wedge3, wedge4, wedge5, wedge6, wedge7, wedge8])# art_list.extend([circle, wedge1, wedge2, wedge3, wedge4, wedge5, wedge6, wedge7, wedge8])
fig, ax = plt.subplots(figsize=(8, 8))
ax.set_aspect('equal')
for a in art_list:ax.add_patch(a)plt.axis('off')
font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12) ##可以自由下载字体使用
plt.text(-15.5, -2.5, '中秋快乐', bbox=dict(boxstyle='square', fc="w", ec='orange', linewidth=4),fontproperties=font_set,fontsize=50,color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-25, -33, '但愿人长久,千里共婵娟', fontproperties=font_set, fontsize=30, color='#aa4a30')
plt.ylim([-35, 35])
plt.xlim([-35, 35])plt.show()

最外环 12 个弧形对应 arc1 到 arc12
紧接着一个大圆对应着 circle
接下来是 8 个 90° 的扇形对应 wedge1 至 wedge8
字体通过 plt.text 配置实现
2、Style2
借助内旋轮线绘制月饼,先看看具体原理
内旋轮线(hypotrochoid)是追踪附着在围绕半径为 R 的固定的圆内侧滚转的半径为 r 的圆上的一个点得到的转迹线,这个点到内部滚动的圆的中心的距离是 d。



数学表达式

import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 300
# 迭代次数, 即沿绘制路径获取的点。
Niter = 100
thetas = np.linspace(0, revs*2*np.pi, num=Niter)d = 20 # 距离
r = 11 # 小圆半径
R = 12 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')length = 2.6
# 画个圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
length = 18
# 画个大圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
plt.axis('equal')
plt.axis('off')font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-5, -5, '中秋\n快乐', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4),fontproperties=font_set, fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-15, -25, '但愿人长久,千里共婵娟', fontproperties=font_set, fontsize=20, color='#aa4a30')plt.show()

画了两个圆,写了字体,剩下的就是内旋轮线的轨迹了
转数-内圆旋转次数 revs = 300
迭代次数, 即沿绘制路径获取的点。Niter = 100

3、Style3
借助内旋轮线绘制月饼
import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 30
# 迭代次数, 即沿绘制路径获取的点。
Niter = 9999
thetas = np.linspace(0,revs*2*np.pi,num=Niter)d = 10 # 距离
r = 46 # 小圆半径
R = 50 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas))d = 20 # 距离
r = 11 # 小圆半径
R = 12 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')length = 2.6
# 画个圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
length = 18
# 画个大圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='#FF6347', linewidth = '5')
plt.axis('equal')
plt.axis('off')font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-6, -6, '中秋\n快乐', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4), fontproperties=font_set,fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-20, -25, '但愿人长久,千里共婵娟', fontproperties=font_set, fontsize=20, color='#aa4a30')plt.show()

第一个 plot 绘制弹簧形状的蓝色的轨迹
第二个 plot 绘制最外圈弧度状的橙色轨迹
第三个 plot 绘制橙色的内圈小圆
第四个 plot 绘制红色的外圈大圆
配上文字,色彩还是比较悦目的
4、Style4
借助内旋轮线绘制月饼
import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 300
# 迭代次数, 即沿绘制路径获取的点。
Niter = 999
thetas = np.linspace(0,revs*2*np.pi,num=Niter)d = 10 # 距离
r = 46 # 小圆半径
R = 50 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas))d = 20 # 距离
r = 11 # 小圆半径
R = 12 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')d = 20 # 距离
r = 11 # 小圆半径
R = 14 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')length = 2.6
# 画个圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
length = 18.5
# 画个大圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
plt.axis('equal')length = 14
# 画个小圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')
plt.axis('equal')
plt.axis('off')font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-6, -5, '中秋\n快乐', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4), fontproperties=font_set, fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-20, -25, '但愿人长久,千里共婵娟', fontproperties=font_set, fontsize=20, color='#aa4a30')plt.show()

第一个 plot 中间蓝色的形状

第二个 plot 外圈黄色形状

第三个 plot 外圈黄色形状

叠加在一起

绘制三个圆,搭配文字就是最终的效果

5、Style5
借助内旋轮线绘制月饼
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 800
# 迭代次数, 即沿绘制路径获取的点。
Niter = 99999
thetas = np.linspace(0,revs*2*np.pi,num=Niter)
d = 20
r = 23
R = 60
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')
plt.axis('equal')
plt.axis('off')
font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-16, -15, '中秋\n快乐', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4), fontproperties=font_set, fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.text(-2, -70, 'Python做月饼,千里共禅娟', fontproperties=font_set, fontsize=20, color='#aa4a30')
plt.show()

暴力美学,写字的时候,底板用的是白色的圆圈,通过 boxstyle 控制
6、Style6
借助内旋轮线绘制月饼
import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 88
# 迭代次数, 即沿绘制路径获取的点。
Niter = 200
thetas = np.linspace(0,revs*2*np.pi,num=Niter)
d = 2 # 距离
r = 6 # 小圆半径
R = 3 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange', linewidth = '4')font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.axis('off')plt.show()

椭圆的也不在话下
7、Style7
借助内旋轮线绘制月饼
import numpy as np
from numpy import sin, cos
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontPropertiesx = lambda d,r,R,theta: (R-r)*np.cos(theta) + d*np.cos(((R-r)/r)*theta)
y = lambda d,r,R,theta: (R-r)*np.sin(theta) - d*np.sin(((R-r)/r)*theta)
# 转数-内圆旋转次数
revs = 888
# 迭代次数, 即沿绘制路径获取的点。
Niter = 2024
thetas = np.linspace(0,revs*2*np.pi,num=Niter)d = 8 # 距离
r = 36 # 小圆半径
R = 35 # 大圆半径
plt.plot(x(d, r, R, thetas), y(d, r, R, thetas), color='orange')length = 7
# 画个圆
theta = np.linspace(0, 2 * np.pi, 100)
x = length * cos(theta)
y = length * sin(theta)
plt.plot(x, y, color='orange', linewidth = '5')font_set = FontProperties(fname=r"Alibaba-PuHuiTi-Medium.ttf", size=12)
plt.text(-1.5, -1, '中秋', bbox=dict(boxstyle='circle', fc="w", ec='orange', linewidth=4),fontproperties=font_set, fontsize=40, color='orange') ##ec为线条颜色,color为字体颜色,可以自由替换
plt.axis('off')plt.show()

神奇,真的是什么形状都可以驾驭
8、参考的库函数
matplotlib.patches.Arc
matplotlib.patches.Arc 是 Matplotlib 库中用于绘制圆弧的类。这个类允许你在指定的中心位置、半径、起始角度和终止角度上绘制一个圆弧。这对于需要可视化圆形或环形结构的数据或设计图表时非常有用。
当你创建一个 Arc 对象时,你需要提供以下参数:
- xy:浮点数元组 (float, float),表示椭圆(及圆弧)的中心点坐标 (x, y)。
- width:浮点数,表示椭圆水平轴的长度,也即圆弧所在椭圆的宽度。
- height:浮点数,表示椭圆垂直轴的长度,也即圆弧所在椭圆的高度。
- angle:浮点数,默认值为 0.0,表示椭圆的旋转角度(逆时针方向)。
- theta1:浮点数,默认值为 0.0,表示圆弧的起始角度(以度为单位)。这个值相对于 angle 参数,例如,如果 angle=45 和 theta1=90,则绝对起始角度为 135。
- theta2:浮点数,默认值为 360.0,表示圆弧的结束角度(以度为单位)。这个值也相对于 angle 参数。大于等于 360 的角度,或小于 0 的角度,将通过在范围 [0, 360) 内取输入值模 360 来表示。
- **kwargs:其他关键字参数,用于设置圆弧的样式属性。大多数补丁属性都支持关键字参数,除了 fill 和 facecolor,因为圆弧不能被填充。
以下是一些常见的属性,用于进一步自定义圆弧的外观:
- agg_filter:过滤函数,接受一个 (m, n, 3) 的浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 的数组。
- alpha:标量,表示圆弧的透明度。
- animated:布尔值,表示是否使用动画渲染。
- antialiased 或 aa:布尔值,表示是否应用抗锯齿效果。
- capstyle:{‘butt’, ‘projecting’, ‘round’},表示圆弧端点的样式。
- clip_box:Bbox,表示用于裁剪圆弧的边界框。
- clip_on:布尔值,表示是否应用裁剪。
- clip_path:Patch 或 (Path, Transform),表示用于裁剪圆弧的路径。
color:颜色,表示圆弧的颜色。 - edgecolor 或 ec:颜色,表示圆弧边缘的颜色。
- figure:Figure,表示圆弧所在的图形对象。
- gid:字符串,表示圆弧的标识符。
- hatch:{‘/’, ‘’, ‘|’, ‘-’, ‘+’, ‘x’, ‘o’, ‘O’, ‘.’, ‘*’},表示圆弧的填充图案(但注意圆弧不能被填充,此属性主要用于其他可填充对象)。
- in_layout:布尔值,表示圆弧是否包含在布局中。
- joinstyle:{‘miter’, ‘round’, ‘bevel’},表示圆弧段之间连接处的样式。
- label:对象,表示圆弧的标签。
- linestyle 或 ls:{‘-’, ‘–’, ‘-.’, ‘:’, ‘’} 或其他自定义样式,表示圆弧的线型。
- linewidth 或 lw:浮点数,表示圆弧的线宽。
- mouseover:布尔值,表示当鼠标悬停在圆弧上时是否触发事件。
- path_effects:AbstractPathEffect 的列表,表示应用于圆弧的路径效果。
- picker:无或布尔值或浮点数或可调用对象,表示用于选择圆弧的拾取器。
- rasterized:布尔值,表示是否将圆弧栅格化为图像。
- sketch_params:(scale: float, length: float, randomness: float),表示用于绘制草图效果的参数。
- snap:布尔值或无,表示是否将圆弧的坐标值对齐到像素网格。
- transform:Transform,表示应用于圆弧的变换。
- url:字符串,表示与圆弧关联的 URL。
- visible:布尔值,表示圆弧是否可见。
- zorder:浮点数,表示圆弧的堆叠顺序。
请注意,上述属性中的一些可能不适用于 Arc 类,因为某些属性是为其他可填充或可变形对象设计的。对于 Arc 类,最常用的属性包括 color、edgecolor、linewidth、linestyle 和 alpha 等。
matplotlib.patches.Wedge
matplotlib.patches.Wedge 是 Matplotlib 库中的一个类,用于绘制楔形(或扇形)图形。以下是这个类的中文文档,详细解释了其构造函数参数和其他相关属性。
Wedge(center, r, theta1, theta2, width=None, **kwargs)
- center:浮点数元组 (float, float),表示楔形的中心点坐标 (x, y)。
- r:浮点数,表示楔形的半径。
- theta1:浮点数,表示楔形起始角度(以度为单位),相对于 x 轴正方向逆时针测量。
- theta2:浮点数,表示楔形终止角度(以度为单位),相对于 x 轴正方向逆时针测量。
- width:可选浮点数,默认值为 None。如果给出宽度,则会绘制一个从内半径 r - width 到外半径 r 的部分楔形。
- **kwargs:其他关键字参数,用于设置楔形的样式属性。这些属性大多数与 Patch 类相同。
以下是一些常见的属性,用于进一步自定义楔形的外观:
- agg_filter:过滤函数,接受一个 (m, n, 3) 的浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 的数组。
- alpha:浮点数,表示楔形的透明度。
- animated:布尔值,表示是否使用动画渲染。
- antialiased 或 aa:布尔值或 None,表示是否应用抗锯齿效果。
- capstyle:{‘butt’, ‘round’, ‘projecting’},表示楔形端点的样式。
- clip_box:Bbox 实例,表示用于裁剪楔形的边界框。
- clip_on:布尔值,表示是否应用裁剪。
- clip_path:(path, transform)、patch 或 None,表示用于裁剪楔形的路径。
- color:颜色规范,表示楔形的颜色。
- edgecolor 或 ec:颜色规范,表示楔形边缘的颜色。如果为 ‘auto’,则颜色与 facecolor 相同。
- facecolor 或 fc:颜色规范,表示楔形的填充颜色。如果为 ‘none’,则楔形不被填充。
- figure:Figure 实例,表示楔形所在的图形对象。
- fill:布尔值,表示是否填充楔形。对于 Wedge 类,这个属性通常不起作用,因为楔形总是根据 facecolor 属性决定是否填充。
- gid:字符串,表示楔形的标识符。
- hatch:{‘/’, ‘’, ‘|’, ‘-’, ‘+’, ‘x’, ‘o’, ‘O’, ‘.’, ‘*’},表示楔形的填充图案(但注意,由于 Wedge 类总是根据 facecolor 填充,此属性通常不起作用)。
- joinstyle:{‘miter’, ‘round’, ‘bevel’},表示楔形段之间连接处的样式。
- label:对象,表示楔形的标签。
- linestyle 或 ls:{‘solid’, ‘dashed’, ‘dashdot’, ‘dotted’} 或其他自定义样式,表示楔形边缘的线型。但请注意,Wedge 类通常不绘制边缘线,除非通过其他方式(如设置 edgecolor)指定。
- linewidth 或 lw:浮点数,表示楔形边缘的线宽。但请注意,Wedge 类通常不绘制边缘线。
- path_effects:AbstractPathEffect 的列表,表示应用于楔形的路径效果。
- picker:无、布尔值、浮点数或可调用对象,表示用于选择楔形的拾取器。
- rasterized:布尔值,表示是否将楔形栅格化为图像。
- sketch_params:(scale: float, length: float, randomness: float),表示用于绘制草图效果的参数。
- snap:布尔值或无,表示是否将楔形的坐标值对齐到像素网格。
- transform:Transform,表示应用于楔形的变换。
- url:字符串,表示与楔形关联的 URL。
- visible:布尔值,表示楔形是否可见。
- zorder:浮点数,表示楔形的堆叠顺序。
9、参考
- 用 Python 画个月饼 祝各位中秋快乐!
- https://github.com/spaceack/matplotlib-draw-mooncake
- Python利用matplotlib万花尺画月饼
相关文章:
【python】matplotlib(moon cake)
文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...
Pytorch使用手册-空间变换网络指南(专题十五)
在本教程中,您将学习如何使用一种称为空间变换网络(Spatial Transformer Networks, STN)的视觉注意力机制来增强您的网络。您可以在DeepMind的论文中了解更多关于空间变换网络的内容。 空间变换网络是可微分注意力的一种推广,可以应用于任何空间变换。空间变换网络(简称S…...
Vue 中el-table-column 进行循环,页面没渲染成功
文章目录 前言效果图代码示例可能出现的问题及原因**解决思路** 前言 实现效果:el-table-column 进行循环,使之代码简化 遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来 效果图 示例…...
基于单片机的温湿度采集系统(论文+源码)
2.1系统的功能 本系统的研制主要包括以下几项功能: (1)温度检测功能:对所处环境的温度进行检测; (2)湿度检测功能:对所处环境的湿度进行检测; (3)加热和制冷功能:可以完成加热和制冷功能。 (4)加湿和除…...
使用envoyfilter添加请求头
该envoyfilter实现了这样一个功能,如果请求头中含有Sw8,则添加请求头HasSw8: true。 1. 内嵌lua脚本 apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata:name: add-header-filternamespace: demo-bookinfo # 可根据实际情况调整命…...
kafka开机自启失败问题处理
前言:在当今大数据处理领域,Kafka 作为一款高性能、分布式的消息队列系统,发挥着举足轻重的作用。无论是海量数据的实时传输,还是复杂系统间的解耦通信,Kafka 都能轻松应对。然而,在实际部署和运维 Kafka 的…...
优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变
优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变 在当今数字营销环境中,搜索引擎优化(SEO)是提升网站流量和可见性的关键策略。苹果CMS作为一款灵活的内容管理系统,提供了丰富的插件功能,尤其是…...
git clone 和 conda 换源
文章目录 git clone 通过 sshconda 创建虚拟环境通过 env.yml 文件conda 换源 git clone 通过 ssh git clone ssh://用户名IP地址:/仓库名字.gitconda 创建虚拟环境通过 env.yml 文件 conda env create -f environment.ymlconda 换源 Step 1 生成 .bashrc 文件在家目录下。…...
人工智能及深度学习的一些题目(二)
1、【单选题】 不属于语音识别预处理的步骤是哪个? 去重 2、HSV,H是色调,S是饱和度,V是亮度。 3、【填空题】 语音信号预处理中( 预加重 )的目的是为了对语音的高频部分进行加重,去除口唇辐射的…...
怎么在VMware Workstation上安装Win11虚拟机?
Windows11虚拟机是免费的吗? Windows 11 虚拟机本身并不是免费的。你需要一个合法的 Windows 11 许可证才能在虚拟机中运行。不过,许多虚拟机软件(如 VirtualBox 和 VMware Workstation Player)本身是免费的,允许你创…...
协程原理 函数栈 有栈协程
协程为什么开销小于线程 协程本质上是线程,将调度的代码在用户态重新实现,因为子程序切换不是线程切换而是由程序自身控制,没有线程切换的开销,所以执行效率高。协程通常是纯软件实现的多任务,与CPU和操作系统通常没有…...
SpringBoot整合springmvc、扩展springmvc
目录 一、 SpringMVC三大组件二、 Spring MVC 组件的自动管理2.1 中央转发器(DispatcherServlet)2.2 控制器2.3 视图解析器自动管理2.4 静态资源访问2.5 消息转换和格式化2.6 欢迎页面的自动配置 三、Springboot扩展springmvc3.1 视图控制器注册…...
免费部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型(简单5步实现,免费且比GPT4.0更好用)
摘要: 本文将指导您如何部署一个本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和grok-beta大模型,以实现高效、智能的聊天体验。 引言: 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...
音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...
从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用
文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合,使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3(knife4j) 1.6.1 整…...
修改表字段属性,SQL总结
MYSQl varchar转为mediumtext ALTER TABLE table_name MODIFY COLUMN column_name mediumtext; ALTER TABLE table_name MODIFY COLUMN column_name varchar(255) 1. 修改字段的数据类型 使用 MODIFY COLUMN 可以改变字段的数据类型、长度、默认值或注释,但不会更…...
go-xorm连接
package mainimport ("fmt"_ "github.com/go-sql-driver/mysql""time""xorm.io/xorm" )func MysqlDbContent() {//数据库基本信息var (userName string "root"password string "12345678"ipAddress string &…...
Excel 面试 04 查找函数 XLOOKUP
Excel 的 XLOOKUP 函数是一个功能强大的查找工具,用于从一个范围或数组中搜索值并返回对应结果。它是 VLOOKUP 和 HLOOKUP 的更高级替代品,支持更多灵活功能。 语法 XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], …...
Flannel和Calico之对比(Comparison between Flannel and Calico)
K8S网络插件(CNI):Flannel和Calico详细对比 Flannel和Calico是Kubernetes中最常用的两种CNI(Container Network Interface)插件,各自针对不同的网络需求提供解决方案。以下是对这两种插件的详细讲解&#…...
Spring Boot + Redisson 封装分布式锁
目标:一行代码调用,简单粗暴。 基操:自动加锁,自动解锁,自动处理异常,自动处理锁超时等。 安装 redis redisson <dependency><groupId>org.springframework.boot</groupId><artifac…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
