【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…...
C++ hashtable
文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况(无哈希冲突或冲突极少)一般情况(考虑哈希冲突及解决方法)综合来看 以…...
ip怎么查域名?IP和域名分别是什么?
为什么我们可以通过简单的域名访问网站,而不是记住一串复杂的数字?IP地址和域名之间到底是什么关系?在互联网的世界里,IP地址和域名是两种重要的概念,它们共同构成了我们日常上网的基础。 IP地址是互联网协议地址的缩…...
大模型提示词初探
大模型提示词初探 在与大模型交互的过程中,提示词起着至关重要的作用,它犹如给模型下达的精准任务指令,直接影响着模型生成内容的准确性、高效性与合理性。合理运用提示词,能够有效减少模型出现错误和幻觉的情况,从而…...
Linux的进程替换以及基础IO
进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系,那么我们接下来了解一下程序的替换。 首先,在进程部分我们提过了,其实文件可以在运行时变成进程,而我们使用的Linux软件其实也是一个进程,所以进一步…...
《Vue进阶教程》第三十一课:ref的初步实现
往期内容: 《Vue进阶教程》第二十课:lazy懒执行 《Vue进阶教程》第二十一课:支持缓存 《Vue进阶教程》第二十二课:自定义更新(调度器) 《Vue进阶教程》第二十三课:渲染计算属性的结果 《Vue进阶教程》第二十四课&…...
Wend看源码-Java-集合学习(Queue)
概述 Wend看源码-Java-集合学习(List)-CSDN博客 Wend看源码-Java-集合学习(Set)-CSDN博客 在前两篇文章中,我们分别探讨了Java集合框架的父类以及List集合和Set集合的实现。接下来,本文将重点阐述Java中的Queue集合,包括其内部的数据结…...
大数据面试笔试宝典之HBase面试
1.HBase 数据存储位置 HBase 中的数据存储在哪里? 以什么格式存储?和 Zookeeper 什么关系? 参考答案: 1.HBase 中的所有数据文件都存储在 Hadoop HDFS 文件系统上。 2.包含两种文件类型: HFile : HBase 中 KeyValue 数据的存储格式。HFile 是 Hadoop 的二进制格式文件…...
React基础知识学习
学习React前端框架是一个系统而深入的过程,以下是一份详细的学习指南: 一、React基础知识 React简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发和维护。它强调组件化和声明式编程,使得构建复杂的用户界面变得更…...
实战指南:Shiro、CAS打造完美单点登录体验
引言 想象一下,在日常工作中,我们经常需要进行系统认证和授权。当用户尝试登录一个网站时,他们需要提供用户名和密码,网站会检查这些信息,确认用户是谁。这就是认证的过程。 一旦用户被认证,他们可能会尝…...
光储充一体化解决方案详解。
一、光储充介绍 1、什么是光储充 “光储充”一体化,顾名思义,是由光伏发电、储能、充电集成一体、互相协调支撑的绿色充电模式。其工作原理是利用光伏发电,余电由储能设备存储,共同承担供电充电任务。在用电高峰,光储…...
TDengine 新功能 VARBINARY 数据类型
1. 背景 VARBINARY 数据类型用于存储二进制数据,与 MySQL 中的 VARBINARY 数据类型功能相同,VARBINARY 数据类型长度可变,在创建表时指定最大字节长度,使用进按需分配存储,但不能超过建表时指定的最大值。 2. 功能说明…...
2024年秋词法分析作业(满分25分)
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格…...
AF3 checkpoint_blocks函数解读
checkpoint_blocks 函数实现了一种分块梯度检查点机制 (checkpoint_blocks),目的是通过分块(chunking)执行神经网络模块,减少内存使用。在深度学习训练中,梯度检查点(activation checkpointing)是一种显存优化技术。该代码可以: 对神经网络的块(blocks)按需分块,并对…...
VITUREMEIG | AR眼镜 算力增程
根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示,美国市场AR/VR总出货量增长10.3%。其中,成立于2021年的VITURE增长速度令人惊艳,同比暴涨452.6%,成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…...
详解MySQL在Windows上的安装
目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网,找到DOWNLOADS 然后往下翻,找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载,选择No thanks,just start my download. 然后双击进行…...
细说STM32F407单片机CAN基础知识及其HAL驱动程序
目录 一、CAN总线结构和传输协议 1、 CAN总线结构 (1)闭环结构的CAN总线网络 (2)开环结构的CAN总线网络 (3)隐性电平和显性电平 2、CAN总线传输协议 (1)CAN总线传输特点 &am…...
Ubuntu 22.04 升级 24.04 问题记录
一台闲置笔记本使用的 ubuntu 还是 18.04,最近重新使用,发现版本过低,决定升级,于是完成了 18.04 -> 20.04 -> 22. 04 -> 24.04 的三连跳。 一、升级过程中黑屏 主要问题是在 22.04 升级到 24.04 过程中出现了黑屏仅剩…...
模型选择+过拟合欠拟合
训练误差和泛化误差 训练误差:模型在训练数据上的误差 泛化误差:模型在新数据上的误差 验证数据集:一个用来评估模型好坏的数据集 例如拿出50%的数据作为训练 测试数据集:只能用一次 K则交叉验证 在没有足够数据时使用 算法…...
Leetcode 3404. Count Special Subsequences
Leetcode 3404. Count Special Subsequences 1. 解题思路2. 代码实现 题目链接:3404. Count Special Subsequences 1. 解题思路 这道题是事实上这次的周赛最难的一道题目,不过也是有点巧思在内。 最开始我的想法就是按照乘积构成pair,然后…...
萌萌哒的八戒
萌萌哒的八戒 下载压缩包后,打开发现有一张照片 既然是关于猪的,那就用猪圈密码解码 flag{whenthepigwanttoeat}...
开启家具组装新方式:产品说明书智能指导
在快节奏的现代生活中,人们越来越追求便捷与高效。无论是新房装修还是家具换新,家具组装已成为许多家庭不可避免的一项任务。然而,面对复杂多变的家具图纸和冗长的产品说明书,许多人常常感到无从下手,甚至因操作不当而…...
【连续学习之ResCL算法】2020年AAAI会议论文:Residual continual learning
1 介绍 年份:2020 会议: AAAI Lee J, Joo D, Hong H G, et al. Residual continual learning[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(04): 4553-4560. 本文提出的算法是Residual Continual Learning (ResC…...
【网络协议】路由信息协议 (RIP)
未经许可,不得转载。 路由信息协议(Routing Information Protocol,简称 RIP)是一种使用跳数(hop count)作为路由度量标准的路由协议,用于确定源网络和目标网络之间的最佳路径。 文章目录 什么是…...
Linux 终端查看 nvidia 显卡型号
文章目录 写在前面1. 需求描述2. 实现方法方法一:方法二方法三: 参考链接 写在前面 自己的测试环境: Ubuntu20.04 1. 需求描述 Linux 终端查看 nvidia 显卡型号 2. 实现方法 方法一: 执行下列指令: sudo update…...
基于neurokit2的心电仿真数据生成实例解析
一 概念 NeuroKit2是一个开源的、社区驱动的、以用户为中心的Python库,可用于多种生理信号的分析处理(例如ECG、PPG、EDA、EMG、RSP),还包括用于特定处理步骤(如频率)的工具提取和过滤方法,并在…...
AMBA-APB
目录 1.APB 协议 2.APB信号列表 3.数据传输 3.1写传输(2种) 3.1.1 无等待状态的写传输 3.1.2有等待状态的写传输 3.2写选通信号 (PSTRB) 字节通道映射 3.3读传输(2种) 3.3.1 无等待状态的读传输 3.3.2有等待状态的读传…...
网安入门之PHP后端基础
PHP 基本概念详解 PHP是一种服务器端脚本语言,常用于动态网站开发和 web 应用程序。以下是 PHP 的基本概念与特点的详细说明: 1. PHP 文件的默认文件扩展名 PHP 文件的扩展名通常为 .php,例如 index.php。PHP 文件可以包含 PHP 代码、HTML…...
windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter
1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…...
【C#特性整理】C#特性及语法基础
1. C#特性 1.1 统一的类型系统 C#中, 所有类型都共享一个公共的基类型. 例如,任何类型的实例都可以通过调用ToString方法将自身转换为一个字符串 1.2 类和接口 接口: 用于将标准与实现隔离, 仅仅定义行为,不做实现. 1.3 属性、方法、事件 属性: 封装了一部分对…...
龙蜥 配置本地yum源8.6----亲测
系统版本: 说明:丫丫的,内网服务安装了个龙蜥操作系统。内网不能访问互联网,所以就需要挂载yum源 用的以前的方法挂载,一直报错 [Couldnt open file /mnt/anolisos/repodata/repomd.xml] yum挂载的时候报错,奇葩!!!,龙蜥的挂载方法好像不一样。 解决: 一、上传并挂…...
Xshell日志录制
步骤 1:设置日志文件位置 打开 Xshell 软件,选择目标会话(或者创建一个新的会话)。右键点击会话名称,选择“属性”。在会话属性窗口中,找到“日志”选项卡。勾选“启用日志记录”。在“文件名”中设置日志…...
vue下载和上传的地址动态ip地址配置方法
vue3结合element-plus实现【下载文件】和【上传文件】的动态ip地址配置 效果图 一、修改【文件上传】静态地址 1、首先引入axios import axios from "/utils/request"; import { getToken } from "/utils/auth"; 定义 const importDialogVisible ref(…...
动手做计算机网络仿真实验入门学习
打开软件 work1 添加串行接口模块,先关电源,添加之后再开电源 自动选择连接 所有传输介质 自动连接 串行线 绿色是通的,红色是不通的。 显示接口。se是serial串行的简写。 Fa是fast ethernet的简写。 为计算机配置ip地址: 为服…...
LeetCode 面试题 17.10. 主要元素
LeetCode 面试题 17.10. 主要元素 数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。 示例 1: 输入:[1,2,5,9,5,9,5…...
Hive之import和export使用详解
在hive-0.8.0后引入了import/export命令。 Export命令可以导出一张表或分区的数据和元数据信息到一个输出位置,并且导出数据可以被移动到另一个hadoop集群或hive实例,并且可以通过import命令导入数据。 当导出一个分区表,原始数据可能在hdf…...
SpringBoot数据字典字段自动生成对应code和desc
效果:接口会返回orderType,但是这个orderType是枚举的类型(1,2,3,4),我想多返回一个orderTypeDesc给前端展示,这样前端就可以直接拿orderTypeDesc使用了。 1. 定义注解 …...
HTML——16.相对路径
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><a href"../../fj1/fj2/c.html" target"_blank">链接到c</a><!--相对路径:-->…...
字——位级运算与有无符号数之间的比较
前言 本文整理和归纳《深入理解计算机系统》这本书的内容,但本文不会继续长篇大论地去将所有内容都总结,而是总结笔者认为容易遗忘或混淆或表述不清的内容。 字 首先字这个概念对于学习过《计算机体系结构》或《操作系统》的同学都不陌生,…...
Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例
本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。 包含编程资料、学习路线图、源代码、软件安装包等!【…...
‘Optional. get()‘ without ‘isPresent()‘ check
在Java中,Optional类被引入主要是为了解决NullPointerException的问题,它提供了一种更优雅的方式来处理可能为null的情况。Optional.get()方法用于获取Optional实例中包含的值,但如果Optional实例是空的(即没有值)&…...
015-spring-动态原理、AOP的xml和注解方式
强制使用cglib动态代理 spring-AOP的使用...
统计颜色Count Color(POJ2777)题解
有一个长度为L厘米板,L是一个正整数,所以我们可以把它均匀地划分成L个部分,分别从左到右编号为1,2……L,每一个部分长度都为1厘米。现在我们必须给每个部分涂色,一个部分一种颜色,要求完成以下两…...
Nginx 配置 SSL(HTTPS)详解
Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。 随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…...
Day10补代码随想录 理论基础|232.用栈实现队列|225.用队列实现栈|20.有效的括号|1047.删除字符串中的所有相邻重复项
栈和队列理论基础 抽象认识 栈是先进后出(FIFO),队列是先进先出(LIFO) 队首(先进))队尾(后进)栈顶(后进)栈底(先进) 栈(Stack) 只在一端进行进出操作(只在一端进一端出)像个篮球框,取用篮球从一端进出。 /进栈 int a[1000];//足够大的栈空间 int top-1…...
pytorch基础之注解的使用--003
Title 1.学习目标2.定义3.使用步骤4.结果 1.学习目标 针对源码中出现一些注解的问题,这里专门写一篇文章进行讲解。包括如何自定义注解,以及注意事项,相信JAVA中很多朋友业写过,但是今天写的是Python哦。。。 2.定义 在 Python…...
2024-12-30-g++
title: 探秘 g:C 编程的得力编译器 date: ‘2024-12-30’ category: blog tags: gC 编程编译器技术代码生成与优化 sig: compiler archives: ‘2024-12’ author:way_back summary: g 作为专门用于 C 语言的编译器,在 C 开发领域占据关键地位。它凭借对…...
互联网十万个为什么之什么是微服务
微服务(Microservices)是一种软件架构设计模式,它将应用程序分解为小型、自治的服务单元,这些服务单元可以独立部署、扩展和维护,其中每一个服务单元也都是一个微服务。 基于微服务形成的软件架构风格称为微服务架构&…...
mysql子查询
子查询是嵌套在另一个 SELECT, INSERT, UPDATE, 或 DELETE查询的 SQL 查询。子查询可以在 WHERE 子句中、FROM 子句或 SELECT 列表中出现。 以下是一些使用 MySQL 子查询的常见示例: 1.在 WHERE 子句中使用子查询: SELECT * FROM Employees WHERE s…...
智能故障诊断和寿命预测期刊推荐
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…...