Catboost算法助力乳腺癌预测:Shap值解析关键预测因素

一、引言

乳腺癌是一种常见的恶性肿瘤,对女性健康和生命造成严重威胁。乳腺癌的预测和治疗是当前研究的热点和难点。传统的预测方法主要基于临床病理学特征,但准确率有待提高。随着机器学习技术的发展,数据驱动的预测方法逐渐受到关注。Catboost算法是一种高效的深度学习模型,能够处理类别型特征,具有较高的预测精度。Shap值是一种解释模型预测结果的方法,能够解释模型中各个特征对预测结果的贡献程度。本文将介绍Catboost算法和Shap值在乳腺癌研究中的应用,并探讨其潜力与独特性。

近年来,乳腺癌的发病率逐年上升,成为女性最常见的恶性肿瘤之一。乳腺癌的预测和治疗是当前研究的热点和难点。传统的预测方法主要基于临床病理学特征,但准确率有待提高。随着机器学习技术的发展,数据驱动的预测方法逐渐受到关注。Catboost算法是一种高效的深度学习模型,能够处理类别型特征,具有较高的预测精度。Shap值是一种解释模型预测结果的方法,能够解释模型中各个特征对预测结果的贡献程度。

在乳腺癌研究中,Catboost算法和Shap值的应用具有广阔的前景。Catboost算法可以应用于乳腺癌早期检测、预后预测和亚型识别等方面,提高预测准确率和早期发现率。Shap值可以用于解释模型预测结果,指导医生制定更加精准的治疗方案。此外,Catboost算法和Shap值还可以联合应用,进一步提高预测准确率和可解释性,为乳腺癌研究提供新的思路和方法。

二、Catboost和Shap值简介

2.1 Catboost算法的基本原理和优势

Catboost算法是一种基于梯度提升决策树的机器学习算法,其基本原理是通过迭代地添加新的决策树来改进现有模型的预测性能,每棵新的决策树都是在负梯度方向上生长,以最小化损失函数的值。Catboost还采用了一种称为“基于树的模型”的集成方法,可以自动处理特征选择和特征缩放等任务,使得模型更加健壮和高效。

Catboost算法的优势包括:

  1. 高效合理地处理类别型特征:Catboost可以自动将类别型特征处理为数值型特征,并采用组合类别特征的方式,利用到特征之间的联系,极大地丰富了特征维度。
  2. 减少过拟合的发生:Catboost通过嵌入自动将类别型特征处理为数值型特征的创新算法,以及采用排序提升的方法对抗训练集中的噪声点,从而避免梯度估计的偏差,进而解决预测偏移的问题,减少过拟合的发生,提高算法的准确性和泛化能力。
  3. 易于使用:Catboost提供与scikit集成的Python接口,以及R和命令行界面,方便用户使用。
  4. 实用性强:Catboost可以处理类别型、数值型特征,并且可以处理多分类问题。
  5. 可扩展性:Catboost支持自定义损失函数,并且可以处理多输出问题。
  6. 快速预测:Catboost的预测速度较快,即使应对延时非常苛刻的任务也能够快速高效部署模型。

2.2 Shap值的定义、计算方法及作用

Shap值是一种基于Shapley值的解释模型预测结果的工具,可以用来解释模型中各个特征对预测结果的贡献程度。

Shap值的定义是基于Shapley值的概念,通过构建博弈模型来计算每个特征对预测结果的贡献。Shapley值是一种博弈论中的概念,用于衡量每个玩家在合作博弈中的贡献。在机器学习领域,Shapley值被用于解释模型预测结果,帮助我们理解模型预测背后的原因。

Shap值的计算方法包括基于期望的解释方法和基于核的解释方法。基于期望的解释方法是通过计算每个特征对模型预测结果的期望贡献来计算Shap值。基于核的方法则是通过计算每个特征与预测结果之间的核函数值来计算Shap值。不同的计算方法有各自的优缺点,适用于不同的场景。

Shap值在解释模型预测中的作用主要体现在以下几个方面:

  1. 量化特征贡献:Shap值可以量化每个特征对模型预测结果的贡献程度,帮助我们了解哪些特征对预测结果产生了积极影响,哪些特征产生了消极影响。
  2. 解释模型预测:通过计算Shap值,我们可以了解模型预测背后的原因,从而更好地理解模型的预测结果。
  3. 特征选择:Shap值可以帮助我们识别出对模型预测结果影响较大的特征,从而进行特征选择,提高模型的预测性能。
  4. 解释模型可解释性:Shap值可以增加模型的解释性,使机器学习模型更加易于理解和信任,有助于增强机器学习模型的可信度和应用范围。

2.3 Catboost和Shap值的局限性

虽然Catboost算法和Shap值在许多领域都取得了很好的效果,但它们也存在一些局限性和潜在问题。例如,Catboost算法在处理大规模数据集时可能会遇到内存限制的问题;Shap值的计算可能会受到模型复杂度和数据分布的影响,导致解释结果的不准确。此外,Catboost算法和Shap值的应用也需要考虑数据的预处理、特征选择等问题。

三、Catboost在乳腺癌预测中的应用

3.1 Catboost在乳腺癌早期检测中的应用

在乳腺癌早期检测中,Catboost算法可以用于构建预测模型,以识别潜在的癌症病变。通过训练Catboost模型,可以利用大量乳腺癌数据集进行学习,从而预测新样本是否患有乳腺癌。实验结果表明,Catboost模型在早期检测中具有较高的准确性和敏感性,能够有效地识别出早期癌症病变,为早期诊断和治疗提供有力支持。

3.2 Catboost模型在乳腺癌预后预测中的应用

Catboost模型也可以用于乳腺癌的预后预测。通过分析乳腺癌患者的临床病理学特征、治疗方式等信息,可以训练Catboost模型预测患者的生存期和复发风险。实验结果表明,Catboost模型在预后预测中具有较高的准确性和稳定性,能够为医生制定个性化治疗方案提供参考。

3.3 Catboost模型在乳腺癌亚型识别中的应用

Catboost模型还可以用于乳腺癌亚型的识别。不同的乳腺癌亚型具有不同的生物学特征和预后表现,因此准确识别亚型对于治疗和预后评估具有重要意义。通过训练Catboost模型,可以利用乳腺癌数据集中的基因表达谱等信息进行学习,从而预测新样本的亚型。实验结果表明,Catboost模型在亚型识别中具有较高的准确性和稳定性,能够为医生制定个性化治疗方案提供参考。

四、Shap在乳腺癌中的应用

4.1 Shap在乳腺癌风险预测的应用

Shap值可以用于评估乳腺癌风险预测模型的预测结果的可解释性。通过计算Shap值,可以了解每个特征对乳腺癌风险的贡献程度,从而帮助医生更好地理解模型的预测结果。实验结果表明,Shap值在乳腺癌风险预测中具有较高的准确性和可解释性,能够为医生制定个性化预防和治疗策略提供有力支持。

4.2 Shap在指导乳腺癌治疗策略的应用

Shap值还可以用于指导乳腺癌的治疗策略。通过分析Shap值,可以了解不同特征对治疗反应的影响,从而为医生制定个性化治疗方案提供参考。实验结果表明,Shap值在指导乳腺癌治疗策略中具有较高的准确性和实用性,能够提高治疗效果和患者生存率。

4.3 Shap在分析乳腺癌基因表达数据中的应用

Shap值还可以用于分析乳腺癌基因表达数据。通过计算Shap值,可以了解不同基因表达水平对乳腺癌发生和发展的影响,从而为基因功能研究和药物靶点发现提供有力支持。实验结果表明,Shap值在分析乳腺癌基因表达数据中具有较高的准确性和稳定性,能够为乳腺癌研究提供新的思路和方法。

总之,Shap值在乳腺癌研究中具有广泛的应用前景,可以用于风险预测、治疗策略分析和基因表达数据分析等方面。通过引入Shap值技术,可以弥补传统预测方法的不足,提高预测准确性和可解释性,为乳腺癌研究提供新的思路和方法。

五、示例演示

  • 「数据集准备」
library(survival)
head(gbsg)

结果展示:

   pid age meno size grade nodes pgr er hormon rfstime status
1  132  49    0   18     2     2   0  0      0    1838      0
2 1575  55    1   20     3    16   0  0      0     403      1
3 1140  56    1   40     3     3   0  0      0    1603      0
4  769  45    0   25     3     1   0  4      0     177      0
5  130  65    1   30     2     5   0 36      1    1855      0
6 1642  48    0   52     2    11   0  0      0     842      1
  • 「示例数据集介绍」
> str(gbsg)
'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1"1 2 1 1 1 2 2 1 2 2 ...

age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
  • 「划分训练集和测试集」
# 划分训练集和测试集
set.seed(123)
data <- gbsg[,c(-1)]
data$status <- as.factor(data$status)
train_indices <- sample(x = 1:nrow(data), size = 0.85 * nrow(data), replace = FALSE)
test_indices <- sample(setdiff(1:nrow(data), train_indices), size = 0.15 * nrow(data), replace = FALSE)
train_data <- data[train_indices, ]
test_data <- data[test_indices, ]
  • 「加载依赖包」
install.packages('devtools')
devtools::install_url('https://github.com/catboost/catboost/releases/download/v1.1.1/catboost-R-Windows-1.1.1.tgz', INSTALL_opts = c("--no-multiarch""--no-test-load"))

这里直接下载如果碰到如下的问题:

WARNING: Rtools is required to build R packages, but is not currently installed.

Please download and install Rtools 4.2 from https://cran.r-project.org/bin/windows/Rtools/.
Downloading package from url: https://github.com/catboost/catboost/releases/download/v1.1.1/catboost-R-Windows-1.1.1.tgz
Error in utils::download.file(url, path, method = method, quiet = quiet,  : 
  无法打开URL'https://github.com/catboost/catboost/releases/download/v1.1.1/catboost-R-Windows-1.1.1.tgz'
Warning message:
In devtools::install_url(url = "https://github.com/catboost/catboost/releases/download/v1.1.1/catboost-R-Windows-1.1.1.tgz",  :
  Arguments in `...` must be used.
✖ Problematic argument:
• INSTALL_opts = c("--no-multiarch""--no-test-load")
ℹ Did you misspell an argument name?
  1. 你可以直接在网址下载: 「https://github.com/catboost/catboost/releases/download/v1.1.1/catboost-R-Windows-1.1.1.tgz」,下载完成后解压出来,如下:
  2. 安装catboost
install.packages("D:/tools/catboost-R-Windows-1.1.1/catboost-R-Windows-1.1.1/catboost", repos = NULL, type = "source")

安装结果:

> install.packages("D:/tools/catboost-R-Windows-1.1.1/catboost-R-Windows-1.1.1/catboost", repos = NULL, type = "source")
将程序包安装入‘C:/Users/ASUS/AppData/Local/R/win-library/4.2
(因为‘lib’没有被指定)
* installing *source* package 'catboost' ...
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (catboost)
  1. 导入catboost库
library(catboost)
  • 「构建模型」
# 设置数据格式
train_data[, 1:10] <- lapply(train_data[, 1:10], as.numeric)
test_data[, 1:10] <- lapply(test_data[, 1:10], as.numeric)
trainpool <- catboost.load_pool(data=train_data[,-10],label = train_data[,10],cat_features=c(2,4,8))
testpool <- catboost.load_pool(data=test_data[,-10],label = test_data[,10],cat_features=c(2,4,8))
# 设置参数格式
params <- list(iterations = 1000,  #迭代次数
               loss_function = 'Logloss'#损失函数
               random_seed=103#设定种子数
               learning_rate = 0.01#学习率
               verbose = 0,  #不打印运行记录
               use_best_model = T#使用最佳模型
               od_type = 'Iter'#过拟合检测
               od_wait = 10   #得到最佳阈值后继续迭代的次数
               )
# 模型拟合
cat_model <- catboost.train(trainpool,testpool,params)
  • 「模型预测和评估」
pred <- catboost.predict(cat_model, 
                          testpool, 
                          prediction_type = "Probability")
  • 「混淆矩阵」
ModelMetrics::confusionMatrix(test_data[,10], pred, cutoff = 0.5)

结果展示:

    [,1] [,2]
[1,]    6    2
[2,]   43  160
  • 「ROC曲线」
library(pROC)
cat_roc<- roc(test_data[,10], pred)
# 绘制ROC曲线
plot(cat_roc, main = "ROC Curve", print.auc = TRUE, auc.polygon = TRUE, grid = TRUE, legacy.axes = TRUE,col="blue")
  • 「基于SHAP值的模型解释」
library(shapviz)
library(ggplot2)

shapviz.catboost.Model <- function(object, X_pred, X = X_pred, collapse = NULL...) {
  if (!requireNamespace("catboost", quietly = TRUE)) {
    stop("Package 'catboost' not installed")
  }
  stopifnot(
    "X must be a matrix or data.frame. It can't be an object of class catboost.Pool" =
      is.matrix(X) || is.data.frame(X),
    "X_pred must be a matrix, a data.frame, or a catboost.Pool" =
      is.matrix(X_pred) || is.data.frame(X_pred) || inherits(X_pred, "catboost.Pool"),
    "X_pred must have column names" = !is.null(colnames(X_pred))
  )
  
  if (!inherits(X_pred, "catboost.Pool")) {
    X_pred <- catboost.load_pool(X_pred)
  }

  S <- catboost.get_feature_importance(object, X_pred, type = "ShapValues"...)

  pp <- ncol(X_pred) + 1L
  baseline <- S[1L, pp]
  S <- S[, -pp, drop = FALSE]
  colnames(S) <- colnames(X_pred)
  shapviz(S, X = X, baseline = baseline, collapse = collapse)
}

shp <- shapviz(cat_model, X_pred = test_data[,-10])
sv_waterfall(shp,row_id = 2)
sv_force(shp,row_id = 2)
sv_importance(shp,kind = "beeswarm")
#条形图
sv_importance(shp,fill="purple")

# 依赖图
sv_dependence(shp, "rfstime"
              alpha = 0.5,
              size = 1.5,
              color_var = NULL)
# 绘制多个变量的依赖图
sv_dependence(shp, 
              v = c("rfstime",
                    "age",
                    "size",
                    "pgr"))

六、结论和展望

Catboost算法和Shap值在乳腺癌研究中具有重要的应用前景和贡献。通过引入机器学习技术,Catboost算法可以有效地处理大规模数据集,提高预测准确性和可解释性,为乳腺癌早期检测、预后预测和亚型识别等方面提供有力支持。Shap值则可以用于评估模型预测结果的可解释性,帮助医生更好地理解模型的预测结果,指导个性化治疗方案制定。因此,Catboost算法和Shap值的结合将为乳腺癌研究提供新的思路和方法,推动乳腺癌研究的深入发展。

虽然Catboost算法和Shap值在乳腺癌研究中取得了显著成果,但仍存在一些局限性和挑战。首先,当前的研究主要集中在模型构建和预测方面,对于模型解释性的研究相对较少。未来可以进一步探索如何利用Shap值等工具提高模型的解释性,使医生更好地理解模型的预测结果。其次,当前的研究主要基于单一数据集,对于多中心、多模态数据的整合和分析仍需加强。未来可以进一步探索如何利用多中心、多模态数据提高模型的预测准确性和稳定性。最后,随着大数据和人工智能技术的不断发展,未来可以进一步探索如何利用更先进的技术和方法推动乳腺癌研究的深入发展。

综上所述,Catboost算法和Shap值在乳腺癌研究中具有重要的应用前景和贡献。未来可以进一步探索如何结合Catboost算法和Shap值推动乳腺癌研究的深入发展。首先,可以加强模型解释性的研究,利用Shap值等工具提高模型的解释性,使医生更好地理解模型的预测结果。其次,可以加强多中心、多模态数据的整合和分析,提高模型的预测准确性和稳定性。最后,可以探索更先进的技术和方法,如深度学习、迁移学习等,推动乳腺癌研究的深入发展。同时,需要注重数据的隐私保护和伦理问题,确保研究的合法性和可持续性。通过不断努力和创新,相信未来可以更好地利用Catboost算法和Shap值等机器学习技术为乳腺癌研究提供新的思路和方法,为人类健康事业做出更大的贡献。

*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

由浅入深,一文读懂网络知识文集。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

【SpringMVC】SpringMVC的请求与响应

文章目录 0. Tomcat环境的配置1. PostMan工具介绍创建WorkSpace建立新的请求 2. 请求映射路径案例结构与代码案例结构案例代码 案例存在问题解决方案方法方法升级版——配置请求路径前缀注解总结 3. Get请求与Post请求案例结构与案例代码案例结构案例代码 Get请求Post请求接收中…

熔断,降级,限流

文章目录 熔断概念为什么需要熔断熔断器模型熔断策略 降级概念熔断和降级的关系熔断降级限时降级限流降级 参考文章 熔断和降级都是自我保护的一种机制&#xff0c;但二者又有所不同。 熔断 概念 “熔断”一词早期来自股票市场。熔断[Circuit Breaker]也叫自动停盘机制&#…

Gradle 简单入门

Gradle简单介绍&#xff1a; Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置&#xff0c;也增加了基于Kotlin语言的kotlin-based DSL&#xff0c;抛弃了基于XML的各种繁琐配置。面向Java应用…

【GoLang】哪些大公司正在使用Go语言

你见过哪些令你膛目结舌的代码技巧&#xff1f; 文章目录 你见过哪些令你膛目结舌的代码技巧&#xff1f;前言&#xff1a;哪些大公司正在使用Go语言谷歌&#xff08;Google&#xff09;&#xff1a;脸书&#xff08;Facebook&#xff09;&#xff1a;亚马逊&#xff08;Amazon…

TikTok手工艺新潮流:小视频中的手作乐趣

随着短视频平台的兴起&#xff0c;TikTok以其独特的创意和活力&#xff0c;成为了全球用户分享生活、展示才华的热门平台之一。本文将深入探讨TikTok上涌现的手工艺潮流&#xff0c;揭示小视频中的手作乐趣如何成为一种全新的艺术表达方式。 TikTok手工艺的独特之处 TikTok提供…

实验一传统的结构化的软件工程方法、实验二面向对象的软件工程、实验三软件测试

背景&#xff1a; 实验一 传统的结构化的软件工程方法 1实验目的 了解传统的软件工程方法的基本原理&#xff0c;掌握软件生命周期的全过程依次划分为需求分析、总体设计、详细设计、编码、测试、维护等几个重要阶段。每个阶段所要完成的任务以及提交的文档。 2实验内容 …

32 在Vue3中如何同时定义多个插槽

概述 当你想要给外部预留多个位置的时候&#xff0c;具名插槽就非常有用了。 比如&#xff0c;我们定义一个卡片&#xff0c;让别人使用的时候&#xff0c;标题可以自定义&#xff0c;内容也可以自定义&#xff0c;这个时候就需要两个插槽。 基本用法 我们创建src/componen…

行业前景咋样?大厂找我用C++抓取化工产品数据并分析

最近又来活了&#xff0c;天天忙到半夜&#xff0c;但是想想收益还是再坚持坚持。是这么一回事&#xff0c;兄弟所在的化工公司最近想看看某些行业数据&#xff0c;看看市面的同类型产品销量收益等情况是否满足预期效果&#xff0c;也就找到我让我给用爬虫写一个采集并分析的报…

基于Java SSM框架实现教学质量评价评教系统项目【项目源码+论文说明】

基于java的SSM框架实现教学质量评价评教系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;教学质量评价系统当然也不能排除在外。教学质量评价系统是以实际运用为…

机器学习 | 密度聚类和层次聚类

密度聚类和层次聚类 密度聚类 背景知识 如果 S 中任两点的连线内的点都在集合 S 内&#xff0c;那么集合 S称为凸集。反之&#xff0c;为非凸集。 DBSCAN 算法介绍 与划分和层次聚类方法不同&#xff0c;DBSCAN(Density-Based Spatial Clustering of Applications with Noi…

【模式识别】解锁降维奥秘:深度剖析PCA人脸识别技术

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《模式之谜 | 数据奇迹解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f30c;1 初识模式识…

MySQL基本操作 DDL DML DQL三大操作介绍

DDL 数据(结构)定义 创建表DML 数据操作 增删改DQL 查询语句 DDL 数据(结构)定义 创建表 创建 删除数据 注释 --空格内容 创建数据库 CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]eg:CREATE DATABASE IF NOT EXISTS school CHARSET utf8如果对应school不存在,…

Python学习笔记(六):函数的多返回值、函数的多种参数使用形式、匿名函数、文件的读取操作、文件的写入 、文件的追加

目录 一、函数的多返回值 二、函数的多种参数使用形式 2.1位置参数 2.2关键字参数 2.3缺省参数 2.4不定长参数 三、匿名函数 3.1 函数作为参数传递 3.2 函数的定义 3.3 匿名函数定义语法&#xff1a; 四、文件的读取操作 4.1 open&#xff08;&#xff09;打开函数…

2023 英特尔On技术创新大会直播 |我感受到的“芯”魅力

文章目录 每日一句正能量前言AI时代&#xff0c;云与PC结合为用户带来更好体验全新处理器&#xff0c;首次引入针对人工智能加速的NPU大模型时代&#xff0c;软硬结合带来更好训练成果后记 每日一句正能量 成长是一条必走的路路上我们伤痛在所难免。 前言 在2023年的英特尔On技…

【UML】第8篇 用例图(3/3)

目录 一、用例的关系 1.1 泛化&#xff08;Generalization&#xff09;关系 1.2 包含&#xff08;include&#xff09;关系 1.3 扩展关系 二、用例表示例 不是非要把电影改成连续剧&#xff0c;给大家播&#xff0c;确实是时间和精力有限。 用例图&#xff0c;虽然简单&…

一个网卡能设置(绑定)两个或多个IP

昨天领导问我&#xff0c;一个网卡设置两个IP。我就有点发愣&#xff1a;一个网卡能设置两个IP吗&#xff1f;我倒是见过一个机器插两个网卡&#xff0c;同时支持内网和外网。一个网卡设置两个IP&#xff0c;以谁为准&#xff1f; 上网搜索了一下&#xff0c;还真可以&#xff…

MySQL——基础篇

学习视频链接&#xff1a;https://www.bilibili.com/video/BV1Kr4y1i7ru/?spm_id_from333.999.0.0&vd_source619f8ed6df662d99db4b3673d1d3ddcb 前言✴️ 基础篇——MySQL概述、SQL、函数、约束、多表查询、事务 进阶篇——存储引擎、索引、SQL优化、视图/存储过程/触发…

Spring Boot3通过GraalVM生成exe执行文件

一、安装GraalVM 1、官网&#xff1a;https://www.graalvm.org/downloads/ 2、配置环境变量 2.1、环境变量必须使用JAVA_HOME&#xff0c;否则会出现问题 2.2、在系统变量配置Path,%JAVA_HOME%\bin&#xff0c;注意必须放在顶部第一位 2.3、配置jdk的环境变量&#xff0c;在P…

vue的语法模板与数据绑定的说明

vue的两大模板语法&#xff1a; 1.插值语法 2.指定语法 插值语法&#xff1a;{{}} 功能&#xff1a;用于解析标签体的内容 写法&#xff1a;{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性 指定语法&#xff1a; 功能:用于解析标签(包括:标签属性、标…