常用数据分类算法原理介绍、优缺点分析与代码实现[LR/RF/DT/SVM/NavieBayes/GBDT/XGBoost/DNN/LightGBM等]

news2024/11/24 20:12:47

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

机器学习领域中常用的分类模型包括以下几种:
(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/745540.html

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

相关文章

分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)

目录 分布式事物解决方案_XA方案 分布式事物解决方案_Seata实现 Seata提供XA模式实现分布式事务_业务说明 Seata提供XA模式实现分布式事务_下载启动Seata服务 Seata提供XA模式实现分布式事务_搭建聚合父工程构建 创建工程distribute-transaction 字符编码 注解生效激活 Jav…

three js模型旋转

如何让立方体模型旋转到指定的面 父页面 <b-modal ref"modal_mini" size"lg" centered static :hide-footer"true":dialog-class"[modal_mini]":content-class"position-static":body-class"p-0":header-class…

上海亚商投顾:沪指放量调整 两市超4000只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日震荡调整&#xff0c;深成指、创业板指午后跌超1%。AI概念股集体下挫&#xff0c;CPO、算力等方向领跌&am…

感知网络安全态势是什么?感知网络安全态势如何实施

网络安全是当今社会中一个非常重要的话题。随着互联网的普及和信息技术的发展&#xff0c;网络安全问题日益突出。为了有效应对各种网络威胁和攻击&#xff0c;网络安全态势感知成为了一种关键的技术手段。 网络安全态势感知的定义 网络安全态势感知是指通过对网络环境中的各种…

2023-07-11力扣每日一题

链接&#xff1a; https://leetcode.cn/problems/maximum-alternating-subsequence-sum/ 题意&#xff1a; 给定一个数组&#xff0c;求一个子序列&#xff0c;使这个子序列的奇数位和-偶数位和最大&#xff08;下标从1开始的话|反正第一个数是&#xff09; 解&#xff1a;…

基于linux下的高并发服务器开发(第一章)-Linux环境开发搭建1.1

1、安装虚拟机 2、在虚拟机中安装Linux系统 &#xff08;1&#xff09;新建虚拟机向导 点击虚拟机设置&#xff0c;使用ISO映像文件(M) &#xff08;2&#xff09;Ubuntu18安装 点击现在安装 点击继续 静静地接下来的安装即可 安装好后&#xff0c;安装VMware Tools 将压缩…

设计原则及设计模式基础

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结&#xff0c;使用设计模式是为了可以重用代码&#xff0c;让代码更容易被他人理解并且提高代码的可靠性。 1 设计模式概述 GoF(Gang Of Four 四人组&#xff0c;指4位著名软件工程学者)&#xff…

ubuntu安装单个redis服务

1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误&#xff0c; 改成使用root账号操作 2.安装完成后&#xff0c;Redis服务器会自动启动&#xff0c;查看进程是否正常启动 ps -axu|grep redis redis 18689 0.1 0.4 40136 6860 ? …

第3讲 Camera Sensor 数据流

Camera Sensor Block Camera Sensor Output Format raw8 一个像素点用8bit来表示&#xff0c;范围0&#xff5e;256 raw10 一个像素点用10bit来表示&#xff0c;范围0&#xff5e;1024 raw12 一个像素点用12bit来表示&#xff0c;范围0&#xff5e;4096 Camera Sensor Fr…

智慧园区:如何利用AI识别与视频技术实现工业园区监管模式的升级?

一、背景分析 智慧园区建设的目标是通过运用现代信息技术&#xff0c;通过智能化管理&#xff0c;解决园区管理中存在的许多难题&#xff0c;例如信息不对称、资源浪费等问题&#xff0c;将园区内的设施、设备和系统进行连接和互通&#xff0c;园区可以实现各种资源的高效利用…

这一次,Python 真的有望告别 GIL 锁了?

Python 中有一把著名的锁——全局解释器锁&#xff08;Global Interpreter Lock&#xff0c;简写 GIL&#xff09;&#xff0c;它的作用是防止多个本地线程同时执行 Python 字节码&#xff0c;这会导致 Python 无法实现真正的多线程执行。&#xff08;注&#xff1a;本文中 Pyt…

TexSpire-比markdown更为简洁的文本标记语言,用文字即可生成演示效果

文章目录 一、前言二、语言特点三、举例1、文本框2、表格3、折线图4、思维导图 四、相关资料 一、前言 老实说&#xff0c;本人对于ppt的花里胡哨深恶痛绝&#xff0c;特别是每一次汇报&#xff0c;都需要花费我很多时间去找模板&#xff0c;去设计&#xff0c;去美化内容时&a…

【源码分析系列】number-precision和bignumber.js

01_JS精度 好久前在公司分享的文章&#xff0c;现在才发…本文阐述了为什么0.1 0.2 ! 0.3&#xff0c;并分析了number-precision和bignumber.js的解决原理 被JS精度问题小坑了一把&#xff0c;所以系统来 复习 学习一波~ 背景 在实际业务开发中&#xff0c;可能会遇到一下问题…

Redis_简介(1)

目录 Redis简介 Redis特性 Redis 优势 Redis应用场景 源码等资料获取方法 Redis简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。从2010年3月15日起&#xff0c;Redis的开发工作由…

Git命令-状态与版本查看

Git是一个强大的分布式管理系统,版本控制主要在本地端完成,在团队合作和协助开发中,都在广泛使用Git工具,因为他免费哈哈哈 目录 git status git reflog git reset --hard 版本号 git status 可以查看当前git状态 On branch master 是你当前的分支状态,当前我是在master主…

[分布式] zookeeper集群与kafka集群

目录 一、Zookeeper 概述1.1 Zookeeper定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 Zookeeper 数据结构1.5 Zookeeper 应用场景1.6 Zookeeper 选举机制 二、 部署 Zookeeper 集群2.1 环境部署2.2 关闭防火墙2.3 安装 JDK 下载安装包 安装 Zookeeper2.4 修改配置文件2.5 将…

[NGINX] NGINX下载、安装编译、启动检查停止命令

一、NGINX 下载 mkdir -p /soft/nginx cd /soft/nginx wget https://nginx.org/download/nginx-1.21.6.tar.gz二、下载相关依赖 ①在线安装依赖&#xff1a; yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel ②下载依赖到本地安装依赖&#xff1a; y…

2023年7月23日 星期三 Linux驱动作业

1.使用驱动代码实现如下要求 a.应用程序通过阻塞的io模型来读取number变量的值 b.number是内核驱动中的一个变量 c.number的值随着按键按下而改变(按键中断) 例如number0 按下按键number1再次按下按键number0 d.在按下按键的时候需要同时将1ed1的状态取反 e.驱动中需要编写字符…

FlinkCDC第四部分-同步mysql到mysql,ctrl就完事~(flink版本1.17.1)

本文介绍了不同源单表-单表同步&#xff0c;不同源多表-单表同步。 注&#xff1a;此版本支持火焰图 Flink版本&#xff1a;1.17.1 环境&#xff1a;Linux CentOS 7.0、jdk1.8 基础文件&#xff1a; flink-1.17.1-bin-scala_2.12.tgz、 flink-connector-jdbc-3.0.0-1.16.…

LeetCode·每日一题·2544. 交替数字和·模拟

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/alternating-digit-sum/solutions/2341276/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-7fjq/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#…