当前位置: 首页 > 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…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...