人工智能与机器学习原理精解【9】

文章目录

  • 马尔科夫过程论
    • 基础
    • 理论
      • 得到马尔可夫链的状态转移概率矩阵
        • 计算状态转移概率的常见方法
          • 1. 实验观察
          • 2. 历史数据分析
          • 3. 理论假设
          • 4. 使用统计模型
        • 示例计算
        • Python代码示例
        • 例子
        • Python代码验证
      • 马尔可夫链的状态转移概率矩阵
        • 例子
        • 例题
      • 马尔可夫链例子
        • 例子
        • 例题
      • 概率测度
        • 定义
        • 原理
        • 例子
        • 例题
      • σ代数的定义、原理、例子和例题
        • 一、定义
        • 二、原理
        • 三、例子
        • 四、例题
  • 参考文献

马尔科夫过程论

基础

  • 概率空间
    总体 ( G , M , P ) 为概率空间,其中, G 为某集, M 为它的子集 σ 代数 , P 为 M 上的概率测度 G 中的点称为基本事件, M 中的元为事件,值 P ( A ) 为事件的概率 每一个 M − 可测函数 φ ( w ) ( w ∈ G ) 称为随机变量, 积分 ∫ G φ ( w ) P ( d w ) 称为 φ 的数学期望,记为 M φ 只定义在全空间 G 的子集 G φ 上的 M 可测函数 φ 称为随机变量 M φ = ∫ G φ ( w ) P ( d w ) 总体(G,M,P)为概率空间,其中,G为某集, \\M为它的子集\sigma代数,P为M上的概率测度 \\G中的点称为基本事件,M中的元为事件,值P(A)为事件的概率 \\每一个M-可测函数\varphi(w)(w \in G)称为随机变量, \\积分\int_G\varphi(w)P(dw)称为\varphi的数学期望,记为M\varphi \\只定义在全空间G的子集G_{\varphi}上的M可测函数\varphi称为随机变量 \\M_{\varphi}=\int_G\varphi(w)P(dw) \\ 总体(G,M,P)为概率空间,其中,G为某集,M为它的子集σ代数,PM上的概率测度G中的点称为基本事件,M中的元为事件,值P(A)为事件的概率每一个M可测函数φ(w)(wG)称为随机变量,积分Gφ(w)P(dw)称为φ的数学期望,记为只定义在全空间G的子集Gφ上的M可测函数φ称为随机变量Mφ=Gφ(w)P(dw)
  • 马尔可夫链的状态转移概率矩阵
    假设一个马尔可夫链有三个状态:A、B和C。
    1.经过一段时间的观察,我们得到以下的转移次数:
转移方向次数
从A到A10次
从A到B5次
从A到C3次
从B到A2次
从B到B8次
从B到C4次
从C到A1次
从C到B6次
从C到C9次

根据上述数据,我们可以计算每个状态的转移频率,并构建状态转移概率矩阵:
1. A 行: A − > A 的状态转移频率为: ( 10 ) / ( 10 + 5 + 3 ) = 0.55 A − > B 的状态转移频率为: 5 / ( 10 + 5 + 3 ) = 0.27 A − > C 的状态转移频率为: 3 / ( 10 + 5 + 3 ) = 0.17 1.A行: A->A的状态转移频率为:(10) / (10+5+3) = 0.55 \\ A->B的状态转移频率为:5 /(10+5+3)=0.27 \\ A->C的状态转移频率为:3/(10+5+3)=0.17 1.A行:A>A的状态转移频率为:(10)/(10+5+3)=0.55A>B的状态转移频率为:5/(10+5+3)=0.27A>C的状态转移频率为:3/(10+5+3)=0.17
2. B 行: B − > A 的状态转移频率为: 2 / ( 2 + 8 + 4 ) = 0.14 B − > B 的状态转移频率为: 8 / ( 2 + 8 + 4 ) = 0.57 B − > C 的状态转移频率为: 4 / ( 2 + 8 + 4 ) = 0.29 2.B行: B->A的状态转移频率为:2 / (2+8+4) = 0.14 \\ B->B的状态转移频率为:8 /(2+8+4)=0.57 \\ B->C的状态转移频率为:4/(2+8+4)=0.29 2.B行:B>A的状态转移频率为:2/(2+8+4)=0.14B>B的状态转移频率为:8/(2+8+4)=0.57B>C的状态转移频率为:4/(2+8+4)=0.29
3. C 行: C − > A 的状态转移频率为: 1 / ( 1 + 6 + 9 ) = 0.06 C − > B 的状态转移频率为: 6 / ( 1 + 6 + 9 ) = 0.37 C − > C 的状态转移频率为: 9 / ( 1 + 6 + 9 ) = 0.57 3.C行: C->A的状态转移频率为:1 / (1+6+9) = 0.06 \\ C->B的状态转移频率为:6 /(1+6+9)=0.37 \\ C->C的状态转移频率为:9/(1+6+9)=0.57 3.C行:C>A的状态转移频率为:1/(1+6+9)=0.06C>B的状态转移频率为:6/(1+6+9)=0.37C>C的状态转移频率为:9/(1+6+9)=0.57
因此,状态转移概率矩阵为:

P = ( 0.55 0.27 0.17 0.14 0.57 0.29 0.06 0.37 0.57 ) P = \begin{pmatrix} 0.55 & 0.27 &0.17 \\ 0.14 & 0.57 &0.29 \\ 0.06 & 0.37 &0.57 \\ \end{pmatrix} P= 0.550.140.060.270.570.370.170.290.57

  1. 验证

完成状态转移概率矩阵的构建后,需要验证每一行的元素之和是否等于1。这是因为从一个状态出发,转移到所有可能状态的概率之和必须为1,以满足概率的归一化条件。

通过以上步骤,就可以准确地计算出马尔可夫链的状态转移概率矩阵。

理论

得到马尔可夫链的状态转移概率矩阵

在得到马尔可夫链的状态转移概率矩阵时,我们首先需要明确马尔可夫链的所有可能状态以及这些状态之间的转移概率。以下是一个具体的例子,展示了如何根据给定的转移信息来构建状态转移概率矩阵。
计算马尔可夫链的状态转移概率通常基于实验观察、历史数据或理论假设。马尔可夫链的一个关键特性是“无记忆性”,即未来状态的概率分布仅依赖于当前状态,而与过去的状态无关。因此,状态转移概率描述了从当前状态转移到下一个状态的可能性。

计算状态转移概率的常见方法

以下是一些计算状态转移概率的常见方法:

1. 实验观察

最直接的方法是进行实验观察,并记录状态之间的转移情况。然后,可以使用这些观察数据来计算转移概率。例如,如果你正在观察一个天气系统,并记录每天的天气状态(晴天、多云、雨天),那么你可以计算从晴天转移到多云、晴天转移到雨天等的概率。

2. 历史数据分析

如果你有关于系统状态转移的历史数据,你可以使用这些数据来计算转移概率。这通常涉及统计每个状态转移到其他状态的频率,并将这些频率归一化为概率。

3. 理论假设

在某些情况下,你可能没有足够的数据来直接计算转移概率,或者你可能想要根据系统的某些已知特性来假设这些概率。例如,在建模一个排队系统时,你可能会根据到达率和服务率来假设状态之间的转移概率。

4. 使用统计模型

对于更复杂的系统,你可能需要使用统计模型来估计状态转移概率。这些模型可能包括回归分析、时间序列分析、机器学习算法等。

示例计算

假设你有一个简单的马尔可夫链,用于描述一个学生的学习状态(学习、休息、玩游戏),并且你已经有了一段时间的观察数据。以下是如何计算从“学习”状态转移到其他状态的概率的示例:

  • 假设在观察期间,学生处于“学习”状态的总次数是100次。
  • 在这100次中,学生继续学习的次数是70次。
  • 学生从学习状态转移到休息状态的次数是20次。
  • 学生从学习状态转移到玩游戏状态的次数是10次。

那么,从“学习”状态转移到其他状态的概率可以计算如下:

  • 转移到“学习”的概率(即停留在当前状态): P ( 学习 → 学习 ) = 70 100 = 0.7 P(\text{学习} \rightarrow \text{学习}) = \frac{70}{100} = 0.7 P(学习学习)=10070=0.7
  • 转移到“休息”的概率: P ( 学习 → 休息 ) = 20 100 = 0.2 P(\text{学习} \rightarrow \text{休息}) = \frac{20}{100} = 0.2 P(学习休息)=10020=0.2
  • 转移到“玩游戏”的概率: P ( 学习 → 玩游戏 ) = 10 100 = 0.1 P(\text{学习} \rightarrow \text{玩游戏}) = \frac{10}{100} = 0.1 P(学习玩游戏)=10010=0.1

这些概率构成了状态转移概率矩阵中“学习”状态所在行的元素。

Python代码示例

虽然在这个简单的例子中我们不需要Python代码来计算概率(因为它们是直接基于观察数据得出的),但我们可以使用Python来验证或处理更复杂的数据集。

# 假设我们有以下观察数据
transitions_from_study = {'study': 70, 'rest': 20, 'game': 10}# 计算从“学习”状态转移到其他状态的概率
total_transitions_from_study = sum(transitions_from_study.values())
transition_probs_from_study = {state: count / total_transitions_from_study for state, count in transitions_from_study.items()}# 打印结果
print(transition_probs_from_study)

这段代码将输出从“学习”状态转移到其他状态的概率字典。

例子

假设有一个简单的马尔可夫链,用于描述一个学生的学习状态。该马尔可夫链有三种状态:

  • 状态A:学生正在学习
  • 状态B:学生正在休息
  • 状态C:学生正在玩游戏

经过一段时间的观察,我们得到了以下状态之间的转移概率:

  • 从状态A转移到A(继续学习)的概率为0.7
  • 从状态A转移到B(开始休息)的概率为0.2
  • 从状态A转移到C(开始玩游戏)的概率为0.1
  • 从状态B转移到A(重新开始学习)的概率为0.4
  • 从状态B转移到B(继续休息)的概率为0.5
  • 从状态B转移到C(开始玩游戏)的概率为0.1
  • 从状态C转移到A(结束游戏,开始学习)的概率为0.3
  • 从状态C转移到B(结束游戏,开始休息)的概率为0.3
  • 从状态C转移到C(继续玩游戏)的概率为0.4

(注意:这里假设了状态之间的转移是完整的,即所有可能的转移都被考虑到了,并且转移概率之和为1。)

接下来,我们将这些转移概率排列成矩阵形式,得到状态转移概率矩阵P:

P = [ 0.7 0.2 0.1 0.4 0.5 0.1 0.3 0.3 0.4 ] P = \begin{bmatrix} 0.7 & 0.2 & 0.1 \\ 0.4 & 0.5 & 0.1 \\ 0.3 & 0.3 & 0.4 \end{bmatrix} P= 0.70.40.30.20.50.30.10.10.4

其中,矩阵P的每一行代表一个状态,每一列也代表一个状态。P[i][j]表示从状态i转移到状态j的概率。

Python代码验证

虽然在这个简单的例子中我们不需要Python代码来构建矩阵(因为它可以直接从给定的转移概率中写出来),但我们可以使用Python来验证矩阵的某些属性,比如每一行的概率之和是否等于1。

import numpy as np# 定义状态转移概率矩阵
P = np.array([[0.7, 0.2, 0.1],[0.4, 0.5, 0.1],[0.3, 0.3, 0.4]])# 验证每一行的概率之和是否等于1
print(np.all(np.sum(P, axis=1) == 1))  # 应该输出True

这段代码首先导入了NumPy库,然后定义了状态转移概率矩阵P。接着,它使用np.sum函数沿着轴1(即行方向)对矩阵进行求和,并使用np.all函数检查所有行的和是否都等于1。在这个例子中,输出应该是True,表示我们定义的状态转移概率矩阵是有效的。

马尔可夫链的状态转移概率矩阵

马尔可夫链的状态转移概率矩阵是描述马尔可夫链中各状态之间转移概率的矩阵。以下是一个具体的例子和例题来说明这一概念。

例子

假设有一个简单的马尔可夫链,用于描述一个网站的用户访问状态。该马尔可夫链有三种状态:

  • 状态A:用户正在浏览首页
  • 状态B:用户正在浏览产品页面
  • 状态C:用户已经完成购买并离开

经过一段时间的观察,我们得到了以下状态转移次数:

转移A → AA → BA → CB → AB → BB → CC → AC → BC → C
次数10050302080401050

(注意:在实际情况中,C状态到C状态的转移次数应为0,因为一旦用户完成购买并离开,他们就不会再回到这个“完成购买”的状态。但为了示例的完整性,这里暂时保留该列,并假设其转移次数为0。)

接下来,我们计算每个状态的转移频率,即每个状态转移到其他状态的次数除以该状态的总转移次数。以状态A为例:

  • A的总转移次数 = 100 + 50 + 30 = 180
  • A → A的转移频率 = 100 / 180 ≈ 0.556
  • A → B的转移频率 = 50 / 180 ≈ 0.278
  • A → C的转移频率 = 30 / 180 ≈ 0.167

类似地,我们可以计算出状态B和状态C的转移频率。然后,将这些转移频率排列成矩阵形式,即得到状态转移概率矩阵:

P = [ 0.556 0.278 0.167 0.250 0.500 0.250 0.333 0.167 0.000 ] P = \begin{bmatrix} 0.556 & 0.278 & 0.167 \\ 0.250 & 0.500 & 0.250 \\ 0.333 & 0.167 & 0.000 \\ \end{bmatrix} P= 0.5560.2500.3330.2780.5000.1670.1670.2500.000

(注意:由于C状态到C状态的转移次数为0,且C状态是终止状态,因此C行的最后一列被设置为0。同时,为了保持矩阵的规范性,对C行的其他元素进行了归一化处理。)

例题

例题:给定一个马尔可夫链的状态转移概率矩阵P,以及初始状态分布向量v0,求经过n步转移后的状态分布向量vn。

  1. 定义状态转移概率矩阵P
    假设P是一个m×m的矩阵,其中m是状态的数量。 P [ i ] [ j ] 表示从状态 i 转移到状态 j 的概率。 P[i][j]表示从状态i转移到状态j的概率。 P[i][j]表示从状态i转移到状态j的概率。

  2. 定义初始状态分布向量 v 0 v_0 v0
    v 0 v_0 v0是一个长度为m的向量,其中 v 0 [ i ] v_0[i] v0[i]表示初始时处于状态i的概率。

  3. 计算n步转移后的状态分布向量 v n v_n vn
    使用矩阵乘法, v n = v n − 1 × P = v 0 × P n 。其中, P n 表示矩阵 P 的 n 次方 v_n = v_{n-1} × P = v_0 × P^n。其中,P^n表示矩阵P的n次方 vn=vn1×P=v0×Pn。其中,Pn表示矩阵Pn次方

  4. 应用实例
    假设 P 和 v 0 如上例所示,且 n = 2 , 我们需要计算 v 2 。 这通常通过编程实现,因为手动计算矩阵的高次幂可能非常繁琐。 假设P和v_0如上例所示,且n=2,\\我们需要计算v_2。\\这通常通过编程实现,因为手动计算矩阵的高次幂可能非常繁琐。 假设Pv0如上例所示,且n=2我们需要计算v2这通常通过编程实现,因为手动计算矩阵的高次幂可能非常繁琐。

请注意,以上例题中的矩阵P和向量v_0是基于前面例子的简化表示,并且为了说明问题而进行了适当的调整。在实际应用中,P和v-0将根据具体问题的上下文来确定。

此外,马尔可夫链的状态转移概率矩阵在多个领域都有广泛的应用,如自然语言处理、机器学习、金融分析等。通过分析状态转移概率矩阵,我们可以获得关于系统动态行为的重要信息,并据此进行预测和决策。

马尔可夫链例子

马尔可夫链(Markov Chain)是一种数学系统,该系统中,每个事件的概率仅取决于该系统的当前状态,而与之前的状态无关。这种特性被称为“无记忆性”或“无后效性”。以下是几个马尔可夫链的例子和例题:

例子
  • 天气预测
    描述:考虑一个天气预报模型,其中有三种可能的天气状态:晴天、多云和雨天。根据马尔科夫性质,预测明天的天气时,只需考虑今天的天气状态以及从今天到明天每种天气状态的转移概率。
    应用:在天气预测中,可以利用马尔科夫链来预测未来几天的天气情况。

  • 股市波动
    描述:股市的涨跌也可以看作是一个马尔可夫链。假设股市有两种状态:上涨和下跌。根据历史数据,可以计算出从一种状态转移到另一种状态的概率。
    应用:投资者可以利用这些转移概率来制定投资策略,预测股市的未来走势。

  • 随机游动
    描述:随机游动是马尔可夫链的一个经典例子。考虑一个质点在数轴上随机移动,每次只能向左或向右移动一单位,或原地不动。移动的概率是固定的,且各次移动相互独立。
    应用:随机游动模型在物理学、生物学、经济学等多个领域都有广泛的应用,如描述分子在溶液中的扩散过程、种群基因频率的随机变化等。

  • 赌徒破产问题
    描述:赌徒甲和乙进行赌博,每局赌博甲获胜的概率为p,乙获胜的概率为q(p+q=1),且每局赌注为1元。甲初始时有a元,乙初始时有b元,直到其中一方输光为止。
    马尔可夫链:在这个问题中,可以将甲或乙的剩余资金视为系统的状态,系统的状态转移概率取决于当前状态和赌博的结果。
    应用:通过分析这个马尔可夫链,可以计算出甲或乙最终破产的概率。

例题

例题1:直线上带吸收壁的随机游动(醉汉游动)

  • 描述:设一质点在线段[1,5]上随机游动,每秒钟发生一次随机游动,移动的规则是:若当前在位置1或5,则下一步只能停留在原位置(吸收壁);若当前在位置2、3、4,则向左或向右移动的概率均为1/2。
  • 问题:求质点在时刻n所处的位置的概率特性。
  • 分析:这是一个典型的马尔可夫链问题,可以通过构建转移矩阵和转移图来求解。

例题2:赌徒输光问题的具体计算

  • 描述:赌徒甲有资本a元,赌徒乙有资本b元,两人进行赌博,每赌一局输者给赢者1元,直到其中一人输光为止。设甲每局获胜的概率为p,乙获胜的概率为q(p+q=1)。
  • 问题:求甲最终输光的概率。
  • 分析:这个问题可以通过构建马尔可夫链,并求解从初始状态(甲有a元)到吸收状态(甲输光,即0元)的转移概率来求解。可以使用动态规划或递推关系式等方法进行计算。

以上例子和例题展示了马尔可夫链在不同领域中的应用和求解方法。通过构建和分析马尔可夫链,我们可以更好地理解和预测这些系统的行为。

概率测度

定义

概率测度(Probability Measure)是概率论、遍历理论等数学分支中常用的一种重要的有限测度。在数学中,概率测度是在满足测度属性(如可加性)的概率空间中的一组事件上定义的实值函数。具体而言,概率测度μ在测度空间(X,Ω,μ)中,如果满足μ(X)=1,则称μ为概率测度。这意味着整个概率空间X的概率测度为1,且对于任意可数的不相交集合,其并集的概率等于各集合概率之和(即满足可加性)。

原理

概率测度的原理主要基于测度论,特别是概率空间中的可加性原理。这一原理表明,对于任意两个不相交的事件A和B(即A∩B=∅),事件A和B的并集的概率P(A∪B)等于事件A的概率P(A)与事件B的概率P(B)之和,即P(A∪B)=P(A)+P(B)。这一原理是概率论中最基本的原理之一,也是概率测度定义的核心。

例子
  1. 抛硬币:假设有一个公平的硬币,抛掷后正面朝上的概率为P(正面)=0.5,反面朝上的概率为P(反面)=0.5。这里,整个样本空间(即所有可能的结果)的概率测度为1,正面和反面这两个不相交事件的概率之和也为1,满足概率测度的定义。
  2. 掷骰子:一个六面体的骰子,每一面出现的概率都是1/6。这里,整个样本空间(即骰子的六个面)的概率测度为1,每一面作为一个事件,其概率之和也为1。
例题

例题:一个袋子中有5个红球和3个白球,随机取出一个球,求取出红球的概率。

  1. 定义样本空间:样本空间Ω是所有可能取出的球组成的集合,即Ω={红球1, 红球2, …, 红球5, 白球1, 白球2, 白球3}。但在这里,我们更关心的是球的颜色种类,因此可以将样本空间简化为Ω’={红球, 白球}。
  2. 定义事件:事件A是“取出红球”。
  3. 计算概率:根据概率测度的定义,事件A的概率P(A)是事件A包含的样本点数与整个样本空间包含的样本点数之比。即P(A)=红球数/总球数=5/8。

这个例题展示了如何在具体情境中应用概率测度的定义和原理来计算事件的概率。

σ代数的定义、原理、例子和例题

一、定义

σ代数(σ-algebra)在数学中,特别是在测度论中,是一个重要的概念。它又称为σ域、完全加法类、可列加法类、σ加法类,是某个集合X的所有子集的集合(即幂集)的一个子集。
这个子集满足对于可数个集合的并集运算和补集运算的封闭性(因此对于交集运算也是封闭的)。
σ代数可以用来严格地定义所谓的“可测集”,是测度论的基础概念之一。

二、原理

σ代数的核心原理在于其对可数个集合运算的封闭性。具体来说,如果Γ是由集合X中一些子集所构成的集合族(也叫做集类),并且满足以下条件:

  1. X ∈ Γ(即X本身属于Γ)。
  2. 若A ∈ Γ,则A的补集A^c ∈ Γ(即A的补集也属于Γ)。
  3. 若A_n ∈ Γ(n=1,2,…),则∪A_n ∈ Γ(即可数个A_n的并集也属于Γ)。

那么,我们称Γ是一个σ代数。

三、例子

假设集合X = {a, b, c, d},我们可以构造一个σ代数如下:

  1. 首先,X本身和空集∅是任何σ代数都必须包含的。
  2. 假设我们选取子集{a, b}和{c}作为σ代数的基础元素。
  3. 根据σ代数的定义,我们需要包含这些基础元素的补集,即{a, b}的补集{c, d}和{c}的补集{a, b, d}。
  4. 接下来,我们可以考虑这些子集的并集。例如,{a, b} ∪ {c} = {a, b, c},{a, b} ∪ {c, d} = {a, b, c, d}(即X本身),{c} ∪ {a, b, d} = {a, b, c, d}(同样是X本身),但这些并集要么已经在基础元素中(如X本身),要么可以通过其他方式得到(如{a, b, c}可以通过{a, b}和{c}的并集得到,但它不是直接从基础元素通过补集和并集操作得到的)。
  5. 实际上,在这个例子中,我们可以构造一个更小的σ代数,只包含{∅, {a, b}, {c}, {a, b, c, d}},这个集合族满足σ代数的所有条件。

然而,需要注意的是,这个例子并不是唯一的,而且在实际应用中,σ代数可能会包含更多的元素。

四、例题

例题:已知Ω={1,2,3},求由C={{1,2},{1,3}}生成的σ代数。

答案

  1. 首先,包含Ω和空集∅。
  2. 包含C中的元素{1,2}和{1,3}。
  3. 包含这些元素的补集:{1,2}的补集是{3},{1,3}的补集是{2}。
  4. 考虑并集:{1,2} ∪ {1,3} = {1,2,3}(即Ω本身),但Ω已经在集合中了;{1,2} ∪ {2} = {1,2},但这个结果已经在C中了;{1,3} ∪ {3} = {1,3},这个结果也在C中了;{1,3} ∪ {2} = {1,2,3}(即Ω),但这个结果已经在集合中了。
  5. 因此,由C={{1,2},{1,3}}生成的σ代数为{∅, {1}, {2}, {3}, {1,2}, {1,3}, {Ω}}。注意这里{1},{2},{3}是通过补集操作间接得到的(例如,{1}是{2,3}的补集,而{2,3}是Ω中除了{1,2}和{1,3}之外的部分)。但在实际书写时,我们通常会直接列出这些元素,而不是通过补集操作来推导它们。

这个例题展示了如何从一个给定的集合族出发,通过应用σ代数的定义(即包含原集合、补集和可数个并集)来构造一个σ代数。

参考文献

1.文心一言
2.《邓肯-马尔科夫过程论基础》

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

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

相关文章

WireShark 更改界面主题

背景 Windows 是黑色主题 安装 WireShark 后&#xff0c;WireShark 界面也是黑色主题 预期 想要将 WireShark 界面更改为白色主题 操作 启动 wireshark 时添加 -platform windows:darkmode0 参数 <Wireshark.exe 路径> -platform windows:darkmode0 例&#xff1a;…

面试题:如何验证代码的可靠性

代码结构上的&#xff1a; 1 可扩展性 是否否和开闭原则 2 性能&#xff0c;数据结构用的是否合理&#xff0c;算法等是否效率高。 3 安全性 是否存在潜在的安全 整数溢出 SQL注入 等 4 代码复杂度 圈负杂度 if嵌套深度 函数长度等 5 函数变量的命名是否具有自解释性 1. …

Vue进阶之Vue无代码可视化项目(八)

Vue无代码可视化项目 右侧栏配置——配置面板右侧栏配置RightPanel.vueTextSetting.vueImageSetting.vueChartSetting.vue右侧栏和中间区域联动TextSetting.vueImageSetting.vuesrc/blocks/BlockRenderer.vuesrc/blocks/internal/TextBlock.vuesrc/blocks/internal/ImageBlock.…

echarts所遇到的问题,个人记录

TreeMap 矩形树图&#xff0c;label设置富文本之后&#xff0c;无法垂直居中 font-size 支持rem&#xff0c;其余不支持 font-size 支持 rem&#xff0c;但是其余的属性如height&#xff0c;width等不支持 echarts-for-react 绑定事件&#xff0c;会覆盖实例上绑定的 当给cha…

[C++探索]初始化列表,static成员,友元函数,内部类,匿名对象

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到C探索系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站…

Linux基础操作指令

Linux的操作特点&#xff1a;纯命令行&#xff08;虽然也有图形化界面&#xff0c;但主要是工程师使用&#xff0c;意义不大&#xff09; windows的操作特点&#xff1a;图形化界面&#xff08;也有纯命令行的形式&#xff0c;但其更贴近大众&#xff0c;命令行学习成本高&…

服务暴露 traefik

一。traefik 部署 前置资源 还是那个网站&#xff0c;这里复制 entryPoints&#xff0c;进入traefik的大门 可选在哪台机器上部署 traefik 部署 用 Daemonset 的方式是为了&#xff0c;加机器到集群后&#xff0c;能自动部署traefik 到目标机器 注意 8084端口 必须加…

一种多策略改进黑翅鸢智能优化算法IBKA(2024年新出优化算法)种群初始化精英反向+透镜成像反向学习+黄金正弦变异策略

一种多策略改进黑翅鸢智能优化算法IBKA&#xff08;2024年新出优化算法&#xff09; 种群初始化精英反向策略透镜成像反向学习策略黄金正弦变异策略 文章目录 前言一种多策略改进黑翅鸢智能优化算法IBKA&#xff08;2024年新出优化算法&#xff09; 种群初始化精英反向策略透镜…

sentinel 服务流量控制 、熔断降级

1、什么是 sentinel,可以用来干什么 sentinel是用来在微服务系统中保护微服务对的作用,如何避免服务的雪崩、熔断、降级,说白了就是用来替换hystrix。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 官网:GitHub - alibaba/Se…

sqlilabs解题方法

Lass1 查询id为1的用户名和密码 查询id为2的用户名和密码 没有回显&#xff0c;不含id-1的行 判断字段数&#xff0c;字段数为3 查询数据库用户名&#xff0c;和数据库名 查询时id必须超出数据库以外&#xff0c;一般用-1 用户名&#xff1a;user() 数据库名&#xff1a;databa…

【电路笔记】-共源JFET放大器

共源JFET放大器 文章目录 共源JFET放大器1、概述2、共源JFET放大器3、JFET放大器电流和功率增益共源JFET放大器使用结场效应晶体管作为其主要有源器件,提供高输入阻抗特性。 1、概述 普通源JFET放大器与共射极BJT放大器相比有一个重要优点,即FET具有极高的输入阻抗,再加上低…

COMP9315-install and setup postgresql15.6

学习需要安装一个最新的postgresql版本&#xff0c;参考最新的链接 COMP9315 24T1 - Prac Exercise 01 (unsw.edu.au) 内容待一步一步跟着链接文档操作&#xff1a;

在IDEA中切换分支没有反应

说明&#xff1a;记录一次在IDEA中切换分支没有反应的情况&#xff0c;新建一个分支后&#xff0c;准备暂存代码&#xff0c;切换到其他分支去&#xff0c;发现怎么切都没有反应&#xff0c;也没有切过去&#xff1b; 解决&#xff1a;首先&#xff0c;我想到是不是当前新分支…

在线心里咨询系统的设计与实现2024(代码+论文+开题报告+ppt)

下载在最后 技术栈: vuemysqlspringboot 展示: 下载地址: https://download.csdn.net/download/hhtt19820919/89583101 备注: 运行有问题请私信我,私信按钮在文章左边)

深度学习实战84-数学公式和中文混合高精度识别实战,实现数学题目以及公式识别系统(latexOCR)

大家好,我是微学AI,今天给大家介绍一下深度学习实战84-数学公式和中文混合高精度识别实战,实现数学题目以及公式识别系统可视化(latexOCR)。在数字化时代,数学公式的自动识别和转换变得尤为重要,尤其是在教育、科研以及出版领域。本文将详细探讨一个基于深度学习的数学公式…

【网络安全】文件上传黑白名单及数组绕过技巧

不安全的文件上传&#xff08;Unsafe FileUpload&#xff09; 不安全的文件上传是指Web应用程序在处理用户上传的文件时&#xff0c;没有采取足够的安全措施&#xff0c;导致攻击者可能利用这些漏洞上传恶意文件&#xff0c;进而对服务器或用户造成危害。 目录 一、文件上传…

1. mqant——入门篇

0. 介绍 mqant技术架构和开发流程的学习笔记。 https://github.com/liangdas/mqantIntroduction mqant 的文档库 mqant是一个微服务框架。目标是简化分布式系统开发。 mqant的核心是简单易用,关注业务场景,因此会针对特定场景研究一些特定组件和解决方案,方便开发者使用。 …

二分类、多分类、多标签分类的评价指标

前言 在机器学习和深度学习中&#xff0c;常见的分类任务可以分为&#xff1a;二分类&#xff08;Binary Classification); 多分类&#xff08;Multi-class Classification); 多标签分类&#xff08;Multi-label Classification); 序列分类 (Sequence Classification); 图分类…

Notcoin 即将空投:你需要知道什么

Notcoin 于 2024 年 1 月推出&#xff0c;是 Telegram 上的一款边玩边赚游戏&#xff0c;用户可以通过点击硬币图标获得 Notcoin 代币 (NOT) 形式的奖励。NOT 建立在开放网络区块链&#xff08;称为“TON 区块链”&#xff09;上&#xff0c;由 Open Builders 创始人 Sasha Plo…