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

似然函数与极大似然估计

前言

本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见《机器学习数学通关指南》


正文

在这里插入图片描述

📚 1. 似然函数:直观理解与数学定义

🧩 核心概念

似然函数是机器学习中参数估计的基石,它从数据与模型之间的关系出发,提供了一种优化参数的数学框架。

💡 直观理解:假设你正在调整相机参数以拍摄最清晰的照片。似然函数就像是一个"清晰度指标",告诉你当前参数设置下能获得这张照片的可能性有多大。

📐 数学定义

对于参数 θ \theta θ 和观测数据 x = { x 1 , x 2 , . . . , x n } \mathbf{x} = \{x_1, x_2, ..., x_n\} x={x1,x2,...,xn},似然函数 L ( θ ∣ x ) L(\theta | \mathbf{x}) L(θx) 表示在参数取值为 θ \theta θ 时观测到数据 x \mathbf{x} x 的可能性:

  • 离散随机变量
    L ( θ ∣ x ) = P ( x ∣ θ ) = ∏ i = 1 n P ( X i = x i ∣ θ ) L(\theta | \mathbf{x}) = P(\mathbf{x}|\theta) = \prod_{i=1}^n P(X_i = x_i | \theta) L(θx)=P(xθ)=i=1nP(Xi=xiθ)

  • 连续随机变量
    L ( θ ∣ x ) = f ( x ∣ θ ) = ∏ i = 1 n f ( x i ∣ θ ) L(\theta | \mathbf{x}) = f(\mathbf{x}|\theta) = \prod_{i=1}^n f(x_i | \theta) L(θx)=f(xθ)=i=1nf(xiθ)

其中 P P P 是概率质量函数, f f f 是概率密度函数。

🔄 似然函数 vs 概率函数

概率函数似然函数
固定参数,变化数据固定数据,变化参数
预测未来观测值反推可能的参数值
积分/求和为1无标准化约束

🎯 2. 极大似然估计(MLE):原理与方法

🎲 基本思想

🎓 核心原则:在所有可能的参数值中,选择那个使得观测数据出现概率最大的参数值。

🧮 计算步骤

  1. 构建似然函数 L ( θ ∣ x ) L(\theta|\mathbf{x}) L(θx)
  2. 取对数转换 ℓ ( θ ∣ x ) = ln ⁡ L ( θ ∣ x ) \ell(\theta|\mathbf{x}) = \ln L(\theta|\mathbf{x}) (θx)=lnL(θx)(简化计算,不改变最优解)
  3. 求导数 ∂ ℓ ( θ ∣ x ) ∂ θ = 0 \frac{\partial \ell(\theta|\mathbf{x})}{\partial \theta} = 0 θ(θx)=0
  4. 解方程:得到参数估计 θ ^ M L E \hat{\theta}_{MLE} θ^MLE

💻 Python实现示例

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
from scipy.stats import norm# 生成一些服从正态分布的数据
np.random.seed(42)
true_mean = 5
true_std = 2
data = np.random.normal(true_mean, true_std, size=100)# 定义正态分布的负对数似然函数
def negative_log_likelihood(params):mean, std = params# 防止标准差为负if std <= 0:return 1e10# 计算负对数似然return -np.sum(norm.logpdf(data, mean, std))# 使用优化方法找到最大似然估计值
initial_guess = [0, 1]  # 初始猜测值
result = minimize(negative_log_likelihood, initial_guess)
mle_mean, mle_std = result.xprint(f"真实参数: 均值={true_mean}, 标准差={true_std}")
print(f"MLE估计: 均值={mle_mean:.4f}, 标准差={mle_std:.4f}")

🔬 3. 关键性质与统计特点

📊 统计性质

  • 一致性 ✓: 随着样本量增大,MLE估计值收敛到真实参数值
  • 渐近正态性 ✓: 大样本条件下,MLE估计值近似服从正态分布
  • 渐近有效性 ✓: 在正则条件下,MLE估计值达到克拉默-拉奥下界(最小方差)
  • 不变性 ✓: 若 θ ^ \hat{\theta} θ^ θ \theta θ 的MLE,则 g ( θ ^ ) g(\hat{\theta}) g(θ^) g ( θ ) g(\theta) g(θ) 的MLE

⚠️ 局限性

  • 小样本下可能有偏:如正态分布方差估计中,修正后的无偏估计为 σ ^ 2 = n n − 1 ⋅ 1 n ∑ i = 1 n ( x i − x ˉ ) 2 \hat{\sigma}^2 = \frac{n}{n-1} \cdot \frac{1}{n}\sum_{i=1}^n(x_i - \bar{x})^2 σ^2=n1nn1i=1n(xixˉ)2
  • 依赖模型假设:模型错误指定会导致参数估计偏差
  • 计算复杂性:复杂模型中可能需要数值优化方法

🧠 4. MLE与贝叶斯估计的对比

📝 思想差异

极大似然估计 (MLE)最大后验估计 (MAP)完全贝叶斯推断
θ ^ M L E = argmax ⁡ θ L ( θ ∣ x ) \hat{\theta}_{MLE} = \underset{\theta}{\operatorname{argmax}} \, L(\theta|\mathbf{x}) θ^MLE=θargmaxL(θx) θ ^ M A P = argmax ⁡ θ L ( θ ∣ x ) P ( θ ) \hat{\theta}_{MAP} = \underset{\theta}{\operatorname{argmax}} \, L(\theta|\mathbf{x})P(\theta) θ^MAP=θargmaxL(θx)P(θ) P ( θ ∣ x ) ∝ L ( θ ∣ x ) P ( θ ) P(\theta|\mathbf{x}) \propto L(\theta|\mathbf{x})P(\theta) P(θx)L(θx)P(θ)
仅考虑似然结合先验与似然计算完整后验分布
点估计点估计分布估计
无超参数需要先验超参数需要先验超参数

🔄 实际应用选择

  • 样本量大:MLE与MAP接近(先验影响减弱)
  • 样本量小:先验信息重要性增加,贝叶斯方法优势明显
  • 计算资源受限:MLE计算效率通常更高
  • 需要不确定性量化:完全贝叶斯方法提供完整后验分布

🛠️ 5. 机器学习中的应用与实践

🤖 经典机器学习模型

  • 逻辑回归:最大化条件似然函数
    L ( θ ) = ∏ i = 1 n p ( y i ∣ x i , θ ) y i ⋅ ( 1 − p ( y i ∣ x i , θ ) ) 1 − y i L(\theta) = \prod_{i=1}^n p(y_i|x_i,\theta)^{y_i} \cdot (1-p(y_i|x_i,\theta))^{1-y_i} L(θ)=i=1np(yixi,θ)yi(1p(yixi,θ))1yi,其中 p ( y ∣ x , θ ) = 1 1 + e − θ T x p(y|x,\theta) = \frac{1}{1+e^{-\theta^Tx}} p(yx,θ)=1+eθTx1

  • 线性回归:假设噪声服从正态分布,MLE等价于最小二乘法
    θ ^ M L E = ( X T X ) − 1 X T y \hat{\theta}_{MLE} = (X^TX)^{-1}X^Ty θ^MLE=(XTX)1XTy

  • 高斯混合模型(GMM):使用EM算法求解隐变量模型的MLE

💡 深度学习视角

  • 交叉熵损失函数:实质上是分类问题的负对数似然
  • 均方误差(MSE):对应于高斯噪声假设下的负对数似然
  • 神经网络训练:可视为对条件概率分布 p ( y ∣ x , θ ) p(y|x,\theta) p(yx,θ) 的参数估计

📈 常见问题与解决方案

问题解决方案原理
过拟合L1/L2正则化等价于添加参数先验
数值问题对数似然、梯度裁剪避免数值下溢/上溢
多峰似然表面多次随机初始化跳出局部最优
计算效率随机梯度下降(SGD)基于数据子集近似更新

🧪 6. 案例分析与代码实践

📊 案例1:二项分布参数估计

假设从某二项分布 B ( n , p ) B(n,p) B(n,p) 中抽取样本,其中 n n n 已知,求 p p p 的MLE:

# 假设我们有20次试验,每次10个伯努利试验,记录成功次数
trials = 10
successes = [4, 5, 6, 3, 7, 5, 4, 6, 5, 6, 7, 5, 4, 3, 6, 5, 4, 5, 6, 5]# MLE估计
p_mle = sum(successes) / (trials * len(successes))
print(f"成功概率的MLE估计: p = {p_mle:.4f}")# 95%置信区间(使用正态近似)
import scipy.stats as stats
std_err = np.sqrt(p_mle * (1 - p_mle) / (trials * len(successes)))
ci_95 = stats.norm.interval(0.95, loc=p_mle, scale=std_err)
print(f"95%置信区间: ({ci_95[0]:.4f}, {ci_95:.4f})")

📈 案例2:指数分布与生存分析

在生存分析中,假设时间服从指数分布 f ( t ∣ λ ) = λ e − λ t f(t|\lambda) = \lambda e^{-\lambda t} f(tλ)=λeλt

# 假设我们有一些生存时间数据(如设备故障时间)
survival_times = [2.5, 3.7, 0.5, 6.2, 4.1, 3.4, 2.8, 1.9, 5.6, 4.4]# 指数分布的MLE估计
lambda_mle = 1 / np.mean(survival_times)
print(f"失效率参数λ的MLE估计: {lambda_mle:.4f}")
print(f"平均寿命(1/λ)的MLE估计: {1/lambda_mle:.4f}")# 绘制数据与拟合分布
x = np.linspace(0, 10, 1000)
pdf_fitted = lambda_mle * np.exp(-lambda_mle * x)plt.figure(figsize=(10, 6))
plt.hist(survival_times, bins=10, density=True, alpha=0.7, label='观测数据')
plt.plot(x, pdf_fitted, 'r-', linewidth=2, label=f'拟合指数分布(λ={lambda_mle:.4f})')
plt.xlabel('生存时间')
plt.ylabel('概率密度')
plt.legend()
plt.title('指数分布MLE拟合示例')
plt.grid(True, alpha=0.3)
plt.show()

🔍 案例3:多元高斯分布参数估计

在多变量数据分析中,对协方差矩阵的估计:

# 生成二元高斯分布数据
n_samples = 200
mean_true = np.array([1, 2])
cov_true = np.array([[2, 0.5], [0.5, 1]])np.random.seed(42)
data = np.random.multivariate_normal(mean_true, cov_true, size=n_samples)# MLE估计
mean_mle = np.mean(data, axis=0)
cov_mle = np.cov(data, rowvar=False)print("真实均值向量:", mean_true)
print("MLE均值向量:", mean_mle)
print("\n真实协方差矩阵:")
print(cov_true)
print("\nMLE协方差矩阵:")
print(cov_mle)# 可视化
plt.figure(figsize=(10, 6))
# 绘制数据点
plt.scatter(data[:, 0], data[:, 1], alpha=0.6)
# 添加真实均值与估计均值
plt.scatter(mean_true[0], mean_true, color='red', s=100, marker='*', label='真实均值')
plt.scatter(mean_mle[0], mean_mle, color='green', s=100, marker='+', label='MLE均值')
# 绘制95%置信椭圆
from matplotlib.patches import Ellipse
def plot_cov_ellipse(cov, pos, nstd=2, ax=None, **kwargs):"""绘制协方差矩阵的置信椭圆"""if ax is None:ax = plt.gca()vals, vecs = np.linalg.eigh(cov)order = vals.argsort()[::-1]vals = vals[order]vecs = vecs[:, order]theta = np.degrees(np.arctan2(*vecs[:, 0][::-1]))width, height = 2 * nstd * np.sqrt(vals)ellip = Ellipse(xy=pos, width=width, height=height, angle=theta, **kwargs)return ax.add_patch(ellip)# 绘制真实与估计的协方差椭圆
plot_cov_ellipse(cov_true, mean_true, nstd=2, edgecolor='red', facecolor='none', label='真实协方差')
plot_cov_ellipse(cov_mle, mean_mle, nstd=2, edgecolor='green', facecolor='none', label='MLE协方差')plt.axis('equal')
plt.grid(True, alpha=0.3)
plt.legend()
plt.title('二元高斯分布MLE参数估计')
plt.show()

🚀 7. 前沿扩展与进阶技巧

🌐 正则化与惩罚似然

💫 问题背景:在高维或小样本情况下,MLE容易过拟合

解决方法:添加惩罚项控制复杂度,类似于引入参数先验

  • L2正则化 = 高斯先验: ℓ penalized ( θ ) = ℓ ( θ ) − λ 2 ∥ θ ∥ 2 2 \ell_{\text{penalized}}(\theta) = \ell(\theta) - \frac{\lambda}{2}\|\theta\|_2^2 penalized(θ)=(θ)2λθ22
  • L1正则化 = 拉普拉斯先验: ℓ penalized ( θ ) = ℓ ( θ ) − λ ∥ θ ∥ 1 \ell_{\text{penalized}}(\theta) = \ell(\theta) - \lambda\|\theta\|_1 penalized(θ)=(θ)λθ1

🧬 EM算法与隐变量模型

当模型包含隐变量 z z z 时,直接优化似然函数 p ( x ∣ θ ) p(x|\theta) p(xθ) 变得困难。EM算法通过迭代优化来解决:

  1. E步:计算 Q ( θ ∣ θ ( t ) ) = E z ∣ x , θ ( t ) [ log ⁡ p ( x , z ∣ θ ) ] Q(\theta|\theta^{(t)}) = \mathbb{E}_{z|x,\theta^{(t)}}[\log p(x,z|\theta)] Q(θθ(t))=Ezx,θ(t)[logp(x,zθ)]
  2. M步:更新 θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ θ ( t ) ) \theta^{(t+1)} = \arg\max_{\theta} Q(\theta|\theta^{(t)}) θ(t+1)=argmaxθQ(θθ(t))

应用:GMM聚类、隐马尔可夫模型、主题模型等

🔮 变分推断与近似最大似然

对于复杂模型,可使用变分方法近似计算:

  • 变分贝叶斯:近似后验分布 p ( θ ∣ x ) ≈ q ( θ ) p(\theta|x) \approx q(\theta) p(θx)q(θ)
  • 变分自编码器(VAE):使用神经网络近似复杂分布,优化证据下界(ELBO)

📌 总结与关键要点

  • 似然函数:衡量参数解释观测数据的能力,是参数估计的基础
  • 极大似然估计:选择使数据出现概率最大的参数值
  • 实用性质:一致性、渐近正态性、不变性,但小样本下可能有偏
  • 机器学习应用:逻辑回归、线性模型、神经网络损失函数、聚类模型
  • 优化技巧:对数转换、正则化、数值优化方法
  • 扩展方向:贝叶斯方法、惩罚似然、EM算法、变分推断

相关文章:

似然函数与极大似然估计

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 &#x1f4da; 1. 似然函数&a…...

QSFP(Quad Small Form-factor Pluggable)详解

1. QSFP的定义 QSFP&#xff08;Quad Small Form-factor Pluggable&#xff09;是一种四通道热插拔光模块/电模块&#xff0c;专为高速网络传输设计。其名称中的“Quad”表示模块集成4个独立通道&#xff0c;每个通道支持1Gbps至10Gbps速率&#xff08;总带宽可达40Gbps&#…...

WDM_OTN_基础知识_波分系统基本构成-无源器件

在波分系统中通常将发光,对光进行放大以及产生光电转换的器件称之为有源器件&#xff0c;例如光放&#xff0c;激光器&#xff0c;与此相反&#xff0c;将那些不发光&#xff0c;不对光进行放大&#xff0c;也不产生光电转换的器件称之为无源器件&#xff0c;波分系统中的无源器…...

【音视频】ffmpeg音视频处理基本流程

一、ffmpeg音视频处理基本流程 首先先看两条命令 ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 1280x720 2.flv ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 -s 1280x720 3.mkv-i :表示输入源&#xff0c;这里是1.mp4&#xff0c;是当前路径下的视频文件-acodec copy…...

【网络编程】之TCP实现客户端远程控制服务器端及断线重连

【网络编程】之TCP实现客户端远程控制服务器端及断线重连 TCP网络通信实现客户端简单远程控制主机基本功能演示通信过程代码实现服务器模块执行命令模块popen系列函数 客户端模块服务器主程序 windows作为客户端与服务器通信#pragma comment介绍 客户端使用状态机断线重连代码实…...

云原生容器编排:构建智能弹性应用的自动化引擎

引言&#xff1a;重构应用部署范式 Google Borg系统管理着超2500万容器实例&#xff0c;每日处理200亿个任务。阿里巴巴双十一使用Kubernetes实现300万Pod秒级弹性&#xff0c;资源利用率达65%。CNCF 2023报告显示全球Kubernetes生产采用率突破92%&#xff0c;CRI-O容器启动速…...

centos虚拟机安装

以下是一个详细的 VMware CentOS 虚拟机安装教程&#xff0c;结合了最新的信息和步骤&#xff1a; 一、准备工作 1. 下载 VMware 软件 访问 VMware 官方网站&#xff1a;VMware Workstation 官网。点击“现在安装”并下载适合您操作系统的 VMware Workstation。 2. 下载 Ce…...

社会力模型:Social force model for pedestrian dynamics

Social Force Model——社会力模型-CSDN博客 简介&#xff1a; 时间&#xff1a;1995 期刊&#xff1a;《Physical Review E》 作者&#xff1a;Dirk Helbing and Peter Molnar 摘要&#xff1a; 提出一种描述行人运动的“社会力模型”。认为行人的运动可看作是受到一系列…...

机器学习数学通关指南

✨ 写在前面 &#x1f4a1; 在代码的世界里沉浸了十余载&#xff0c;我一直自诩逻辑思维敏捷&#xff0c;编程能力不俗。然而&#xff0c;当我初次接触 DeepSeek-R1 并领略其清晰、系统的思考过程时&#xff0c;我不禁为之震撼。那一刻&#xff0c;我深刻意识到&#xff1a;在A…...

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境&#xff08;xxx是mac的username&a…...

# C# 中堆(Heap)与栈(Stack)的区别

在 C# 中&#xff0c;堆和栈是两种不同的内存分配机制&#xff0c;它们在存储位置、生命周期、性能和用途上存在显著差异。理解堆和栈的区别对于优化代码性能和内存管理至关重要。 1. 栈&#xff08;Stack&#xff09; 1.1 定义 栈是一种后进先出&#xff08;LIFO&#xff0…...

ubuntu离线安装nvidia-container-runtime

参考文章 ubuntu系统docker20.4版本安装nvidia-container-runtime3.11.0-1版本(离线安装nvidia-docker) - jokerMM - 博客园 https://zhuanlan.zhihu.com/p/15194336245 一、软件地址 Index of /nvidia-docker/libnvidia-container/stable/ 从上述地地址——进入对应系统—…...

用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录

用PythonFlask打造可视化武侠人物关系图生成器&#xff1a;从零到一的实战全记录 一、缘起&#xff1a;一个程序小白的奇妙探索之旅 作为一个接触Python仅13天的编程萌新&#xff0c;我曾以为开发一个完整的应用是遥不可及的事情。但在DeepSeek的帮助下&#xff0c;我竟用短短…...

学习笔记-DeepSeek在开源第四天发布DualPipe和EPLB两项技术

在AI模型训练的进程中&#xff0c;优化并行策略对于提升训练效率和资源利用率至关重要。DeepSeek在开源周第四天发布的DualPipe和EPLB两项技术&#xff0c;为V3/R1训练场景下的并行优化提供了创新解决方案。 DualPipe&#xff1a;双向管道并行算法 技术原理&#xff1a; Dua…...

C++入门基础知识1

今天&#xff0c;我们正式来学习C&#xff0c;由于C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助。 现在我们这篇主要是&#xff1a; 1. 补充C语言语法…...

神经网络AI原理回顾

长期记忆存储在大模型的参数权重中&#xff0c;不经过推理和编码无法读取&#xff0c;且必须依赖输入的提示&#xff0c;因为大模型不会无缘无故的自言自语&#xff0c;毕竟输入层是它唯一 与外界交互的窗口。 目前个性化大模型的局限就是训练成本过高&#xff0c;除非使用RAG&…...

PPT 小黑第38套

对应大猫40 幻灯片母板-最后一页-重命名为奇数页 奇偶页-点中标题-形状格式-形状填充-青色 最后一页页码左对齐 更换幻灯片背景&#xff1a;设计-设置背景格式-图片填充 【开始】-段落居中&#xff0c;对齐文本-中部对齐&#xff0c;排列-对齐-底端&#xff0c;-再水平居中…...

主时钟与虚拟时钟约束

1、主时钟约束 1.1、主时钟约束语法&#xff1a; create_clock -name< clock_name > -period <period> -waveform{ <rise_time> <fall_time> } [get_ports< port_name >] 说明&#xff1a; name 之后的<clock_name> 是clk 的name&a…...

K8S学习之基础六:k8s中pod亲和性

Pod节点亲和性和反亲和性 podaffinity&#xff1a;pod节点亲和性指的是pod会被调度到更趋近与哪个pod或哪类pod。 podunaffinity&#xff1a;pod节点反亲和性指的是pod会被调度到远离哪个pod或哪类pod 1. Pod节点亲和性 requiredDuringSchedulingIgnoredDuringExecution&am…...

如何通过rust实现自己的web登录图片验证码

在进行web系统开发时&#xff0c;为保障系统登录安全&#xff0c;登录页面中的验证码必不可少。在java中&#xff0c;我们可以利用相应的2D图像库快速生成图形验证码&#xff0c;而对于rust&#xff0c;我们没有合适的标准库进行图像验证码的生成。今天&#xff0c;我们通过使用…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...