机器学习笔记之高斯网络(二)高斯贝叶斯网络

news2025/7/15 3:40:37

机器学习笔记之高斯网络——高斯贝叶斯网络

  • 引言
    • 回顾
      • 高斯网络
      • 贝叶斯网络:因子分解
    • 高斯贝叶斯网络:因子分解

引言

上一节介绍了高斯网络及其条件独立性,本节将介绍高斯贝叶斯网络

回顾

高斯网络

高斯网络最核心的特点是:随机变量集合中的随机变量均是连续型随机变量,并且均服从高斯分布
已知某随机变量集合 X \mathcal X X中包含 p p p个特征,整个高斯网络中所有结点的联合概率分布服从多元高斯分布
X = ( x 1 , x 2 , ⋯   , x p ) T P ( X ) = 1 ( 2 π ) p 2 ∣ Σ ∣ 1 2 exp ⁡ [ − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ] \begin{aligned} \mathcal X & = (x_1,x_2,\cdots,x_p)^T \\ \mathcal P(\mathcal X) & = \frac{1}{(2\pi)^{\frac{p}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left[-\frac{1}{2}(x - \mu)^T\Sigma^{-1}(x - \mu)\right] \end{aligned} XP(X)=(x1,x2,,xp)T=(2π)2pΣ211exp[21(xμ)TΣ1(xμ)]
其中期望 μ \mu μ协方差矩阵 Σ \Sigma Σ表示如下:
μ = ( μ 1 μ 2 ⋮ μ p ) p × 1 σ = ( σ 11 , σ 12 , ⋯   , σ 1 p σ 21 , σ 22 , ⋯   , σ 2 p ⋮ σ p 1 , σ p 2 , ⋯   , σ p p ) p × p \mu = \begin{pmatrix} \mu_1\\ \mu_2 \\ \vdots \\ \mu_p \end{pmatrix}_{p \times 1} \quad \sigma = \begin{pmatrix} \sigma_{11},\sigma_{12},\cdots,\sigma_{1p} \\ \sigma_{21},\sigma_{22},\cdots,\sigma_{2p} \\ \vdots \\ \sigma_{p1},\sigma_{p2},\cdots,\sigma_{pp} \\ \end{pmatrix}_{p \times p} μ=μ1μ2μpp×1σ=σ11,σ12,,σ1pσ21,σ22,,σ2pσp1,σp2,,σppp×p

  • 随机变量之间的边缘独立性:如果随机变量 x i , x j ( i , j ∈ { 1 , 2 , ⋯   , p } ; i ≠ j ) x_i,x_j (i,j \in \{1,2,\cdots,p\};i\neq j) xi,xj(i,j{1,2,,p};i=j)对应协方差矩阵的结果 C o v ( x i , x j ) = σ i j = 0 Cov(x_i,x_j) = \sigma_{ij} = 0 Cov(xi,xj)=σij=0,那么称 x i , x j x_i,x_j xi,xj不相关的。也称 x i , x j x_i,x_j xi,xj边缘独立或者绝对独立
    σ i j = 0 ⇒ x i ⊥ x j \sigma_{ij} = 0 \Rightarrow x_i \perp x_j σij=0xixj
  • 随机变量之间的条件独立性:如果随机变量 x i , x j ( i , j ∈ { 1 , 2 , ⋯   , p } ; i ≠ j ) x_i,x_j(i,j \in \{1,2,\cdots,p\};i \neq j) xi,xj(i,j{1,2,,p};i=j)对应精度矩阵(Precision Matrix)结果 λ i j = 0 \lambda_{ij} = 0 λij=0,称给定除去 x i , x j x_i,x_j xi,xj之外其他结点的条件下, x i , x j x_i,x_j xi,xj相互独立
    其中 Λ = [ λ i j ] p × p \Lambda = [\lambda_{ij}]_{p \times p} Λ=[λij]p×p表示精度矩阵,它是协方差矩阵的‘逆矩阵’。
    λ i j = 0 ⇒ x i ⊥ x j ∣ x − i − j \lambda_{ij} = 0 \Rightarrow x_i \perp x_j \mid x_{-i-j} λij=0xixjxij

贝叶斯网络:因子分解

基于贝叶斯网络有向图的性质,针对随机变量集合 X \mathcal X X联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)进行表达。
已知随机变量集合 X \mathcal X X包含 p p p个维度特征,因而 X \mathcal X X联合概率分布 P ( X ) \mathcal P(\mathcal X) P(X)表示如下:
P ( X ) = P ( x 1 , x 2 , ⋯   , x p ) \mathcal P(\mathcal X) = \mathcal P(x_1,x_2,\cdots,x_p) P(X)=P(x1,x2,,xp)
针对联合概率分布求解,最朴素的方式是条件概率的链式法则(Chain Rule):
P ( x 1 , x 2 , ⋯   , x p ) = P ( x 1 ) ⋅ ∏ i = 2 p P ( x i ∣ x 1 , ⋯   , x i − 1 ) \mathcal P(x_1,x_2,\cdots,x_p) = \mathcal P(x_1) \cdot \prod_{i=2}^p \mathcal P(x_i \mid x_1,\cdots,x_{i-1}) P(x1,x2,,xp)=P(x1)i=2pP(xix1,,xi1)
但如果随机变量集合 X \mathcal X X维度过高,这种链式法则计算代价很大。可以将对应的概率图模型视作完全图——任意两个特征之间都需要求解其关联关系
贝叶斯网络的条件独立性 可以极大程度地简化运算过程。给定贝叶斯网络的表达方式,可以直接写出各节点的联合概率分布
P ( x 1 , x 2 , ⋯   , x p ) = ∏ i = 1 p P ( x i ∣ x p a ( i ) ) \mathcal P(x_1,x_2,\cdots,x_p) = \prod_{i=1}^p \mathcal P(x_i \mid x_{pa(i)}) P(x1,x2,,xp)=i=1pP(xixpa(i))
其中 x p a ( i ) x_{pa(i)} xpa(i)表示 x i x_i xi结点的父节点组成的集合

高斯贝叶斯网络:因子分解

已知贝叶斯网络中一共包含 p p p个结点,它的联合概率分布(因子分解)表示如下:
P ( X ) = ∏ i = 1 p P ( x i ∣ x p a ( i ) ) \mathcal P(\mathcal X) = \prod_{i=1}^p \mathcal P(x_i \mid x_{pa(i)}) P(X)=i=1pP(xixpa(i))

全局模型(Global Model) 角度观察,高斯贝叶斯网络是基于线性高斯模型(局部模型(Local Model))的模型架构。

  • 局部模型架构:对于线性高斯模型并不陌生,在卡尔曼滤波中对线性高斯模型又了一定认识。

    从宏观角度认识线性高斯模型,即模型中某节点与父结点之间存在线性关系,并且噪声服从高斯分布
    可以理解为:高斯贝叶斯网络中的‘有向边’表示节点与父节点之间的‘具有高斯分布噪声的线性关系’。
    这里已知 X , Y \mathcal X,\mathcal Y X,Y是两个随机变量集合 X \mathcal X X的边缘概率分布 P ( X ) \mathcal P(\mathcal X) P(X)条件概率分布 P ( Y ∣ X ) \mathcal P(\mathcal Y \mid \mathcal X) P(YX)表示如下:
    { P ( X ) ∼ N ( μ X , Σ X ) P ( Y ∣ X ) ∼ N ( A X + B , Σ Y ) \begin{cases} \mathcal P(\mathcal X) \sim \mathcal N(\mu_{\mathcal X},\Sigma_{\mathcal X}) \\ \mathcal P(\mathcal Y \mid \mathcal X) \sim \mathcal N(\mathcal A \mathcal X + \mathcal B,\Sigma_{\mathcal Y}) \end{cases} {P(X)N(μX,ΣX)P(YX)N(AX+B,ΣY)
    局部模型描述结点之间的关联关系 表示如下:
    高斯贝叶斯网络——局部模型
    同理,关于结点 Y \mathcal Y Y边缘概率分布 P ( Y ) \mathcal P(\mathcal Y) P(Y)以及 P ( X ) , P ( Y ∣ X ) \mathcal P(\mathcal X),\mathcal P(\mathcal Y \mid \mathcal X) P(X),P(YX)推断结果 P ( X ∣ Y ) \mathcal P(\mathcal X \mid \mathcal Y) P(XY)同样服从高斯分布。具体结果表示如下:
    推导过程详见:高斯分布——推断任务之边缘概率分布与条件概率分布
    P ( Y ) ∼ N ( A μ + B , A Σ X A T + Σ Y ) P ( X ∣ Y ) ∼ N ( Σ { A T Σ Y − 1 ( Y − B ) + A μ } , Σ ) Σ = Σ X − 1 + A T Σ Y − 1 A − 1 \begin{aligned} \mathcal P(\mathcal Y) & \sim \mathcal N(\mathcal A \mu + \mathcal B,\mathcal A\Sigma_{\mathcal X}\mathcal A^T + \Sigma_{\mathcal Y}) \\ \mathcal P(\mathcal X \mid \mathcal Y) & \sim \mathcal N(\Sigma\left\{\mathcal A^T\Sigma_{\mathcal Y}^{-1}(\mathcal Y - \mathcal B) + \mathcal A \mu\right\},\Sigma) \quad \Sigma = \Sigma_{\mathcal X}^{-1} + \mathcal A^T \Sigma_{\mathcal Y}^{-1}\mathcal A^{-1} \end{aligned} P(Y)P(XY)N(Aμ+B,AΣXAT+ΣY)N(Σ{ATΣY1(YB)+Aμ},Σ)Σ=ΣX1+ATΣY1A1

实际上,卡尔曼滤波(Kalman Filter)自身就是一个特殊的高斯贝叶斯网络。它的概率图模型表示如下:
卡尔曼滤波——示例
由于齐次马尔可夫假设、观测独立性假设的约束,概率图中无论是观测变量 O = { o 1 , ⋯   , o T } \mathcal O = \{o_1,\cdots,o_T\} O={o1,,oT}还是隐变量 I = { i 1 , ⋯   , i T } \mathcal I = \{i_1,\cdots,i_T\} I={i1,,iT},它们均仅有一个父节点

  • 基于齐次马尔可夫假设,相邻隐变量 i t , i t − 1 i_t,i_{t-1} it,it1之间的条件概率表示为:
    P ( i t ∣ i t − 1 ) ∼ N ( A ⋅ i t − 1 + B , Q ) \mathcal P(i_t \mid i_{t-1}) \sim \mathcal N(\mathcal A \cdot i_{t-1} + \mathcal B,\mathcal Q) P(itit1)N(Ait1+B,Q)
  • 基于观测独立性假设隐变量 i t i_t it对应时刻观测变量 o t o_t ot之间的条件概率表示为:
    P ( o t ∣ i t ) ∼ N ( C ⋅ i t + D , R ) \mathcal P(o_t \mid i_t) \sim \mathcal N(\mathcal C\cdot {i_t} + \mathcal D,\mathcal R) P(otit)N(Cit+D,R)

基于上述假设,对随机变量之间关联关系的表示(Representation)描述为:
之所以将噪声均值设置为0 -> 均值偏差可以归纳到对应偏置项 B , D \mathcal B,\mathcal D B,D中。
{ i t = A ⋅ i t − 1 + B + ϵ ϵ ∼ N ( 0 , Q ) o t = C ⋅ i t + D + δ δ ∼ N ( 0 , R ) \begin{cases} i_t = \mathcal A \cdot i_{t-1} + \mathcal B + \epsilon \quad \epsilon \sim \mathcal N(0,\mathcal Q) \\ o_t = \mathcal C \cdot i_t + \mathcal D + \delta \quad \delta \sim \mathcal N(0,\mathcal R) \end{cases} {it=Ait1+B+ϵϵN(0,Q)ot=Cit+D+δδN(0,R)

相比之下,高斯贝叶斯网络并没有假设约束,结点中可能存在多个父节点组成的集合。
给定一个高斯贝叶斯网络的局部图如下:
这里仅讨论 x i x_i xi与其父节点们之间的关系,其余部分略掉了。
高斯贝叶斯网络——局部
很明显: x 1 , x 2 , ⋯   , x k x_1,x_2,\cdots,x_k x1,x2,,xk均是 x i x_i xi父节点,将局部模型延伸到一个更大的局部模型
这里 x 1 , x 2 , ⋯   , x k x_1,x_2,\cdots,x_k x1,x2,,xk以及 x i x_i xi均是一维随机变量

  • 假设 x i x_i xi父节点集合中仅包含一个随机变量( x 1 x_1 x1为例),那么 P ( x i ∣ x p a ( i ) ) \mathcal P(x_{i} \mid x_{pa(i)}) P(xixpa(i))可表示为:
    P ( x i ∣ x p a ( i ) ) → P ( x i ∣ x 1 ) ∼ N ( w i 1 ⋅ x 1 , σ i 2 ) \mathcal P(x_{i} \mid x_{pa(i)}) \to \mathcal P(x_i \mid x_1) \sim \mathcal N(w_{i1} \cdot x_1,\sigma_{i}^2) P(xixpa(i))P(xix1)N(wi1x1,σi2)
    对应 x i , x 1 x_i,x_1 xi,x1随机变量之间关联关系的表示 为:
    x i = μ i + w i 1 ⋅ ( x 1 − μ 1 ) + σ i ⋅ ϵ i ϵ ∼ N ( 0 , 1 ) x_i = \mu_i + w_{i1} \cdot (x_1 - \mu_1) + \sigma_{i}\cdot \epsilon_i \quad \epsilon \sim \mathcal N(0,1) xi=μi+wi1(x1μ1)+σiϵiϵN(0,1)
    关于上述公式的一些个人理解

    • 多出来的 μ i , μ 1 \mu_i,\mu_1 μi,μ1是哪来的:为了简化运算,通常对‘随机变量的分布’进行平移’,就是去中心化。因而上述式子可以表示为:
      x i − μ i = w i 1 ⋅ ( x 1 − μ 1 ) + σ i ⋅ ϵ i x_i - \mu_i = w_{i1} \cdot (x_1 - \mu_1) + \sigma_i \cdot \epsilon_{i} xiμi=wi1(x1μ1)+σiϵi
    • 执行线性运算之后,方差必然会发生变化。应变化为 w i 1 2 ⋅ σ i 2 w_{i1}^2 \cdot \sigma_i^2 wi12σi2,但是 P ( x i ∣ x 1 ) \mathcal P(x_i \mid x_1) P(xix1)并没有变化,依旧是 σ i 2 \sigma_i^2 σi2:方差变化是 x i x_i xi的边缘概率分布 P ( x i ) \mathcal P(x_i) P(xi),而不是 P ( x i ∣ x 1 ) \mathcal P(x_i \mid x_1) P(xix1),这也是线性高斯模型的假设方式。
    • 偏置项去哪了:最终都需要‘去中心化’,将分布的均值(中心)回归零点,因而被省略掉了,或者也可理解为‘合并到’ μ i \mu_i μi中。

    欢迎小伙伴们交流讨论。

  • 同理,父结点集合中包含多个随机变量,将父结点集合看成向量形式,因而 x p a ( i ) x_{pa(i)} xpa(i)以及对应权重信息 W i \mathcal W_i Wi表示如下:
    x p a ( i ) = ( x 1 , x 2 , ⋯   , x k ) k × 1 T W i = ( w i 1 , w i 2 , ⋯   , w i k ) k × 1 T \begin{aligned} x_{pa(i)} = (x_1,x_2,\cdots,x_k)_{k \times 1}^T \\ \mathcal W_i = (w_{i1},w_{i2},\cdots,w_{ik})_{k \times 1}^T \end{aligned} xpa(i)=(x1,x2,,xk)k×1TWi=(wi1,wi2,,wik)k×1T
    至此, P ( x i ∣ x p a ( i ) ) \mathcal P(x_i \mid x_{pa(i)}) P(xixpa(i))表示如下:
    P ( x i ∣ x p a ( i ) ) = N ( W i T x p a ( i ) , σ i 2 ) = N ( x 1 ⋅ w i 1 + ⋯ + x k ⋅ w i k , σ i 2 ) \begin{aligned} \mathcal P(x_i \mid x_{pa(i)}) & = \mathcal N(\mathcal W_i^T x_{pa(i)},\sigma_i^2) \\ & = \mathcal N(x_1 \cdot w_{i1} + \cdots + x_k \cdot w_{ik},\sigma_i^2) \end{aligned} P(xixpa(i))=N(WiTxpa(i),σi2)=N(x1wi1++xkwik,σi2)
    因而 x i , x p a ( i ) x_i,x_{pa(i)} xi,xpa(i)随机变量之间的关联关系表示为
    x i − μ i = W i T ( x p a ( i ) − μ p a ( i ) ) + σ i ⋅ ϵ i = ( w i 1 , w i 2 , ⋯   , w i k ) 1 × k [ ( x 1 x 2 ⋮ x k ) − ( μ 1 μ 2 ⋮ μ k ) ] k × 1 + σ i ⋅ ϵ i = ∑ j ∈ x p a ( i ) w i j ( x j − μ j ) + σ i ⋅ ϵ i \begin{aligned} x_i - \mu_i & = \mathcal W_i^T (x_{pa(i)} - \mu_{pa(i)}) + \sigma_i \cdot \epsilon_i \\ & = \begin{pmatrix}w_{i1},w_{i2},\cdots,w_{ik}\end{pmatrix}_{1 \times k} \left[\begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_k \end{pmatrix} - \begin{pmatrix}\mu_1 \\ \mu_2 \\ \vdots \\ \mu_k \end{pmatrix}\right]_{k \times 1} + \sigma_i \cdot \epsilon_i\\ & = \sum_{j \in x_{pa(i)}} w_{ij}(x_j - \mu_j) + \sigma_i \cdot \epsilon_i \end{aligned} xiμi=WiT(xpa(i)μpa(i))+σiϵi=(wi1,wi2,,wik)1×kx1x2xkμ1μ2μkk×1+σiϵi=jxpa(i)wij(xjμj)+σiϵi

下一节将介绍:高斯马尔可夫随机场

相关参考:
机器学习-高斯网络(2)-高斯贝叶斯网络

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

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

相关文章

SpringBoot 多点互斥登录(web应用安全) 保姆级教程

1.什么是互斥登录 在实际生活中,很多网站都做了多点登录互斥的操作,简单来说就是同一个账号,只能在一台电脑上登录,如果有人在其他地方登录,那么原来登录的地方就会自动下线,再进行操作就会弹出登录界面。 …

【远程调用 MySQL数据库并操作】——使用NATAPP搭建内网穿透远程访问MySQL数据库并使用 Python新建、写入、读取、删除数据【详细版】

所有的程序都是免费的!! Python MySQL NATAPP 点个赞留个关注吧!! NATAPP 安装使用教程 官网 NATAPP 下载 官网 NATAPP配置教程 1、进入NATAPP 登录/注册 进行登录,没有的注册一下,需要实名认证哦&am…

python基础之字符串

文章目录一、字符串定义二、字符串相关使用三、空白字符表示哪些?四、实例1.要求:顺序并且居中对齐输出以下内容2.要求:1.将字符串中的空白字符全部删去;2.再使用“ ”作为分隔符,拼接成一个整齐的字符串五、字符串的切…

【vscode】远程云主机的报错

win11 之前在另一台电脑上的vscode是可以的 新电脑拷贝了vs的配置,但是远程不行了。 Install terminal quit with output: 过程试图写入的管道不存在。 发现连接不到远程以为是konw hosts 的问题, 删除了要访问ip的内容,还是不行&#x…

网络程序设计——异步选择模型(基于消息的选择、基于事件的选择)

目录 一、异步选择模型 1、基于消息的选择模型 (1)WSAAsyncSelect模型 (2) WSAAsyncSelect()函数 (3)使用 WSAAsyncSelect模型接收数据的过程 (4)WSAAsyncSelect模型的编程方法…

IDEA常用插件

笔记来源于B站视频 以下为视频的地址 【【尚硅谷】IDEA2022全新版教程,兼容JDK17(快速上手Java开发利器)】https://www.bilibili.com/video/BV1CK411d7aA?p26&vd_source581d732b20cb23e01428068f153a99ed 推荐1:Alibaba J…

MCE丨重组蛋白常见的融合标签

Q:什么是融合标签? A:融合标签是指利用 DNA 体外重组技术,在目的蛋白 N 端或 C 端进行融合表达的特定蛋白、多肽或寡肽标签。 Q:融合标签有什么作用? A:重组蛋白通过融合标签与包被在固相基质上…

第六章《类的高级特性》第5节:接口

在Java语言中,一个类只能继承一个父类,专业上把这种继承机制称为“单继承”。单继承是一种较为稳妥继承机制,能够规避很多潜在的问题,但这种继承机制的局限性也显而易见:子类不能从多个父类中继承属性和方法,从而无法最大程度的减少重复劳动。为了弥补这个缺陷,Java语言…

web前端-javascript-关系运算符(>、>=、<、<=、非数值,Unicode 编码说明)

文章目录关系运算符1. 说明2. > 大于号3. > 大于等于4. < 小于号5. < 小于等于6. 非数值的情况6.1. 对于非数值进行比较时&#xff0c;会将其转换为数字然后再比较6.2. 如果符号两端都是字符串时&#xff0c;不会将其转换为字符串进行比较6.3. 任何值和 NaN 做任何…

为什么单线程的Redis如此的快(Why is single-threaded Redis so fast)

视频地址&#xff1a;YouTube Why is Redis so fast? What fundamental design decisions did the developers make more than a decade ago that stood to test of time. Let’s take a look. Redis is a very popular in-memory database. It’s rock solid, easy to use, a…

HittER: Hierarchical Transformers for Knowledge Graph Embeddings

HittER: Hierarchical Transformers for Knowledge Graph Embeddings HittER由两部分组成&#xff1a; 1&#xff0c;底部&#xff1a;Entity Transformer 源实体的局部邻居的每个实体-关系对的特征提取。负责将实体关系对中所有有用特征打包成向量&#xff0c;以供顶部块使用…

mysql基础部分第一次复习(1-8章,到聚合函数)

基本的使用 show databases; create database 数据库名; //创建数据库 use 数据库名&#xff1b; //使用数据库 使用完use语句之后接下来的SQL操作都是针对当前数据库的了show tables; //查看某个数据库的所有表格 show tables from 数据库名&#xff1b;create table 表名称{…

C++--智能指针--1123

1.智能指针解决的问题 int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void Func() { // 1、如果p1这里new 抛异常会导致p1不会Delete而导致内存泄漏 // 2、如果p2这里new 抛异常会导致p1和p2都不会de…

【数据结构学习笔记】18:线段树(单点修改)

1 线段树上的操作 push_up(int u)&#xff1a;由子节点的信息去计算父节点的信息&#xff0c;例如两个子节点的区间和&#xff0c;加起来就是父节点表示的区间和。其中u是当前节点编号&#xff0c;表示用u的左右两个子节点来算一下自己这个节点的信息。push_down&#xff1a;将…

流氓设备检测和预防

自带设备 &#xff08;BYOD&#xff09; 策略中涉及的设备以及这些设备连接到的端口具有多个通信路径。确保这些设备及其路径在进入组织网络时立即被检测、评估和管理至关重要&#xff0c;因为非托管设备很容易成为安全风险。但是&#xff0c;在整个企业网络中同时添加许多设备…

反射、枚举、lambda——小记

文章目录反射反射定义反射相关的类Class 类反射示例获得Class对象的三种方式反射使用 ——代码面试题:你知道有几种创建对象的方式吗?反射优点和缺点枚举Lambda表达式概念Lambda表达式的语法代码反射 反射定义 Java的反射&#xff08;reflection&#xff09;机制是在运行状态…

路由策略和路由控制

路由策略和路由控制 路由策略 针对路由的发布&#xff0c;接收&#xff0c;引入进行控制&#xff0c;从而影响数据的路径或者可达性 路由匹配工具 ACL&#xff1a;访问前缀列表 一个ACL用多条规则组成&#xff0c;不同规则之间通过rule id进行区分&#xff0c;默认rule 步…

(附源码)python办公数据分析系统 毕业设计 021836

Python办公数据分析系统 摘 要 现代办公通过办公自动化系统可以大大提高的效率、节省成本、规范业务和流程&#xff0c;辅助提升管理水平。办公系统在单位信息化中占有非常重要的地位&#xff0c;涉及到单位的各个部门及绝大多数人员&#xff0c;流程和协作方面要求非常强。 办…

[附源码]java毕业设计英语知识竞赛报名系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

NDK 是什么 | FFmpeg 5.0 编译 so 库

前言 NDK 全称 Native Development Kit&#xff0c;也就是原生开发工具包 &#xff0c;官网对它有详细的 中文介绍 。可能一说到 NDK 或 JNI &#xff0c;大家脑子里第一反应就是集成 C/C 。其实 JNI 的含义是 Java Native Interface &#xff0c;这种接口允许 Java 和其他语言…