当前位置: 首页 > news >正文

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。

《------往期经典推荐------》

项目名称
1.【YOLO模型实现农作物病虫害虫识别带GUI界面】
2.【卫星图像道路检测DeepLabV3Plus模型】
3.【GAN模型实现二次元头像生成】
4.【CNN模型实现mnist手写数字识别】
5.【fasterRCNN模型实现飞机类目标检测】
6.【CNN-LSTM住宅用电量预测】
7.【VGG16模型实现新冠肺炎图片多分类】
8.【AlexNet模型实现鸟类识别】
9.【DIN模型实现推荐算法】
10.【FiBiNET模型实现推荐算法】
11.【钢板表面缺陷检测基于HRNET模型】

摘 要

本文探讨了利用卷积神经网络(CNN)和UNet模型对脑肿瘤MRI图像进行精确分割的方法。论文中不仅深入分析了CNN和UNet的基础框架,还引入了注意力机制和Transformer模块,通过这些先进的技术,使得模型在处理脑肿瘤MRI图像分割任务时具有更高的效率和精度。这种模型的优化提高了图像分割的速度、精度和质量,极大地减轻了临床医生的工作负担,降低了误诊率。通过提高分割准确性,本研究加强了对脑肿瘤患者的筛查、诊断和预测能力,从而有助于提高患者的生存率。这一研究成果不仅对医学图像处理领域具有重要的理论意义,也具有显著的实际应用价值。

关键词:UNet模型、脑肿瘤、图像分割


Abstract

In this thesis, the author explores methods for precise segmentation of brain tumor MRI images using Convolutional Neural Networks (CNN) and the UNet model. The thesis not only delves into the basic frameworks of CNN and UNet but also incorporates attention mechanisms and Transformer modules. Through these advanced technologies, the model achieves higher efficiency and accuracy in handling brain tumor MRI image segmentation tasks. The optimization of this model enhances the speed, precision, and quality of image segmentation, significantly reducing the workload of clinicians and lowering the rate of misdiagnosis. By improving segmentation accuracy, this research strengthens the screening, diagnosis, and prognosis capabilities for brain tumor patients, thereby helping to increase patient survival rates. The findings of this study hold significant theoretical importance in the field of medical image processing and offer substantial practical application value.

Key words: UNet model、brain tumor、image segmentation.

目 录

摘 要I

AbstractII

目 录I

第1章 绪论1

1.1 选题背景1

1.2 选题意义3

1.3 主要内容4

1.4 预期目标4

1.5 拟解决的关键问题5

第2章 系统方案设计6

2.1、技术路线图6

2.2、系统方案7

第3章 系统详细设计9

3.1、数据处理9

(4)训练与测试数据集的划分10

(5)数据加载器的配置10

3.2、模型训练11

(1) 环境配置与数据加载11

根据计算资源的可用性,代码首先配置计算设备,优先使用CUDA(NVIDIA的并行计算架构),若不可用则回退到CPU。12

(5)训练与评估12

  1. 执行训练13

3、模型运行结果:13

参考文献17

附录A:源代码20

第1章 绪论

  1. 选题背景

脑肿瘤是神经系统中常见的疾病之一,也称为颅内肿瘤,对人类神经系统的功能有很大的危害。一般分为原发和继发两大类。原发性肿瘤可发生于脑组织、脑膜、颅神经、垂体、血管残余胚胎组织等。继发性肿瘤则指身体其它部位的恶性肿瘤转移或侵入颅内形成的转移瘤。

近年来,脑肿瘤发病率呈上升趋势,据统计,脑肿瘤约占全身肿瘤的5%,占儿童肿瘤的70%,而其它类型的恶性肿瘤最终会有20-30%转入颅内,由于其膨胀的浸润性生长,在颅内一旦占据一定空间时,不论其性质是良性还是恶性,都势必使颅内压升高,压迫脑组织,导致中枢神经损害,危及患者生命。根据国家卫健委发布的《脑胶质瘤诊疗指南 》中数据显示,2022年世界脑胶质瘤发病率为5.48/10万,脑恶性肿瘤年病死率为4.37/10万,对人类的健康造成了很大的威胁。

(2)MRI技术优势

磁共振成像(magnetic resonance imaging,MRI)是继CT之后的又一种高敏感度的检查方法,因其具有无放射线损害、多体位(矢状面、冠状面、横断面)扫描、高度软组织对比及无骨性伪影的特点,已经成为了现代医疗领域中诊断脑肿瘤的重要手段。通过T1、T2、T1ce和Flair 4种MRI扫描序列,对脑肿瘤进行分割辨别,可以观察分析肿瘤的大小、形状和边界特征,根据得到的信息,有助于判断肿瘤的类型以及预测后续生长方式,可以为患者的治疗制定更加合适的方案,而且早期的筛查和诊断也能够有效提高脑肿瘤患者的存活率。

(3)脑肿瘤MRI分割现状

而由于脑肿瘤的多样化、图像噪点和病灶形态各异等,其MRI图像分割最初依靠机器学习方法进行手工特征提取,如Atlas、决策森林、条件随机场等,所以寻求方法精准的医学图像分割是一大难题。目前临床上绝大多数的分割工作还是由医生进行手动标注,劳动强度大,并且过于依赖医生经验,效率不高,极易受个体差异影响。所以许多国内外研究人员对脑肿瘤MRI的深度学习技术做了大量的探索和实践,以寻求一种快速、准确的MRI脑肿瘤分割方法,帮助医生快速确定病变范围,具有非常重要的现实意义。

(4)CNN和UNet研究现状

随着深度学习的发展,可以自动识别图像特征,深度神经网络逐渐成为脑肿瘤分割领域的主要方法,而作为人工智能领域的分支,卷积神经网络(convolutional neural network, CNN)模型善于通过深度学习对图像进行分析处理,其在医学中应用日益广泛。CNN具有鲁棒性、复杂程度低、易于训练等特点,在图像优化过程中可以通过减少参数来进行学习。

UNet作为医学图像语义分割领域中最受欢迎的深度学习框架,同时也是应用广泛的分割模型。其基于对称的收缩路径和扩展路径并在两个路径之间使用跳跃连接构成体系结构,其衍生的多种变体在解决图像到图像的映射任务中有显著效果。融入Transformer模块的UNet变体SwinUNETR可以对3D图像可以进行自我监督的预训练,无需从头开始训练权重,简单的微调操作即可实现更高的精度和更快的收敛速度。而融入了入坐标注意力(coordinate attention,CA)机制的UNet变体可以从三个维度聚合特征以应对 3D MRI图像复杂的特点。

  1. 选题意义

基于以上叙述,本文提出基于CNN和UNet,并于UNet中引入注意力机制和Transformer模块,彼此进行互补,构建一个在脑肿瘤MRI图像分割领域的训练模型,使其具有更好的数据处理能力,可以提高脑肿瘤MRI图像分割的速度、精度和质量,减轻临床工作的负担并降低错误率,从而加强对脑肿瘤患者的筛查、诊断和预测能力,提高患者的存活率。

  1. 主要内容

    1. MR成像原理及其脑肿瘤MRI特征: 根据不同类型脑肿瘤其MR信号不同的特点,由此来进行特征提取并进一步识别分割;
    2. 卷积神经网络的应用: 卷积神经网络善于通过深度学习对图像进行分析处理,具有鲁棒性、复杂程度低、易于训练等特点,在图像优化过程中可以通过减少参数来进行学习;
    3. UNet及其变体的应用: UNet其衍生的多种变体在解决图像的映射任务中有显著效果,如SwinUNETR可以对3D图像可以进行自我监督的预训练;
    4. 设计并实现训练模型方案: 学习如何基于Pytorch平台融合CNN和UNet变体来创建一个可行的训练模型,并对数据集进行变换处理;
    5. 模型评估及可行性分析: 基于Dice Score、IoU和Hausdorff距离三个指标来对训练模型进行评价,查看不足并判断其优良性。
  1. 预期目标

利用CNN和UNet网络模型,构建一个在脑肿瘤MRI图像分割领域的训练模型,使其具有更好的分割能力,可以提高脑肿瘤MRI临床上分割的速度、精度和质量,加强对脑肿瘤患者的早期筛查、临床诊断和发展预测能力,提高患者的存活率

  1. 拟解决的关键问题

    1. 图像分割精度不佳
    2. 预处理:降噪,图像增强;
    3. 损失函数选择:CEL-Dice los,结合了交叉熵损失的稳定性和类不平衡不影响Dice loss的特性,拥有两者的优点。
    4. 过拟合,泛化能力不足
    5. 使用更多的数据进行训练;
    6. 数据增强:应用数据增强来人为地增加数据集的大小;
    7. 正则化:防止参数过大,过分拟合,以提高泛化能力。
    8. 边缘问题
    9. 提高输入图像的分辨率和中间层的分辨率;
    10. 对网络输出的分割边界增加额外损失;网络边界特征和区域内部特征分开建模训练。
  2. 系统方案设计

2.1、技术路线图

在这里插入图片描述

2.2、系统方案

  1. 设置数据集和预处理: 从国际医学图像计算和计算机辅助干预协会(Medical Image Computing and Computer Assisted Intervention Society,MICCAI)获取相关数据集BraTS,将其训练集以8:1:1的比例划分出新的训练集、验证集和测试集作为模型的训练数据,并对数据进行预处理;

  2. 定义图像的变换处理: 为训练和验证定义图像的变换处理,对输入图像进行规范化处理,转换图像、数组形状或标签,之后进行数据加载,分批发送给训练循环并进行相应转换;

  3. 创建训练循环: 搭建神经网络模型(CNN)并联合损失函数和优化器计算模型误差,以更新模型的参数并最小化损失函数;

  4. 绘制损失和精度曲线: 训练曲线可以表示模型的学习性能,验证曲线可以体现模型的泛化性;
    在这里插入图片描述

  5. 评估网络模型: 通过Dice Score、IoU和Hausdorff距离三个指标来对模型进行评价,其中Dice Score、IoU是衡量两个集合的重合程度,是判断预测区间与Ground truth符合程度的主要指标,但是Dice Score倾向于平均表现,而IoU则帮助你理解最坏情况下的表现,Hausdorff距离则是度量两个点集间的距离,判断预测边缘与真实边缘的差距;

    在这里插入图片描述
    在这里插入图片描述

  6. 可行性分析: 将模型得出的结果与传统的分割方法进行对比,从而证明选择的算法和模型在脑肿瘤MRI分割领域的可行性以及优良性。

第3章 系统详细设计

3.1、数据处理

(1)数据集准备与预处理

本文定义了数据集的根目录 kaggle_3m。通过遍历此目录,获取所有子目录,每个子目录包含了具体病例的MRI图像及对应的病灶掩膜文件。代码通过分析文件名区分原始MRI图像与掩膜图像,将它们分别存储于 data_img(原始图像列表)和 data_label(掩膜图像列表)中。图像与掩膜对应关系确认。


为确保每个MRI图像与其对应的掩膜图像匹配,代码通过文件名匹配方法(去除文件名中的“mask”标记),重新整理图像和掩膜的对应关系。


(2) 筛选具有病灶的MRI数据

通过检查每个掩膜图像的最大像素值,只有当掩膜图像中存在非零像素(即至少有一处病灶标记)时,才将该MRI图像及其掩膜纳入最终的数据列表 data_newimg 和 data_newlabel 中。这一步骤确保了训练数据的有效性,即所有选用的数据都具有实际的训练价值。


(3) 图像数据的变换

为了统一输入神经网络的数据格式,所有的MRI图像及掩膜图像都被转换为统一的尺寸(256x256像素)并转化为张量格式。这一处理步骤通过 transforms.Compose 实现,包括调整大小和转换为张量的操作。


定义了一个名为 BrainMRIdataset 的类,继承自 torch.utils.data.Dataset。此类重写了 getitemlen 方法,使其可以作为PyTorch数据加载器(DataLoader)的输入。在 getitem 方法中,同时读取图像文件和掩膜文件,并应用预定义的转换,最终返回一对处理后的图像和掩膜张量。


(4)训练与测试数据集的划分


代码中预设了一个变量 s 用于定义训练数据集和测试数据集的划分阈值。前1000对图像和掩膜用于训练,剩余的用于测试。这样的划分帮助模型在训练过程中进行有效学习,同时留出独立的测试集评估模型的泛化能力。


(5)数据加载器的配置


使用 DataLoader 来批量加载数据,为训练和测试过程提供支持。训练数据加载器和测试数据加载器分别设定了批量大小为4,且训练数据加载器启用了数据洗牌功能以增强模型的泛化能力。


3.2、模型训练

在这里插入图片描述

使用PyTorch框架和Segmentation Models PyTorch库实现的深度学习模型,旨在通过MRI图像进行脑部病变区域的分割。本模型使用了具有预训练权重的U-Net网络,进行图像分割任务的训练和评估。


  1. 环境配置与数据加载


根据计算资源的可用性,代码首先配置计算设备,优先使用CUDA(NVIDIA的并行计算架构),若不可用则回退到CPU。


(2)数据集实例化

通过自定义的BrainMRIdataset类,分别实例化训练数据和测试数据集。数据加载器(DataLoader)配置为每批处理4幅图像,并在训练过程中打乱图像顺序以增强模型的泛化能力。


(3) 模型定义

采用Unet网络架构,选择resnet34作为编码器,并初始化编码器权重为ImageNet上的预训练权重。模型输入通道设置为3(适用于RGB图像),输出通道设置为2,对应于图像的背景和病变区域。


(4)损失函数与优化器

定义交叉熵损失函数用于评估模型的预测与实际标签之间的差异。选择Adam优化器,并设置学习率为0.0001,以优化网络权重。


(5)训练与评估


定义train_epoch函数,负责单个训练周期的执行。函数内部包含对训练数据集的迭代处理,每次迭代中执行前向传播、损失计算、梯度清零、反向传播和权重更新。此外,函数还计算每个批次的交并比(IOU),以评估模型对图像分割任务的准确性。

(6)测试与性能记录

在每个训练周期结束后,函数切换模型至评估模式,使用测试数据集进行性能评估,计算损失值、准确率和IOU。性能指标包括训练损失、训练准确率、测试损失、测试准确率和测试IOU。


(7) 权重保存

在每个训练周期结束时,模型权重被保存至指定目录,以便后续的模型评估或继续训练使用。


(8)执行训练


在脚本的主体部分,设置训练周期数并调用train_epoch函数进行模型训练。每个周期结束后,打印出相应的训练和测试性能指标。


3.3、模型运行结果

epoch: 0 loss: 0.039 accuracy: 0.827 IOU: 0.223 test_loss: 0.066 test_accuracy: 0.981 test_iou: 0.413

epoch: 1 loss: 0.016 accuracy: 0.983 IOU: 0.507 test_loss: 0.039 test_accuracy: 0.988 test_iou: 0.62

epoch: 2 loss: 0.01 accuracy: 0.989 IOU: 0.662 test_loss: 0.029 test_accuracy: 0.989 test_iou: 0.669

epoch: 3 loss: 0.008 accuracy: 0.99 IOU: 0.701 test_loss: 0.021 test_accuracy: 0.992 test_iou: 0.751

epoch: 4 loss: 0.006 accuracy: 0.991 IOU: 0.729 test_loss: 0.017 test_accuracy: 0.991 test_iou: 0.703
在这里插入图片描述
在这里插入图片描述


致 谢

在这段令人难忘的学术旅程结束之际,我衷心感谢所有在这一过程中给予我支持和帮助的人。首先,我必须感谢我的导师,他不仅在学术上提供了宝贵的指导,还在生活上给予我无限的鼓励和支持。他的专业知识和细心指导使我能够顺利完成这项研究。

感谢实验室的同事们,他们的友好合作和宝贵意见极大地丰富了我的研究经验。我们共同度过了无数日夜,共同解决问题,分享研究心得,这些都是我宝贵的回忆。

我还要感谢我的家人,特别是我的父母,他们始终相信我,支持我追求学术梦想。在我遇到困难和挑战时,是他们给了我力量和勇气,使我能够坚持到最后。

此外,我还要感谢所有参与和支持这项研究的资助机构和合作伙伴。没有他们的财政和技术支持,这项研究不可能达到如此高的成就。

最后,感谢所有参与论文审阅和提供建议的专家学者。他们的严谨态度和有价值的反馈帮助我在研究过程中不断进步和完善。

再次感谢所有人的支持和帮助,我将这份成就献给你们,同时期待未来能与大家继续合作,共创佳绩。


参考文献

  1. 褚张晴,钟志强,颜子夜,等. 基于特征融合与注意力机制的脑肿瘤分割算法[J]. 计算机工程,2023,49(10):154-161. DOI:10.19678/j.issn.1000-3428.0066311.
  2. 戴天虹,宋洁绮. 基于多编码器的多模态MRI脑肿瘤分割[J]. 计算机科学,2023,50(z1):509-514. DOI:10.11896/jsjkx.220200108.
  3. 高曦,谢希,王文韬. MRI深度学习在膝关节骨性关节炎中的研究进展[J]. 磁共振成像,2023,14(6):192-197. DOI:10.12015/issn.1674-8034.2023.06.035.
  4. 徐光宪,冯春,马飞.基于UNet的医学图像分割综述[J].计算机科学与探索,2023,17(8):1776-1792
  5. 徐京瑶,刘晓民,张新峰,等. 基于MRI增强的乳腺癌肿瘤三维体积人工智能测量技术的研究进展[J]. 磁共振成像,2023,14(9):148-153. DOI:10.12015/issn.1674-8034.2023.09.027.
  6. 魏颖,林子涵,齐林,李伯群.基于空间自注意力机制和深度特征重建的脑MR图像分割方法[J].东北大学学报:自然科学版,2023,44(2):177-185
  7. 刘维肖,方进,王莹,等. 生成对抗式网络在心脏磁共振中的应用[J]. 磁共振成像,2023,14(6):139-144. DOI:10.12015/issn.1674-8034.2023.06.025.
  8. 张付春,李盟,吴凉,王玉文,吴樾.融合纹理特征和注意力机制的异常脑MRI分割方法[J].印刷与数字媒体技术研究,2023(4):203-211
  9. 毋小省,杨奇鸿,唐朝生,孙君顶.融合注意力机制的多模态脑肿瘤MR图像分割[J].计算机辅助设计与图形学学报,2023,35(9):1429-1438
  10. 周煜松,陈罗林,王统,徐胜舟.基于双重注意力机制和迭代聚合U-Net的脑肿瘤MR图像分割方法[J].中南民族大学学报:自然科学版,2023,42(3):373-381
  11. 葛婷,詹天明,李勤丰,牟善祥.基于核磁共振图像的脑肿瘤分割方法研究[J].南京理工大学学报,2021,45(2):179-188
  12. 申璐璐,于慧华,周春艳,李可,刘林栋.基于级联卷积神经网络的前列腺MR图像自动分割算法研究[J].中国医学装备,2023,20(7):1-5
  13. 叶正洁,王玉涛,徐建,金炜.基于结合Transformer和卷积神经网络的生成对抗网络在磁共振成像中分割胎盘组织[J].宁波大学学报:理工版,2023,36(1):22-34
  14. 李健,罗蔓,罗晓,蓝威,周怀恒,陈荣耀.基于多尺度卷积神经网络的磁共振成像脑肿瘤分割研究[J].中国医学装备,2016,13(2):25-28
  15. 黄坚,余卓,徐璐,周海春,俞刚.基于卷积神经网络的儿童病毒性脑炎磁共振影像分类与早期诊断研究[J].磁共振成像,2023,14(1):54-60
  16. 樊小宇,蔺素珍,王彦博,刘峰,李大威.基于残差图卷积神经网络的高倍欠采样核磁共振图像重建算法[J].计算机应用,2023,43(4):1261-1268
  17. 蒋可欣,张晓东.基于半月板MRI的深度学习研究进展[J].放射学实践,2023,38(9):1222-1226
  18. 张剑,李光辉,胡艳,戴梦莹,吕发金.磁共振成像子宫及子宫肌瘤图像分割方法研究进展[J].中国医疗器械信息,2023,29(13):46-48
  19. 胡晓阳,李哲.基于卷积神经网络和Transformer的肝脏CT图像分割方法[J].中国医学物理学杂志,2023,40(4):423-428

👍感谢小伙伴们点赞、关注! 如有其他项目需求的,可以在评论区留言,抽空制作更新!
✌粉丝福利:点击下方名片↓↓↓ 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。

相关文章:

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【YOLO模型实现农作物病虫害虫识别带GUI界面】 2.【卫星图像道路检测DeepLabV3P…...

[java][基础]HTTPTomcatServlet

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…...

【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)

本文项目编号 T 037 ,文末自助获取源码 \color{red}{T037,文末自助获取源码} T037,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

【单片机】深入剖析USART与UART的区别

在嵌入式系统和微控制器开发中,串行通信是一个非常关键的概念,涉及到不同设备之间的数据传输。常见的串行通信协议包括UART(Universal Asynchronous Receiver/Transmitter)和USART(Universal Synchronous/Asynchronous…...

‌Linux tac命令‌

‌Linux tac命令‌是一个用于逆序显示文件内容的工具,其名称来源于“cat”的反向拼写。tac命令的基本功能是将文件的内容从最后一行开始输出,直到第一行结束,这与cat命令的功能相反,cat命令是从第一行开始输出直到最后一行。 tac…...

从简单的demo开始让您逐步了解GetX的用法

目录 前言 一、从demo开始体现下Getx的用法 二、从最简单的功能开始 1.新建一个Flutter工程 2.GetX初体验 1.路由跳转 1.普通路由跳转 2.跳转并从堆栈中销毁当前页面 3.跳转并销毁之前所有页面 4.跳转以及传值 2.更方便的实现SnackBar、Dialog、BottomSheet 三、Ge…...

JAVA的动态代理

Java 动态代理是 Java 语言中一项强大的特性,它允许在运行时动态地创建符合一组接口的代理类。这种机制广泛应用于各种框架和工具中,如 Spring AOP、Hibernate 数据查询、Mockito 测试框架等。通过动态代理,可以在不修改原有代码的前提下&…...

「图文详解」Pycharm 远程服务器Debug

首先声明一点,社区版的无法使用,需要使用 专业版Pycharm 才可以使用,至于密钥可以去TB购入,价格低廉、有效期长 相信很多小伙伴会面临本地电脑显存不够,但是服务器代码又无法直观的调试,只能靠打日志的方法…...

Golang反射在实际开发中的应用场景

Golang反射在实际开发中的应用场景 当然可以,以下是一些使用Go语言反射的实际开发场景: 1. 通用处理函数 当你需要编写一个函数,它可以处理不同类型的参数时,反射可以让你在运行时检查和操作这些参数。 示例代码: …...

【二叉树】C非递归算法实现二叉树的先序、中序、后序遍历

引言: 遍历二叉树:指按某条搜索路径巡访二叉树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。 除了层次遍历外,二叉树有三个重要的遍历方法:先序遍历、中序遍历、后序遍历。 1、递归算法实现先序、中序、后…...

Android——事件冲突处理

当我们给列表的item设置了点击事件后&#xff0c;又给item中的按钮设置了点击事件&#xff0c;此时item的点击事件会失效。 解决 给item的布局xml中设置以下属性 android:descendantFocusability"blocksDescendants"<LinearLayout xmlns:android"http://sc…...

vue + elementui 全局Loading效果

注&#xff1a;在request请求和响应封装的文件里引入loading&#xff0c;发请求时打开loading&#xff0c;响应时关闭loading&#xff0c;这样每个接口调用时都会有loading效果 &#xff08;1&#xff09; 首先确保项目中安装了element-ui这个依赖包 npm i element-ui -S&…...

深度了解flink(十) JobManager(4) ResourceManager HA

ResourceManager&#xff08;ZK模式&#xff09;的高可用启动流程 ResourceManager启动流程在DefaultDispatcherResourceManagerComponentFactory#create中 public DispatcherResourceManagerComponent create(Configuration configuration,ResourceID resourceId,Executor i…...

【万兴科技-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

Android启动流程_Zygote阶段

前言 上一篇文档中我们描述了 Android 启动中的 init 启动部分&#xff0c;本片文档将会继续 Android 启动流程的逻辑&#xff0c;继续梳理 Zygote 部分功能。 说明框架 对于 Zygote 进程&#xff0c;要从以下框架说明&#xff1a; 第一点&#xff0c;编译&#xff0c;zygo…...

2022NOIP比赛总结

种花 1.本题是一道前缀和优化加上枚举的问题。先考虑 C 因为 F 是 C 下边随便加一个点&#xff0c;所以只要求出 C 就求出了 F 。 注意到&#xff0c;并没有要求上下行一样&#xff0c;唯一的要求是 C 的两个横要隔一行&#xff0c;这就是问题的突破点&#xff0c;这题很明显…...

Leetcode 排序链表

这段代码的算法思想是 归并排序&#xff0c;一种适合链表的排序方法。它通过递归地将链表拆分成两部分&#xff0c;分别排序&#xff0c;然后合并已排序的部分&#xff0c;从而达到整体排序的目的。以下是代码的中文解释&#xff1a; 算法步骤&#xff1a; 找到链表的中点&…...

哈希函数简介

哈希函数是一种将任意大小的数据输入&#xff08;通常称为“消息”&#xff09;转换为固定大小的输出&#xff08;称为“哈希值”或“摘要”&#xff09;的算法。 主要特点&#xff1a; 1、输出固定长度 无论输入数据的大小如何&#xff0c;哈希函数的输出总是固定长度。例如…...

nginx------正向代理,反向代理生产,以及能否不使用代理详解

在生产环境中&#xff0c;选择使用正向代理还是反向代理取决于具体的应用场景和需求。下面详细解释这两种代理的用处以及为什么在不同情况下会选择它们。 正向代理 (Forward Proxy) 用途 匿名访问&#xff1a; 隐藏客户端的真实 IP 地址&#xff0c;提供隐私保护。常用于绕过…...

iptables限制docker端口禁止某台主机访问(使用DOCKER链和raw表的PREROUTING链)

背景&#xff1a; 在Linux上docker映射了端口&#xff0c;想着对服务端口进行限制指定IP访问&#xff0c;发现在filter表的INPUT链限制无效 环境&#xff1a; 主机192.168.56.132上的docker容器部署了nginx并将容器80端口映射到主机8000端口 [rootlocalhost ~]# docker ps …...

【VM实战】VMware迁移到VirtualBox

VMware 虚拟机开机卸载VMware Tools 调整虚拟磁盘 对于Windows 10及以上的虚拟机&#xff0c;一般VMware默认都会选Nvme固态硬盘。在导出前必须将其改为SATA&#xff0c;否则VirtualBox导入会报Appliance Import错误 (E_INVALIDARG 0x80070057) 先删掉当前盘的挂载&#xff…...

Android WebView加载不到cookie

以下配置根据需求酌情添加&#xff0c;建议逐个试验&#xff0c;cookie操作不是内存操作&#xff0c;建议修改配置后卸载app再重新运行防止缓存影响测试结果。 1.设置应用程序的 WebView 实例是否应发送并接受 Cookie CookieManager cookieManager CookieManager.getInstanc…...

c++qt

1.显示画布 #include "code.h" #include <QtWidgets/QApplication> #include<iostream> #include<vector> #include <QWindow> #include <QGraphicsView> #include <QGraphicsScene>using namespace std;//1.空格 2.墙 3.入口…...

零跑汽车嵌入式面试题汇总及参考答案

C++ 的三大特性是什么? C++ 的三大特性分别是封装、继承和多态。 封装 概念:封装是把数据和操作数据的函数绑定在一起,对数据的访问进行限制。通过将数据成员声明为私有或保护,只允许通过公共的成员函数来访问和修改数据,从而隐藏了类的内部实现细节。这有助于提高代码的安…...

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接&#xff1a;https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题&#xff0c;贪心解法真的非常妙&#xff0c;参考下面题解&#xff1a;https://leetcode.cn/problems/wiggle…...

ubuntu交叉编译dbus库给arm平台使用

1.下载dbus库源码 https://www.freedesktop.org/wiki/Software/dbus 克隆源码: https://gitlab.freedesktop.org/dbus/dbus/-/tree/dbus-1.12?ref_type=heads 下载1.12.20版本: 指定pkgconfig环境变量: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PWD/../expat-2.3.…...

ansible开局配置-openEuler

ansible干啥用的就不多介绍了&#xff0c;这篇文章主要在说ansible的安装、开局配置、免密登录。 ansible安装 查看系统版本 cat /etc/openEuler-latest输出内容如下&#xff1a; openeulerversionopenEuler-24.03-LTS compiletime2024-05-27-21-31-28 gccversion12.3.1-30.…...

连锁收银系统的优势与挑战

在快速发展的零售环境中&#xff0c;连锁收银系统不仅是收银的工具&#xff0c;更是现代零售管理的重要组成部分。它在提升效率、优化客户体验以及数据管理等方面发挥了关键作用。然而&#xff0c;随着技术的进步和市场环境的变化&#xff0c;连锁收银系统也面临着诸多挑战。本…...

轻型民用无人驾驶航空器安全操控理论培训知识总结-多旋翼部分

航空器知识 螺旋桨 螺旋桨为多旋翼民用无人驾驶航空器提供升力,多旋翼民用无人驾驶航空器通过飞控系统控制电机调节螺旋桨转速,来实现飞行。 天线 多旋翼民用无人驾驶航空器的图像传输以及遥控控制信号,主要是通过无线信道进行的,靠民用无人驾驶航空器与遥控器的天线传…...

springboot092安康旅游网站的设计与实现(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 基于JSP的安康旅游网站的设计与实现 姓  名 学  号 院  系 专  业 指导老师 2021 年 月 教务处制 目 录 目 录 摘 要 Abstract 第一章 绪论 1.1 研究现状 1.2 设…...