学点概率论,打破认识误区

概率论是统计分析和机器学习的核心。掌握概率论对于理解和开发稳健的模型至关重要,因为数据科学家需要掌握概率论。本博客将带您了解概率论中的关键概念,从集合论的基础知识到高级贝叶斯推理,并提供详细的解释和实际示例。

目录

·简介
·基本集合论
·基本概率概念
·随机变量和期望
·边际、联合和条件概率
·概率规则:边际化和乘积
·贝叶斯定理
·概率分布
·使用概率进行学习
​​ ·贝叶斯推理
·在 Python 中实现概率概念
·玩具示例:抛硬币的贝叶斯推理
·结论
·行动呼吁

介绍

概率论是量化不确定性的数学框架。它使我们能够对随机现象进行建模和分析,在统计学、机器学习和数据科学中不可或缺。概率论帮助我们做出明智的决策、评估风险并建立预测模型。

基本集合论

首先,让我们定义几个关键术语。

集合(Set)是对象的集合。这些对象称为集合的元素。

集合a子集b是其元素均为a的元素的集合,即𝑏 ⊂ 𝑎

空间 S 是最大的集合;因此,所有其他集合都在考虑之中𝑠ᵢ ⊂ 𝑆

空集 O 是空集或零集。O 包含任何元素。

让我们将集合论的组成部分形象化。

维恩图描绘了集合逻辑和运算。最上面的图显示样本空间S,其中集合ABC作为子集(即,B是A的子集,而C是B的子集;因此, C 是A的子集)。其余行描绘了两个集合,AB。文本包含每个集合的描述和数学。作者创建了视觉效果。

上图描绘了我们在使用集合时遇到的各种场景。让我们来描述集合论的不同方面。鼓励读者在阅读定义和回顾数学表达式时参考每个小节后面的视觉图,以加深他们的直觉。

子集

子集𝑏 ⊂ 𝑎,或者集合a 包含b,如果b的所有元素也是a的元素,则𝑎 ⊃ 𝑏。也就是说,

英文:语句“如果b ⊆ a,且c ⊆ b,则c ⊆ a ”表达了集合包含的传递性。如果集合b是集合a的子集,集合c是集合b的子集,则c也一定是a的子集。第二项“以下关系成立:a ⊆ a0 ⊆ aa ⊆ S ”强调了集合包含的基本性质。因此:

  • a ⊆ a表示每个集合都是其自身的子集。
  • 0⊆a表示空集是任意集合a的子集。
  • a⊆S表示任意集合a都是全集S的子集。

集合运算

相等:两个集合相等,则a 的每个元素都必须在b中,而b的每个元素都必须在a中。从数学上来说:

并集(和):两个集合a b的并集是由ab 或两者的所有元素组成的集合。并集运算满足以下性质:

集合a b交集(积)由集合ab共有的所有元素组成。交集运算满足以下属性:

互斥集

如果两个集合ab没有共同元素,我们称它们互斥或不相交,即

补充

集合 a 的补集 a 定义为由 S 中所有不属于 a 的元素组成的集合。补集满足以下性质:

两集合之差

a − b的差集是a中不属于b的元素的集合差集满足以下性质:

基本概率概念

样本空间(S:随机实验的所有可能结果的集合。

事件(E):样本空间的子集,包含特定结果或一组结果。

随机变量 (RV):可能值为随机现象的数值结果的变量。例如:人的身高、抛硬币或掷骰子的结果。

事件的概率

事件E的概率(即P(E))是衡量该事件发生可能性的指标。它满足以下性质:

例子

考虑一个公平的六面骰子。样本空间为S = {1, 2, 3, 4, 5, 6}。掷出 3 的概率为 P({3}) = 1/6。掷出 1 或 3 呢?P({1, 3}) = 2/6 = 1/3。最后,掷出偶数呢?P({2, 4, 6}) = 3/6 = 1/2。

随机变量和期望

请注意,我们在本部分中使用了求和与积分。请参阅本系列的上一部分,其中涵盖了微积分和线性代数。

机器学习的基础数学

深入探究向量范数、线性代数、微积分

pub.towardsai.net

随机变量(RV)

RV 是一种变量,其值由随机实验的结果决定。有两种类型:离散随机变量(取可数个值)和连续随机变量(取不可数个值)。

例如离散随机变量的分布:

  • 它可以取每个值的概率。
  • 符号:P(X=xi)。
  • 这些数字满足以下条件:

期望和方差

期望值(平均值):随机变量的平均值。

  • 对于离散随机变量:

这个期望值(即平均值)是一个离散随机变量X 。因此,我们将其计算为所有可能值x乘以其各自概率P(X = x)的加权总和。

  • 对于连续随机变量:

这个期望值(即平均值)是连续随机变量X的。我们将其计算为x乘以其概率密度函数f(x)在整个可能值范围内的积分。

总之:

方差:我们可以计算一个二阶统计测量,表示随机变量与预期值的偏离。

上述方程表示随机变量X的方差,测量X值围绕其均值E[X]的扩展或分散。

例子

对于一个公平的六面骰子,预期值是:

边际概率、联合概率和条件概率

在本小节中,我们将使用一张图来解释边际概率、联合概率和条件概率。因此,表格是两个 RV 的联合概率分布,正如作者在此处所描绘的那样。

检查上面的图片。我们将使用这个视觉效果来学习概率论的基本概念:边际概率、联合概率和条件概率。这些概念对于理解随机变量之间的关系至关重要,尤其是在处理分类或计数数据时。

边际概率

边际概率是指在不考虑任何其他事件的情况下,单个事件发生的概率。在图中,p(X = xᵢ)表示它。然后,我们计算如下:

这表示随机变量X取特定值xᵢ的概率,该概率被边缘化为其他变量的所有可能值。因此,它有助于通过将该事件的联合概率与另一个变量的所有可能结果相加来找到单个事件的概率。

联合概率

联合概率是两个事件同时发生的概率。参考上图,它是概率p(X = xᵢ, Y = yⱼ),计算如下:

这个联合概率衡量两个事件X = xᵢY = yⱼ同时发生的可能性。

条件概率

条件概率衡量在另一个事件已经发生的情况下,发生另一事件的概率。图像将其定义为p(Y = yⱼ | X = xᵢ),计算方法如下:

该公式显示在X = xᵢ已经发生的情况下,Y = yⱼ的可能性有多大。

概率规则:边缘化和产品

边缘化是概率论中用到的一个过程,用于从所有变量的联合概率分布中推导出与变量子集相关的事件的概率。

在这个等式中,我们通过对另一个变量Y的所有可能值求和来计算边际概率p(X = xᵢ)

乘积规则是概率中的一个基本概念,它使我们能够根据边际概率和条件概率来表示两个事件的联合概率。

该等式显示了联合概率p(X = xᵢ, Y = yⱼ)如何分解:

具体来说,用数学的方式表达,乘积法则允许使用一个事件的边际概率和在第一个事件的条件下另一个事件的条件概率来计算两个事件的联合概率。

概括

这些概念是概率论的基础,对于理解数据科学中更复杂的概率模型和推理技术至关重要。总结如下。

最后,如果P(Y | X) = P(Y) ,则𝑋𝑌是独立的,这意味着P(Y | X) = P(Y)。这意味着P(𝑋, 𝑌) = P(X)P(Y)

贝叶斯定理

贝叶斯定理是贝叶斯推理的基石,是一个强大的概率结构,它使我们能够将先验知识融入到我们的计算中。

回到条件概率并在此基础上构建:回想一下我们之前定义的p(Y = yⱼ | X = xᵢ)。我们可以使用事件AB来概括这一点,并将其进一步扩展到贝叶斯。

因此,条件概率量化了在另一事件发生的情况下发生某事件的概率。因此,在事件B发生的情况下,事件 A的概率是AB的联合概率与B的概率之比。我们将其表示为P(A | B),并定义为:

管道字符“|”在概率论中翻译为“给定”。

因此,贝叶斯定理将两个事件的条件概率关联如下:

该术语根据似然P (B | A)、先验P(A)和边际概率P(B)来表达条件概率P(A | B) 。同样,这个构造是贝叶斯推理的基础,它使我们能够根据新证据更新我们的信念。

例子

假设我们对某种疾病进行测试,其概率如下:

利用贝叶斯定理,我们可以找到P(疾病|阳性)

我们可以这样计算P(Positive) 

该方程表示考虑两种情况(即患有和不患有疾病)的检测呈阳性的总概率:直接应用总概率定律。

概率分布

典型趋势遵循已知分布。因此,一个常见的问题是假设一个特定的分布来拟合我们的数据。以下是离散和连续随机变量的几个分布。

离散分布

  • 二项分布:描述固定次数的独立伯努利试验中的成功次数。
  • 泊松分布:对固定时间间隔或空间内发生的事件数量进行建模。

连续分布

  • 正态分布:以钟形曲线为特征,用平均值 μ 和标准差 σ 描述。
  • 指数分布:描述泊松过程中事件之间的时间。

我们可以通过了解期望值、方差或其他统计指标来近似数据分布。以下备忘单总结了一些连续和离散 RV 的备忘单。

这是显示连续和离散概率分布的图表。每个分布都有其平均值、标准差和概率的公式——图片来源。

例子

让我们仔细看看正态分布的概率密度函数。从数学上讲,它表示如下:

使用正态分布的概率概念可视化,显示概率密度函数 (PDF)、累积分布函数 (CDF)、平均值 (µ) 和标准差 (σ)。

该图以正态分布为基础,直观地展现了关键的概率概念。图中蓝色部分为概率密度函数 (PDF),表示分布中不同结果出现的可能性。PDF 曲线下方的面积表示随机变量落在特定范围内的概率。

累积分布函数 (CDF) 以红色显示。它从左到右累积概率,从 0 开始,渐近于 1。CDF 帮助我们确定随机变量小于或等于某个值的概率。

垂直虚线标记平均值 (μ) 和与平均值的标准差 (σ)。平均值在 x=0 处用红色虚线表示,而绿色、橙色和紫色虚线分别表示第一、第二和第三个标准差 (±1σ、±2σ、±3σ)。这些标准差说明了数据如何分布在平均值周围,其中约 68%、95% 和 99.7% 分别在平均值的 1σ、2σ 和 3σ 范围内。

图中的箭头有助于识别这些关键点,使视觉效果更易于理解。对于任何想要掌握概率基本概念的人来说,该图都是一个有用的工具,尤其是正态分布,它是统计分析和许多机器学习算法的基石。

使用概率进行学习

例如,在对垃圾邮件进行分类时,我们可以估计𝑃(𝑌 | 𝑉𝑖𝑎𝑔𝑎𝑟𝑎, 𝑙𝑜𝑡𝑡𝑒𝑟𝑦)

— 如果𝑃(𝑌 | 𝑋) <0.5 ,我们会将示例归类为垃圾邮件。 — 但是,对𝑃(𝑋 | 𝑌)
进行建模通常更容易。

这就给我们带来了最大似然法。

最大似然法

例如:抛硬币

根据n 次抛硬币的结果(其中h次都是正面),估计硬币掷出“正面”的概率p 。

数据的可能性:

对数似然:

取导数并将其设置为 0:

贝叶斯推理

贝叶斯推理是一种统计推断方法,其中贝叶斯定理用于随着更多证据的出现而更新假设的概率。

先验、似然和后验

  • 先验(PH)):对假设的初始信念。
  • 可能性(PE | H)):根据假设观察到证据的概率。
  • 后验(PH | E)):观察证据后对假设的更新信念。

贝叶斯推理中的贝叶斯定理:

我们是如何得到这个结果的?让我们回到使用XY进行泛化。

根据乘积法则

所以:

这被称为贝叶斯规则。

总之:

𝑷(𝑿) 可以计算为

然而,推断标签并不重要。

例子

让我们回到我们的案例,我们正在接受罕见疾病的检测。这一次,我们的检测结果已经呈阳性。让我们使用贝叶斯来确定它是真阳性的概率(即使用贝叶斯检查测试是否为假阳性,即测试结果被错误地归类为真)。

  • 在假阳性率为 5% 的测试中检测结果为阳性。
  • 出现这种疾病的可能性有多大?
  • 假设每 100 人中就有 1 人患有此病。这会有什么不同吗?
  • 该测试的假阴性率为 10%;实际上,十分之一的错误预测是正确的。这可以用来改善我们的预测吗?

我们首先从视觉上看一下。

该图片显示,每 100 人中就有 5 人被错误地标记为患有该疾病(即假阳性),而 1 人确实患有该疾病。

让我们使用贝叶斯定理。

请查看《我们拥有什么和想要什么》。

让我们进一步研究一下。

因此,先验(即分母中的P(B))由两个子集组成,我们可以将其表示为并集(或和)。

现在,插上电源并喝水:

因此,我们患病的概率为 15.4%!这比仅考虑假阳性率而不使用检测阳性和假阴性的百分比时原来的 95% 要好得多。

如果我们接受两次检测,每次都得到阳性结果,那会怎样?这种疾病存在的可能性有多大?

其中A患有该疾病,而B两次检测结果呈阳性。

请注意,即使经过两次测试,我们的机会仍然低于原来的 95%。

这就是贝叶斯的美妙之处:随着我们获得更多知识,我们可以将其融入到我们的数字理解中,从而提高概率的精确度!

在 Python 中实现概率概念

我们将使用该numpy库进行数值计算和scipy.stats概率分布。

示例:抛硬币模拟

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424"><span style="color:#007400"># 导入必要的库</span>
<span style="color:#aa0d91">import</span> numpy <span style="color:#aa0d91">as</span> np 
<span style="color:#aa0d91">import</span> scipy.stats <span style="color:#aa0d91">as</span> stats 
<span style="color:#aa0d91">import</span> matplotlib.pyplot <span style="color:#aa0d91">as</span> plt <span style="color:#007400"># 抛硬币次数</span>
n_flips = <span style="color:#1c00cf">100 </span>
<span style="color:#007400"># 模拟抛硬币(1 表示正面,0 表示反面)</span>coin_flips = np.random.binomial( <span style="color:#1c00cf">1</span> , <span style="color:#1c00cf">0.5</span> , n_flips) <span style="color:#007400"># 计算正面的次数</span>
n_heads = np.sum (coin_flips) <span style="color:#5c2699">print </span>
<span style="color:#5c2699">(</span> f <span style="color:#c41a16">"正面数量:<span style="color:#000000">{n_heads}</span> "</span> ) 
<span style="color:#007400"># 计算正面的概率</span>
p_heads = n_heads / n_flips 
<span style="color:#5c2699">print</span> ( <span style="color:#c41a16">f"估计正面的概率:<span style="color:#000000">{p_heads: <span style="color:#1c00cf">.2</span> f}</span> "</span> )</span></span></span></span>

输出:

正面次数:51
预计正面概率:0.51

概率分布可视化

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424"><span style="color:#007400"># 绘制二项分布</span>
n_trials = <span style="color:#1c00cf">10</span>p_success = <span style="color:#1c00cf">0.5</span>x = np.arange( <span style="color:#1c00cf">0</span> , n_trials+ <span style="color:#1c00cf">1</span> ) 
binomial_pmf = stats.binom.pmf(x, n_trials, p_success) plt.figure(figsize=( <span style="color:#1c00cf">10</span> , <span style="color:#1c00cf">5</span> )) 
plt.stem(x, binomial_pmf) 
plt.title( <span style="color:#c41a16">'二项分布 PMF'</span> ) 
plt.xlabel( <span style="color:#c41a16">'成功次数'</span> ) 
plt.ylabel( <span style="color:#c41a16">'概率'</span> ) 
plt.show()</span></span></span></span>

生成:

示例:硬币翻转的贝叶斯推理

我们将使用贝叶斯推理来估计有偏差的硬币出现正面的概率。

先前的信念

假设 Beta 先验分布的参数为 α = 2 和 β = 2,表示统一的先验信念。

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424"><span style="color:#007400"># 定义先验分布</span>
alpha_prior = <span style="color:#1c00cf">2</span>beta_prior = <span style="color:#1c00cf">2</span>Prior = stats.beta(alpha_prior, beta_prior) <span style="color:#007400"># 绘制先验分布</span>
x = np.linspace( <span style="color:#1c00cf">0</span> , <span style="color:#1c00cf">1</span> , <span style="color:#1c00cf">100</span> ) 
plt.figure(figsize=( <span style="color:#1c00cf">10</span> , <span style="color:#1c00cf">5</span> )) 
plt.plot(x, Prior.pdf(x), label= <span style="color:#c41a16">'Prior'</span> ) 
plt.title( <span style="color:#c41a16">'Prior Distribution'</span> ) 
plt.xlabel( <span style="color:#c41a16">'Probability of Heads'</span> ) 
plt.ylabel( <span style="color:#c41a16">'Density'</span> ) 
plt.legend() 
plt.show()</span></span></span></span>

生成:

似然和后验

使用观察到的数据(证据)更新先验以获得后验分布。

<span style="color:rgba(0, 0, 0, 0.8)"><span style="background-color:#ffffff"><span style="background-color:#f9f9f9"><span style="color:#242424"><span style="color:#007400"># 观察到的正面和反面的数量</span>
n_heads = <span style="color:#1c00cf">7</span>n_tails = <span style="color:#1c00cf">3 </span><span style="color:#007400"># 更新后验分布</span>
alpha_posterior = alpha_prior + n_heads 
beta_posterior = beta_prior + n_tails 
posterior = stats.beta(alpha_posterior, beta_posterior) <span style="color:#007400"># 绘制后验分布</span>
plt.figure(figsize=( 
<span style="color:#1c00cf">10</span> , <span style="color:#1c00cf">5</span> )) 
plt.plot(x, Prior.pdf(x), label= <span style="color:#c41a16">'Prior'</span> ) 
plt.plot(x, posterior.pdf(x), label= <span style="color:#c41a16">'Posterior'</span> , linestyle= <span style="color:#c41a16">'--'</span> ) 
plt.title( <span style="color:#c41a16">'先验和后验分布'</span> ) 
plt.xlabel( <span style="color:#c41a16">'正面的概率'</span> ) 
plt.ylabel( <span style="color:#c41a16">'密度'</span> ) 
plt.legend() 
plt.show()</span></span></span></span>

生成:

结论

概率论是支撑许多统计和机器学习技术的基本数据科学组成部分。本教程涵盖了概率的基本概念,从基本定义到高级贝叶斯推理,并提供了实际示例和 Python 实现。通过掌握这些概念,您可以构建更强大的模型,做出更好的决策,并从数据中获得更深入的见解。

尝试使用不同的概率分布、假设和数据集来探索概率论在数据科学项目中的广泛应用。

 

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

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

相关文章

【数据结构_9】栈和队列

队列 Queue 一个方向进&#xff0c;一个方向出 Queue队列提供的核心方法&#xff1a; 入队列&#xff1a;offer add 出队列&#xff1a;poll remove 取队首元素&#xff1a; peek element 前面一列发生错误是返回null 后面一列发生错误时抛出异常 Queue是否能够使用isEm…

HarmontOS-ArkUI V2状态 !!语法糖 双向绑定

什么是双向绑定 双向绑定指的是在组件间数据的双向绑定。当一个值无论是在父组件还是子组件中改动都会在这两层中都更新界面。 回顾过往的“双向绑定”实现方式 靠@Event装饰回调函数 一般是对于@Param修饰的状态变量。当子组件发生某个动作的时候,调用某个父组件传递过来的…

贪心算法day9(合并区间)

1.合并区间 56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 对于这种区间问题&#xff0c;我们应该先排序根据排序的结果总结一些规律&#xff0c;进而的得出解决该问题的策略。 class Solution {public static int[][] merge(int[][] intervals) {//第一步进行左端点…

探索加密期权波动率交易的系统化实践——动态对冲工具使用

Trading Volatility – What Are My Options? 在本文中&#xff0c;我们将介绍一些如何交易资产波动性&#xff08;而非资产价格&#xff09;的示例。为了帮助理解&#xff0c;我们将使用 Deribit 上提供的几种不同产品&#xff0c;包括但不限于期权。我们将尽可能消除对标的价…

子函数嵌套的意义——以“颜色排序”为例(Python)

多一层缩进精减参数传递&#xff0c;参数少平铺书代码写更佳。 笔记模板由python脚本于2025-04-16 11:52:53创建&#xff0c;本篇笔记适合喜欢子函数嵌套结构代码形式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅…

【数据结构与算法】LeetCode每日一题

此题跟27.移除数组中的指定值 类似&#xff0c;都是移除且双指针玩法&#xff0c;只不过判断条件发生了变化 此题跟26.删除有序数组中的重复项I 一样&#xff0c;除了fast-1变成了fast-2

c#OleDb连接池管理功能

使用 ConcurrentDictionary 和 ConcurrentBag 来管理数据库连接 using Drv.Utilities; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data.OleDb; using System.Linq;namespace Drv.AccessClient {/// <summary>…

【Flink运行时架构】核心组件

在Flink的运行架构中&#xff0c;有两大比较重要的组件&#xff1a;作业管理器&#xff08;JobManager&#xff09;和任务管理器&#xff08;TaskManager&#xff09;。 Flink的作业提交与任务处理时的系统如下图所示。 其中&#xff0c;客户端并不是处理系统的一部分&#xff…

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记2

目录 一、ArcGIS Engine概述 1、 定义 2、 核心功能 3、 与ArcObjects&#xff08;AO&#xff09;的关系 二、开发环境搭建 1、 开发工具要求 2、 关键步骤 三、 ArcGIS Engine核心组件 1、 对象模型 2、 类库分类 四、 第一个AE应用程序&#xff08;C#示例&#xf…

端、管、云一体化原生安全架构 告别外挂式防护!

面对数字化转型浪潮&#xff0c;企业网络安全风险日益凸显。数据泄露、黑客勒索等事件频发&#xff0c;合规要求加速推进。尽管企业纷纷部署了防病毒、身份认证、文件加密、入侵防护、流量监控等多种安全系统&#xff0c;但分散且孤立的架构非但没有有效抵御风险&#xff0c;反…

深度学习--深度学习概念、框架以及构造

文章目录 一、深度学习1.什么是深度学习&#xff1f;2.特点3.神经网络构造1&#xff09;.单层神经元2&#xff09;多层神经网络3&#xff09;小结 4.感知器5.多层感知器6.多层感知器&#xff08;偏置节点&#xff09;7.神经网络构造 一、深度学习 1.什么是深度学习&#xff1f…

helm账号密码加密

1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…

大数据面试问答-HBase/ClickHouse

1. HBase 1.1 概念 HBase是构建在Hadoop HDFS之上的分布式NoSQL数据库&#xff0c;采用列式存储模型&#xff0c;支持海量数据的实时读写和随机访问。适用于高吞吐、低延迟的场景&#xff0c;如实时日志处理、在线交易等。 RowKey&#xff08;行键&#xff09; 定义&#xf…

动态渲染组件

React框架&#xff0c;JSX语法 今天遇到一个好玩的 常规的搜索列表&#xff0c;列表最后一列为操作列&#xff0c;删改查。 眼看着Table 操作列 的配置文件越来越复杂&#xff0c;决定把操作列单独写一个组件&#xff0c;代码瞬间靓仔了些 {title: Operation,dataIndex: oper…

Web APIs阶段

一、Web APIs和JS基础关联性 1.1JS的组成 1.2JS基础阶段以及Web APIs阶段 JS基础阶段&#xff1a;学习的是ECMAScript标准规定的基础语法 Web APIs阶段&#xff1a; Web APIs是W3C组织的标准Web APIs我们主要学习DOM和BOMWeb APIs是JS独有的部分主要学习页面交互功能需要使用…

Doip功能寻址走UDP协议

目前使用 connect()函数的UDP客户端 ,这里接收数据 解析的地方 查看一下。 如果使用 bind()、sendto()、recvfrom() 组合 那么返回值 和发送要在做调整&#xff0c;&#xff0c;根据业务需要后续在调整 其余的 和原来的 逻辑都是一样的&#xff0c;只是协议变了而已。 if serv…

Linux指令的详细介绍

前言&#xff1a;&#x1f33c;&#x1f33c; Linux是一款强大且广泛使用的操作系统&#xff0c;命令行接口&#xff08;CLI&#xff09;是与其交互的核心方式。通过Linux指令&#xff0c;用户可以高效地执行文件管理、系统监控、进程控制等任务。虽然刚接触时可能感到有些复杂…

Elasticsearch使用记录

一、配环境 1.docker版本部署es 8.x系列可以关掉ssl&#xff08;本地测试时&#xff09;&#xff0c;去docker的/usr/share/elasticsearch/config/elasticsearch.yml里面的“xpack.security.enabled:”设置成true就可以 2.window docker部署推荐教程&#xff1a;基于Docker安…

MuJoCo(Multi-Joint Dynamics with Contact)机器人仿真器存在的问题

MuJoCo物理引擎计算接触力的核心思路&#xff0c;是通过数学优化的方式同时满足多个物理约束&#xff0c;而不是简单地为每个碰撞点单独计算作用力。它的工作流程可以理解为几个阶段的紧密配合。首先&#xff0c;仿真器会快速检测所有可能发生接触的物体表面&#xff0c;筛选出…

基础(项目管理工具:JIRA、禅道)

目录 JIRA JIRA介绍 JIRA中的优先级&#xff08;缺陷严重程度&#xff09; JIRA中的解决结果&#xff08;缺陷的解决结果&#xff09; JIRA中的问题状态&#xff08;缺陷的状态&#xff09; 使用JIRA创建缺陷 JIRA的安装&#xff08;Windows&#xff09; JDK22的下载和安…