常用数据分类算法总结记录

news2024/9/28 11:24:16

本文的主要目的是总结记录日常学习工作中常用到的一些数据分类算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。

机器学习领域中常用的分类模型包括以下几种:
(1)逻辑回归 (Logistic Regression):逻辑回归是一种广泛应用于二分类问题的线性模型,通过使用逻辑函数将输入特征与概率进行建模。
(2)决策树 (Decision Trees):决策树是一种基于树结构的非参数化分类模型,通过对输入特征进行分割,以确定最佳分类决策。
(3)支持向量机 (Support Vector Machines, SVM):SVM是一种基于超平面的有监督学习算法,可用于二分类和多分类任务。它通过找到能够最大间隔地分离不同类别的超平面来进行分类。
(4)朴素贝叶斯 (Naive Bayes):朴素贝叶斯是一种基于贝叶斯定理和特征之间的独立性假设的概率分类方法。它在处理高维数据和文本分类方面具有较好的表现。
(5)k近邻算法 (k-Nearest Neighbors, k-NN):k-NN是一种基于实例的分类算法,通过测量样本点与训练集中最接近的k个样本点的距离来进行分类。
(6)随机森林 (Random Forest):随机森林是一种集成学习方法,将多个决策树组合起来进行分类。它通过对特征和样本进行随机选择,减少了过拟合的风险。
(7)深度神经网络 (Deep Neural Networks, DNN):深度神经网络是一类基于多层神经元的模型,通过前向传播和反向传播算法进行训练和分类。在图像、语音和自然语言处理等领域取得了重大突破。
(8)梯度提升树 (Gradient Boosting Trees):梯度提升树是一种集成学习算法,通过迭代地构建多个决策树,并利用梯度下降法来优化损失函数,实现高准确性的分类。
(9)XGBoost(eXtreme Gradient Boosting)是一种基于Gradient Boosting框架的集成学习算法,用于解决分类和回归问题。它在许多机器学习竞赛中都取得了优异的表现,并被广泛应用于实际问题中。
(10)LightGBM是一种基于梯度提升框架的高效梯度提升树算法,专门用于解决分类和回归问题。相比于传统的梯度提升树算法,LightGBM具有更快的训练速度和更低的内存消耗。

这里针对上述总结学习的模型对其算法原理进行介绍并针对性地分析对应模型的优点和缺点,记录学习备忘。

(1)逻辑回归 (Logistic Regression):
算法原理:
逻辑回归是一种广泛应用于二分类问题的线性模型。它通过将输入特征与概率进行建模,使用逻辑函数(如sigmoid函数)将线性函数的输出映射到[0,1]之间的概率值。根据概率值可以进行分类决策。
优点:
计算简单、易于实现和解释。
可以处理大规模数据集。
对于线性可分问题,表现较好。
缺点:
对于非线性问题效果不佳,需要通过特征工程或引入高阶项来处理。
对异常值敏感。
容易欠拟合。

代码实现如下:

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(2)决策树 (Decision Trees):
算法原理:
决策树是一种基于树结构的非参数化分类模型。通过对输入特征进行分割来确定最佳分类决策。在每个节点上,选择最佳的特征和分割点来使得信息增益或基尼系数最大化,不断迭代构建树。
优点:
直观易懂,能够生成可解释的规则。
能够处理离散和连续型特征。
对缺失值有较好的容忍性。
可以处理多分类问题。
缺点:
对于特征空间划分较为复杂的问题,决策树可能出现过拟合。
对数据中的噪声和异常值较为敏感。
不稳定,对输入数据的微小变化可能导致完全不同的决策树。

代码实现如下所示:

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练决策树模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(3)支持向量机 (Support Vector Machines, SVM):
算法原理:
支持向量机是一种基于超平面的有监督学习算法。通过找到能够最大间隔地分离不同类别的超平面来进行分类。SVM可以通过核函数将线性可分的问题扩展到非线性问题。
优点:
在高维空间中表现良好,适用于处理维度高于样本数量的数据集。
泛化能力强,对于噪声和离群点具有较好的鲁棒性。
结果具有较好的数学解释。
缺点:
当特征维度非常高时,计算复杂度较高。
对于大规模数据集,需要占用较多的内存。
需要调节参数,如正则化参数C和核函数参数等。

代码实现如下所示:

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练SVM模型
model = SVC()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(4)朴素贝叶斯 (Naive Bayes):
算法原理:
朴素贝叶斯是一种基于贝叶斯定理和特征之间的独立性假设的概率分类方法。它通过计算后验概率来进行分类,选择具有最高概率的类别。
优点:
计算简单快速。
对于高维数据表现良好,适用于文本分类等问题。
对于小样本数据集也能够有效推断。
缺点:
忽略了特征之间的相关性,独立性假设可能不成立。
对于新颖的样本,可能出现较大的分类误差。
对于连续型特征和缺失值处理不佳。

代码实现如下所示:

from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练朴素贝叶斯模型
model = GaussianNB()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(5)k近邻算法 (k-Nearest Neighbors, k-NN):
算法原理:
k-NN是一种基于实例的分类算法。它根据样本点在特征空间中的距离来进行分类。对于一个待预测样本点,k-NN算法会计算其与训练集中最接近的k个样本点的距离,并根据这k个样本点的标签进行投票决定该样本点的类别。
优点:
简单易懂,容易实现。
对于多分类问题有效。
对于非线性问题具有较好的适应性。
缺点:
对于高维数据和大规模数据集计算复杂度较高。
对异常值敏感。
需要选择合适的k值,不同的k可能导致不同的分类结果。

代码实现如下所示:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练k-NN模型
model = KNeighborsClassifier()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(6)随机森林 (Random Forest):
算法原理:
随机森林是一种集成学习方法,将多个决策树组合起来进行分类。随机森林通过对特征和样本进行随机选择,减少了过拟合的风险。每个决策树独立地进行训练,并通过投票或平均等方式进行分类决策。
优点:
能够处理高维数据和大规模数据集。
具有较好的鲁棒性,对于噪声和异常值具有一定的容忍性。
能够估计特征的重要性。
缺点:
对于某些噪声较大的数据集,可能会出现过拟合问题。
在训练时需要较多的计算资源。

代码实现如下所示:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练随机森林模型
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(7)深度神经网络 (Deep Neural Networks, DNN):
算法原理:深度神经网络是一类基于多层神经元的模型。通过前向传播和反向传播算法进行训练和分类。它由多个隐藏层组成,每层由多个神经元组成。每个神经元接收来自前一层神经元的输入,并通过激活函数进行非线性变换。
优点:
在处理图像、语音和自然语言处理等领域取得了重大突破。
能够学习到复杂的非线性关系。
具有较强的表达能力和泛化能力。
缺点:
训练深度神经网络需要大量的数据和计算资源。
对于参数的初始化和调优较为困难。
可能会出现过拟合问题。

代码实现如下所示:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from keras.models import Sequential
from keras.layers import Dense

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练深度神经网络模型
model = Sequential()
model.add(Dense(10, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, np.eye(3)[y_train], epochs=100, batch_size=10, verbose=0)

# 进行预测
y_pred = np.argmax(model.predict(X_test), axis=-1)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(8)梯度提升树 (Gradient Boosting Trees):
算法原理:
梯度提升树是一种集成学习算法,通过迭代地构建多个决策树,并利用梯度下降法来优化损失函数,实现高准确性的分类。
优点:
在处理非线性问题时表现良好。
能够处理高维数据和大规模数据集。
对于噪声和离群点具有较好的鲁棒性。
缺点:
计算复杂度较高,需要进行多次迭代训练。
对于某些噪声较大的数据集,可能会出现过拟合问题。
需要调节多个参数,如学习率和树的数量等。

代码实现如下所示:

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建并训练梯度提升树模型
model = GradientBoostingClassifier()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

(9)XGBoost(eXtreme Gradient Boosting):
算法原理:
初始化:XGBoost首先使用一个简单的模型(如常数值)作为初始预测值。
计算梯度与损失函数:计算每个样本的真实标签与当前模型的预测值之间的差异,得到每个样本的梯度。同时,定义一个损失函数来衡量模型在训练数据上的表现。
构建决策树:通过迭代地增加决策树来改进当前模型的预测能力。每次迭代中,根据上一轮的残差(真实标签与当前模型预测值的差异)来构建一个新的决策树。利用贪婪算法选择最佳的分割点,最小化损失函数。每个叶节点包含一个预测值,用于最终的预测结果。
更新预测:将新构建的决策树与之前模型的预测结果相加,得到更新后的预测值。
迭代优化:重复步骤2-4,直到达到预定的迭代次数或损失函数收敛为止。
优点:
高准确性:XGBoost使用了梯度提升算法,能够在每次迭代中改进模型的预测能力,从而获得更高的准确性。
可处理多种类型数据:XGBoost可以处理各种数据类型,包括数值型和类别型特征。它还支持自定义损失函数,使其适用于各种问题。
有效处理缺失值:XGBoost能够自动处理缺失值,无需对缺失值进行填充或删除操作。
可解释性强:XGBoost通常生成一棵较浅的决策树,这使得模型具有更好的可解释性和可视化能力。
速度快:XGBoost采用了很多优化技术,例如近似算法和并行计算,使其训练速度更快。
缺点:
参数调优:XGBoost有很多参数需要调节,如树的数量、深度和学习率等,这需要花费一些时间和资源来选择最佳参数组合。
容易过拟合:如果不谨慎选择超参数,XGBoost容易过拟合训练数据,导致在测试数据上表现不佳。
对噪声和异常值敏感:与其他基于决策树的方法一样,XGBoost对噪声和异常值比较敏感,可能会导致模型性能下降。
需要注意的是,XGBoost有一个改进版叫做LightGBM,它在XGBoost的基础上进行了优化,更适用于大规模数据集和高维特征。

代码实现如下所示:

import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 转换数据为DMatrix格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)

# 设置参数并训练XGBoost模型
params = {
    'objective': 'multi:softmax',
    'num_class': 3
}
model = xgb.train(params, dtrain)

# 进行预测
y_pred = model.predict(dtest)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


(10)LightGBMLightGBM(Light Gradient Boosting Machine):
算法原理:
是一种基于梯度提升框架的高效梯度提升树算法,专门用于解决分类和回归问题。相比于传统的梯度提升树算法,LightGBM具有更快的训练速度和更低的内存消耗。
数据预处理:LightGBM首先对数据进行离散化,并将连续特征划分为离散的bins。然后,使用直方图算法来计算每个bin的梯度和Hessian值。
初始化模型:LightGBM使用一个常数作为初始预测值。
创建叶子结点和分割策略:通过迭代地增加决策树来改进当前模型的预测能力。对于每个决策树的结点,LightGBM使用基于梯度的直方图算法来选择最佳的分割点,以最小化损失函数。它通过遍历所有特征和所有分裂点,计算每个分裂点的增益(Gain)来选择最优的分割策略。
生长决策树:在每个结点上,LightGBM通过贪婪算法选择增益最大的分割点,并不断分裂结点,直到达到预定的最大深度或无法继续分裂为止。
叶子结点的预测值:将叶子结点中的样本标签进行平均,作为叶子结点的预测值。
更新梯度和损失函数:根据当前模型的预测值和真实标签计算梯度和Hessian值,用于下一轮迭代的决策树构建。
优点:
高效性:LightGBM采用了基于直方图的算法,通过对特征进行离散化和基于梯度的直方图算法来选择最佳分割点,从而大幅提升了训练速度和内存消耗。
高准确性:LightGBM在处理大规模数据集和高维特征时能够保持较高的准确性,它能够学习到复杂的非线性关系。
处理缺失值:LightGBM能够自动处理缺失值,无需进行填充或删除操作。
可扩展性:LightGBM支持并行训练,在多核CPU上能够实现更快的训练速度。
缺点:
对噪声和异常值敏感:与其他基于决策树的方法一样,LightGBM对噪声和异常值比较敏感,可能会导致模型性能下降。
参数调优:LightGBM有一些参数需要调节,如学习率、树的数量和深度等,需要花费一定的时间和资源来选择最佳的参数组合。
总体而言,LightGBM是一个高效且准确的梯度提升树算法,特别适用于处理大规模数据集和高维特征。它在许多机器学习竞赛和实际应用中都取得了优异的表现。

代码实现如下所示:

import lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
X, y = load_iris(return_X_y=True)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 转换数据为Dataset格式
train_data = lgb.Dataset(X_train, label=y_train)

# 设置参数并训练LightGBM模型
params = {
    'objective': 'multiclass',
    'num_class': 3
}
model = lgb.train(params, train_data)

# 进行预测
y_pred = model.predict(X_test)
y_pred = y_pred.argmax(axis=1)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

 

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

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

相关文章

【用户调研】用户体验地图:寻找产品突破口

文章目录 什么是用户体验地图为什么需要用户体验地图制作步骤用户体验地图与其他“地图”关系总结 什么是用户体验地图 为什么需要用户体验地图 制作步骤 用户体验地图与其他“地图”关系 总结

前端面试题-HTML、HTTP、web综合问题(三)

26 你做的⻚⾯在哪些流览器测试过?这些浏览器的内核分别是什么? IE : trident 内核Firefox : gecko 内核Safari : webkit 内核Opera :以前是 presto 内核, Opera 现已改⽤Google - Chrome 的 Blink 内核Chrome:Blink (基于 webkit &#xf…

照片模糊怎么变清晰?秒变高清图,三个方法分享给你!

对于摄影爱好者和日常使用照片的人来说,需要高清晰度的图片是很常见的需求。在编写文档、制作展示或者从网络获取图片时,我们经常会遇到模糊的照片,这些照片既不能满足我们的需求,也无法直接使用。那么,如何将模糊的照…

OpenCV图像的仿射变换、旋转和缩放

以下是对代码的逐行解释: // 包含必要的OpenCV头文件和C++库文件 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv;

大数据/AI 行业案例资源介绍分享

大数据行业案例库是泰迪科技在数据挖掘领域探索10余年和高校资深讲师联合经验总结之作&#xff0c;内容涵盖智能电网、移动电信、医疗健康、网络舆情、电子商务、金融保险、交通运输、信息安全、政务民生等诸多行业&#xff0c;特别适合有数据挖掘相关课程教学的高校、研究所和…

【动态规划算法】第七题: 剑指Offer47.礼物的最⼤价值

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法\&#x1f384; 如 果 你…

《世界上最伟大的推销员》 - 经典语录与 AIGC解析

文章大纲 第一卷 全新的我第二卷 爱在今天第三卷 坚持到底第四卷 我是奇迹第五卷 最后一天第六卷 控制情绪第七卷 笑遍世界第八卷 提升价值第九卷 立即行动第十卷 我的祈祷 第一卷 全新的我 经典语录 ★ 世界上没有绝望的处境&#xff0c;只有对处境绝望的人。 ★ 怕苦的人苦一…

Redis 从入门到精通【进阶篇】之Redis事务详解

文章目录 0.前言1.Redis 事务基本流程 1.事务详解1.1. 开始事务1.2. 命令入队1.3. 执行事务1.6. 带 WATCH 的事务1.7. WATCH 命令的实现1.8. WATCH 的触发1.9. 事务的 ACID 性质 2.总结2.1. 在事务和非事务状态下2.2. 小结2.3. 为什么Redis 的事务并不是真正的原子操作2.4. 为什…

TCP连接管理(三次握手,四次挥手)

目录 一、回顾一下TCP包头二、连接的建立——“三次握手”三、连接的建立——“四次挥手”保活计时器 一、回顾一下TCP包头 源端口号&#xff08;Source Port&#xff09;&#xff1a;16 位字段&#xff0c;表示发送方的端口号。 目的端口号&#xff08;Destination Port&…

【机器学习核心总结】什么是决策树

什么是决策树 在游戏中遇到敌人是选择攻击还是逃跑&#xff1f;如果选择攻击&#xff0c;是选择普通的物理攻击还是魔法攻击&#xff1f;为达到目标根据一定的条件进行选择的过程&#xff0c;就是决策树(DT Tree)。 决策树模型非常经典&#xff0c;在机器学习中常被用于分类&…

2.3 Web应用 -- 5. Web缓存/代理服务器技术

2.3 Web应用 -- 5. Web缓存/代理服务器技术 Web缓存/代理服务器技术条件性GET方法 Web缓存/代理服务器技术 功能 在不访问服务器的前提下满足客户端的HTTP请求。 为什么要发明这种技术&#xff1f; 缩短客户请求的响应时间减少机构/组织的流量在大范围内(Internet)实现有效的内…

【小沐学C++】libcurl实现HTTP/HTTPS请求

文章目录 1、简介2、下载和编译2.1 下载2.2 编译2.3 使用 3、命令行测试3.1 获取文件头Headers3.2 请求内容Request Content3.3 响应内容Response Content3.4 GET请求3.5 POST请求3.6 其他 4、代码测试3.1 simple.c3.2 url2file.c3.3 simplepost.c3.4 resolve.c3.5 progressfun…

Docker中部署Redis集群与部署微服务项目的详细过程

目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、Redis集群部署实战四、Spring Boot项目 打包镜像?小结 一、使用Docker部署的好处 Docker的好处在于&#xff1a;在不同实例上运行相同的容器 Docker的五大优点&#xff1a; 持续部署与测试、多云服务平台支…

一、枚举类型——新特性(模式匹配-支配性)

switch 中 case 语句的顺序很重要。如果基类先出现&#xff0c;就会支配任何出现在后面的 case&#xff1a; Dominance.java JDK 17 sealed interface Base { }record Derived() implements Base { }public class Dominance {static String test(Base base) {return switch (ba…

稳扎稳打学爬虫09—chromedriver下载与安装方法

chromedriver下载与安装方法 1. 获取chromedriver.exe2. 将chromedriver.exe 应用程序复制到浏览器的安装目录下3. 将chromedriver.exe 应用程序复制到python安装目录下4.进行测试5.有可能的报错 1. 获取chromedriver.exe http://chromedriver.storage.googleapis.com/index.h…

SpringBoot整合shiro项目完成认证功能

springboot整合shiro完成认证功能 一、准备阶段&#x1f95d; 1.创建springboot工程&#x1f353; 2.引入依赖&#x1f353; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi&…

Visual Studio Code 编辑器实用插件简介

Visual Studio Code 编辑器插件 以下是一些常用的 Visual Studio Code 编辑器插件及其简短描述&#xff1a; 2gua.rainbow-brackets&#xff1a;在括号周围添加彩虹色的边框&#xff0c;以帮助区分不同层次的括号。adpyke.codesnap&#xff1a;将代码片段转换为漂亮的图片&am…

第66篇:顶级APT后门Sunburst通信流量全过程复盘分析(修正篇)

Part1 前言 由于先前文章存在部分错误&#xff0c;原文ABC_123已删除&#xff0c;上周末把文章修正&#xff0c;重新发布。 大家好&#xff0c;我是ABC_123。前面几周分享了Solarwinds供应链攻击事件的详细攻击流程及Sunburst后门的设计思路&#xff0c;但是多数朋友还是对Sun…

各种软件的启动界面(SplashScreen)修改汇总

最近装了新电脑&#xff0c;搞了一波萌化&#xff0c;顺便把我常用软件的启动界面也给换了&#xff0c;包括adobe全家桶、UE、3dsMax、Maya、JB家的几个&#xff0c;&#xff08;Office想换没换成功&#xff0c;找了很久没找到方法&#xff0c;不知道有没大佬知道&#xff09; …

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…