2023年数维杯数学建模C题宫内节育器的生产求解全过程文档及程序

news2024/10/5 18:26:20

2023年数维杯数学建模

C题 宫内节育器的生产

原题再现:

  宫内节育器(IUD)是一种相对安全、有效、经济、可逆、简便,广大妇女易接受的节育器具,目前已成为我国育龄妇女的主要避孕措施。据悉,我国约70%妇女选用 IUD 作为避孕方法,占世界 IUD 避孕总人数的 80%。某公司研发了两种型号的 VCu 记忆型宫内节育器,分别为 VCu260 记忆型宫内节育器和VCu380 记忆型宫内节育器。该公司研发的 VCu 记忆型宫内节育器采用镍钛记忆合金丝支架,除具有独特形状记忆功能外,还具有抗腐蚀、耐磨损、超弹性和对身体的副作用较小等优点。但是节育器在给女性带来方便的同时,也可能会引起疼痛、不适、脱落或者出血等症状。为了探究这两种型号的节育器是否适合投入生产,特与已被临床应用的 MCu 功能性宫内节育器一起临床试验。一共有三组,MCu 功能性宫内节育器作为对照组(标记为 1 组),VCu260 与 VCu380 记忆型宫内节育器均为试验组(分别标记为 2、3 组),每组入组均为 525 例,且分别于第一、三、六、十二个月就主诉情况进行随访记录。本次试验选择两家医院并同时进行临床试验。节育器的理化指标、受试者的身体指标、随访时的主诉情况均在一定程度上反映节育器的质量。
  附件 1 提供了两个医院临床受试者的身体指标与节育器的理化指标,附件 2提供了两个医院随访时的主诉情况记录。请建立数学模型研究下列问题:
  1. 根据附件 1 与附件 2,分析两个医院的临床数据有无显著性差异,若存在显著性差异,对导致这种差异的因素进行分析。
  2. 结合附件 1 与附件 2,分析受试者的身体指标与随访主诉情况的联系,并说明受试者的身体指标是否是受试者出现不适状况的主要因素。
  3. 根据受试者的身体指标、节育器的理化指标与随访时的主诉情况,建立节育器质量模型,并分析 VCu260 与 VCu380 记忆型宫内节育器的质量哪个更优,更适合生产。
  4. 结合问题 3,根据建立的节育器质量模型,探究影响宫内节育器质量的决定因素。
  附录说明
  随访时只对出现不适情况的受试者进行记录,使用感受良好的受访者不予记录;部分受试者在随访时难以联系,造成失访,会有部分数据缺失。
  使用节育器的目的是防止怀孕,生产节育器的前提是节育器在很大程度上能够避免怀孕。
  若受试者在使用宫内节育器前期出现不适症状,但后期症状消失,可认为受试者适应该节育器。例如受试者在第一、三个月份随访时均主诉有不适症状,但是在第六、十二个月份随访时均表示没有不适症状,可认为前三个月为受试者的适应期,此时不考虑节育器的质量问题。
  附件
  附件 1:两个院临床受试者和节育器的基本数据
  附件 2:两个医院随访的节育器使用后主诉情况

整体求解过程概述(摘要)

  在生物医疗技术迅猛发展之下,宫内节育器(IUD)因其具有相对安全、有效和简便等优点逐渐受到广大妇女青睐,目前已成为我国育龄妇女的主要避孕措施。本文利用多种统计学方法对受试者的身体指标、节育器的理化指标和随访主诉情况进行建模分析,通过综合评价的手段在 Vcu260 型和 VCu380 型节育器中选择一个更优的产品进行生产,并且给出了影响节育器质量的相关因素。
  对于数据处理方面,对数据的缺失值进行了替换填充,并且对于数据特征中重复、异常的数据点进行了处理,利用题目所给的条件对附件 2 的数据进行了预处理。
  针对问题 1,观察数据发现身体指标为定量数据、理化指标和主诉情况为定性数据;首先通过数据形态验证了身体指标服从正态分布,并对身体指标进行了独立样本 t 检验,对理化指标和主诉情况进行了卡方检验,发现只有身体指标中的初潮年龄、月经周期和主诉情况中的脱落、因症取出…等 8 个指标没有显著性差异,其余的 9 个指标存在显著性差异,最后还分析了出现差异性可能的原因。
  针对问题 2,首先对数据进行了皮尔逊相关性分析,初步分析了身体指标与主诉情况的联系,然后利用典型相关分析模型再次衡量了身体指标与主诉情况的联系:发现宫颈深度使主诉情况倾向好的方面,月经经期使主诉情况倾向不好的方面,并且通过分析主诉情况发现节育环对怀孕的抑制是十分有效的,负面的主要影响是分泌物增多和经期/周期异常。最后通过比较身体指标与主诉情况、理化指标与主诉情况的典型相关系数大小判断出身体指标不是其主要原因,理化指标影响力比身体指标多 12.64%。
  针对问题 3,首先建立了二级指标评价体系,并将所有指标都转变为了正向型指标,接着利用熵权法确定各个指标的权重,然后对样本按照 VCu260 型和 VCu380 型节育器的标准进行了分类,利用 Topsis 评价模型对节育器质量进行多级评价,最后按加权平均的方法计算了每个样本对节育器质量的总评分,以两个类别的样本总评分的均值来判断哪个类型的节育器更优。最后计算得到 VCu260 型和 VCu380 型节育器均分为0.6921 和 0.7001,VCu380 型节育器优于 VCu260 型节育器,更适合生产。
  针对问题 4,首先利用问题 3 的权重模型初步分析出理化指标是影响节育器质量的决定因素;接着利用身体指标和理化性质对于是否出现不适症状进行了 Logistic 回归分析,同样可以发现节育器的理化指标是影响节育器质量的决定因素,其中使用大型节育器是负向因素,放置节育器时宫颈扩张情况是正向因素。
  在模型的验证中,利用斯皮尔曼相关系数对皮尔逊相关系数进行了误差分析,发现这两种方法计算出来的相关系数相差不大,最大误差不超过 3%,进而验证了模型的稳定性。

问题分析:

  问题 1 的分析
  对于问题 1,分析两个医院的临床数据有无显著性差异,并针对有显著差异的指标原因探究。观察附件一的数据可以发现,临床数据指标主要分为两个方面,一是受试者的身体指标包括年龄、初潮年龄、月经周期、月经经期和宫颈深度;二是节育器的理化指标包括既往节育器使用情况(IUD、无和其他)、节育器型号(小、中和大)和放置节育器时扩张情况,其中身体指标为定量变量,理化指标为定性变量。通常差异性分析可以通过 t 检验、卡方检验和非参数检验进行,这三种方法的适用范围不同,t检验要求变量为定量变量且服从正态分布,卡方检验主要用于定性变量,非参数检验主要用于不满足正态分布的数据。首先对数据进行预处理后,将数据分为定量和定性两类,定量的数据再接着进行正态分布检验,若服从正态分布,则采用 t 检验,反之则采用非参数检验;对于定性的数据采用卡方检验。经检验后,对于存在显著性差异的指标进行探究性因素分析,给出导致存在差异性可能的原因。
  问题 2 的分析
  对于问题 2,分析受试者的身体指标与随访主诉情况的联系,并说明受试者的身体指标是否是受试者出现不适症状的主要原因。首先,由于某些受试者的数据缺失,为此要对这些缺失值进行处理,并且如果第一、三个月有不适症状,但第六、十二没有不适症状,则认为该症状对该样本无影响。考虑到受试者的身体指标与随访主诉情况这两类指标里均包含多个子指标,而典型相关分析正好对应这种“多对多”的指标相关性分析,因此采用典型相关分析来分析这两类指标之间的联系。同样地,也可以将受试者的身体指标与随访主诉情况进行典型相关性分析,比较受试者的身体指标与随访主诉情况和节育器的理化指标与随访主诉情况典型相关性的值大小即可以判断受试者的身体指标是否是受试者出现不适症状的主要原因。
  问题 3 的分析
  对于问题 3,需要根据受试者的身体指标、节育器的理化指标与随访主诉情况,建立质量评价模型,来判断 VCu260 型节育器和 VCu380 节育器哪个更适合生产。首先,建立多级评价指标体系,并需要考虑指标的性质,将全部指标都转变为正向型指标;由于每一个指标的影响程度都不相同,因此需要确定各个指标的权重,本文采用熵权法确实权重;接着建立 Topsis 节育器质量评价体系,分别计算 3 个一级指标的评分,再对这 3 个一级指标评分按加权求和计算每一样本的总评分。最后,按 VCu260 型节育器和 VCu380 节育器的样本进行分类,计算这两类节育器的评分均分,均分高的则更适合生产。
  问题 4 的分析
  对于问题 4,需要结合问题 3 的节育器质量模型探究影响节育器质量的决定因素。由于问题 3 已经通过熵权法计算了每一个指标的权重,故可以依据这个指标权重来判断哪个指标对节育器质量的影响更大。为进一步验证指标的重要性,建立受试者的身体指标和节育器的理化指标与是否出现不适症状的 Logistic 回归模型,通过其指标的影响系数以及显著性进一步说明哪个指标对节育器质量影响更大。

模型假设:

  1) 假设数据来源真实有效;
  2) 假设除题目所给指标外,其他方面的指标对节育器的质量无影响;
  3) 假设两个医院的数据为独立数据,不相互影响。

论文缩略图:

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

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

clc;clear;close all
set(0,'defaultfigurecolor','w');
%% loaddata
Type11 = '附件 1';
Path11 = '.\Data\附件 1:两个院临床受试者和节育器的基本数据.xlsx';
Sheet11 = "一院临床受试者和节育器的基本数据";
Data11 = loadData(Path11, Sheet11, Type11);
Type12 = '附件 1';
Path12 = '.\Data\附件 1:两个院临床受试者和节育器的基本数据.xlsx';
Sheet12 = "二院临床受试者和节育器的基本数据";
Data12 = loadData(Path12,Sheet12,Type12);
Type21 = '附件 2';
Path21 = '.\Data\附件 2:两个医院随访的节育器使用后主诉情况.xlsx';
Sheet21 = "一院随访的节育器使用后主诉情况";
Data21 = loadData(Path21,Sheet21,Type21);
Type22 = '附件 2';
Path22 = '.\Data\附件 2:两个医院随访的节育器使用后主诉情况.xlsx';
Sheet22 = "二院随访的节育器使用后主诉情况";
Data22 = loadData(Path22,Sheet22,Type22);
%% 预处理
Data11f = fillmissing(Data11,"constant",0);
Data12f = fillmissing(Data12,"constant",0);
Data21f = fillmissing(Data21,"constant",0);
Data22f = fillmissing(Data22,"constant",0);
Data22f(233:426,:) = [];
loss1 = sum(Data21f.loss1) + sum(Data22f.loss1);
loss3 = sum(Data21f.loss3) + sum(Data22f.loss3);
loss6 = sum(Data21f.loss6) + sum(Data22f.loss6);
loss12 = sum(Data21f.loss1) + sum(Data22f.loss12);
n_data = size(Data21f,1) + size(Data22f,1);
alpha1 = loss1 / n_data;
alpha3 = loss3 / n_data;
alpha6 = loss6 / n_data;
alpha12 = loss12 / n_data;
fprintf('alpha1=%.4f%%,\nalpha3=%.4f%%,\nalpha6=%.4f%%,\nalpha12=%.4f%%n',alpha1*100,alpha3*100,alpha6*100,alpha12*100)
%% 合并分组
Data11f.category = ones(size(Data11f,1),1);
Data12f.category = ones(size(Data12f,1),1)*2;
Data1All = [Data11f;Data12f];
Data21f.category = ones(size(Data21f,1),1);
Data22f.category = ones(size(Data22f,1),1)*2;
Data2All = [Data21f;Data22f(2:end,:)];
% DataAll = [Data1All,Data2All];
Data2AllTemp = Data2All;

Data2AllTemp = Data2AllTemp(2:end,7:42);
%% 再处理
outputNames2 = {'num','group','fallOff','takeOut','pregnant','blood','pain',... 'mQuantity','hypersecretion' ,'anomaly', 'sick','category'};
outputData2All = table('Size',[size(Data2All,1)-1,length(outputNames2)],'VariableTypes',{'double','double','double', ...
 
'double','double','double','double','double','double','double','double','double'},'VariableNames', outputNames2);
outputData2All.num = Data2All.num(2:end);
outputData2All.group = Data2All.group(2:end);
for i = 1:size(Data2AllTemp,2)/4
 DataTemp = Data2AllTemp(:,i*4-3:i*4);
 sum12 = sum(table2array(DataTemp(:,1:2)),2);
 sum34 = sum(table2array(DataTemp(:,3:4)),2);
 idx12 = find(sum12 > 0);
 idx34 = find(sum34 > 0);
 outputData2All.(outputNames2{i+2})(idx34) = 1;
end
outputData2All.category = Data2All.category(2:end);
outputNames1 = 
{'num','group','age','menarcheAge','menstrualCycle','menstrualPeriod','iud',... 'uterineDepth','iudModel' ,'expansion', 'category'};
outputData1All = table('Size',[size(Data1All,1),11],'VariableTypes',{'double','double','double', ...
'double','double','double','double','double','double','double','double'},'VariableNames', outputNames1);
outputData1All.num = Data1All.num;
outputData1All.group = Data1All.group;
outputData1All.age = Data1All.age;
outputData1All.menarcheAge = Data1All.menarcheAge;
outputData1All.menstrualCycle = Data1All.menstrualCycle;
outputData1All.menstrualPeriod = Data1All.menstrualPeriod;
outputData1All.uterineDepth = Data1All.uterineDepth;
outputData1All.expansion = Data1All.expansion;
outputData1All.category = Data1All.category;
% Data1AllTemp = Data1All;
idx1 = find(Data1All.iud == 1);
idx2 = find(Data1All.iudNone == 1);
idx3 = find(Data1All.iudOther == 1);
outputData1All.iud(idx1) = 1;
outputData1All.iud(idx2) = 2;
outputData1All.iud(idx3) = 3;
idx1 = find(Data1All.iudModelS == 1);
idx2 = find(Data1All.iudModelM == 1);
idx3 = find(Data1All.iudModelB == 1);
outputData1All.iudModel(idx1) = 1;
outputData1All.iudModel(idx2) = 2;
outputData1All.iudModel(idx3) = 3;
% 补充主诉情况的数据
outputData2AllNew = 
table('Size',[size(Data1All,1),length(outputNames2)],'VariableTypes',{'double','double','double', ...'double','double','double','double','double','double','double','double','double'},'VariableNames', outputNames2);
outputData2AllNew.num = outputData1All.num;
outputData2AllNew.group = outputData1All.group;
outputData2AllNew.category = outputData1All.category;
% [UU,idxUU1] = intersect(outputData2AllNew.num,outputData2All.num);
% idxNew = find(outputData2AllNew.num == outputData2All.num);
k = 1;
% aa = [];
for i = 1:size(outputData2AllNew,1)
 for j = 1:size(outputData2All,1)
 if outputData2AllNew.num(i) == outputData2All.num(j) && 
outputData2AllNew.group(i) == outputData2All.group(j)...
 && outputData2AllNew.category(i) == outputData2All.category(j)
 outputData2AllNew(i,:) = outputData2All(j,:);
 k = k + 1;
% aa = [aa,j];
 break
 end
 end
end
outputDataAll = [outputData1All,outputData2AllNew(:,3:end-1)];
outputDataAll1 = [Data1All,outputData2AllNew(:,3:end-1)];
outputDataAll1.sick = ~outputDataAll1.sick;
% aaa = sum(outputDataAll1{:,16:23},2);
% length(find(aaa>0))
%% 正态分布检验
Name = 
{'age','menarcheAge','menstrualCycle','menstrualPeriod','uterineDepth'};
Label = {'年龄/岁','初潮年龄/岁','月经周期/天','月经经期/天','宫腔深度/cm'};
Beta = [11.5,3.3,3.8,2.3,2.0];
nName = length(Name);
for i = 1:nName
 U = unique(Data1All.(Name{i}));
 C = zeros(length(U),1);
 Xticks = cell(1,length(U));
 for j = 1:length(U)
 C(j) = length(find(Data1All.(Name{i}) == U(j)));
 Xticks{j} = num2str(U(j));
 end
 figure(i)
 b = bar(U,C);
 b.FaceColor = [0.8500 0.3250 0.0980];
 b.EdgeColor = [0.3,0.3,0.3];
 hold on
 [miu,sigma] = normfit(Data1All.(Name{i}));
 xx = min(U):(max(U)-min(U))*0.005:max(U);
 yy = normpdf(xx,miu,sigma)*max(C)*Beta(i);
 plot(xx,yy,'-','Color',[0.2 0.2 0.2],'LineWidth',1.3)
 
 xlabel(Label{i})
 ylabel('频数')
 set(gca,'FontName','TimesSimSun','FontSize',11) %设置坐标轴刻度字体名
称,大小
 exportgraphics(gca,['.\Fig\bar',Name{i},'.png'], 'Resolution',600)
end
%% 绘制相关系数矩阵
idxP = [3:10,12,13,15:20];
[R,P] = corrcoef(table2array(outputDataAll(:,idxP)));
Label = outputDataAll.Properties.VariableNames(idxP);
scrsz = get(0,'ScreenSize'); %%%% 获取屏幕的尺寸
figure('Name','hotR','Position',[0 30 scrsz(3) scrsz(4)-95]); 
hot_figure = heatmap(Label,Label,R);
hot_figure.GridVisible = 'off';
colormap(gca,'jet')
set(gca,'FontName','Times New Roman','FontSize',12.5) %设置坐标轴刻度字体名
称,大小
exportgraphics(gca,'./Fig/Pearson.png', 'Resolution',600)
R1 = corr(table2array(outputDataAll(:,idxP)),'type' , 'Spearman');
figure('Name','hotR_P','Position',[0 30 scrsz(3) scrsz(4)-95]); 
hot_figure = heatmap(Label,Label,R1);
hot_figure.GridVisible = 'off';
colormap(gca,'jet')
set(gca,'FontName','Times New Roman','FontSize',12.5) %设置坐标轴刻度字体名
称,大小
exportgraphics(gca,'./Fig/Pilsman.png', 'Resolution',600)
Rl = tril(R);
Ru = triu(R1);
RR = Rl + Ru;
for i = 1:length(RR)
 RR(i,i) = 1;
end
f = figure('Name','hotRR','Position',[0 30 scrsz(3) scrsz(4)-95]); 
hot_figure = heatmap(Label,Label,RR);
hot_figure.GridVisible = 'off';
colormap(gca,'jet')
set(gca,'FontName','Times New Roman','FontSize',12.5) %设置坐标轴刻度字体名称,大小
exportgraphics(gca,'./Fig/PP.png', 'Resolution',600)
idxR = find(R ~= 1);
Rexpension = R(idxR);
idxR1 = find(R1 ~= 1);
Rexpension1 = R1(idxR1);
E = Rexpension - Rexpension1;
figure('Name','Rline')
p1 = plot(Rexpension,'-
ko','MarkerIndices',1:round(length(Rexpension)*0.05):length(Rexpension),
'LineWidth',1.0);
p1.Color = [0.3,0.3,0.3];
hold on 
p2 = plot(Rexpension1,'--
r*','MarkerIndices',2:round(length(Rexpension)*0.05):length(Rexpension1),'LineWidth',1.0);
set(gca,'FontName','Times New Roman','FontSize',12.5) %设置坐标轴刻度字体名称,大小
legend('Pearson','Spearman','Location','northwest','fontSize',15)
xlabel('Index')
ylabel('相关系数','FontName','宋体')
xlim([0,length(Rexpension)])
exportgraphics(gca,'./Fig/相关系数对比.png', 'Resolution',600)
figure('Name','error') 
% plot(E)
s = stem(E);
s.Color = [0.5,0.5,0.5];
s.LineWidth = 1.0;
s.MarkerFaceColor = [0.8,0.8,0.8];
set(gca,'FontName','Times New Roman','FontSize',12.5) %设置坐标轴刻度字体名
称,大小
xlim([0,length(E)])
xlabel('Index')
ylabel('Error')
exportgraphics(gca,'./Fig/相关系数误差.png', 'Resolution',600)
%% 矩阵散点图
f = figure('Name','figMatrix','Position',[0 30 scrsz(3) scrsz(4)-95]);
[Sf,AX,BigAx,H,HAx] = plotmatrix(table2array(outputDataAll(:,idxP)));
for i = 1:length(idxP)
 H(i).FaceColor = [0.3,0.3,0.3];
 H(i).EdgeColor = [0.1,0.1,0.1];
end
for i = 1:length(idxP)
 for j = 1:length(idxP)
 Sf(i,j).MarkerSize = 2;
 Sf(i,j).Color = 'k';
 Sf(i,j).Marker = 'o';
 Sf(i,j).MarkerFaceColor = 'k';
 set(AX(i,j),'FontName','Times New Roman','FontSize',9) %设置坐标轴刻度字体名称,大小
 end
end
exportgraphics(f,'./Fig/散点矩阵.jpg', 'Resolution',600)
%% % 保存数据
writetable(Data11f,'.\Data\附件 1:两个院临床受试者和节育器的基本数据改.xlsx','Sheet','一院临床受试者和节育器的基本数据
','WriteMode','overwritesheet');
writetable(Data12f,'.\Data\附件 1:两个院临床受试者和节育器的基本数据改.xlsx','Sheet','二院临床受试者和节育器的基本数据
','WriteMode','overwritesheet');
writetable(Data21f,'.\Data\附件 2:两个医院随访的节育器使用后主诉情况改.xlsx','Sheet','一院随访的节育器使用后主诉情况
','WriteMode','overwritesheet');
writetable(Data22f,'.\Data\附件 2:两个医院随访的节育器使用后主诉情况改.xlsx','Sheet','二院随访的节育器使用后主诉情况
','WriteMode','overwritesheet');
writetable(Data1All,'.\Data\附件 1 汇总.xlsx','Sheet','Sheet1','WriteMode','overwritesheet');
writetable(outputData1All,'.\Data\附件1汇总.xlsx','Sheet','Sheet1','WriteMode','overwritesheet');
writetable(outputData2All,'.\Data\附件2汇总.xlsx','Sheet','Sheet1','WriteMode','overwritesheet');
writetable(outputDataAll,'.\Data\附件12汇总.xlsx','Sheet','Sheet1','WriteMode','overwritesheet');
writetable(outputData,'.\Data\附件汇总无合并.xlsx','Sheet','Sheet1','WriteMode','overwritesheet');
fprintf('数据已保存至.\\Data\\中!\n')
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

设定excel导出时单元格的格式

一、需求 要求excel导出时,对应列里面的内容格式为日期,数值格式并有精度要求 ,如下图: 使用alibaba,easyexcel,默认的导出数据格式为文本,excel显示为常规,使用数据规范注解Number…

玩转 gpgpu sim 01记 —— try it

1. 短介绍 gpgpu-sim 是一个gpu模拟器,可以让cuda/openCL程序运行在一个软件模拟器上,而不需要硬件GPU; 2. 目标 用最简单省事的方式跑通一个gpgpu-sim的仿真 3. gpgpu-sim 一点项目特性 开发比较早,没有持续的维护&#xff0…

vscode搭建Django自带后台管理系统

文章目录 一、django自带的后台管理系统1. 建表2. 后台管理系统2.1 创建账号2.2 运行后台2.3 登录 二、模版渲染1. 直接将数据渲染到页面2. 数据传递给js 三、数据库1. 查看当前数据库2. 创建UserInfo数据表3. Django rest framework配置 四、vue前端搭建1. 在Django项目的根目…

vue 使用canvas 详细教程

Vue.js 中使用 Canvas Vue.js 是一个流行的 JavaScript 框架,用于构建用户界面。它提供了一种简洁的方式来管理和渲染数据,同时也支持与其他库和工具的集成。要在 Vue.js 中使用 Canvas,您可以按照以下步骤进行操作: 在 Vue.js …

Visual Studio 2022安装SVN插件教程

1. 第一步:避免踩坑,超级重要!!!关闭Visual Studio 2022应用程序;(不然插件装不上,一直转圈!) 2.第二步:下载Visual Studio 2022版本对应的SVN插件…

最新IDE流行度最新排名(每月更新)

2023年09月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多,这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧,Top IDE索引可以帮助您决定在软件开发项目中使用哪个IDE …

Excel显示列号

默认表格打开列以字母显示 设置方法 文件 -> 工具 -> 选项 -> 常规与保存 设置后效果如下图

2023年在线教育行业研究报告

第一章 行业概况 1.1 定义 随着技术的飞速发展和互联网的普及,我们的学习方式正在经历一场革命。在线教育,作为这场变革的核心,已经成为全球教育领域的热门话题。但究竟什么是在线教育行业呢? 在线教育行业是指通过互联网平台提…

【vue2】data中数据赋值失败找不到、data数据不声明的影响

😉博主:初映CY的前说(前端领域) ,📒本文核心:vue2data作用 前言:当你看到这篇文章相比你已经对vue有了一定的了解,对data的有了一个基本的认识:data是存放我们当前页面数据地方。是的&#xff0…

【Python小项目之Tkinter应用】随机点名/抽奖工具大优化:新增选项窗口!可选是否重复点名以及随机点名!可以手动选择文件及文件类型并预览文件!

文章目录 前言一、实现思路窗口逻辑按钮逻辑二、关键代码设置窗口布局实现具体组件实现选择文件与预览文件重中之重:抽取模式三、完整代码总结前言 老规矩,先看效果: 我们为抽奖工具新增了一个设置按钮,点击设置按钮后会出现一个弹窗,弹窗中有各种组件以帮助我们完成初始…

C语言——qsort()函数_学习笔记

本文目录 一、qsort()介绍二、参数详解三、qsort()函数应用举例3.1 排序数组类型的数据3.2 排序结构体类型的数据 四、模拟实现qsort()函数4.1 冒泡排序简单介绍4.2 实现bubble_sort()函数 一、qsort()介绍 qsort()函数是一个库函数&#xff0c;包含在头文件 <stdliib.h>…

Nginx部署前后端分离项目(Linux)

Nginx代理前端页面、后端接口 一、前端打包二、后端打包三、Linux部署Nginx启动、暂停、重启服务器部署文件地址&#xff1a; 一、前端打包 npm run build二、后端打包 通过Maven 使用package打包 三、Linux部署 安装Nginx 安装环境 yum -y install gcc pcre pcre-devel z…

电脑更换硬盘的时候怎么迁移系统?

为什么需要迁移系统&#xff1f; 在一些关于电脑DIY或Windows相关的论坛社区中&#xff0c;有很多人发帖询问怎么迁移系统。那么这个系统迁移&#xff0c;究竟是何含义呢&#xff1f;通俗易懂地解释一下&#xff0c;就是创建一个完整无缺的操作系统复制品&#xff0c;它与系…

硬件总线基础07:PCIe总线基础-事务层(1)

说在开头&#xff1a;关于我的世界&#xff08;4&#xff09; 几年前追过一个综艺&#xff1a;《导演请指教》。不仅仅是因为节目中那一部部小电影的诱惑力&#xff0c;更让人上头的是各方的点评&#xff1a;制片人&#xff0c;学院派&#xff0c;影评人&#xff0c;发行人、大…

Linux系统上安装docker

文章目录 一、Docker的简介二、Docker的组成部分三、Docker的安装命令安装之前先卸载系统上原有的Docker安装需要的安装包yum-utils设置镜像仓库地址安装docker相关的引擎安装docker启动docker查看是否启动使用hello-world镜像测试docker 四、docker run运行思维导图参考文档 一…

jira流转issue条目状态transitions的rest实用脚本,issue状态改变调整

官方文档链接地址&#xff1a; POST Transition issue Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen. sortByCategory To update the fields on the transition screen, specify the fields in the fiel…

redis持久化策略【面试必看】

目录 持久化RDB&#xff08;定期备份&#xff09;手动触发savebgsave 自动触发实际操作rdb的优缺点 AOF&#xff08;定时备份&#xff09;重写机制混合持久化aof和rdb 总结 持久化 内存中的数据是不持久的&#xff0c;要想做到持久&#xff0c;就需要把redis中的数据存储到硬盘…

JSP ssm 特殊人群防走失系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 特殊人群防走失系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源 代码和数据库&#xff0c;系统主要…

SpringMVC之JSR303和拦截器

目录 一.JSR303 二.JSR常用的注解 三.JSR快速入门 四.拦截器 ⭐⭐⭐拦截器和过滤器有什么不一样&#xff0c;或者它们的区别是什么&#xff1f;&#xff1f; 五.拦截器快速入门--登录的案例 一.JSR303 JSR 303 是 Java 规范的一部分&#xff0c;全称为 Bean Validation 框…

从零开始,轻松学习如何在CentOS 7服务器上安装、调优和使用Tomcat 8.5

PS&#xff1a;文章最后有“开心一刻”&#xff0c;记得看哦&#xff0c;给生活增加点儿趣味。 前言 Tomcat是一个广泛使用的开源Java Servlet容器&#xff0c;也是部署、管理和运行Java Web应用程序的首选之一。本文将为您详细介绍在CentOS 7服务器上安装、调优和使用Tomcat 8…