在这里插入图片描述

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,qt,python等,具备多种混合语言开发能力。撰写博客分享知识,致力于帮助编程爱好者共同进步。欢迎关注、交流及合作,提供技术支持与解决方案。\n技术合作请加本人wx(注明来自csdn):xt20160813

支持向量机(SVM)在肝脏CT/MRI图像分类(肝癌检测)中的应用及实现

支持向量机(SVM)在肝脏CT/MRI图像分类(肝癌检测)中的应用因其对高维数据和小样本场景的优异性能,在医学影像领域具有重要价值。本文将深入探讨SVM在肝癌检测中的实现,聚焦于肝脏CT/MRI图像分类,以LiTS(Liver Tumor Segmentation Benchmark)3DIRCADb数据集为例,全面覆盖概念、原理、实现细节、优化技巧及可视化分析,并辅以流程图。


一、肝癌检测任务概述

1.1 任务背景

肝癌(包括原发性肝细胞癌和转移性肝癌)是全球主要的癌症死亡原因之一。CT和MRI是肝癌诊断的主要影像学手段,SVM在以下任务中表现出色:

  • 二分类:区分正常肝脏与肝癌病变。
  • 多分类:识别肝癌分期(早期、晚期)或病变类型(原发性、转移性)。
  • 检测与分割结合:基于分割结果提取特征,输入SVM进行分类。

1.2 数据集介绍

  • LiTS(Liver Tumor Segmentation Benchmark)
    • 包含131例CT扫描,标注了肝脏和肿瘤区域。
    • 图像分辨率:512x512像素,切片厚度1-3mm。
    • 特点:包含多样化的肝癌病灶(大小、形状、位置差异大)。
  • 3DIRCADb
    • 包含20例CT和MRI图像,标注了肝脏、肿瘤及其他结构。
    • 特点:数据集规模小,适合小样本场景研究。
  • 任务目标:基于CT/MRI图像提取特征,使用SVM分类正常/异常或不同病变类型。

1.3 挑战

  • 高维特征:肝脏图像特征维度高(如纹理、形状特征)。
  • 样本稀缺:标注数据成本高,样本量有限。
  • 不平衡数据:正常肝脏样本远多于肿瘤样本。
  • 图像异质性:CT/MRI模态差异、患者解剖结构差异。
  • 噪声与伪影:CT图像中的噪声、MRI中的运动伪影。

二、SVM在肝癌检测中的核心原理

2.1 SVM核心思想

SVM通过寻找最优超平面,最大化两类样本的几何间隔,在高维特征空间中实现分类。对于肝癌检测,样本是图像特征(如纹理、形状),标签是“正常”或“异常”。

  • 函数间隔 γ ^ i = y i ( w T x i + b ) \hat{\gamma}_i = y_i(w^T x_i + b) γ^i=yi(wTxi+b),其中 w w w 是超平面法向量, b b b 是偏置, y i ∈ { − 1 , 1 } y_i \in \{-1, 1\} yi{1,1}
  • 几何间隔 γ i = γ ^ i ∥ w ∥ \gamma_i = \frac{\hat{\gamma}_i}{\|w\|} γi=wγ^i
  • 优化目标
    min ⁡ w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 \min_{w, b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 w,bmin21w2s.t.yi(wTxi+b)1

2.2 软间隔与正则化

肝脏图像常包含噪声或异常值,SVM引入软间隔,允许部分样本误分类:
min ⁡ w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ ξ i s.t. y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 \min_{w, b, \xi} \frac{1}{2}\|w\|^2 + C \sum \xi_i \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1 - \xi_i, \xi_i \geq 0 w,b,ξmin21w2+Cξis.t.yi(wTxi+b)1ξi,ξi0
其中, C C C控制模型复杂度和错误容忍度。

2.3 核技巧

肝癌特征通常非线性可分,SVM通过核函数将数据映射到高维空间。常用核函数:

  • RBF核 exp ⁡ ( − γ ∥ x i − x j ∥ 2 ) \exp(-\gamma \|x_i - x_j\|^2) exp(γxixj2),适合复杂非线性特征。
  • 线性核:适合高维稀疏特征。
  • 多项式核:适合特定几何特征。

2.4 对偶问题

通过拉格朗日乘子法将原始问题转为对偶问题:
max ⁡ α ∑ α i − 1 2 ∑ ∑ α i α j y i y j K ( x i , x j ) \max_{\alpha} \sum \alpha_i - \frac{1}{2} \sum \sum \alpha_i \alpha_j y_i y_j K(x_i, x_j) αmaxαi21αiαjyiyjK(xi,xj)
其中, α i > 0 \alpha_i > 0 αi>0的样本为支持向量,决定分类边界。


三、SVM在肝癌检测中的实现流程

以下是SVM在肝脏CT/MRI图像分类中的完整实现流程,结合LiTS数据集。

3.1 数据预处理

  • 图像标准化:将CT图像的Hounsfield单位归一化到[0, 1],MRI图像进行强度归一化。
  • 肝脏分割:使用U-Net或传统分割算法(如水平集)提取肝脏区域。
  • 数据增强:旋转、翻转、缩放增加样本多样性。
  • 病灶标注:基于LiTS提供的肿瘤掩膜,提取病灶区域。

3.2 特征提取

肝癌检测中常用的特征包括:

  • 纹理特征:灰度共生矩阵(GLCM,提取对比度、相关性)、局部二值模式(LBP)。
  • 形状特征:病灶的体积、表面面积、长短轴比。
  • 深度特征:使用预训练3D-CNN(如3D-ResNet)提取高维特征。

代码示例(提取GLCM特征):

import cv2
import numpy as np
from skimage.feature import graycomatrix, graycopropsdef extract_glcm_features(image):"""提取灰度共生矩阵(GLCM)特征参数:image: 肝脏CT/MRI切片(灰度图)返回:特征向量(对比度、相关性、能量、同质性)"""# 转换为灰度图并量化到256级gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)gray = (gray / gray.max() * 255).astype(np.uint8)# 计算GLCMglcm = graycomatrix(gray, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256)# 提取特征features = []for prop in ['contrast', 'correlation', 'energy', 'homogeneity']:feature = graycoprops(glcm, prop).ravel()features.append(feature)return np.hstack(features)# 加载LiTS数据集(假设已分割肝脏区域)
images = [...]  # 肝脏CT/MRI切片列表
labels = [...]  # 标签:0(正常),1(肝癌)
features = [extract_glcm_features(img) for img in images]

3.3 数据标准化与不平衡处理

  • 标准化:对特征进行均值-方差归一化。
  • 不平衡处理:使用SMOTE过采样或调整类权重。

代码示例

from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import SMOTE# 特征标准化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)# SMOTE过采样
smote = SMOTE(random_state=42)
features_resampled, labels_resampled = smote.fit_resample(features_scaled, labels)

3.4 SVM模型训练

使用RBF核SVM,通过网格搜索优化参数 (C) 和 (\gamma)。

代码示例

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.metrics import classification_report, confusion_matrix# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features_resampled, labels_resampled, test_size=0.2, random_state=42
)# 定义SVM模型
svm = SVC(kernel='rbf', probability=True)# 网格搜索优化参数
param_grid = {'C': [0.1, 1, 10, 100],'gamma': ['scale', 'auto', 0.001, 0.01, 0.1]
}
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='f1', n_jobs=-1)
grid_search.fit(X_train, y_train)# 输出最佳参数和分数
print("最佳参数:", grid_search.best_params_)
print("最佳F1分数:", grid_search.best_score_)# 使用最佳模型预测
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)# 评估模型
print("测试集分类报告:\n", classification_report(y_test, y_pred))
print("混淆矩阵:\n", confusion_matrix(y_test, y_pred))

3.5 决策边界与支持向量可视化

对于高维特征,使用PCA降维到2D以可视化决策边界。

代码示例

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA# 降维到2D
pca = PCA(n_components=2)
features_2d = pca.fit_transform(features_resampled)# 训练2D SVM
svm_2d = SVC(kernel='rbf', C=grid_search.best_params_['C'], gamma=grid_search.best_params_['gamma'])
svm_2d.fit(features_2d, labels_resampled)# 创建网格
x_min, x_max = features_2d[:, 0].min() - 1, features_2d[:, 0].max() + 1
y_min, y_max = features_2d[:, 1].min() - 1, features_2d[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))# 计算决策函数
Z = svm_2d.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)# 绘制决策边界和支持向量
plt.contourf(xx, yy, Z, levels=[-1, 0, 1], alpha=0.4, colors=['#FF9999', '#99FF99'])
plt.scatter(features_2d[:, 0], features_2d[:, 1], c=labels_resampled, cmap='coolwarm', edgecolors='k', s=50)
plt.scatter(features_2d[svm_2d.support_, 0], features_2d[svm_2d.support_, 1], s=100, facecolors='none', edgecolors='black', label='Support Vectors')
plt.title('SVM Decision Boundary for Liver Cancer Classification')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.legend()
plt.show()

可视化结果

  • 红色区域:肝癌类。
  • 绿色区域:正常类。
  • 黑色空心圆:支持向量,靠近决策边界的样本。

3.6 混淆矩阵可视化

混淆矩阵直观展示模型分类性能。

代码示例

import seaborn as sns# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Normal', 'Cancer'], yticklabels=['Normal', 'Cancer'])
plt.title('Confusion Matrix for Liver Cancer Classification')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()

混淆矩阵图表

{"type": "matrix","data": {"labels": ["Normal", "Cancer"],"datasets": [{"data": [[80, 5],   // TP, FP[3, 72]    // FN, TN],"backgroundColor": ["#99FF99","#FF9999","#FF9999","#99FF99"]}]},"options": {"title": {"display": true,"text": "Confusion Matrix for Liver Cancer Classification"},"scaleShowValues": true,"scales": {"xAxes": [{"scaleLabel": {"display": true,"labelString": "Predicted Label"}}],"yAxes": [{"scaleLabel": {"display": true,"labelString": "True Label"}}]}}
}

3.7 实现流程图

以下是SVM在肝癌检测中的完整流程:

原始CT/MRI图像
预处理: 标准化/增强
肝脏分割: U-Net/传统方法
特征提取: GLCM/形状/深度特征
特征标准化
不平衡处理: SMOTE/类权重
SVM模型训练
网格搜索优化C, γ
模型评估: F1/混淆矩阵
决策边界可视化
预测新影像

四、优化技巧与实践建议

4.1 处理不平衡数据

肝癌样本通常远少于正常样本,可采用以下方法:

  • 类权重调整
    svm = SVC(kernel='rbf', class_weight={0: 1, 1: 5})  # 肝癌类权重更高
    
  • SMOTE过采样(如前述代码)。
  • 代价敏感学习:在SVM目标函数中引入不同类别的误分类代价。

4.2 参数调优

  • C(惩罚系数):控制模型对错误的容忍度。建议测试 [0.1, 1, 10, 100]
  • γ(RBF核参数):控制决策边界曲率。建议测试 'scale''auto'[0.001, 0.01, 0.1]
  • 交叉验证:使用5折或10折交叉验证,确保模型泛化能力。

4.3 特征优化

  • 深度特征:使用3D-ResNet或VGG提取特征,提升复杂病灶的分类性能。
    from tensorflow.keras.applications import ResNet50
    from tensorflow.keras.preprocessing import image
    from tensorflow.keras.applications.resnet50 import preprocess_inputdef extract_cnn_features(img):img = image.img_to_array(img.resize((224, 224)))img = np.expand_dims(img, axis=0)img = preprocess_input(img)model = ResNet50(weights='imagenet', include_top=False)features = model.predict(img)return features.flatten()
    
  • 特征选择:使用L1正则化(如LinearSVC)筛选关键特征,降低维度。

4.4 多分类扩展

对于肝癌分期或类型分类,采用One-vs-Rest (OVR)One-vs-One (OVO)

svm_multi = SVC(kernel='rbf', decision_function_shape='ovr')
svm_multi.fit(features_scaled, labels_multi)  # labels_multi包含多类标签

4.5 大规模数据优化

  • 增量学习:使用 sklearn.svm.SVCpartial_fit 方法,逐步更新模型。
  • 并行计算:使用 joblib 并行化网格搜索:
    grid_search = GridSearchCV(svm, param_grid, cv=5, n_jobs=-1)
    

五、前沿进展与工业应用

5.1 SVM与深度学习结合

  • 深度特征提取:使用3D-CNN(如3D-ResNet、U-Net)提取肝脏病灶特征,SVM作为分类器。
  • 优势:结合深度学习的特征表达能力和SVM的小样本鲁棒性。
  • 示例:在LiTS数据集中,先用U-Net分割肝脏和肿瘤,再用SVM分类病灶类型。

5.2 增量式SVM

  • LS-SVM(最小二乘SVM):用等式约束代替不等式约束,加速训练。
  • 在线SVM:适合动态更新的医疗影像数据流。

5.3 工业应用场景

  • 临床辅助诊断:SVM模型集成到PACS系统,实时检测肝癌病灶。
  • 分期评估:辅助医生判断肝癌分期,指导治疗方案。
  • 多模态融合:结合CT和MRI特征,提升分类精度。

5.4 法规与可解释性

  • 法规合规:确保模型符合FDA/NMPA认证要求,需提供支持向量和决策边界的可解释性。
  • 支持向量分析:支持向量可用于分析关键病例(如典型肝癌特征)。

六、完整代码示例(基于LiTS数据集)

以下是基于LiTS数据集的完整SVM实现,涵盖预处理、特征提取、模型训练和评估。

import cv2
import numpy as np
from skimage.feature import graycomatrix, graycoprops
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import SMOTE
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns# 1. 特征提取(GLCM)
def extract_glcm_features(image):"""提取GLCM特征参数:image: 肝脏CT/MRI切片(灰度图)返回:特征向量(对比度、相关性、能量、同质性)"""gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)gray = (gray / gray.max() * 255).astype(np.uint8)glcm = graycomatrix(gray, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256)features = []for prop in ['contrast', 'correlation', 'energy', 'homogeneity']:feature = graycoprops(glcm, prop).ravel()features.append(feature)return np.hstack(features)# 2. 加载和预处理数据(假设已分割肝脏区域)
images = [...]  # 肝脏CT/MRI切片列表
labels = [...]  # 标签:0(正常),1(肝癌)
features = np.array([extract_glcm_features(img) for img in images])
labels = np.array(labels)# 3. 特征标准化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)# 4. 不平衡处理
smote = SMOTE(random_state=42)
features_resampled, labels_resampled = smote.fit_resample(features_scaled, labels)# 5. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features_resampled, labels_resampled, test_size=0.2, random_state=42
)# 6. 训练SVM模型
svm = SVC(kernel='rbf', probability=True)
param_grid = {'C': [0.1, 1, 10], 'gamma': ['scale', 0.01, 0.1]}
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='f1', n_jobs=-1)
grid_search.fit(X_train, y_train)# 7. 输出结果
print("最佳参数:", grid_search.best_params_)
print("最佳F1分数:", grid_search.best_score_)
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)
print("测试集分类报告:\n", classification_report(y_test, y_pred))# 8. 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Normal', 'Cancer'], yticklabels=['Normal', 'Cancer'])
plt.title('Confusion Matrix for Liver Cancer Classification')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()

七、总结与最佳实践

SVM在肝脏CT/MRI图像分类(肝癌检测)中的应用结合了传统特征(如GLCM)和深度特征(如3D-CNN),在小样本和高维数据场景下表现优异。最佳实践建议

  1. 预处理与分割:使用U-Net进行精确的肝脏和肿瘤分割。
  2. 特征选择:结合GLCM、形状特征和深度特征,提升分类性能。
  3. 不平衡处理:通过SMOTE或类权重调整,解决肝癌样本稀缺问题。
  4. 参数优化:网格搜索优化 (C) 和 (\gamma),确保模型泛化能力。
  5. 可视化分析:结合混淆矩阵和决策边界,评估模型性能和可解释性。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek扫雷游戏网页版HTML5(附源码)

用DeepSeek帮忙生成一个网页版的扫雷游戏,效果非常棒,基于HTML5实现,方便运行。 提示词prompt 帮我做一个网页版的 html5 扫雷游戏游戏功能说明 游戏难度: 1 简单:1010 格子,10个地雷 2 中等:16…

Day53GAN对抗生成网络思想

生成对抗网络(GAN)是深度学习领域的一种革命性模型,由Ian Goodfellow等人于2014年提出。其核心思想源于博弈论中的零和博弈,通过两个神经网络(生成器和判别器)的对抗性训练,实现数据的高质量生成…

meilisearch-轻量级搜索引擎

meilisearch是一款开源的轻量级搜索引擎,相比于elasticsearch等重量级搜索引擎,meilisearch注重数据搜索,从而而省去了其它不必要的功能(如支持聚合分析、分布式搜索等特性),以便于快速上手开发和构建应用。…

51c大模型~合集150

我自己的原文哦~ https://blog.51cto.com/whaosoft/14034001 #原来Scaling Law还能被优化 Meta这招省token又提效 2017 年,一篇《Attention Is All You Need》论文成为 AI 发展的一个重要分水岭,其中提出的 Transformer 依然是现今主流语言模型…

每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发

PWA 渐进式 Web 应用开发(离线缓存、桌面安装等) 🧠 一、什么是 PWA? PWA(Progressive Web App)是一种让 Web 应用具有类似原生 App 用户体验的技术体系。 PWA 不是一个框架,而是由一组浏览器 A…

音视频会议服务搭建(设计方案-两种集成方案对比)-03

前言在开始计划之前,查阅了不少资料。一种方案是 Go层做信令业务,nodejs层来管理和mediasoup的底层交互,通过客户端去调用Go层;第二种方案是 客户端直接调用nodejs层来跟mediasoup去交互; 最终,当然不出意料…

【小白】linux安装ffmpeg | java转码 【超详细】

前言 最近在开发过程中,发现当我们上传除了mp4以外的其他少见的格式,如 .flv .rmvb 格式的视频时,在前端在线播放的时候会播放不出来画面,所以 接下来,将要进行一个非常完美的工程,将视频格式转为.mp4 1.安…

一个简单的脚本,让pdf开启夜间模式

因为平常我比较喜欢晚上看面试题。 市面上很多的面试题pdf都是白色的晚上看的话非常的刺眼。 所以我本能的去互联网搜索看看有没有pdf转换为夜间模式的。 搜索了一段时间后发现并没有这种东西。于是我自己做了一个转换的python脚本。 import os import fitz # PyMuPDF from P…

Flink OceanBase CDC 环境配置与验证

一、OceanBase 数据库核心配置 1. 环境准备与版本要求 版本要求:OceanBase CE 4.0 或 OceanBase EE 2.2组件依赖:需部署 LogProxy 服务(社区版/企业版部署方式不同)兼容模式:支持 MySQL 模式(默认&#x…

c++对象池

【设计模式】其它经典模式-对象池模式(Object Pool Pattern)-CSDN博客 在C中,对象池(Object Pool)是一种管理对象生命周期的技术,旨在减少对象创建和销毁的开销,提高性能。对象池预先分配一定数…

JavaFX:Scene(场景)

简介 Scene对象是JavaFX场景图的根(root)。JavaFX 场景中包含所有可视的 JavaFX GUI 组件。JavaFX 场景由javafx.scene.Scene类表示。必须在 Stage(舞台)上设置 Scene 对象才能使其可见。在本 JavaFX Scene 教程中,将向您展示如何创建 Scene 对象并向其添加 GUI 组件。 创…

vue3.4中的v-model的用法~

1.首先以前我们针对父子组件传参是不是通过defineProps与defineEmits来实现的&#xff0c;但是这么比较繁琐&#xff0c;因为他是单向传参&#xff0c;而不是双向的&#xff0c;这里我们要介绍的是vue3.4的v-model来实现双向数据传递。 2、代码示例&#xff1a; //父组件 <…

nvm常用指令汇总

nvm是用来管理nodejs的&#xff0c;可以方便安装、切换、卸载当前环境的node版本。 以下是常用指令汇总&#xff1a;nvm list 查看本机已经安装的node版本。*表示当前系统正在使用的node版本nvm install xx.xx.x 后边加版本号&#xff0c;表示安装指定的版本nvm use xx.xx.x当前…

洛谷P5021 [NOIP 2018 提高组] 赛道修建【题解】【二分答案+树上贪心】

P5021 [NOIP 2018 提高组] 赛道修建 题意简述 给定一棵含 n n n 个点的无向带权树&#xff0c;求将其分裂为 m m m 条链后&#xff0c;最短的一条链的最大长度是多少&#xff1f; 点可以重复使用&#xff0c;边不可以重复使用。 思路 二分答案贪心判定貌似可以&#xff…

Portal认证过程杂谈

Portal认证模型简介 Portal认证模型通常由这四个设备组成 认证服务器即3A服务器&#xff0c;通常用radius服务器 接入设备通常就是NAC设备&#xff08;网络接入控制&#xff09; Portal服务器就是Portal认证的认证网站&#xff08;通常叫门户网站&#xff09; 认证过程简述…

ZSGuardian ---AI赋能,新一代研发管理守护平台 -即将上线

一场研发管理的革命 在数字化浪潮奔涌向前的今天&#xff0c;软件开发与产品研发的节奏不断加快&#xff0c;市场需求瞬息万变&#xff0c;技术迭代日新月异。对于研发团队而言&#xff0c;如何在复杂多变的环境中&#xff0c;高效地管理项目、保障产品质量、确保按时上线&…

小菜狗的云计算之旅,学习了解rsync+sersync实现数据实时同步(详细操作步骤)

Rsyncsersync实现数据实时同步 目录 Rsyncsersync实现数据实时同步 一、rsync概述 二、rsync运行原理 三、rsync部署 四、备份测试 五、使用非系统用户备份数据 5.1 rsync的配置文件介绍 5.2 配置备份目录 5.3 使用rsync用户备份测试 5.4 pull拉取数据 六、rsyncse…

牛客周赛Round 99(Go语言)

A题 (A.go) 思路总结: 这道题要求判断一个整数中是否包含连续的两个9。 核心思路是将输入的整数转换为字符串&#xff0c;然后遍历这个字符串&#xff0c;检查是否存在相邻的两个字符都是9。如果找到了&#xff0c;就立即停止遍历并输出"YES"&#xff1b;如果遍历完…

红外图像小目标检测热力图可视化系统

原创代码&#xff0c;可以工程修改含界面。

供应链管理:指标评估方式分类与详解

一、指标评估方式分类与详解 评估维度评估方式核心方法适用场景示例数据来源内部数据评估从企业ERP、MES、CRM等系统提取生产、财务、客户等数据。成本、效率、质量等内部管理指标评估。生产成本数据&#xff08;MES系统&#xff09;、客户满意度&#xff08;CRM系统&#xff…