DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理

news2024/11/27 13:47:30

DeepSORT(目标跟踪算法)卡尔曼滤波中的贝叶斯定理

flyfish

从例子中介绍名词

假设我们有一个袋子,里面有5个红球和3个蓝球。我们从袋子里随机抽取一个球。

概率 (Probability)

我们想计算从袋子里抽到红球的概率 P ( R ) P(R) P(R)

红球的数量是5,球的总数量是8,所以抽到红球的概率是:
P ( R ) = 5 8 P(R) = \frac{5}{8} P(R)=85

条件概率 (Conditional Probability)

条件概率是指在已知某事件 B B B 发生的情况下,另一个事件 A A A 发生的概率。用符号 P ( A ∣ B ) P(A \mid B) P(AB) 表示。

公式

条件概率的公式为:
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A \mid B) = \frac{P(A \cap B)}{P(B)} P(AB)=P(B)P(AB)
前提是 P ( B ) > 0 P(B)> 0 P(B)>0

这里:

  • P ( A ∣ B ) P(A \mid B) P(AB) 是在 B B B 发生的情况下 A A A 发生的概率。
  • P ( A ∩ B ) P(A \cap B) P(AB) 是事件 A A A B B B 同时发生的概率。
  • P ( B ) P(B) P(B) 是事件 B B B 发生的概率。

联合概率 (Joint Probability)

联合概率是指两个或多个事件同时发生的概率。用符号 P ( A ∩ B ) P(A \cap B) P(AB) P ( A , B ) P(A, B) P(A,B) 表示。

公式

联合概率可以用条件概率和边缘概率的乘积表示:
P ( A ∩ B ) = P ( A ∣ B ) ⋅ P ( B ) P(A \cap B) = P(A \mid B) \cdot P(B) P(AB)=P(AB)P(B)

P ( A ∩ B ) = P ( B ∣ A ) ⋅ P ( A ) P(A \cap B) = P(B \mid A) \cdot P(A) P(AB)=P(BA)P(A)

示例

假设我们有一个包含红球和蓝球的袋子。已知袋子中有5个红球和3个蓝球。我们从袋子里随机抽取两个球,并且不放回。

联合概率

我们要计算第一次抽到红球 A A A 和第二次也抽到红球 B B B 的联合概率。

  1. 第一次抽到红球 P ( A ) P(A) P(A)
    P ( A ) = 5 8 P(A) = \frac{5}{8} P(A)=85
  2. 在第一次已经抽到红球的情况下,第二次再抽到红球的条件概率 P ( B ∣ A ) P(B \mid A) P(BA)
    P ( B ∣ A ) = 4 7 P(B \mid A) = \frac{4}{7} P(BA)=74
    因此,联合概率 P ( A ∩ B ) P(A \cap B) P(AB) 为:
    P ( A ∩ B ) = P ( A ) ⋅ P ( B ∣ A ) = 5 8 ⋅ 4 7 = 20 56 = 5 14 P(A \cap B) = P(A) \cdot P(B \mid A) = \frac{5}{8} \cdot \frac{4}{7} = \frac{20}{56} = \frac{5}{14} P(AB)=P(A)P(BA)=8574=5620=145
条件概率

假设我们知道第一次抽到了红球 A A A,我们想知道在这种情况下第二次也抽到红球 B B B 的概率:
P ( B ∣ A ) = P ( A ∩ B ) P ( A ) = 5 14 5 8 = 4 7 P(B \mid A) = \frac{P(A \cap B)}{P(A)} = \frac{\frac{5}{14}}{\frac{5}{8}} = \frac{4}{7} P(BA)=P(A)P(AB)=85145=74

似然 (Likelihood)

假设我们做了一次试验,从袋子里抽到了一个红球。我们想知道这个观察结果在给定红球数量为5、蓝球数量为3的情况下的似然。

在这个简单例子中,似然实际上就是红球的概率,即:
L ( θ ∣ Red observed ) = P ( Red observed ∣ θ ) = P ( R ) = 5 8 L(\theta \mid \text{Red observed}) = P(\text{Red observed} \mid \theta) = P(R) = \frac{5}{8} L(θRed observed)=P(Red observedθ)=P(R)=85
在这个例子中,观测数据是 “抽到红球”,模型参数是 θ = { 5 个红球 , 3 个蓝球 } \theta = \{5 \text{个红球}, 3 \text{个蓝球}\} θ={5个红球,3个蓝球}。因此:
L ( θ ∣ Red observed ) = P ( Red ∣ θ ) = 5 8 L(\theta \mid \text{Red observed}) = P(\text{Red} \mid \theta) = \frac{5}{8} L(θRed observed)=P(Redθ)=85

所以,似然函数的值在这个具体例子中等于抽到红球的概率。直观地讲,我们在已知袋子里球的分布情况下,观测到红球的可能性就是从袋子里抽到红球的概率。这个例子中的似然实际上就是红球的概率,因为我们已经知道袋子里球的数量和类型。

更复杂的情况

在更复杂的情况下,似然函数用于评估不同模型参数的好坏。例如,如果我们不知道袋子里红球和蓝球的数量,通过多次抽取球的结果(观测数据),我们可以估计袋子里红球和蓝球的比例。在这种情况下,似然函数帮助我们找到最适合观测数据的模型参数。
通过一个具体的例子来演示如何使用似然函数来估计模型参数。

示例场景

假设我们有一个袋子,但不知道里面红球和蓝球的具体数量。我们随机从袋子里抽取了10次球,并记录了结果。假设我们观察到以下数据:

  • 红球:7次
  • 蓝球:3次
    我们的目标是估计袋子里红球的比例 p p p(红球占总球数的比例)。

似然函数

设袋子中红球的比例为 p p p,蓝球的比例为 1 − p 1 - p 1p。根据二项分布,抽到 k k k 次红球的概率为:
P ( Red = k ∣ p ) = ( n k ) p k ( 1 − p ) n − k P(\text{Red}=k \mid p) = \binom{n}{k} p^k (1-p)^{n-k} P(Red=kp)=(kn)pk(1p)nk

其中:

  • n n n 是抽取的总次数(这里 n = 10 n = 10 n=10
  • k k k 是红球的次数(这里 k = 7 k = 7 k=7

计算似然

我们要计算在不同 p p p 值下观测到7次红球的似然。

似然函数 L ( p ∣ data ) L(p \mid \text{data}) L(pdata) 定义为:
L ( p ∣ data ) = P ( data ∣ p ) = ( 10 7 ) p 7 ( 1 − p ) 3 L(p \mid \text{data}) = P(\text{data} \mid p) = \binom{10}{7} p^7 (1-p)^3 L(pdata)=P(datap)=(710)p7(1p)3

具体计算

  1. 计算组合数:
    ( 10 7 ) = 10 ! 7 ! ( 10 − 7 ) ! = 10 × 9 × 8 3 × 2 × 1 = 120 \binom{10}{7} = \frac{10!}{7!(10-7)!} = \frac{10 \times 9 \times 8}{3 \times 2 \times 1} = 120 (710)=7!(107)!10!=3×2×110×9×8=120
  2. 似然函数:
    L ( p ∣ data ) = 120 ⋅ p 7 ⋅ ( 1 − p ) 3 L(p \mid \text{data}) = 120 \cdot p^7 \cdot (1-p)^3 L(pdata)=120p7(1p)3

找到最大似然估计 (Maximum Likelihood Estimation, MLE)

为了找到最适合观测数据的 p p p,我们需要最大化似然函数。我们可以通过求导数并找到极值点来实现这一目标。

  1. 似然函数的对数形式(对数似然)更方便处理:
    log ⁡ L ( p ∣ data ) = log ⁡ ( 120 ) + 7 log ⁡ ( p ) + 3 log ⁡ ( 1 − p ) \log L(p \mid \text{data}) = \log(120) + 7 \log(p) + 3 \log(1-p) logL(pdata)=log(120)+7log(p)+3log(1p)
  2. 对对数似然函数求导并求解使导数为0的 p p p 值:
    d d p log ⁡ L ( p ∣ data ) = 7 p − 3 1 − p \frac{d}{dp} \log L(p \mid \text{data}) = \frac{7}{p} - \frac{3}{1-p} dpdlogL(pdata)=p71p3
    设置导数为0并求解:
    7 p = 3 1 − p \frac{7}{p} = \frac{3}{1-p} p7=1p3
    7 ( 1 − p ) = 3 p 7(1-p) = 3p 7(1p)=3p
    7 − 7 p = 3 p 7 - 7p = 3p 77p=3p
    7 = 10 p 7 = 10p 7=10p
    p = 7 10 = 0.7 p = \frac{7}{10} = 0.7 p=107=0.7

因此,观测到7次红球和3次蓝球的数据下,红球比例 p p p 的最大似然估计为0.7。

不发生的概率

符号 ¬ \neg ¬ 表示逻辑上的“非”或“否定”,即取反的意思。
P ( ¬ A ) P(\neg A) P(¬A) 表示事件 A A A 不发生的概率。如果 A A A 是某个事件,那么 ¬ A \neg A ¬A 就是 A A A 的补事件,或者说 A A A 不发生的事件。

具体解释

  • P ( A ) P(A) P(A):事件 A A A 发生的概率。
  • P ( ¬ A ) P(\neg A) P(¬A):事件 A A A 不发生的概率。
    在概率论中,如果事件 A A A 和事件 ¬ A \neg A ¬A 是互斥且穷尽的(即两者覆盖了所有可能性),则它们的概率和为 1:

P ( A ) + P ( ¬ A ) = 1 P(A) + P(\neg A) = 1 P(A)+P(¬A)=1

因此,如果你知道事件 A A A 发生的概率 P ( A ) P(A) P(A),你可以很容易地计算出事件 A A A 不发生的概率 P ( ¬ A ) P(\neg A) P(¬A)

P ( ¬ A ) = 1 − P ( A ) P(\neg A) = 1 - P(A) P(¬A)=1P(A)

先验估计是预测阶段的估计,而后验估计是更新阶段的估计。

  1. 先验估计(Prior Estimate)
  • 定义:先验估计是指在当前时刻没有结合最新观测数据前的系统状态估计。它是基于上一时刻的后验估计和系统的状态转移模型得到的。
  • 符号:通常用 x ^ k ∣ k − 1 \hat{x}_{k|k-1} x^kk1 表示,其中 k k k 表示当前时刻, k − 1 k-1 k1 表示上一时刻。
  • 计算:根据系统的状态转移方程进行预测,即:
    x ^ k ∣ k − 1 = A k − 1 x ^ k − 1 ∣ k − 1 + B k − 1 u k − 1 \hat{x}_{k|k-1} = A_{k-1} \hat{x}_{k-1|k-1} + B_{k-1} u_{k-1} x^kk1=Ak1x^k1∣k1+Bk1uk1
    其中, x ^ k − 1 ∣ k − 1 \hat{x}_{k-1|k-1} x^k1∣k1 是上一时刻的后验估计, A k − 1 A_{k-1} Ak1 是状态转移矩阵, B k − 1 B_{k-1} Bk1 是控制输入矩阵, u k − 1 u_{k-1} uk1 是控制输入。
  1. 后验估计(Posterior Estimate)
  • 定义:后验估计是指在结合当前时刻的观测数据后,对系统状态的更新估计。它是对先验估计进行修正得到的。
  • 符号:通常用 x ^ k ∣ k \hat{x}_{k|k} x^kk 表示,表示结合了第 k k k 时刻的观测数据后的状态估计。
  • 计算:根据卡尔曼增益(Kalman Gain)和观测更新方程进行修正,即:
    x ^ k ∣ k = x ^ k ∣ k − 1 + K k ( z k − H k x ^ k ∣ k − 1 ) \hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k (z_k - H_k \hat{x}_{k|k-1}) x^kk=x^kk1+Kk(zkHkx^kk1)
    其中, K k K_k Kk 是卡尔曼增益, z k z_k zk 是当前时刻的观测数据, H k H_k Hk 是观测矩阵。
    通过上述过程,卡尔曼滤波器能够不断地利用新观测数据修正系统状态估计,从而提供一个更加准确的状态估计。

贝叶斯定理是概率论中的一个基本定理,用于描述在给定某些条件(证据)的情况下,如何更新对事件的概率估计。它的基本形式是:

P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

在这个公式中,每个符号都有特定的含义:

  • P ( A ∣ B ) P(A|B) P(AB):在条件 B B B 发生的情况下,事件 A A A 发生的概率。这被称为 后验概率(Posterior Probability)。
  • P ( B ∣ A ) P(B|A) P(BA):在条件 A A A 发生的情况下,事件 B B B 发生的概率。这被称为 似然(Likelihood)。
  • P ( A ) P(A) P(A):事件 A A A 发生的概率,不考虑任何条件。这被称为 先验概率(Prior Probability)。
  • P ( B ) P(B) P(B):事件 B B B 发生的概率,不考虑条件 A A A 是否发生。这被称为 边际概率(Marginal Probability),也可以看作是一个归一化常数,确保概率总和为 1。

通俗理解

假设你每天早晨都要预测一天的天气情况,你可以这样做:

  1. 先验估计(Prior Estimate)
  • 你看了昨晚的天气预报,预报说今天会晴天。于是,你一早起床就预测今天会是晴天。这就是你的先验估计,即基于已有的信息(昨天的预报)对今天天气的预测。
  1. 后验估计(Posterior Estimate)
  • 你打开窗户,看到了外面的实际天气。假如你看到天空阴云密布,显然今天的天气和昨晚的预报有差异。于是,你修正了你的天气预测,认为今天可能会下雨。这时,你结合了新的观测数据(看到的阴天)来更新你的预测。这就是你的后验估计,即结合新信息(实际观察)后对天气的更新预测。

贝叶斯定理的直观理解

贝叶斯定理可以帮助我们在得到新信息(证据)后,更新对某个事件发生概率的估计。简单来说,贝叶斯定理是如何利用现有的知识(先验概率)和新得到的信息(似然)来更新我们的认知(后验概率)。

贝叶斯定理的应用

贝叶斯定理的形式是:

P ( x k ∣ z 1 : k ) = P ( z k ∣ x k ) P ( x k ∣ z 1 : k − 1 ) P ( z k ∣ z 1 : k − 1 ) P(x_k | z_{1:k}) = \frac{P(z_k | x_k) P(x_k | z_{1:k-1})}{P(z_k | z_{1:k-1})} P(xkz1:k)=P(zkz1:k1)P(zkxk)P(xkz1:k1)

在卡尔曼滤波中,状态 x k x_k xk 和观测 z k z_k zk 都被假设为高斯分布。我们通过这个假设来简化贝叶斯定理的应用。

符号解释

  1. P ( x k ∣ z 1 : k ) P(x_k | z_{1:k}) P(xkz1:k)
  • 表示在时刻 k k k 观测到 z 1 : k z_{1:k} z1:k 后,状态 x k x_k xk 的后验概率分布。这个是我们希望计算和更新的目标,即根据所有观测数据(从时刻 1 到时刻 k k k)来更新当前状态的估计。
  1. P ( z k ∣ x k ) P(z_k | x_k) P(zkxk)
  • 表示在给定当前状态 x k x_k xk 的条件下,观测到 z k z_k zk 的概率(似然)。这反映了当前状态 x k x_k xk 如何生成观测值 z k z_k zk,通常由观测模型来描述。
  1. P ( x k ∣ z 1 : k − 1 ) P(x_k | z_{1:k-1}) P(xkz1:k1)
  • 表示在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的条件下,当前状态 x k x_k xk 的先验概率分布。这个是通过状态转移模型从上一个时刻的后验概率分布预测得到的。
  1. P ( z k ∣ z 1 : k − 1 ) P(z_k | z_{1:k-1}) P(zkz1:k1)
  • 表示在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的条件下,观测到 z k z_k zk 的概率(边际概率)。这个值用来归一化分子部分,使得后验概率分布的总概率为 1。

具体说明

先验概率 P ( x k ∣ z 1 : k − 1 ) P(x_k | z_{1:k-1}) P(xkz1:k1)
  • 解释:在时刻 k k k 之前的所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 已知的情况下,对时刻 k k k 的状态 x k x_k xk 进行预测。
  • 来源:通常通过状态转移模型 f f f 预测得到:
    P ( x k ∣ z 1 : k − 1 ) ∼ N ( x ^ k ∣ k − 1 , P k ∣ k − 1 ) P(x_k | z_{1:k-1}) \sim \mathcal{N}(\hat{x}_{k|k-1}, P_{k|k-1}) P(xkz1:k1)N(x^kk1,Pkk1)
    其中 x ^ k ∣ k − 1 \hat{x}_{k|k-1} x^kk1 P k ∣ k − 1 P_{k|k-1} Pkk1 是先验均值和协方差矩阵。
似然 P ( z k ∣ x k ) P(z_k | x_k) P(zkxk)
  • 解释:在给定当前状态 x k x_k xk 的条件下,观测到 z k z_k zk 的概率。
  • 来源:通常通过观测模型 h h h 得到:
    P ( z k ∣ x k ) ∼ N ( H x ^ k , R ) P(z_k | x_k) \sim \mathcal{N}(H \hat{x}_k, R) P(zkxk)N(Hx^k,R)
    其中 H H H 是观测矩阵, R R R 是观测噪声协方差矩阵。
边际概率 P ( z k ∣ z 1 : k − 1 ) P(z_k | z_{1:k-1}) P(zkz1:k1)
  • 解释:在给定之前所有观测数据 z 1 : k − 1 z_{1:k-1} z1:k1 的情况下,观测到 z k z_k zk 的概率。这个概率确保分母是一个归一化常数,使得后验概率分布的总和为 1。
  • 来源:通过积分计算得到:
    P ( z k ∣ z 1 : k − 1 ) = ∫ P ( z k ∣ x k ) P ( x k ∣ z 1 : k − 1 ) d x k P(z_k | z_{1:k-1}) = \int P(z_k | x_k) P(x_k | z_{1:k-1}) dx_k P(zkz1:k1)=P(zkxk)P(xkz1:k1)dxk
后验概率 P ( x k ∣ z 1 : k ) P(x_k | z_{1:k}) P(xkz1:k)
  • 解释:在给定所有观测数据 z 1 : k z_{1:k} z1:k 的情况下,当前状态 x k x_k xk 的概率分布。
  • 来源:利用贝叶斯定理,将先验概率和似然结合,并归一化:
    P ( x k ∣ z 1 : k ) ∼ N ( x ^ k ∣ k , P k ∣ k ) P(x_k | z_{1:k}) \sim \mathcal{N}(\hat{x}_{k|k}, P_{k|k}) P(xkz1:k)N(x^kk,Pkk)
    其中 x ^ k ∣ k \hat{x}_{k|k} x^kk P k ∣ k P_{k|k} Pkk 是更新后的后验均值和协方差矩阵。

使用 Python 绘制贝叶斯更新过程

我们可以使用 Python 来模拟贝叶斯更新过程,并可视化后验分布的变化。以下是一个简单的 Python 代码示例:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 定义先验
mu_prior = 0
sigma_prior = 1
x = np.linspace(-5, 5, 1000)
prior = norm.pdf(x, mu_prior, sigma_prior)

# 定义观测模型(似然)
mu_likelihood = 1
sigma_likelihood = 0.5
likelihood = norm.pdf(x, mu_likelihood, sigma_likelihood)

# 计算后验(使用贝叶斯定理)
posterior = likelihood * prior
posterior /= np.trapz(posterior, x)  # 归一化

# 绘制结果
plt.figure(figsize=(10, 6))
plt.plot(x, prior, label='Prior')
plt.plot(x, likelihood, label='Likelihood')
plt.plot(x, posterior, label='Posterior')
plt.xlabel('State')
plt.ylabel('Probability Density')
plt.title('Bayesian Update of Probability Distribution')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

解释

  • 先验分布(Prior):假设先验均值为 0,标准差为 1 的高斯分布。
  • 似然分布(Likelihood):假设似然均值为 1,标准差为 0.5 的高斯分布。
  • 后验分布(Posterior):通过贝叶斯定理将先验和似然结合,并归一化得到后验分布。

贝叶斯定理在卡尔曼滤波中的应用,通过高斯分布假设,先验和似然分布的联合分布也是高斯分布。后验分布的均值和协方差可以通过条件高斯分布的性质得到,最终简化为卡尔曼滤波的更新公式。卡尔曼增益 ( K_k ) 确定了先验估计和观测数据的加权比例,后验状态估计和协方差更新则通过结合先验和观测数据,反映了状态估计的不确定性减少。

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

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

相关文章

4D毫米波雷达技术及发展

文章目录 前言一、4D毫米波雷达是什么?二、毫米波雷达是什么?毫米波雷达的基本原理多普勒效应 前言 现阶段自动驾驶技术中,主要用到的传感器有摄像头、激光雷达和毫米波雷达。 摄像头的光谱从可见光到红外光谱,是最接近人眼的传感…

useEffect的概念以及使用(对接口)

// useEffect的概念以及使用 import {useEffect, useState} from reactconst Url"http://geek.itheima.net/v1_0/channels"function App() {// 创建状态变量const [lustGet,setLustGet]useState([]);// 渲染完了之后执行这个useEffect(() > {// 额外的操作&#x…

Vector VH6501使用CANoe工程CANDisturbanceMain进行模拟干扰测试

系列文章目录 文章目录 系列文章目录一、文档介绍二、打开工程 CANDisturbanceMain三、模拟干扰3.1 CAN_H或CAN_L短接到地3.2 CAN_H和CAN_L短接3.3 CAN_H或CAN_L短接到电源3.4 CAN_H和CAN_L反接3.5 CAN_H和CAN_L之间的电阻/电容值调整一、文档介绍 本文档主要介绍如何使用CANo…

亚马逊测评自养号与机刷的区别

前言: 在亚马逊运营的领域中,经常有人问:测评自养号就是机刷吗?它们两者有什么区别?做自养号太慢、太需要时间了,如果用机刷的话,会不会简单高效一点? 在这篇文章中,我…

【字符串函数2】

5. strncpy 函数的使用和模拟实现 选择性拷贝 char * strncpy ( char * destination, const char * source, size_t num ); 1.拷贝num个字符从源字符串到目标空间。 2.如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边 追加0 &#…

STM32学习和实践笔记(35):内部温度传感器实验

1.STM32F1内部温度传感器介绍 1.1 STM32F1内部温度传感器简介 STM32F1内部含有一个温度传感器,可用来测量 (STM32芯片的)CPU 及周围的温度(TA)。(实际并不用来测周围的温度,仅用来测试CPU的温度) 此温度传…

05.VisionMaster 机器视觉 结果 格式化输出

VisionMaster 机器视觉 结果 格式化输出 格式化工具可以把数据整合并格式化成字符串输出,它既可以链接前面模块的结果输出,也可以直接在框内输入字符格,在进行通信输出前通常用格式化工具将数据进行整理, 如下图所示。 前面的文章…

网络标准架构--OSI七层、四层

OSI七层网络架构,以及实际使用的四层网络架构。

【C语言】13.数组指针与函数指针及其应用

一、数组指针 顾名思义,数组指针就是指向数组的指针。形如:int (*p)[10]; 注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。 数组指针的使用 int arr[10] {0}; int (*parr)[10] &arr;…

Go语言结构体内嵌接口

前言 在golang中,结构体内嵌结构体,接口内嵌接口都很常见,但是结构体内嵌接口很少见。它是做什么用的呢? 当我们需要重写实现了某个接口的结构体的(该接口)的部分方法,可以使用结构体内嵌接口。 作用 继承赋值给接口…

APP各种抓包教程

APP各种抓包教程 9/100 发布文章 wananxuexihu 未选择任何文件 new 前言 每当遇到一些 APP 渗透测试项目的时候,抓不了包的问题令人有点难受,但是抓不了包并不能代表目标系统很安全,那么接下来我会整理一下目前我所了解到的一些抓包方法 **声…

C++ PDF转图片

C PDF转图片#include "include/fpdfview.h" #include <fstream> #include <include/core/SkImage.h>sk_sp<SkImage> pdfToImg(sk_sp<SkData> pdfData) {sk_sp<SkImage> img;FPDF_InitLibrary(nullptr);FPDF_DOCUMENT doc;FPDF_PAGE …

foxmai邮箱使用技巧图文板简单容易,服务器配置密钥配置

本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的关注和支持&#xf…

欧洲杯德语词汇与表达,柯桥零基础德语培训

欧洲杯 - die Europameisterschaft 足球 - der Fuball 比赛 - das Spiel / die Partie 球员 - der Spieler 教练 - der Trainer 裁判 - der Schiedsrichter 球迷 - die Fans 进球 - das Tor 守门员 - der Torwart / der Torhter 前锋 - der Strmer 中场 - der Mittelf…

SM3国密算法:优秀的密码散列函数

随着信息技术的飞速发展&#xff0c;信息安全已成为全球关注的焦点。密码学作为保障信息安全的核心技术&#xff0c;其重要性不言而喻。中国在密码学领域也取得了显著的成就&#xff0c;其中SM3国密算法就是中国自主设计并推广使用的密码学标准之一。 一、SM3算法概述 SM3算法…

Python自动化办公(一) —— 根据PDF文件批量创建Word文档

Python自动化办公&#xff08;一&#xff09; —— 根据PDF文件批量创建Word文档 在日常办公中&#xff0c;我们经常需要根据现有的PDF文件批量创建Word文档。手动操作不仅费时费力&#xff0c;而且容易出错。幸运的是&#xff0c;使用Python可以轻松实现这个过程。本文将介绍如…

探索C嘎嘎的奇妙世界:第四关---引用与内联函数

1 引用: 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 #include<iostream> using namespace std;int main() {int a 0;// 引用&#xff1a;…

谷歌重塑Transformer:无限记忆力,无限长输入,登上Nature

Infini-attention机制为Transformer在具有挑战性的长语境任务中释放出了新的能力&#xff0c;对于调整现有模型以适应长输入也非常实用。 谷歌的最新研究成果Infini-attention机制&#xff08;无限长注意力&#xff09;将内存压缩引入了传统注意力机制&#xff0c;并在单个Tra…

ffmpeg封装和解封装介绍-(8)解封装和封装重构

头文件&#xff1a; xformat.h #pragma once/// 封装和解封装基类#include <mutex> struct AVFormatContext; struct AVCodecParameters; struct AVPacket; struct XRational {int num; ///< Numeratorint den; ///< Denominator }; class XFormat { public:/// &…

注册中心理论学习

注册中心介绍 注册中心&#xff08;也称为服务注册中心或服务发现服务&#xff09;是微服务架构中的一个关键组件&#xff0c;它负责服务的注册与发现。在微服务体系中&#xff0c;服务实例的数量和位置是动态变化的&#xff0c;注册中心提供了一个集中的地方来存储这些信息&a…