卷积公式的几何学理解

1、Required Knowledge

1.1、概率密度函数

用于描述连续型随机变量在不同取值上的概率密度,记作 f ( x ) f(x) f(x)
如随机变量 X X X的分布为正态分布,则其概率密度函数为:
f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π 1e2σ2(xμ)2
记作:
X ∼ N ( μ , σ 2 ) X \sim \mathcal{N}(\mu, \sigma^2) XN(μ,σ2)

1.2、联合概率密度

用于描述两个或多个连续型随机变量联合分布的概率密度。它表明这些随机变量在不同取值上的概率密度,是多个变量的联合概率分布的具体表现形式。
例如,记往坐标轴上打靶的位置为随机事件 A A A,该事件受到随机变量 X X X Y Y Y的影响,那么打靶的位置,即二维随机变量 ( X , Y ) (X, Y) (X,Y)的概率密度叫作 X X X Y Y Y的联合概率密度,记作 f ( x , y ) f(x,y) f(x,y)

1.3、边缘分布概率密度

二维随机变量 ( X , Y ) (X, Y) (X,Y)有概率密度函数,而 X X X Y Y Y都是随机变量,各自也有各自的概率密度,分别记作 f X ( x ) f_X(x) fX(x) f Y ( y ) f_Y(y) fY(y),有:
f X ( x ) = ∫ − ∞ ∞ f X , Y ( x , y ) d y f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dy fX(x)=fX,Y(x,y)dy
f Y ( y ) = ∫ − ∞ ∞ f X , Y ( x , y ) d x f_Y(y) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dx fY(y)=fX,Y(x,y)dx

1.4、独立性

A、B是两事件,如果满足
P ( A ∩ B ) = P ( A ) P ( B ) P(A∩B) = P(A)P(B) P(AB)=P(A)P(B)
等同于:
P ( A B ) = P ( A ) P ( B ) P(AB) = P(A)P(B) P(AB)=P(A)P(B)
则称事件 A A A B B B 相互独立。事件 A A A 和事件 B B B 同时发生的概率等于事件A发生的概率乘以事件B发生的概率,即:事件 A A A B B B 是否发生不受另一事件的影响。

2、独立二维随机变量的联合概率密度

如二维随机变量 ( X , Y ) (X,Y) (X,Y)相互独立,则其联合概率密度 f ( x , y ) = f ( x ) f ( y ) f(x,y)=f(x)f(y) f(x,y)=f(x)f(y)。现有变量 X , Y X,Y X,Y均服从标准正态分布,其联合分布的概率密度为如图 A A A 所示的曲面。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import norm# 假设 X 和 Y 都是独立的标准正态分布 N(0, 1)
mu_X, sigma_X = 0, 1
mu_Y, sigma_Y = 0, 1# 定义网格范围和步长
x = np.linspace(-4, 4, 200)
normal_x = norm.pdf(x, mu_X, sigma_X)
y = np.linspace(-4, 4, 200)
normal_y = norm.pdf(y, mu_Y, sigma_Y)
x, y = np.meshgrid(x, y)# 计算联合概率密度 f(x, y)
f_X = norm.pdf(x, mu_X, sigma_X)
f_Y = norm.pdf(y, mu_Y, sigma_Y)
f_XY = f_X * f_Y  # 由于独立性,联合密度等于单独密度的乘积# 计算 Z = X + Y 的概率密度
z = x + y  # Z 的值
f_Z = norm.pdf(z, mu_X + mu_Y, np.sqrt(sigma_X**2 + sigma_Y**2))# 创建一个三维图形对象
fig = plt.figure(figsize=(18, 6))# 绘制联合分布的三维图
ax1 = fig.add_subplot(131, projection='3d')
surf = ax1.plot_surface(x, y, f_XY, cmap='hot', edgecolor='k', alpha=0.5)
ax1.set_title('Joint Probability Density of X and Y')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Density')
ax1.view_init(elev=30, azim=45)  # 调整视角# 分别在x=4、y=4的平面上绘制原始的X、Y标准正态分布图
ax1.plot(x[0, :], np.full_like(x[0, :], 4), normal_x, color='green', lw=2, label='Normal X')
ax1.plot(np.full_like(y[:, 0], 4), y[:, 0], normal_y, color='black', lw=2, label='Normal Y')# 添加图例
ax1.legend()plt.tight_layout()
plt.show()

在这里插入图片描述
如图所示,绿色和黑色分别为 X X X Y Y Y 的标准正态概率密度函数图,而曲面是联合概率密度函数图像。可以看出 ( 0 , 0 ) (0, 0) (0,0) 这个点的概率密度最大,符合标准正态分布的特性。

3、边缘分布的几何学解释

由联合分布的概率密度函数可知:
f X ( x ) = ∫ − ∞ ∞ f X , Y ( x , y ) d y f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dy fX(x)=fX,Y(x,y)dy
f Y ( y ) = ∫ − ∞ ∞ f X , Y ( x , y ) d x f_Y(y) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dx fY(y)=fX,Y(x,y)dx
如何理解这个公式呢?

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import norm# 假设 X 和 Y 都是独立的标准正态分布 N(0, 1)
mu_X, sigma_X = 0, 1
mu_Y, sigma_Y = 0, 1# 定义网格范围和步长
x = np.linspace(-4, 4, 200)
normal_x = norm.pdf(x, mu_X, sigma_X)
y = np.linspace(-4, 4, 200)
normal_y = norm.pdf(y, mu_Y, sigma_Y)
x, y = np.meshgrid(x, y)# 计算联合概率密度 f(x, y)
f_X = norm.pdf(x, mu_X, sigma_X)
f_Y = norm.pdf(y, mu_Y, sigma_Y)
f_XY = f_X * f_Y  # 由于独立性,联合密度等于单独密度的乘积# 计算 Z = X + Y 的概率密度
z = x + y  # Z 的值
f_Z = norm.pdf(z, mu_X + mu_Y, np.sqrt(sigma_X**2 + sigma_Y**2))## 创建一个三维图形对象
fig = plt.figure(figsize=(18, 6))# 绘制联合分布的三维图
ax1 = fig.add_subplot(131, projection='3d')
surf = ax1.plot_surface(x, y, f_XY, cmap='hot', edgecolor='k', alpha=0.5)
ax1.set_title('Joint Probability Density of X and Y')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Density')
ax1.view_init(elev=30, azim=45)  # 调整视角# 分别在x=4、y=4的平面上绘制原始的 X、Y 标准正态分布图
ax1.plot(x[0, :], np.full_like(x[0, :], 4), normal_x, color='green', lw=2, label='Normal X')
ax1.plot(np.full_like(y[:, 0], 4), y[:, 0], normal_y, color='black', lw=2, label='Normal Y')# 计算边缘分布
# 计算边缘分布
marginal_x = np.sum(f_XY, axis=1) * (y[1, 0] - y[0, 0])  # 对 y 积分得到 x 的边缘分布
marginal_y = np.sum(f_XY, axis=0) * (x[0, 1] - x[0, 0])  # 对 x 积分得到 y 的边缘分布# 分别在x=4.2、y=4.2的平面上绘制计算 X、Y 边缘分布图
ax1.plot(x[0, :], np.full_like(x[0, :], 4.2), marginal_x, color='red', lw=2, label='Marginal X')
ax1.plot(np.full_like(y[:, 0], 4.2), y[:, 0], marginal_y, color='blue', lw=2, label='Marginal Y')# 添加图例
ax1.legend()plt.tight_layout()
plt.show()

在这里插入图片描述
可以看到,原始的 X、Y 分布与基于联合分布函数计算得到的边缘分布是一样的。

以 X 为例,根据代码 marginal_x = np.sum(f_XY, axis=1) * (y[1, 0] - y[0, 0]) 可知,这就是对公式的代码化表达。

要想绘制 X X X 的边缘分布,就是对每个 X X X 的取值计算其概率密度。不妨令 X = 0 X=0 X=0 来理解这个公式。当 X = 0 X=0 X=0 时,联合概率密度如下图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm# 定义网格范围和步长
y = np.linspace(-4, 4, 200)  # y 的取值范围
x = np.linspace(-4, 4, 200)  # x 的取值范围
y, x = np.meshgrid(y, x)# 假设 X 和 Y 都是独立的标准正态分布 N(0, 1)
mu_X, sigma_X = 0, 1
mu_Y, sigma_Y = 0, 1# 计算联合概率密度 f(x, y)
f_X = norm.pdf(x, mu_X, sigma_X)
f_Y = norm.pdf(y, mu_Y, sigma_Y)
f_XY = f_X * f_Y  # 由于独立性,联合密度等于单独密度的乘积# 仅保留 x = 0 的值
tolerance = 0.05  # 容差,用于确定接近0的范围
mask = np.abs(x) < tolerance
f_XY_filtered = np.where(mask, f_XY, 0)  # 将不满足条件的设为 NaN# 创建一个三维图形对象
fig = plt.figure(figsize=(10, 8))# 绘制 f(x,y) (仅当 x = 0 时)
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(x, y, f_XY_filtered, cmap='viridis', edgecolor='k', alpha=0.7)
ax.set_title('f(x,y) (with $x = 0$)')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Density')plt.tight_layout()
plt.show()

在这里插入图片描述
x = 0 x = 0 x=0 时, f ( x , y ) f(x,y) f(x,y) 为图中平面。
f X ( 0 ) = ∫ − ∞ ∞ f X , Y ( 0 , y ) d y f_X(0) = \int_{-\infty}^{\infty} f_{X,Y}(0, y) \, dy fX(0)=fX,Y(0,y)dy
f ( x , y ) f(x,y) f(x,y) y y y 轴上求积分,就是图中面的面积。就等于 X X X 的边缘分布函数(标准正态分布)在 x = 0 x=0 x=0 时的值。

4、两个随机变量的函数的分布

之前讲了单个随机变量的概率密度函数,两个随机变量的概率密度函数,那么两个随机变量组成的新的随机变量,其概率密度函数是什么?

( X , Y ) (X,Y) (X,Y) 是二维连续型随机变量,它具有的概率密度 f ( x , y ) f(x,y) f(x,y),则 Z = X + Y Z=X+Y Z=X+Y 仍为连续型随机变量,其概率密度为:
f Z ( z ) = ∫ − ∞ ∞ f ( z − y , y ) d y f_Z(z) = \int_{-\infty}^{\infty} f(z-y,y)\, dy fZ(z)=f(zy,y)dy

f Z ( z ) = ∫ − ∞ ∞ f ( x , z − x ) d x f_Z(z) = \int_{-\infty}^{\infty} f(x,z-x)\, dx fZ(z)=f(x,zx)dx
若 X 和 Y 相互独立,X和Y的边缘概率密度分别为 f X ( x ) f_X(x) fX(x) f Y ( y ) f_Y(y) fY(y),上式变为:
f Z ( z ) = ∫ − ∞ ∞ f X ( z − y ) f Y ( y ) d y f_Z(z) = \int_{-\infty}^{\infty} f_X(z-y) f_Y(y) \, dy fZ(z)=fX(zy)fY(y)dy
f Z ( z ) = ∫ − ∞ ∞ f X ( x ) f Y ( z − x ) d x f_Z(z) = \int_{-\infty}^{\infty} f_X(x) f_Y(z - x) \, dx fZ(z)=fX(x)fY(zx)dx
这两个公式称为 f X f_X fX f Y f_Y fY的卷积公式,记为 f X ∗ f Y f_X*f_Y fXfY

4.1、随机变量 Z 的概率密度

因为正态分布的随机变量的线性组合仍为正态分布(证明可见概率论与数理统计),所以随机变量 Z Z Z 服从均值为 0,方差为 2 的正态分布。

随机变量 Z Z Z 的概率密度的三维和二维图像如图 B B B C C C
Z = 0 Z=0 Z=0 时,概率密度为 0.25 0.25 0.25 左右,对应图 B B B 中过原点,斜率为 0.5 的直线上对应的 X X X Y Y Y 值。对应图 C C C Z = 0 Z=0 Z=0 时的概率密度,同样约为 0.25 0.25 0.25

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import norm# 定义网格范围和步长
x = np.linspace(-4, 4, 200)
y = np.linspace(-4, 4, 200)
x, y = np.meshgrid(x, y)# 假设 X 和 Y 都是独立的标准正态分布 N(0, 1)
mu_X, sigma_X = 0, 1
mu_Y, sigma_Y = 0, 1# 计算联合概率密度 f(x, y)
f_X = norm.pdf(x, mu_X, sigma_X)
f_Y = norm.pdf(y, mu_Y, sigma_Y)
f_XY = f_X * f_Y  # 由于独立性,联合密度等于单独密度的乘积# 计算 Z = X + Y 的概率密度
z = x + y  # Z 的值
f_Z = norm.pdf(z, mu_X + mu_Y, np.sqrt(sigma_X**2 + sigma_Y**2))# 计算边缘分布
marginal_x = np.sum(f_XY, axis=0) * (x[0, 1] - x[0, 0])
marginal_y = np.sum(f_XY, axis=1) * (y[1, 0] - y[0, 0])# 创建一个三维图形对象
fig = plt.figure(figsize=(18, 6))# 绘制联合分布的三维图
ax1 = fig.add_subplot(131, projection='3d')
ax1.plot_surface(x, y, f_XY, cmap='viridis', edgecolor='k', alpha=0.5)
ax1.set_title('Joint Probability Density of X and Y')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Density')
ax1.view_init(elev=30, azim=45)  # 调整视角# 绘制边缘分布图
ax1.plot(x[0, :], np.full_like(x[0, :], 4), marginal_x, color='red', lw=2, label='Marginal X')
ax1.plot(np.full_like(y[:, 0], 4), y[:, 0], marginal_y, color='blue', lw=2, label='Marginal Y')# 添加图例
ax1.legend()# 绘制 Z = X + Y 的三维图
ax2 = fig.add_subplot(132, projection='3d')
ax2.plot_surface(x, y, f_Z, cmap='plasma', edgecolor='k', alpha=0.5)
ax2.set_title('Probability Density of Z = X + Y')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_zlabel('Density')
ax2.view_init(elev=45, azim=0)  # 调整视角# 绘制 Z 的边缘概率密度图
z_values = np.linspace(-8, 8, 400)
f_Z_marginal = norm.pdf(z_values, mu_X + mu_Y, np.sqrt(sigma_X**2 + sigma_Y**2))ax3 = fig.add_subplot(133)
ax3.plot(z_values, f_Z_marginal, color='blue', lw=2)
ax3.fill_between(z_values, f_Z_marginal, color='blue', alpha=0.3)
ax3.set_title('Marginal Probability Density of Z = X + Y')
ax3.set_xlabel('Z')
ax3.set_ylabel('Density')plt.tight_layout()
plt.show()

在这里插入图片描述

4.2、卷积公式的几何学解释

如上边缘分布的几何学解释,我们已知联合分布函数 ( X , Y ) (X,Y) (X,Y),有 Z = X + Y Z=X+Y Z=X+Y,那么Z的概率密度函数 f Z ( z ) f_Z(z) fZ(z) 如下,也就是卷积公式。

要想知道并理解 Z Z Z 的概率密度公式。不妨令 Z = 0 Z=0 Z=0 来理解这个公式。当 Z = 0 Z=0 Z=0 时,联合概率密度如下图:

f Z ( z ) = ∫ − ∞ ∞ f X ( − y ) f Y ( y ) d y = ∫ − ∞ ∞ f X ( x ) f Y ( − x ) d x f_Z(z) = \int_{-\infty}^{\infty} f_X(-y) f_Y(y) \, dy = \int_{-\infty}^{\infty} f_X(x) f_Y( - x) \, dx fZ(z)=fX(y)fY(y)dy=fX(x)fY(x)dx

f Z ( z ) = ∫ − ∞ ∞ f X ( − y ) f Y ( y ) d y f_Z(z) = \int_{-\infty}^{\infty} f_X(-y) f_Y(y) \, dy fZ(z)=fX(y)fY(y)dy 为例, f Y ( y ) f_Y(y) fY(y)为标准正态分布, f X ( − y ) f_X(-y) fX(y)也是标准正态分布,其中 x = − y x = -y x=y

即固定了 y y y x x x也就为 − y -y y f X ( − y ) ∗ f Y ( y ) f_X(-y)*f_Y(y) fX(y)fY(y) 的图像就是 f ( x , y ) f(x,y) f(x,y) 的一个切面,如下图所示。平面方程为 x + y = 0 x+y=0 x+y=0

卷积公式就是对两个变量的其中一个做积分,积分结果就是 Z = 0 Z=0 Z=0 的概率密度。

f X ( − y ) f Y ( y ) f_X(-y)f_Y(y) fX(y)fY(y) 函数在 x x x y y y 方向上进行积分,可以理解为将该三维曲线投影到 x x x y y y 平面上,然后计算投影曲线与坐标轴围成的面积。

由于 45 ° 45° 45° 的原因,使得该曲线在 x x x y y y 平面的投影面积相同。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import norm# 定义网格范围和步长
y = np.linspace(-4, 4, 200)
x = np.linspace(-4, 4, 200)
y, x = np.meshgrid(y, x)  # x 和 y 分别用于计算 f_X(-y) 和 f_Y(y)# 假设 X 和 Y 都是独立的标准正态分布 N(0, 1)
mu_X, sigma_X = 0, 1
mu_Y, sigma_Y = 0, 1# 计算 f_X(-y) 和 f_Y(y)
f_X = norm.pdf(x, mu_X, sigma_X)
f_Y = norm.pdf(y, mu_Y, sigma_Y)# 计算 f_X(-y) * f_Y(y)
f_XY = f_X * f_Y# 仅保留 x + y = 0 的值
tolerance = 0.05
mask = np.abs(x+y) < tolerance
f_XY_filtered = np.where(mask, f_XY, np.nan)
# f_XY_filtered = np.where(mask, f_XY, 0)# 创建一个三维图形对象
fig = plt.figure(figsize=(10, 8))# 绘制 f_X(-y) * f_Y(y) 的三维图(仅当 x + y = 0 时)
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(x, y, f_XY_filtered, cmap='viridis', edgecolor='k', alpha=0.7)
ax.set_title(r'$f_X(-y) \times f_Y(y)$ (with $x + y = 0$)')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Density')plt.tight_layout()
plt.show()

在这里插入图片描述

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

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

相关文章

记忆化搜索【上】

509. 斐波那契数 题目链接&#xff1a;斐波那契数 递归&#xff08;暴搜&#xff09; 斐波那契数列&#xff0c;最传统的解法&#xff0c;采用递归&#xff1a; class Solution { public:int fib(int n){return dfs(n);}int dfs(int n){if(n 0 || n 1)return n;return d…

大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

linux 高级IO

IO等&#xff08;要进行io是要有条件的&#xff0c;要有数据或者有空间&#xff09;拷贝。高效体现在等待的时间所占比重越低越高效。 阻塞IO&#xff1a;数据没有就绪&#xff0c;read不返回。在内核将数据准备好之前, 系统调用会一直等待。所有的套接字, 默认都是阻塞方式。…

nginx容器映射配置文件后,启动一直报错提示:failed (13: Permission denied)的排查

问题现象&#xff1a; 使用harbor 的install.sh 创建docker-compose之后&#xff0c;出现nginx容器一直重启。 查看日志发现是&#xff1a;配置文件无权限。报错信息如下&#xff1a; Sep 2 16:43:13 172.28.0.1 nginx[1344]: 2024/09/02 08:43:13 [emerg] 1#0: open() “/e…

百度地图绘制电子围栏(包括移动端绘制操作)以及检测坐标是否在电子围栏内

由于本人在PC端仅使用了多边形绘制&#xff0c;但矩形跟多边形用法基本一样&#xff0c;圆形并未使用&#xff0c;如不符合读者需求也可以参考一下。 绘制后得到的数据可能不同&#xff0c;但绘制方法仅仅是传递的参数不同。 关于给坐标数组在地图绘制图形的效果在移动端部分包…

深度学习系列74:语音中的mel谱

1 mel谱介绍 一个人说一句话&#xff0c;其 waveform 可以很不一样&#xff0c;但是 spectrogram 基本上会相似&#xff0c;甚至有人可以通过 spectrogram 来判断说话的内容。语谱图的横坐标是时间&#xff0c;纵坐标是频率&#xff0c;坐标点值为语音数据能量。由于是采用二维…

# 利刃出鞘_Tomcat 核心原理解析(十一)-- WebSocket -- 1

利刃出鞘_Tomcat 核心原理解析&#xff08;十一&#xff09;-- Tomcat 附加功能 WebSocket – 1 一、Tomcat专题 - WebSocket - 介绍 1、Tomcat 附加功能&#xff1a;websocket 介绍 1&#xff09;websocket &#xff1a;是 HTML5 新增的协议&#xff0c;它的目的是在浏览器…

动态规划法-资源分配问题

动态规划法 - 资源分配问题 问题描述 把4个份额的资源分配给3个工程&#xff0c;给定利润表如下表所示&#xff0c;写出资源的最优分配方案的求解过程。 4份资源分配给3个工程的利润表 步骤一&#xff1a;求各个阶段不同分配份额时的最大利润及分配份额 目标 我们的目标是…

53 mysql pid 文件的创建

前言 接上一篇文章 mysql 启动过程中常见的相关报错信息 在 mysql 中文我们在 “service mysql start”, “service mysql stop” 经常会碰到 mysql.pid 相关的错误信息 比如 “The server quit without updating PID file” 我们这里来看一下 mysql 中 mysql.pid 文件的…

微积分复习笔记 Calculus Volume 1 - 1.3Trigonometric Functions

1.3 Trigonometric Functions - Calculus Volume 1 | OpenStax

自己开发完整项目一、登录功能-05(动态权限控制)

一、上节回顾 在上一节中&#xff0c;我们介绍了如何通过数据库查询用户的权限&#xff0c;并对方法级别的接口使用注解的方式进行权限控制&#xff0c;之后通过用户携带的tocken进行解析权限&#xff0c;判断是否可以访问。 具体步骤&#xff1a; 1.在查询用户信息的时候将用户…

map和set的封装

目录 一、红黑树的改造 1.1节点的定义 二、红黑树的迭代器 2.1用节点封装迭代器 2.2迭代器的实现 2.3map和set的迭代器 三、insert的返回值 3.1insert返回值的用处 3.2operator[ ]的实现 四、key不能修改的问题 封装map和set一般分为六步&#xff1a; 封装map和set …

MFC生成dll的区别

主要分三种&#xff1a; A. 动态链接库(dll) B.具有导出项的(dll)动态链接库 C.MFC动态链接库 对比项目&#xff1a;可以根据需要选择哪种dll方便 添加自定义导出功能Demo 1. 添加导出实现接口&#xff1a; A. 导出需要具有&#xff1a;__declspec(dllexport) B. 按照C语言…

Javascript LeeCode选题(汉诺塔求解)

LeeCode选题 汉诺塔递归求解move移动函数hanoi函数main方法测试代码&#xff1a;代码实现 汉诺塔递归求解 汉诺塔介绍&#xff1a; 汉诺塔的的图形&#xff08;从上到下1&#xff0c;2&#xff0c;3个&#xff09;实现&#xff1a; 这里我们可以看到因为必须要将第n个移动到…

Spring中基于redis stream 的消息队列实现方法

本文主要介绍了消息队列的概念性质和应用场景&#xff0c;介绍了kafka、rabbitMq常用消息队列中间件的应用模型及消息队列的实现方式&#xff0c;并实战了在Spring中基于redis stream 的消息队列实现方法。 一、消息队列 消息队列是一种进程间通信或者同一个进程中不同线程间的…

uni-app 获取当前位置的经纬度以及地址信息

文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…

【系统架构设计】嵌入式系统设计(1)

【系统架构设计】嵌入式系统设计&#xff08;1&#xff09; 嵌入式系统概论嵌入式系统的组成硬件嵌入式处理器总线存储器I/O 设备与接口 软件 嵌入式开发平台与调试环境交叉平台开发环境交叉编译环境调试 嵌入式系统概论 嵌入性、专用性、计算机系统是嵌入式系统的三个基本的核…

【话题讨论】VS Code:倍增编程动力,实现效率飞跃

目录 引言 一、详情介绍 功能特点 使用场景 提高工作效率 二、效率对比 2.1 高度可定制性与丰富的插件生态 2.2 智能的代码补全与导航 2.3 内置的调试器与版本控制集成 2.4 轻量级与跨平台 2.5 选择合适工具的重要性 2.6 实际案例或数据展示 三、未来趋势 3.1 编…

能见度监测站—实时监测道路能见度情况

型号&#xff1a;TH-NJD10】能见度监测站是一种专门用于自动观测和存储气象观测数据的设备&#xff0c;它通过高科技手段实时监测大气能见度的变化&#xff0c;为多个领域提供重要的数据支持。主要基于光在大气中的衰减规律。传感器系统中的发射器发出光线&#xff0c;照射到空…

shell编程--正则表达式

正则表达式 正则表达式都被置于两个正斜杠之间&#xff1b;如/l[oO]ve/ 示例 匹配数字的脚本&#xff0c;用户输入创建账号的数量 语法&#xff1a; [[ ^[0-9]$ ]] 表示必须输入数字 #!/bin/bashwhile : do read -p "输入数字&#xff1a;" numif [[ $num ~ ^[…