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

【数据挖掘】深度挖掘

【数据挖掘】深度挖掘

  • 目录:
  • 1. 减少样本集的数量
    • 知识点
    • 示例
  • 2. 对噪声比集剪枝
    • 知识点
    • 示例
      • 建立局部树
      • 代码示例(使用 Python 和 `scikit - learn` 库构建局部决策树)
      • 代码解释
      • 注意事项
    • 最大超平面
      • 定义
      • 原理
      • 求解方法
      • 代码示例(使用 Python 和 `scikit - learn` 库)
      • 代码解释
  • 3. 属性加权
    • 知识点
    • 示例
  • 4. 泛化样本集
    • 知识点
    • 示例
  • 5. 用于泛化样本集距离函数
    • 知识点
    • 示例
  • 6. 局部线性模型用于数据预测
    • 知识点
    • 示例
  • 7. 模型树
        • 知识点
        • 构建树伪代码
    • 对树剪枝
  • 8. 名目属性
    • 知识点
    • 示例
  • 9. 缺失值
    • 知识点
    • 示例
  • 10. 贝叶斯网络
    • 知识点
    • 算法细节
    • 快速学习数据结构
  • 11. 聚类
    • 知识点
    • 层次聚类
    • 增量聚类
    • 基于概率聚类,EM 算法
    • 扩展混合模型
    • 贝叶斯聚类
  • 12. 半监督学习
    • 知识点
    • 用于分类聚类
    • 协同训练
    • 多实例学习
  • 13. 升级学习算法
    • 知识点

目录:

1. 减少样本集的数量

知识点

减少样本集数量可以提高计算效率、降低存储成本,避免过拟合等问题。常见方法有随机采样、分层采样、基于密度的采样等。

  • 随机采样:随机选择一定比例的样本。
  • 分层采样:根据样本的类别分布进行分层,然后在每一层中进行采样,以保证样本类别比例不变。
  • 基于密度的采样:去除密度较低区域的样本。
  • 在这里插入图片描述

示例

假设我们有一个包含 1000 个样本的数据集,要将其减少到 100 个样本。使用随机采样可以这样实现(Python 示例):

import numpy as npdata = np.random.rand(1000, 10)  # 假设数据有 10 个特征
sample_indices = np.random.choice(len(data), 100, replace=False)
reduced_data = data[sample_indices]

2. 对噪声比集剪枝

知识点

噪声比集剪枝是一种处理数据中噪声的方法,通过评估样本的噪声比例,去除噪声较大的样本或对噪声样本进行修正。可以基于样本的预测误差、与邻居样本的差异等指标来判断噪声
在这里插入图片描述

示例

在决策树中,对于某个叶子节点,如果该节点包含的样本中噪声样本比例超过一定阈值,则对该节点进行剪枝。

局部树通常指在特定数据子集或局部区域上构建的树结构模型,比如局部决策树、局部模型树等,以下为你详细介绍构建局部决策树的思路和代码示例:

建立局部树

构建局部树一般按以下步骤进行:

  1. 选择局部数据:确定要构建局部树的数据子集。这可以基于数据的空间位置、与某个查询点的距离、特定的属性值范围等。
  2. 定义树结构:明确使用的树类型,如决策树、回归树等,并确定树的节点结构和划分规则。
  3. 构建树:在选定的局部数据上,根据定义的树结构和划分规则递归地构建树。

代码示例(使用 Python 和 scikit - learn 库构建局部决策树)

import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
from sklearn.inspection import DecisionBoundaryDisplay# 生成示例数据集
X, y = make_classification(n_samples=1000, n_features=2, n_informative=2,n_redundant=0, n_clusters_per_class=1, random_state=42)# 选择局部数据(例如,选择特征 0 在 [0, 1] 范围内的数据)
local_indices = np.where((X[:, 0] >= 0) & (X[:, 0] <= 1))[0]
X_local = X[local_indices]
y_local = y[local_indices]# 构建局部决策树
local_tree = DecisionTreeClassifier(max_depth=3)
local_tree.fit(X_local, y_local)# 可视化局部决策树的决策边界
disp = DecisionBoundaryDisplay.from_estimator(local_tree, X_local, response_method="predict",alpha=0.5,
)
disp.ax_.scatter(X_local[:, 0], X_local[:, 1], c=y_local, edgecolor="k")
plt.title("Local Decision Tree Decision Boundary")
plt.show()

在这里插入图片描述

代码解释

  1. 数据生成:使用 make_classification 函数生成一个二维的分类数据集。
  2. 选择局部数据:通过 np.where 函数选择特征 0 在 [0, 1] 范围内的数据作为局部数据。
  3. 构建局部决策树:使用 DecisionTreeClassifier 构建一个最大深度为 3 的决策树,并在局部数据上进行训练。
  4. 可视化决策边界:使用 DecisionBoundaryDisplay 可视化局部决策树的决策边界,并将局部数据点绘制在图上。

注意事项

  • 局部数据选择:局部数据的选择方式会影响局部树的性能和适用范围。可以根据具体问题选择合适的局部数据选择策略。
  • 树的复杂度:为了避免过拟合,需要控制局部树的复杂度,例如限制树的深度、叶子节点的最小样本数等。

最大超平面

定义

在二分类问题中,如果数据是线性可分的,那么存在无数个超平面可以将不同类别的数据分开。最大超平面是指在这些能够正确分类的超平面中,使得两类数据到该超平面的间隔(margin)最大的那个超平面。

n n n 维空间中,超平面可以用方程 w T x + b = 0 \mathbf{w}^T\mathbf{x} + b = 0 wTx+b=0 来表示,其中 w \mathbf{w} w 是超平面的法向量, x \mathbf{x} x 是空间中的点, b b b 是偏置项。对于线性可分的数据集,我们希望找到合适的 w \mathbf{w} w b b b 来确定最大超平面

原理

最大超平面的目标是最大化两类数据到超平面的间隔。间隔定义为离超平面最近的样本点到超平面的距离的两倍。这些离超平面最近的样本点被称为支持向量(Support Vectors)。

对于一个样本点 x i \mathbf{x}_i xi,它到超平面 w T x + b = 0 \mathbf{w}^T\mathbf{x} + b = 0 wTx+b=0 的距离为:
在这里插入图片描述

在二分类问题中,假设正类样本的标签 y i = + 1 y_i = +1 yi=+1
负类样本的标签 y i = − 1 y_i = -1 yi=1。为了方便计算间隔,我们可以对超平面进行缩放,使得对于支持向量有
y i ( w T x i + b ) = 1 y_i(\mathbf{w}^T\mathbf{x}_i + b) = 1 yi(wTxi+b)=1。这样,间隔就可以表示为 2 ∥ w ∥ \frac{2}{\|\mathbf{w}\|} w2
因此,求解最大超平面的问题就转化为在满足分类约束条件 y i ( w T x i + b ) ≥ 1 y_i(\mathbf{w}^T\mathbf{x}_i + b) \geq 1 yi(wTxi+b)1 i = 1 , 2 , ⋯ , n i = 1, 2, \cdots, n i=1,2,,n)的情况下,最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|\mathbf{w}\|^2 21w2 的优化问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

求解方法

上述优化问题是一个带约束的 凸二次规划问题,可以使用拉格朗日乘数法将其转化为对偶问题进行求解。引入拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi0 i = 1 , 2 , ⋯ , n i = 1, 2, \cdots, n i=1,2,,n),
构造拉格朗日函数:
在这里插入图片描述

通过对 w \mathbf{w} w b b b 求偏导数并令其为 0,可以得到对偶问题:

在这里插入图片描述

求解对偶问题得到拉格朗日乘子 α i \alpha_i αi 后,可以进一步计算出 w \mathbf{w} w b b b 的值,从而确定最大超平面。

代码示例(使用 Python 和 scikit - learn 库)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs# 生成线性可分的二维数据集
X, y = make_blobs(n_samples=40, centers=2, random_state=6)# 创建 SVM 分类器并拟合数据
clf = svm.SVC(kernel='linear', C=1000)
clf.fit(X, y)# 绘制数据点
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)# 绘制最大超平面和间隔边界
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()# 创建网格点
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)# 绘制最大超平面和间隔边界
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])# 绘制支持向量
ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100,linewidth=1, facecolors='none', edgecolors='k')
plt.show()

代码解释

  1. 数据生成:使用 make_blobs 函数生成一个线性可分的二维数据集。
  2. 创建 SVM 分类器:使用 svm.SVC 创建一个线性核的 SVM 分类器,并使用 fit 方法拟合数据。
  3. 绘制数据点:使用 plt.scatter 绘制数据点。
  4. 绘制最大超平面和间隔边界:通过 clf.decision_function 计算每个网格点到超平面的距离,并使用 plt.contour 绘制最大超平面和间隔边界。
  5. 绘制支持向量:使用 clf.support_vectors_ 获取支持向量,并使用 plt.scatter 绘制支持向量。

3. 属性加权

知识点

属性加权是指为不同的属性分配不同的权重,以突出某些属性在模型中的重要性。可以基于属性的信息增益、相关性等指标来确定权重

示例

在 k - 近邻算法中,不同属性的权重可以根据其对分类结果的影响来确定。假设我们有两个属性 x 1 x_1 x1 x 2 x_2 x2,计算它们的信息增益分别为 I G 1 IG_1 IG1 I G 2 IG_2 IG2,则属性权重 w 1 = I G 1 I G 1 + I G 2 w_1=\frac{IG_1}{IG_1 + IG_2} w1=IG1+IG2IG1 w 2 = I G 2 I G 1 + I G 2 w_2=\frac{IG_2}{IG_1 + IG_2} w2=IG1+IG2IG2

4. 泛化样本集

知识点

泛化样本集是指能够代表整个数据集特征的样本集合,用于训练模型以提高模型的泛化能力。可以通过数据增强、采样等方法来构建泛化样本集。

示例

在图像识别中,对原始图像进行旋转、翻转、缩放等操作,生成新的样本,与原始样本一起构成泛化样本集。

5. 用于泛化样本集距离函数

知识点

距离函数用于衡量样本之间的相似度或距离,在泛化样本集中,常用的距离函数有欧氏距离、曼哈顿距离、余弦相似度等。

  • 欧氏距离: d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2} d(x,y)=i=1n(xiyi)2
  • 曼哈顿距离: d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\sum_{i = 1}^{n}|x_i - y_i| d(x,y)=i=1nxiyi
  • 余弦相似度: s i m ( x , y ) = x ⋅ y ∣ ∣ x ∣ ∣ ⋅ ∣ ∣ y ∣ ∣ sim(x,y)=\frac{x\cdot y}{||x||\cdot||y||} sim(x,y)=xyxy

示例

import numpy as npx = np.array([1, 2, 3])
y = np.array([4, 5, 6])# 欧氏距离
euclidean_distance = np.linalg.norm(x - y)# 曼哈顿距离
manhattan_distance = np.sum(np.abs(x - y))print("欧氏距离:", euclidean_distance)
print("曼哈顿距离:", manhattan_distance)

6. 局部线性模型用于数据预测

知识点

局部线性模型是在局部邻域内使用线性模型进行数据预测。对于一个待预测的样本,首先找到其最近的 k 个邻居样本,然后在这些邻居样本上拟合一个线性模型,最后使用该线性模型进行预测

示例

假设我们有一个二维数据集,使用局部线性模型预测一个新样本的值(Python 示例):

from sklearn.neighbors import NearestNeighbors
from sklearn.linear_model import LinearRegression
import numpy as np# 生成数据
X = np.random.rand(100, 2)
y = 2 * X[:, 0] + 3 * X[:, 1] + np.random.randn(100)# 待预测样本
new_sample = np.array([[0.5, 0.5]])# 找到最近的 k 个邻居
k = 10
nbrs = NearestNeighbors(n_neighbors=k, algorithm='ball_tree').fit(X)
distances, indices = nbrs.kneighbors(new_sample)# 提取邻居样本
neighbor_X = X[indices[0]]
neighbor_y = y[indices[0]]# 拟合线性模型
model = LinearRegression()
model.fit(neighbor_X, neighbor_y)# 预测
prediction = model.predict(new_sample)
print("预测值:", prediction)

7. 模型树

知识点

模型树是一种回归树,每个叶子节点包含一个线性模型。在构建模型树时,通过递归划分数据集,使得每个划分区域内的数据可以用一个线性模型来近似
在这里插入图片描述

构建树伪代码
function BuildModelTree(data):if 满足停止条件(如数据集中样本数少于阈值、误差小于阈值等):拟合一个线性模型并返回该叶子节点选择最佳划分属性和划分点将数据集根据划分点划分为左右子数据集左子树 = BuildModelTree(左子数据集)右子树 = BuildModelTree(右子数据集)返回以当前节点为根,左右子树为子节点的树

对树剪枝

剪枝是为了避免过拟合,常用的剪枝方法有预剪枝和后剪枝。预剪枝在树构建过程中提前停止划分,后剪枝在树构建完成后对节点进行合并或删除。

8. 名目属性

知识点

名目属性是指属性值为离散的、无序的类别,如颜色(红、绿、蓝)、性别(男、女)等。在处理名目属性时,常用的方法有独热编码、标签编码等。

示例

import pandas as pddata = {'颜色': ['红', '绿', '蓝']}
df = pd.DataFrame(data)
one_hot_encoded = pd.get_dummies(df, columns=['颜色'])
print(one_hot_encoded)

9. 缺失值

知识点

数据中可能存在缺失值,处理缺失值的方法有删除包含缺失值的样本、使用均值/中位数/众数填补、使用预测模型填补等。

示例

import pandas as pd
import numpy as npdata = {'年龄': [20, np.nan, 30], '性别': ['男', '女', np.nan]}
df = pd.DataFrame(data)# 使用均值填补年龄列的缺失值
df['年龄'] = df['年龄'].fillna(df['年龄'].mean())# 使用众数填补性别列的缺失值
df['性别'] = df['性别'].fillna(df['性别'].mode()[0])print(df)

10. 贝叶斯网络

知识点

贝叶斯网络是一种概率图模型,用于表示变量之间的依赖关系。它由节点和有向边组成,节点表示随机变量,有向边表示变量之间的条件依赖关系。通过贝叶斯网络可以进行概率推理和预测。
在这里插入图片描述

算法细节

  • 结构学习:确定贝叶斯网络的拓扑结构,可以使用基于评分的方法(如贝叶斯信息准则)或基于约束的方法(如条件独立性测试)。
  • 参数学习:在确定结构后,估计每个节点的条件概率分布,可以使用最大似然估计或贝叶斯估计。

快速学习数据结构

**

可以使用一些高效的数据结构来加速贝叶斯网络的学习,如树结构、图结构等。例如,使用 Chow - Liu
算法可以在多项式时间内学习到一个近似最优的贝叶斯网络结构。

**

11. 聚类

知识点

聚类是将数据集中的样本划分为不同的组(簇),使得同一簇内的样本相似度高,不同簇之间的样本相似度低。常见的聚类方法有层次聚类、增量聚类、基于概率聚类等。

层次聚类

  • 知识点:层次聚类通过不断合并或分裂簇来构建聚类层次结构,分为凝聚式层次聚类(自底向上)和分裂式层次聚类(自顶向下)。
  • 示例(Python)
from sklearn.cluster import AgglomerativeClustering
import numpy as npX = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
clustering = AgglomerativeClustering().fit(X)
print(clustering.labels_)

增量聚类

  • 知识点增量聚类适用于动态数据集,当新样本到来时,不需要重新对整个数据集进行聚类,而是在已有聚类结果的基础上进行更新

基于概率聚类,EM 算法

  • 知识点:基于概率聚类假设数据是由多个概率分布混合而成的,通过估计每个概率分布的参数来进行聚类。EM 算法是一种迭代算法,用于估计混合模型的参数,包括 E 步(期望步)和 M 步(最大化步)。
  • 示例(Python)
from sklearn.mixture import GaussianMixture
import numpy as npX = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
gmm = GaussianMixture(n_components=2).fit(X)
labels = gmm.predict(X)
print(labels)

在这里插入图片描述

扩展混合模型

扩展混合模型是对基本混合模型的扩展,如引入更多的参数或更复杂的概率分布。

贝叶斯聚类

贝叶斯聚类使用贝叶斯方法来进行聚类,通过计算每个样本属于不同簇的后验概率来进行聚类

12. 半监督学习

知识点

半监督学习利用少量的有标签样本和大量的无标签样本进行学习,常见的应用场景有分类和聚类。

用于分类聚类

  • 分类:可以使用半监督分类算法,如自训练、协同训练等,利用无标签样本提高分类性能。
  • 聚类:半监督聚类可以利用有标签样本的信息来指导聚类过程,使得聚类结果更符合先验知识。

协同训练

  • 知识点协同训练假设数据有两个不同的视图,每个视图可以独立地进行学习。通过交替训练两个分类器,利用一个分类器对无标签样本的预测结果来为另一个分类器提供额外的有标签样本

多实例学习

  • 知识点:多实例学习中,每个样本由多个实例组成,只有样本的标签是已知的,实例的标签未知。目标是学习一个模型来预测样本的标签。

13. 升级学习算法

知识点

升级学习算法是指对现有的学习算法进行改进和优化,以提高算法的性能和效率。可以从算法的复杂度、准确性、鲁棒性等方面进行升级。例如,对决策树算法进行剪枝优化、对神经网络算法进行架构改进等。

相关文章:

【数据挖掘】深度挖掘

【数据挖掘】深度挖掘 目录&#xff1a;1. 减少样本集的数量知识点示例 2. 对噪声比集剪枝知识点示例建立局部树代码示例&#xff08;使用 Python 和 scikit - learn 库构建局部决策树&#xff09;代码解释注意事项 最大超平面定义原理求解方法代码示例&#xff08;使用 Python…...

OpenGL(2)基于Qt做OpenGL开发

文章目录 一、基于Qt做OpenGL开发1、环境准备2、创建OpenGL窗口3、绘制基本图形 一、基于Qt做OpenGL开发 1、环境准备 确保你已经安装了 Qt 开发环境&#xff08;包含 Qt Creator&#xff09;&#xff0c;并且支持 OpenGL 开发。在创建 Qt 项目时&#xff0c;选择 “Qt Widget…...

使用JWT实现微服务鉴权

目录 一、微服务鉴权 1、思路分析 2、系统微服务签发token 3、网关过滤器验证token 4、测试鉴权功能 前言&#xff1a; 随着微服务架构的广泛应用&#xff0c;服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性…...

高并发内存池项目介绍

&#x1f493;博主CSDN主页&#xff1a;Am心若依旧409-CSDN博客&#x1f493; ⏩专栏分类:项目记录_⏪ &#x1f69a;代码仓库&#xff1a;青酒余成 &#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 1.前言 在经历一年多左右的时间…...

PHP会务会议系统小程序源码

&#x1f4c5; 会务会议系统 一款基于ThinkPHPUniapp框架&#xff0c;精心雕琢的会议管理微信小程序&#xff0c;专为各类高端会议场景量身打造。它犹如一把开启智慧殿堂的金钥匙&#xff0c;为会议流程优化、开支精细化管理、数量精准控制、标准严格设定以及供应商严格筛选等…...

Java中的常用类 --String

学习目标 掌握String常用方法掌握StringBuilder、StringBuffer了解正则 1.String ● String是JDK中提前定义好的类型 其所在的包是java.lang ,String翻译过来表示字符串类型&#xff0c;也就是说String类中已经提前定义好了很多方法都是用来处理字符串的&#xff0c;所以Str…...

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例 目录 PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例学前思考&#xff1a;一、PWM概述二、PWM的基本原理三、PWM的应用场景四、PWM的硬件配置与使用五、PWM的编程…...

Hutool - DB 连接池配置集成

在实际开发中&#xff0c;尤其是在高并发场景下&#xff0c;使用连接池来管理数据库连接是非常必要的&#xff0c;它可以显著提高数据库操作的性能和效率。Hutool - DB 支持集成多种常见的连接池&#xff0c;如 HikariCP、Druid 等。下面分别介绍如何将这两种连接池集成到 Huto…...

激光工控机在自动化生产线中有什么关键作用?

激光工控机作为自动化生产线的核心设备&#xff0c;通过高精度控制、快速响应和智能化集成&#xff0c;在提升效率、保障质量、实现柔性制造等方面发挥着不可替代的作用。以下是其关键作用的具体分析&#xff1a; 一、实现高效连续生产&#xff1a; 1.高速加工能力&#xff1…...

Visual Studio Code的下载安装与汉化

1.下载安装 Visual Studio Code的下载安装十分简单&#xff0c;在本电脑的应用商店直接下载安装----注意这是社区版-----一般社区版就足够用了---另外注意更改安装地址 2.下载插件 重启后就是中文版本了...

nlp|微调大语言模型初探索(3),qlora微调deepseek记录

前言 上篇文章记录了使用lora微调llama-1b,微调成功,但是微调llama-8b显存爆炸,这次尝试使用qlora来尝试微调参数体量更大的大语言模型,看看64G显存的极限在哪里。 1.Why QLora? QLoRA 在模型加载阶段通过 4-bit 量化大幅减少了模型权重的显存占用。QLoRA 通过 反量化到 …...

【全栈】SprintBoot+vue3迷你商城-细节解析(1):Token、Jwt令牌、Redis、ThreadLocal变量

【全栈】SprintBootvue3迷你商城-细节解析&#xff08;1&#xff09;&#xff1a;Token、Jwt令牌、Redis、ThreadLocal变量 往期的文章都在这里啦&#xff0c;大家有兴趣可以看一下 后端部分&#xff1a; 【全栈】SprintBootvue3迷你商城&#xff08;1&#xff09; 【全栈】…...

基于ffmpeg+openGL ES实现的视频编辑工具(一)

在深入钻研音视频编辑开发这片技术海洋时&#xff0c;相信不少开发者都和我有同样的感受&#xff1a;网络上关于音视频编辑工具实现的资料繁多&#xff0c;理论阐释细致入微&#xff0c;代码片段也随处可见。然而&#xff0c;一个显著的缺憾是&#xff0c;缺乏一个完整成型的 A…...

面试完整回答:SQL 分页查询中 limit 500000,10和 limit 10 速度一样快吗?

首先&#xff1a;在 SQL 分页查询中&#xff0c;LIMIT 500000, 10 和 LIMIT 10 的速度不会一样快&#xff0c;以下是原因和优化建议&#xff1a; 性能差异的原因 LIMIT 10&#xff1a; 只需要扫描前 10 条记录&#xff0c;然后返回结果。 性能非常高&#xff0c;因为数据库只…...

Linux系统管理(十六)——通过WSL配置windows下的Linux系统(可视化界面与远程连接)

前言 WSL&#xff0c;即Windows Subsystem for Linux&#xff0c;是微软在Windows 10和Windows 11中引入的功能&#xff0c;允许用户在Windows上原生运行Linux的命令行工具和应用程序&#xff0c;无需启动完整的Linux虚拟机或进行双系统启动。 开启WSL服务 开启虚拟化 进入…...

【RabbitMQ业务幂等设计】RabbitMQ消息是幂等的吗?

在分布式系统中&#xff0c;RabbitMQ 自身不直接提供消息幂等性保障机制&#xff0c;但可通过业务逻辑设计和技术组合实现消息处理的幂等性。以下是 8 种核心实现方案及最佳实践&#xff1a; 一、消息唯一标识符 (Message Deduplication) 原理 每条消息携带全局唯一ID&#xff…...

flutter在安卓模拟器上运行

目录 下载android studio&#xff0c;然后把其中的模拟器设为环境变量&#xff0c;然后在vscode/cursor中使用插件&#xff0c;打开安卓模拟器一、下载android studio网址mac 下载64位 ARM 二、启动android studio三、设置SDK四、打开文件 打开模拟器五、运行程序六、在vscode/…...

linux shell 当命令执行出现错误立即退出的方法

在 Linux 脚本中&#xff0c;如果你想在整个脚本执行完毕后检查是否有错误发生&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 使用 $? 检查上一条命令的退出状态 每个命令执行后&#xff0c;Shell 会将其退出状态存储在特殊变量 $? 中。$? 的值为 0 表示成功&#…...

与本地电脑PDF文档对话的PDF问答程序

文章目录 PDF问答程序程序流程处理PDF文档创建问答链 在探索和学习新技术时&#xff0c;了解LangChain框架的理论知识固然重要&#xff0c;但实际的案例分析与实践尝试能为你提供更加直观的认识和更深人的理解。本文主要以解析案例代码为主。通过具体的实践操作&#xff0c;你可…...

QT之改变鼠标样式

QT改变鼠标图片 资源路径如下 代码实现 QPixmap customCursorPixmap(":/images/mouse.png");QCursor customCursor(customCursorPixmap);QWidget::setCursor(customCursor); // 可以设置为整个窗口或特定控件QWidget::setCursor(); // 设置为透明光标&#xff0c…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...