当前位置: 首页 > news >正文

机器学习EM算法原理及推导

在机器学习与统计推断中,我们经常会遇到“缺失数据”或“潜在变量”(latent variables)的情形:样本并非完全可观测,而部分信息被隐藏或丢失。这种情况下,直接对观测数据做极大似然估计(Maximum Likelihood Estimation, MLE)往往非常困难,因其对数似然函数通常是非凸、甚至没有封闭解的高维积分。期望—最大化(Expectation–Maximization, EM)算法正是在这种背景下应运而生。EM算法以迭代的方式交替执行“期望步”(E步)和“最大化步”(M步),通过引入辅助函数将难以直接优化的对数似然问题,转化为一系列更易处理的子问题,从而逐步逼近最优解。本文将以通俗且系统的角度,详细剖析EM算法的原理、推导、实现步骤,以及在高斯混合模型等典型案例中的应用,并探讨其优缺点与常见改进方法。

EM算法的核心思想

EM算法的核心在于引入“完整数据”(complete data)的概念。假设观测数据为 X X X,潜在变量为 Z Z Z,模型参数为 θ \theta θ。如果我们可以同时观测 ( X , Z ) (X,Z) (X,Z),则完整数据的对数似然函数

log ⁡ p ( X , Z ∣ θ ) \log p(X,Z \mid \theta) logp(X,Zθ)

通常比只依赖观测数据的对数似然

log ⁡ p ( X ∣ θ ) = log ⁡ ∫ p ( X , Z ∣ θ ) d Z \log p(X \mid \theta) = \log \int p(X,Z \mid \theta)\,\mathrm{d}Z logp(Xθ)=logp(X,Zθ)dZ

更容易优化。EM算法便是通过以下两步迭代实现参数估计:

  1. E步(Expectation): 在当前参数 θ ( t ) \theta^{(t)} θ(t) 下,计算潜在变量 Z Z Z 的后验分布对数似然的期望,即构造辅助函数

    Q ( θ ∣ θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ p ( X , Z ∣ θ ) ] . Q(\theta \mid \theta^{(t)}) = \mathbb{E}_{Z\mid X,\,\theta^{(t)}}\bigl[\log p(X,Z \mid \theta)\bigr]. Q(θθ(t))=EZX,θ(t)[logp(X,Zθ)].

  2. M步(Maximization): 固定辅助函数中的期望部分,将 Q ( θ ∣ θ ( t ) ) Q(\theta \mid \theta^{(t)}) Q(θθ(t)) 关于 θ \theta θ 最大化,获得更新参数

    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ θ ( t ) ) . \theta^{(t+1)} = \arg\max_{\theta} Q(\theta \mid \theta^{(t)}). θ(t+1)=argθmaxQ(θθ(t)).

通过反复交替 E 步和 M 步,EM 算法能够保证观测数据的对数似然不会下降,直至收敛到某个局部极值。

EM算法的数学推导

  1. 对数似然的下界
    利用Jensen不等式,我们可以得到:

    log ⁡ p ( X ∣ θ ) = log ⁡ ∫ p ( X , Z ∣ θ ) d Z = log ⁡ ∫ q ( Z ) p ( X , Z ∣ θ ) q ( Z ) d Z ≥ ∫ q ( Z ) log ⁡ p ( X , Z ∣ θ ) q ( Z ) d Z , \log p(X \mid \theta) = \log \int p(X,Z \mid \theta)\,\mathrm{d}Z = \log \int q(Z)\,\frac{p(X,Z \mid \theta)}{q(Z)}\,\mathrm{d}Z \ge \int q(Z) \log \frac{p(X,Z \mid \theta)}{q(Z)}\,\mathrm{d}Z, logp(Xθ)=logp(X,Zθ)dZ=logq(Z)q(Z)p(X,Zθ)dZq(Z)logq(Z)p(X,Zθ)dZ,

    对任意分布 q ( Z ) q(Z) q(Z) 均成立。令 q ( Z ) = p ( Z ∣ X , θ ( t ) ) q(Z) = p(Z\mid X,\theta^{(t)}) q(Z)=p(ZX,θ(t)),即可得到对数似然的一个“下界”(lower bound),记为

    L ( q , θ ) = E q [ log ⁡ p ( X , Z ∣ θ ) ] − E q [ log ⁡ q ( Z ) ] . \mathcal{L}(q,\theta) = \mathbb{E}_{q}\bigl[\log p(X,Z\mid\theta)\bigr] - \mathbb{E}_{q}\bigl[\log q(Z)\bigr]. L(q,θ)=Eq[logp(X,Zθ)]Eq[logq(Z)].

  2. E步:构造Q函数
    在 E 步中,我们固定 θ ( t ) \theta^{(t)} θ(t),选择最佳 q ( Z ) q(Z) q(Z);通过变分推导可证最佳解为真实后验 p ( Z ∣ X , θ ( t ) ) p(Z\mid X,\theta^{(t)}) p(ZX,θ(t))。此时下界与对数似然之差为后验的熵项,但对参数更新无影响,于是我们只需最大化第一项:

    Q ( θ ∣ θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ p ( X , Z ∣ θ ) ] . Q(\theta\mid\theta^{(t)}) = \mathbb{E}_{Z\mid X,\theta^{(t)}}[\log p(X,Z\mid\theta)]. Q(θθ(t))=EZX,θ(t)[logp(X,Zθ)].

  3. M步:更新参数
    在 M 步中,固定 Q Q Q 中的期望计算结果,求解

    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ θ ( t ) ) . \theta^{(t+1)} = \arg\max_\theta Q(\theta \mid \theta^{(t)}). θ(t+1)=argθmaxQ(θθ(t)).

    由于 Q Q Q 一般比原始对数似然更简单(常为凸函数或可分解项),常可得到解析解或快速数值解。

经过上述两步交替,EM算法维护了对数似然的单调递增性:

log ⁡ p ( X ∣ θ ( t + 1 ) ) ≥ Q ( θ ( t + 1 ) ∣ θ ( t ) ) ≥ Q ( θ ( t ) ∣ θ ( t ) ) = log ⁡ p ( X ∣ θ ( t ) ) . \log p(X \mid \theta^{(t+1)}) \ge Q(\theta^{(t+1)}\mid\theta^{(t)}) \ge Q(\theta^{(t)}\mid\theta^{(t)}) = \log p(X \mid \theta^{(t)}). logp(Xθ(t+1))Q(θ(t+1)θ(t))Q(θ(t)θ(t))=logp(Xθ(t)).

因此,算法能保证不退步地爬升,直至局部收敛。

EM算法的伪代码

输入:观测数据 X,初始参数 θ^(0),最大迭代次数 T,收敛阈值 ε  
输出:估计参数 θ*for t = 0,1,2,…,T-1 doE步:计算 Q(θ | θ^(t)) = E_{Z|X,θ^(t)}[log p(X,Z | θ)]M步:θ^(t+1) = arg max_θ Q(θ | θ^(t))若 |θ^(t+1) - θ^(t)| < ε,则跳出
end for返回 θ* = θ^(t+1)

应用示例:高斯混合模型

高斯混合模型(Gaussian Mixture Model, GMM)是 EM 算法最常见的应用之一。假设数据集由 K K K 个不同高斯分布生成,模型参数包括各分布的混合系数 π k \pi_k πk、均值 μ k \mu_k μk 和协方差矩阵 Σ k \Sigma_k Σk

  • E步:计算每个样本属于第 k k k 个高斯成分的后验概率(责任度)

    γ i k = π k ( t ) N ( x i ∣ μ k ( t ) , Σ k ( t ) ) ∑ j = 1 K π j ( t ) N ( x i ∣ μ j ( t ) , Σ j ( t ) ) . \gamma_{ik} = \frac{\pi_k^{(t)} \mathcal{N}(x_i \mid \mu_k^{(t)},\Sigma_k^{(t)})}{\sum_{j=1}^K \pi_j^{(t)} \mathcal{N}(x_i \mid \mu_j^{(t)},\Sigma_j^{(t)})}. γik=j=1Kπj(t)N(xiμj(t),Σj(t))πk(t)N(xiμk(t),Σk(t)).

  • M步:基于责任度更新参数

    N k = ∑ i = 1 n γ i k , π k ( t + 1 ) = N k n , μ k ( t + 1 ) = 1 N k ∑ i = 1 n γ i k x i , Σ k ( t + 1 ) = 1 N k ∑ i = 1 n γ i k ( x i − μ k ( t + 1 ) ) ( x i − μ k ( t + 1 ) ) ⊤ . N_k = \sum_{i=1}^n \gamma_{ik},\quad \pi_k^{(t+1)} = \frac{N_k}{n},\quad \mu_k^{(t+1)} = \frac{1}{N_k}\sum_{i=1}^n \gamma_{ik} x_i,\quad \Sigma_k^{(t+1)} = \frac{1}{N_k}\sum_{i=1}^n \gamma_{ik}(x_i - \mu_k^{(t+1)})(x_i - \mu_k^{(t+1)})^\top. Nk=i=1nγik,πk(t+1)=nNk,μk(t+1)=Nk1i=1nγikxi,Σk(t+1)=Nk1i=1nγik(xiμk(t+1))(xiμk(t+1)).

通过上述迭代,GMM 能够在数据中自动识别聚类中心与分布形态,并给出每个点所属各聚类的“软分配”概率。

收敛性、优缺点与改进

  • 收敛性:EM 保证对数似然单调递增,但仅能收敛到局部极大值或鞍点;全局最优解无法保证。

  • 优点

    1. 将难以直接优化的积分式对数似然,分解为更易处理的子问题;
    2. 代码实现简单,E步与M步常有解析解;
    3. 在诸多统计模型(GMM、隐马尔可夫模型、潜在狄利克雷分配等)中表现出色。
  • 缺点

    1. 对初值敏感,易陷入次优解;
    2. 收敛速度较慢(线性收敛),在高维或大规模数据时迭代次数多;
    3. 需手动指定潜在变量个数(如GMM的聚类数)。
  • 常见改进

    1. 随机EM(Stochastic EM):在 E 步中对子集数据进行采样,减少计算量;
    2. 变分EM(Variational EM):引入可参数化的变分分布,适用于后验分布无解析解的情形;
    3. 加速收敛:结合牛顿法或拟牛顿法(如EM+Fisher信息矩阵)提高 M 步的收敛率;
    4. 初始化策略:多次随机初始化或使用 K-means 聚类结果作为初始参数,以降低陷入局部最优的风险。

EM算法以其清晰的“E步—M步”框架,成功地将复杂的潜变量极大似然估计问题拆解为一系列易处理的子问题,并在众多模型中得到了广泛应用。尽管存在局部极值与收敛速度缓慢等局限,通过变分推断、加速方法和更合理的初始化策略,EM算法依然在现代大规模机器学习任务中保持竞争力。未来,随着深度学习与概率图模型的不断融合,EM及其变种将继续演进,服务于更为复杂的隐含结构挖掘与不确定性建模。

相关文章:

机器学习EM算法原理及推导

在机器学习与统计推断中&#xff0c;我们经常会遇到“缺失数据”或“潜在变量”&#xff08;latent variables&#xff09;的情形&#xff1a;样本并非完全可观测&#xff0c;而部分信息被隐藏或丢失。这种情况下&#xff0c;直接对观测数据做极大似然估计&#xff08;Maximum …...

Linux项目部署全攻略:从环境搭建到前后端部署实战

Linux项目部署全攻略&#xff1a;从环境搭建到前后端部署实战 注&#xff1a;根据黑马程序员javawebAI视频课程总结&#xff1a; 视频地址 详细讲义地址 一、Linux基础入门&#xff1a;为什么选择Linux&#xff1f; 要成为一名Java开发工程师&#xff0c;掌握Linux是企业级…...

人工智能重塑医疗健康:从辅助诊断到个性化治疗的全方位变革

人工智能正在以前所未有的速度改变着医疗健康领域&#xff0c;从影像诊断到药物研发&#xff0c;从医院管理到远程医疗&#xff0c;AI 技术已渗透到医疗服务的各个环节。本文将深入探讨人工智能如何赋能医疗健康产业&#xff0c;分析其在医学影像、临床决策、药物研发、个性化医…...

ubuntu系统 | dify+ollama+deepseek搭建本地应用

1、安装 Ollama 下载并安装 Ollama (llm) wangqiangwangqiang:~$ curl -fsSL https://ollama.ai/install.sh | bash >>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle0.3% curl -fsSL https://ollama.ai/install.sh &#xff08;下…...

NHANES最新指标推荐:C-DII

文章题目&#xff1a;Non-linear relationship between the childrens dietary inflammatory index and asthma risk: identifying a critical inflection point in US children and adolescents DOI&#xff1a;10.3389/fnut.2025.1538378 中文标题&#xff1a;儿童饮食炎症指…...

【PhysUnits】4.4 零类型(Z0)及其算术运算(zero.rs)

一、源码 该代码定义了一个类型系统中的零类型Z0&#xff0c;并为其实现了基本的算术运算&#xff08;加法、减法、乘法、除法&#xff09;。这是一个典型的类型级编程示例&#xff0c;使用Rust的类型系统在编译期进行数学运算。 //! 零类型(Z0)及其算术运算实现 //! //! 本…...

【大模型面试每日一题】Day 23:如何设计一个支持多模态(文本+图像)的大模型架构?

【大模型面试每日一题】Day 23&#xff1a;如何设计一个支持多模态&#xff08;文本图像&#xff09;的大模型架构&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f;&#x1f31f; 面试官&#xff1a;我们需要构建一个同时处理文本和图像的多模态大模型&#…...

BUUCTF PWN刷题笔记(持续更新!!)

ciscn_2019_c_1 64位&#xff0c;没有开启保护。点进去没发现明显的漏洞函数&#xff0c;考虑泄露libc基地址的rop构造。先看看有多少gadget 估计也够用了。puts函数只接受一个参数&#xff0c;观看汇编看看用的哪个寄存器传输的参数。 用的是edi。但是我们怎么找到so的版本呢…...

Tare使用MCP|Win11安装UV

servers/src/git at main modelcontextprotocol/servers GitHub 进入Installation | uv 打开powershell 运行 &#xff08;如果要删除 文章中也有删除的链接&#xff09; powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" …...

小白的进阶之路-人工智能从初步到精通pytorch的基本流程详解-1

Pytorch大致流程一览表: 主题内容1 准备数据数据几乎可以是任何东西,但在开始之前,我们将创建一条简单的直线2 建立模型在这里,我们将创建一个模型来学习数据中的模式,我们还将选择损失函数,优化器并构建一个训练循环。3 拟合模型我们已经有了数据和模型,现在让模型尝试…...

linux kernel 编译

1. 获取内核源码 从官方仓库获取: 访问kernel.org下载所需版本的Linux内核源码压缩包(如linux-x.y.z.tar.xz)。或者使用Git克隆特定版本: bash git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitcd linux-stablegit checkout vX.Y.Z # 切…...

【氮化镓】偏置对GaN HEMT 单粒子效应的影响

2025年5月19日,西安电子科技大学的Ling Lv等人在《IEEE Transactions on Electron Devices》期刊发表了题为《Single-Event Effects of AlGaN/GaN HEMTs Under Different Biases》的文章,基于实验和TCAD仿真模拟方法,研究了单粒子效应对关断状态、半开启状态和开启状态下AlG…...

Assistants API

一、前言 0.1、从轰动一时的 OpenAI DevDay 说起 2023 年 11 月 6 日,OpenAI DevDay 发表了一系列新能力,其中包括:GPT Store 和 Assistants API 这一波操作一度被认为是创业公司终结者 0.2、GPTs 和 Assistants API 本质是降低开发门槛 可操控性和易用性之间的权衡与折中…...

AcWing 223. 阿九大战朱最学——扩展欧几里得算法

题目来源 223. 阿九大战朱最学 - AcWing题库 题目描述 自从朱最学搞定了 QQ 农场以后&#xff0c;就开始捉摸去 QQ 牧场干些事业&#xff0c;不仅在自己的牧场养牛&#xff0c;还到阿九的牧场放牛&#xff01; 阿九很生气&#xff0c;有一次朱最学想知道阿九牧场奶牛的数量…...

开发指南116-font-size: 0的使用

平台前台的css样式里有几个地方用到了font-size: 0&#xff0c;这是个使用小技巧。原理说明&#xff1a;font-size 属性用于定义元素中文本的大小。当设置 font-size: 0 时&#xff0c;意味着该元素内的文本将不占据空间。当元素的 font-size 设置为零时&#xff0c;该元素内的…...

算法-数对的使用

1、数对可用于数组排序中&#xff0c;并且可记忆化排序前的元素下标 #include<iostream> #include<string> #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; pair<int, int> a[N]; void solve() {ll n;cin …...

EmoBox:我与 CodeBuddy 共创的 Emoji 表情分类小工具

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 最近我萌生了一个想法&#xff0c;想做一个小而美的工具——一个叫「EmoBox」的 emoji 表情分类应用&#xff0…...

力扣HOT100之二叉树:199. 二叉树的右视图

这道题没啥好说的&#xff0c;首先定义一个向量来保存每一层的最后一个元素&#xff0c;直接用层序遍历&#xff08;广度优先搜索&#xff09;遍历二叉树&#xff0c;然后将每一层的最后一个元素加入到这个向量中即可。属于是二叉树层序遍历的模板题。 /*** Definition for a …...

力扣992做题笔记

左神做法的理论依据 我们可以通过 集合的包含关系 和 具体示例枚举 来直观理解这一推导过程。以下结合题目示例 1 进行详细说明&#xff1a; 示例 1 分析 输入&#xff1a;nums [1,2,1,2,3], k 2 目标&#xff1a;计算恰好包含 2 种不同整数 的子数组个数。 步骤一集合 A…...

特征值与特征向量的计算——PCA的数学基础

特征值与特征向量 定义 令 A {\bm A} A为 n n n \times n nn矩阵&#xff0c;如果存在非零向量 x {\bm x} x使得 A x λ x (1) {\bm A}{\bm x} \lambda {\bm x}\tag{1} Axλx(1) 成立&#xff0c;则称数 λ \lambda λ是矩阵 A {\bm A} A的特征值&#xff0c;称非零向量 x…...

vue2.0 的计算属性

个人简介 &#x1f468;‍&#x1f4bb;‍个人主页&#xff1a; 魔术师 &#x1f4d6;学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全栈发展 &#x1f6b4;个人状态&#xff1a; 研发工程师&#xff0c;现效力于政务服务网事业 &#x1f1e8;&#x1f1f3;人生格言&…...

【数根】2022-1-24

缘由程序设计 -- 数根&#xff08;2&#xff09;-编程语言-CSDN问答 void 数根() {//缘由https://ask.csdn.net/questions/7635593?spm1005.2025.3001.5141std::string n;int m 0, a 0;std::cin >> n;while (n[a] ! \0)m n[a] - 0;a 0;while (m)a m - m / 10 * 10…...

【Android】一键创建Keystore + Keystore 参数说明 + 查询SHA256(JDK Keytool Keystore)

一键创建 Android Keystore 的实用方法与参数详解 在 Android 应用开发与发布中&#xff0c;**Keystore&#xff08;签名文件&#xff09;**扮演着至关重要的角色。本文将介绍如何通过 .bat 脚本一键创建 Keystore 文件&#xff0c;并详细讲解每一个参数的含义&#xff0c;帮助…...

laravel 通过Validator::make验证后,如何拿到验证后的值

在 Laravel 中&#xff0c;通过 Validator::make 创建的验证器实例验证数据后&#xff0c;可以通过以下方式获取验证后的值&#xff1a; 使用 validate() 方法 调用验证器实例的 validate() 方法&#xff0c;会返回经过验证的数据数组。如果验证失败&#xff0c;该方法会抛出 V…...

centos把jar包配置成服务并设置开机自启

1.准备好jar包&#xff0c;启动路径&#xff0c;日志路径 2.编写启动脚步 vim /etc/systemd/system/test.service [Unit] Descriptionlapis Requiresnetwork.target remote-fs.target ##启动优先级&#xff0c;在下面的服务之后启动 Afterkafka.service zookeeper.service n…...

CentOS相关操作hub(更新中)

CentOS介绍&#xff1a; CentOS&#xff08;Community Enterprise Operating System&#xff09;是基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码编译的开源企业级操作系统&#xff0c;提供与 RHEL 二进制兼容的功能 完全兼容 RHEL&#xff0c;可直接使用…...

数据库(一):分布式数据库

定义 分布式数据库&#xff08;Distributed Database&#xff09; 是指&#xff1a; 数据分布在多个物理位置&#xff0c;但对用户透明&#xff0c;表现为一个统一逻辑数据库的系统。 结构模式&#xff08;三层模式扩展&#xff09; 层次作用对应实体用户层提供统一视图&…...

人工智能(AI)与BIM:建筑业创新实践的深度融合

一、BIM在建筑领域的发展现状与挑战 作为建筑数字化的核心技术&#xff0c;BIM通过三维模型集成建筑全生命周期信息&#xff0c;已成为工程设计、施工及运维的标准工作流程。当前&#xff0c;BIM在碰撞检测、施工模拟、成本管控等场景的应用已较为成熟&#xff0c;但行业仍面临…...

FIR数字滤波器设计与实现

低通滤波器的设计与实现 打开Matlab ,运行命令filterDesigner&#xff0c;选择FIR 最小二乘或者其它&#xff0c;设置采样频率&#xff0c;和低通滤波器截止频率。点击设计滤波器&#xff0c;如图1&#xff1a; 点击目标生成.C头文件&#xff0c;滤波器系数如下&#xff1a; …...

软件架构之-论高并发下的可用性技术

论高并发下的可用性技术 摘要正文摘要 ;2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船审图机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与了项目建设工作,并担任系统架…...

阻塞队列:线程安全与生产者消费者模型解析

一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列&#xff0c;此时入队列操作就会阻塞&#xff0c;一直阻塞到队列不满&#xff08;其他线程出队列元素&#xff09;之后 如果针对一个已经空了的队列进行出队列&#xff0c…...

【时时三省】(C语言基础)用函数实现模块化程序设计

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 为什么要用函数&#xff1f; 已经能够编写一些简单的C程序&#xff0c;但是如果程序的功能比较多&#xff0c;规模比较大&#xff0c;把所有的程序代码都写在一个主函数(main函数)中&#x…...

基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(一)

引言​​ 在CATIA二次开发领域&#xff0c;Python因其灵活性和丰富的库支持逐渐成为高效工具开发的首选语言。本文将以笔者开发的​​CATIA锥体自动化建模工具​​为例&#xff0c;参考NX软件中高效锥体创建命令&#xff0c;深度解析基于PySide6 GUI框架与pycatia接口库的集成…...

天才简史——Paolo Fiorini与他的速度障碍法

一、背景 第一次“认识”Paolo Fiorini教授是看了DMP的体积避障论文《Dynamic Movement Primitives: Volumetric Obstacle Avoidance》&#xff0c;而且他的学生Michele Ginesi将相关代码开源了&#xff0c;后来查阅了Paolo Fiorini相关资料才发现他竟然是速度障碍法的作者&am…...

第五天的尝试

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 毅力是永久的享受。 没有人是一座孤岛&#xff0c;每个人都是这块大陆的一部分。 二、练习题 import numpy as np import matplotlib.pyplot as plt array np.array([1,2,3,4,5]) plt.plot…...

大小端模式和消息的加密解密

大小端模式 知识点一 什么是大小端模式 // 大端模式 // 是指数据的高字节保存在内存的低地址中 // 而数据的低字节保存在内存的高地址中 // 这样的存储模式有点儿类似于把数据当作字符串顺序处理 // 地址由小向大增加,数据从高位往低位放 …...

(1) 查看端口状态

1. lsof 和 netstat 命令的区别 1.1 lsof 概念&#xff1a;只有在 root 的命令下才能执行&#xff0c;否则无内容显示&#xff1b;root 命令下显示完全 lsof -i: 8080 1.2 netstat 普通用户下显示不完全&#xff0c;root 命令下显示完全 netstat -tunlp | grep 8080 1.3…...

【C++]string模拟实现

#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<assert.h> using namespace std; namespace liu {class string{public:using iterator char*;using const_iterator const char*;//string();//无参构造 string(const string&…...

Linux动静态库制作与原理

什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统…...

ArkUI Tab组件开发深度解析与应用指南

ArkUI Tab组件开发深度解析与应用指南 一、组件架构与核心能力 ArkUI的Tabs组件采用分层设计结构&#xff0c;由TabBar&#xff08;导航栏&#xff09;和TabContent&#xff08;内容区&#xff09;构成&#xff0c;支持底部、顶部、侧边三种导航布局模式。组件具备以下核心特…...

winrar 工具测试 下载 与安装

https://zhuanlan.zhihu.com/p/680852417 https://www.angusj.com/resourcehacker/#download 点击String Table&#xff0c;在展开列表中找到80:2052展开&#xff0c;删除1277行。点击右上方编译按钮&#xff0c;并保存。...

代码随想录算法训练营第四十四天

卡码网题目: 99. 岛屿数量100. 岛屿的最大面积 其他: 今日总结 往期打卡 99. 岛屿数量 跳转: 99. 岛屿数量 学习: 代码随想录公开讲解 问题: 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水…...

每日Prompt:自拍生成摇头娃娃

提示词 将这张照片变成一个摇头娃娃&#xff1a;头部稍微放大&#xff0c;保持面部准确&#xff0c;身体卡通化。[把它放在书架上]。...

制作我的计算器

1. 界面布局 新建项目 MyCalculator&#xff0c;开始布局。 2. 静态布局 代码如下&#xff1a; // etc/pages/Index.ets Entry Component struct Index {build() {Column() {/*** 运算区*/Column() {TextInput({ text: 12x13 }).height(100%).fontSize(32).enabled(false).f…...

如何查看 Ubuntu开机是否需要密码

要查看 Ubuntu 开机是否需要密码&#xff0c;可以通过以下方法进行判断&#xff1a; 1. 检查自动登录设置 图形界面操作&#xff1a; 进入系统设置&#xff08;Settings&#xff09;→ 用户账户&#xff08;User Accounts&#xff09;→ 解锁设置&#xff08;输入当前用户密码…...

今日行情明日机会——20250519

上证指数缩量收十字星&#xff0c;个股涨多跌少&#xff0c;这周反弹的概率比较大。 深证指数缩量调整&#xff0c;临近反弹&#xff0c;个股表现更好。 2025年5月19日涨停股主要行业方向分析 并购重组&#xff08;政策驱动资产整合&#xff09; • 涨停家数&#xff1a;16…...

【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器

【CodeBuddy 】从0到1&#xff0c;让网页导航栏变为摸鱼神器 我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 &#x1f31f;嗨&#xff0c;我是LucianaiB&#…...

PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)

PCL点云库点云数据处理入门系列教材目录 基础阶段 第 1 讲&#xff1a;PCL库简介和安装&#xff08;Win10/11VS2019PCL 1.12.0&#xff09;第 2 讲&#xff1a;PCL库中点云基本知识和数据类型结构第 3 讲&#xff1a;PCL库中点云数据格式PCD和PLY及其输入输出&#xff08;IO&…...

同一颗太阳:Australia、Austria、Arab、Africa、Augustus、August、Aurora、Athena

我们来看一下下面这一堆单词&#xff1a; Australia n.澳大利亚&#xff1b;澳洲 Australian n.澳大利亚人 a.澳大利亚的 Austria n.奥地利 Austrian n.奥地利人 a.奥地利(人)的 Africa n.非洲 African n.非洲人* Arab a.阿拉伯的&#xff1b;阿拉伯人的 n.阿拉伯人(pl.Arabs)…...

用户账号及权限管理:企业安全的基石与艺术

在当今数字化时代,用户账号及权限管理已成为企业IT安全体系中不可或缺的核心组件。它不仅是保护敏感数据的第一道防线,更是确保业务运营效率和合规性的关键。本文将深入探讨用户账号及权限管理的重要性、最佳实践以及实施策略,助您构建一个安全、高效且灵活的访问控制体系。…...