2023 “华为杯” 中国研究生数学建模竞赛(C题)深度剖析|数学建模完整代码+建模过程全解全析

news2024/11/23 9:00:04

华为杯数学建模C题

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2021年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。
让我们来看看研赛的C题呀~!

问题重述

现在创新类竞赛很多,其中规模较大的竞赛,一般采用两阶段(网评、现场评审)或三阶段(网评、现场评审和答辩)评审。创新类竞赛的特点是没有标准答案,需要评审专家根据命题人(组)提出的评审框架(建议)独立评审。所以,对同一份作品,不同评委的评分可能存在较大差异。事实上,当竞赛规模大,评委的人数众多时,极差大的问题更为突出。显然,简单地依据多位评委评分的总和进行排序并不是创新类竞赛评审的好方案。因此,探讨大规模创新类竞赛评审方案的公正性、公平性和科学性具有深远意义。

问题一

在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则必然有交集小了,则可比性变弱。请针对3000支参赛队和125位评审专家,每份作品由5位专家评审的情况,建立数学模型确定最优的“交叉分发”方案,并讨论该方案的有关指标(自己定义)和实施细节。

目标是确定最优的“交叉分发”方案,以增加不同评审专家所给成绩之间的可比性。我们可以将这个问题建模为一个组合优化问题,通过数学建模和求解方法来找到最佳方案。

  1. 确定变量:
    定义一个二元变量 x(i, j),其中 i 表示评审专家的编号,j 表示作品的编号。这个变量表示第 i 位评审专家是否评审第 j 份作品。x(i, j) 取值为 1 表示评审专家 i 评审了作品 j,取值为 0 表示没有评审。
  2. 定义目标函数:
    目标是最大化不同评审专家所给成绩之间的可比性,即最大化不同专家评审的作品集合之间的交集。因此,我们可以定义目标函数为:
    M a x i m i z e : ∑ ( i , j ) x ( i , j ) Maximize: ∑(i,j) x(i, j) Maximize:(i,j)x(i,j)
    这个目标函数表示要最大化所有评审专家和作品之间的交叉评审数量。
  3. 添加约束条件:
    限制每位评审专家最多评审 k 份作品:这可以表示为以下约束条件:
    Subject to: ∑j x(i, j) <= k,对所有 i
    这个约束条件确保每位评审专家不会超过最大评审作品数 k。
    每份作品需要被 m 位评审专家评审:这可以表示为以下约束条件:
    S u b j e c t t o : ∑ i x ( i , j ) = m ,对所有 j Subject to: ∑i x(i, j) = m,对所有 j Subjectto:ix(i,j)=m,对所有j
    这个约束条件确保每份作品都会被 m 位评审专家评审。
    二元变量约束: x ( i , j ) ∈ 0 , 1 x(i, j) ∈ {0, 1} x(i,j)0,1
  4. 求解优化问题:
    ●使用优化算法或数学规划工具来求解上述建立的优化问题。这些工具可以帮助找到最优的 x(i, j) 变量值,即最佳的“交叉分发”方案。
  5. 分析结果:
    ●一旦求解完成,可以分析结果,确定哪些评审专家应该评审哪些作品,以最大程度上提高评审的可比性。
  6. 实施细节:
    ●实际应用时,需要考虑评审专家的可用性、作品的特点、评审时间等实际因素。此外,可能需要进行多次实验和调整以优化方案。
    它是一个整数线性规划问题(Integer Linear Programming, ILP),因为我们要求解的变量 x(i, j) 是二进制整数(0或1),并且我们要最大化一个线性目标函数。
import pulp

# 创建线性规划问题
model = pulp.LpProblem("CrossDistribution", pulp.LpMaximize)

# 定义评审专家数量和作品数量
num_experts = 125
num_works = 3000

# 定义每位评审专家最多评审的作品数量和每份作品需要被评审的专家数量
k = 20  # 最多评审的作品数量
m = 5   # 每份作品需要被评审的专家数量

# 创建二进制变量x(i, j)
x = pulp.LpVariable.dicts("x", ((i, j) for i in range(num_experts) for j in range(num_works)), cat='Binary')

# 定义目标函数:最大化交叉评审数量
model += pulp.lpSum(x[i, j] for i in range(num_experts) for j in range(num_works))

# 添加约束条件
# 每位评审专家最多评审k份作品的约束
for i in range(num_experts):
    model += pulp.lpSum(x[i, j] for j in range(num_works)) <= k

# 每份作品需要被评审m位专家的约束
for j in range(num_works):
    model += pulp.lpSum(x[i, j] for i in range(num_experts)) == m

# 求解线性规划问题
model.solve()

# 打印结果
print("Status:", pulp.LpStatus[model.status])

# 打印每位评审专家评审的作品列表
for i in range(num_experts):
    selected_works = [j for j in range(num_works) if x[i, j].value() == 1]
    print(f"评审专家 {i+1} 评审的作品列表:{selected_works}")

# 打印最大化的交叉评审数量
print("最大化的交叉评审数量:", pulp.value(model.objective))

比较不同产品的销售额

问题二

我们需要探索不同的评审方案,比较它们的效果,并设计新的标准分计算模型。首先,我们可以选择两种不同的评审方案并进行比较。接着,根据比较结果和数据1中的一等奖作品排序(经专家协商取得一致的数据),可以改进标准分计算模型。以下是问题二的具体步骤:
步骤一:选择两种评审方案并比较
1.原始评审方案:
a.采用附件1中的标准分计算方法进行评审,并按标准分排序。
2.新评审方案(示例):
a.使用加权平均方法计算每位专家的评审成绩,以考虑专家之间的差异。可以使用专家历史评审表现作为权重。
b.对每份作品的加权平均评审成绩进行排序。
通过这两种方案,您可以得到不同的作品排名和获奖结果。比较它们的优劣,包括评审结果的一致性、公平性和可信度等。
步骤二:改进标准分计算模型
1.分析数据1(附件2提供的数据1):
a.分析数据1中的一等奖作品排序,这是经专家协商一致的排名。了解这些作品的特点和分布。
2.改进标准分计算模型:
a.基于数据1的分析结果和比较两种评审方案的经验,设计新的标准分计算公式,以更好地反映大规模创新类竞赛的评审特点。这个新的计算公式可以考虑专家的历史表现、作品的特点和多维度评审等因素。
示例如下(这只是一个示例,您可以根据实际情况进行修改):
新标准分 = 原始成绩 + 专家历史评审偏差
其中,专家历史评审偏差可以根据专家历史评审表现和作品的特点进行计算。
步骤三:验证和调整
1.使用新的标准分计算模型对数据1中的一等奖作品进行排序,与专家协商一致的排序进行比较。确保新模型能够更好地捕捉评审结果。
2.进行一些实验和测试,验证新标准分计算模型是否在更广泛的竞赛数据集上表现良好。
3.不断调整和改进新标准分计算模型,以满足不同竞赛和评审条件的需求。

4.每份作品的原始成绩(Raw Score):
a.让 R i j R_{ij} Rij 表示专家 i 对作品 j 的原始成绩。
5.每位专家的历史评审偏差(Expert Bias):
a.让 E i E_i EiE 表示专家 i 的历史评审平均得分。
b.专家偏差 B i j B_{ij} Bij 可以表示为:
B i j = R i j − E i B_{ij} = R_{ij} - E_i Bij=RijEi
6.多维度评审成绩(Multidimensional Score):
a.让 M j M_j Mj 表示作品 j 的多维度评审成绩。
7.作品之间的差异(Work Variation):
a.让 V j V_j Vj 表示作品 j 的原始成绩的方差。
8.标准分(Standard Score):
a.让 S i j S_{ij} Sij 表示专家 ii 对作品 jj 的标准分,可以表示为:
S i j = R i j + B i j − α ⋅ V j S_{ij} = R_{ij} + B_{ij} - \alpha \cdot V_j Sij=Rij+BijαVj
其中,\alphaα 是一个调整参数,用于平衡作品之间的差异对标准分的影响。您可以根据实际需求来选择合适的 α α \alphaα αα 值。

import numpy as np

# 原始评审成绩矩阵,其中每行代表一位评审专家的评审成绩
# 每列代表一份作品的不同维度评审成绩
raw_scores = np.array([
    [85, 90, 88, 92],
    [78, 82, 80, 85],
    # 添加更多专家的评审成绩
])

# 专家历史评审平均得分
expert_average_scores = np.mean(raw_scores, axis=1)

# 作品原始成绩的方差
work_variations = np.var(raw_scores, axis=0)

# 调整参数,用于平衡作品之间的差异对标准分的影响
alpha = 0.1  # 您可以根据需要调整这个参数

# 计算标准分
num_experts, num_works = raw_scores.shape
standard_scores = np.zeros((num_experts, num_works))

for i in range(num_experts):
    for j in range(num_works):
        expert_bias = raw_scores[i, j] - expert_average_scores[i]
        standard_scores[i, j] = raw_scores[i, j] + expert_bias - alpha * work_variations[j]

# 打印每位专家对每份作品的标准分
for i in range(num_experts):
    for j in range(num_works):
        print(f"专家 {i+1} 对作品 {j+1} 的标准分:{standard_scores[i, j]}")

在这里插入图片描述

问题3

步骤一:分析极差问题
首先,我们需要分析大规模创新类竞赛评审中的极差问题。极差大的作品通常会处于高分段或低分段,而这可能会导致评审结果的不稳定性和不公平性。为了更好地理解极差问题,可以进行以下分析:
1.极差数据统计:计算每份作品在评审阶段的极差,以了解极差的分布情况。
2.创新性与极差关系:分析创新性与极差之间是否存在相关性,即创新性较高的作品是否更容易出现极差。
3.专家调整极差情况:分析第二阶段评审中专家对作品的极差调整情况,了解哪些作品需要调整极差以获得更准确的评审结果。

步骤二:建立极差模型
为了解决极差问题,可以建立一个极差模型,该模型考虑作品的特征、创新性和评审专家的历史表现。以下是一个示例极差模型的构建步骤:
1.特征工程:将每份作品的特征(如题目难度、创新性评分、论文结构等)纳入考虑,作为模型的输入特征。
2.创新性指标:引入一个创新性指标,该指标可以从作品的描述、方法、实验等方面评估创新性。这可以是基于自然语言处理或其他技术的指标。
3.专家历史评审数据:使用专家过去的评审历史数据,包括他们的评审结果和评审偏差。
4.模型训练:使用机器学习或统计模型(如回归模型、决策树、神经网络等),将输入特征与极差建立关联。
5.模型调整:根据模型的性能进行调整和验证,以确保模型能够准确预测作品的极差。

步骤三:极差调整策略
一旦建立了极差模型,可以采取以下策略来调整极差大的作品:
1.自动极差调整:使用模型预测极差,对极差大的作品进行自动调整。这可以通过重新分配评审权重、重新计算标准分或其他方法来实现。
2.专家协商:在第二阶段评审中,专家可以协商并讨论极差较大的作品,以达成一致的评审结果。这需要专家之间的合作和讨论。
3.模型反馈:将模型预测的极差信息反馈给专家,让他们在评审时更加注意极差大的作品,以减少不一致性。
4.多维度评审:采用多维度评审方法,以减少评审结果的极差。
步骤四:验证和改进
最后,需要验证模型和极差调整策略的效果。可以使用历史竞赛数据进行模型验证,并根据实际评审情况不断改进模型和策略。确保它们能够提高评审结果的一致性和公平性,同时保持对创新性的灵敏度。

import numpy as np
from sklearn.linear_model import LinearRegression

# 假设有以下数据,其中X是作品的特征,Y是极差
X = np.array([
    [0.8, 0.9, 0.7],
    [0.6, 0.5, 0.8],
    # 添加更多作品的特征
])

Y = np.array([0.2, 0.3, 0.1, ...])  # 对应的极差数据

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X, Y)

# 假设有新的作品需要进行评审,需要预测其极差
new_work = np.array([[0.7, 0.8, 0.6]])  # 新作品的特征

predicted_variation = model.predict(new_work)

# 根据预测的极差进行调整
adjusted_score = raw_score - predicted_variation

# 打印结果
print("预测的极差:", predicted_variation)
print("调整后的成绩:", adjusted_score)

在这里插入图片描述

问题4

评审模型概述:
这个评审模型旨在综合考虑评审专家、作品特征和创新性,以产生更公正和准确的评审结果。该模型将评审问题转化为一个优化问题,通过优化算法求解最佳评审结果。
模型建议和步骤:
1.特征工程:
a.收集作品的特征数据,这些特征可以包括题目难度、创新性评分、方法复杂度、实验设计、作者背景等。
b.收集评审专家的历史评审数据,包括他们的评审结果和评审偏差。
2.构建目标函数:
a.定义一个目标函数,该函数将评审结果与作品特征和专家评审相关联。
b.目标函数可以包括对创新性的权重、对不同特征的权重、专家历史表现的权重等。
3.优化问题:
a.将评审问题转化为一个优化问题,目标是最大化或最小化目标函数。例如,可以尝试最大化作品的综合评分,以反映作品的质量和创新性。
4.求解优化问题:
a.使用优化算法(如线性规划、整数规划、遗传算法等)求解优化问题,以获得最佳的评审结果。
b.这可以通过现有的数学优化库来实现。
5.验证和调整模型:
a.使用历史竞赛数据进行模型验证和调整,以确保模型能够产生准确的评审结果。
b.考虑使用交叉验证等技术来评估模型的性能。
改进建议
1.数据收集:
a.收集更多关于评审专家的信息,包括专业领域、经验和评审历史。
b.收集更多有关作品的信息,特别是关于创新性和贡献的信息。
2.多层次评审:
a.考虑采用多层次评审方法,其中第一层专家对作品进行初步评审,第二层专家对初选作品进行进一步评审。这可以减少极差和提高评审的准确性。
3.专家协商:
a.鼓励专家在评审结果上进行协商和讨论,以提高一致性和可信度。
4.透明性:
a.使评审过程更加透明,包括对评审标准和权重的明确说明。
5.反馈机制:
a.引入反馈机制,使得评审专家能够了解他们的评审结果如何影响最终评审结果,并在未来的评审中进行改进。
6.算法改进:
a.不断改进优化算法,以更高效地解决评审问题。

消融实验分析:

基准模型:使用完整的方法,即矩阵分解+取值范围控制+稀疏性约束。测量其逼近误差RMSE和复杂度C。
移除取值范围控制:仅使用矩阵分解+稀疏性约束,不限制取值范围。测量RMSE和C。
移除稀疏性约束:仅使用矩阵分解+取值范围控制,不要求稀疏性。测量RMSE和C。
仅矩阵分解:不使用取值范围控制和稀疏性约束。测量RMSE和C。
对比不同模型的RMSE和C。高RMSE表示逼近精度损失;高C表示复杂度增加。

矩阵分解是实现低复杂度逼近DFT的有效方法,但需要设计实现稀疏性。
约束矩阵中元素的取值范围,可以降低单个乘法的计算量。
在满足精度需求前提下,通过搜索可以找到使复杂度最小的分解方案。
对Kronecker积矩阵进行分解,可以将大型DFT分解为多个小矩阵,降低优化难度。
消融实验可以验证不同设计决策对逼近误差和复杂度的影响。
需要权衡误差精度与计算复杂度,根据实际需求确定可接受的trade-off。
该方法可以作为一种替代FFT的低复杂度DFT实现策略。
优化搜索和代码实现等细节亟待进一步改进。
目标函数(Objective Function):
●通常表示为J或f(x),其中x是决策变量,可以是评审结果。
●例如,最大化作品的综合评分可以表示为:
J ( x ) = ∑ ( w i ∗ f i ( x ) ) J(x) = ∑(w_i * f_i(x)) J(x)=(wifi(x))
约束条件(Constraints):
●可以表示为等式或不等式条件,用于限制决策变量的取值范围。
●例如,约束总评分不超过某个阈值:
∑ ( w i ∗ f i ( x ) ) ≤ C ∑(w_i * f_i(x)) ≤ C (wifi(x))C

1.标准差(Standard Deviation):
a.用于衡量数据集的分散程度,通常表示为σ。
b.评审结果的标准差可以用来衡量评审结果的不稳定性。
2.相关系数(Correlation Coefficient):
a.用于衡量两个变量之间的关联性,通常表示为ρ(rho)。
b.可以用于分析评审结果与作品特征之间的相关性。
3.权重(Weight):
a.用于给不同特征或评审结果赋予不同的重要性。
b.可以表示为w。
4.优化问题符号:
a.最大化问题通常用max表示,例如maximize J(x)。
b.最小化问题通常用min表示,例如minimize J(x)。
5.优化变量(Optimization Variables):
a.表示需要优化的决策变量,通常表示为x。
6.模型参数(Model Parameters):
a.表示模型中的参数,可以是权重、系数等,通常表示为θ。

from scipy.optimize import minimize

# 定义目标函数
def objective_function(x):
    # 这是一个示例目标函数,可以根据实际情况替换
    return x[0]**2 + x[1]**2

# 定义约束条件
def constraint(x):
    # 这是一个示例约束条件,可以根据实际情况替换
    return x[0] + x[1] - 1

# 初始猜测值
initial_guess = [0.5, 0.5]

# 定义约束
constraints = ({'type': 'eq', 'fun': constraint})

# 最小化目标函数
result = minimize(objective_function, initial_guess, constraints=constraints)

# 输出结果
print("最优解:", result.x)
print("最优值:", result.fun)

消融实验分析

1.明确研究问题:
a.确定哪些因素可能影响评审的公正性和效果。
2.定义要消融的因素:
a.根据研究问题,确定要消融的关键因素。这些因素可以包括:评审专家数量
i.评审方式(一阶段、两阶段)
ii.成绩调整方法(标准化、去掉最高分最低分等)
3.设置基准实验:
a.进行一次基准实验,使用当前的评审方案作为基准。记录所有相关数据,包括评审分数、作品的获奖情况、极差等。
4.逐步消融因素:
a.针对每个因素,进行逐步消融实验。例如,对于评审专家数量,可以按以下方式进行:在基准实验中使用全部专家进行评审。
i.然后,逐渐减少评审专家的数量,例如,只使用80%、60%、40%等比例的专家进行评审。
ii.记录每个实验条件下的评审结果。
5.记录和分析数据:
a.记录每个实验条件下的数据,包括各个阶段的评审分数、获奖情况、极差大小等。
b.使用统计分析方法比较不同实验条件下的数据,以确定哪些因素对评审结果和极差有显著影响。
6.得出结论:
a.根据数据分析的结果,得出结论。确定哪些因素对评审方案的公正性和效果具有重要影响,哪些因素对极差的大小有影响。
7.改进评审方案:
a.基于结论,提出可能的改进建议。例如,如果评审专家数量显著影响结果,可以考虑增加专家的参与或者改进专家的培训。
8.验证实验:
a.如果可能,进行验证实验以确认结论的可靠性。验证实验可以采用不同的数据集或竞赛进行。
9.总结研究结果:
a.撰写报告或总结,详细说明实验设计、结果和结论。这将有助于其他人了解您的研究工作。

(5 封私信 / 2 条消息) 如何评价2023数学建模研赛C题? - csdn

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

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

相关文章

二十四、MySQL事务操作演示

1、事务 &#xff08;1&#xff09;事务简介&#xff1a; &#xff08;2&#xff09;实际操作方式&#xff1a; 在执行MySQL语句时&#xff0c;系统默认自动提交&#xff0c;但是语句一旦出现报错&#xff0c;就可能导致数据出现大规模错误&#xff0c;所以我们要做的就是&…

牛客网解题之跳台阶

10.3 跳台阶 题目链接 牛客网 题目描述 一只青蛙一次可以跳上 1 级台阶&#xff0c;也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 解题思路 当 n 1 时&#xff0c;只有一种跳法&#xff1a; 当 n 2 时&#xff0c;有两种跳法&#xff1a; 跳 n 阶台…

【强化学习】03 ——马尔可夫决策过程

文章目录 1. 马尔科夫决策过程(Markov Decision Process&#xff0c;MDP)1.1. 马尔科夫性质1.2. 状态转移矩阵1.3. 马尔可夫过程1.3.1. 一个简单的例子 2. 马尔可夫奖励过程2.1. 回报2.2. 价值函数 3. 马尔科夫决策过程3.1. MDP五元组3.2. 策略3.3. 价值函数3.3.1. 状态价值函数…

MYSQL——命令大全

1.创建数据库&#xff1a; CREAT E DATABASE [IF NOT EXISTS] DATABASE_NAME; 2.查看数据库&#xff1a; SHOW DATABASES; 3.进入数据库 USE DATABASE_NAME; 4.指定字符集&#xff08;character&#xff09;和校对规则&#xff08;collation&#xff09;创建数据库 CREA…

Spring面试题18:Spring中可以注入一个null和一个空字符串吗?Spring中如何注入一个java集合?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring中可以注入一个null和一个空字符串吗? 在Spring中是可以注入null和空字符串的。 注入null:可以使用@Value注解,将属性值设为null。例如:…

ChatGPT可以取代搜索引擎吗?

ChatGPT对于一些简单的问题&#xff0c;可以完美的完成任务。但是我让它写一篇完整的文章&#xff0c;看看它能否代替我进行写作地的时候&#xff0c;我确定它不能完全取代人类。 但是我们可以使用更多的指导来让AI在日常工作流程为我们工作&#xff0c;所以本文将讨论如何有效…

Spimes x5.0主题模板全开源源码

Spimes主题为博客、自媒体、资讯类的网站设计开发&#xff0c;自适应兼容手机、平板设备的团队&#xff0c;工作室门户主题&#xff0c;精心打磨的一处处细节。只为让您的站点拥有速度与优雅兼具的极致体验。小灯泡自媒体博客免授权 安装教程&#xff1a; 1.模板目录usr/them…

[管理与领导-102]:经营与管理的关系:攻守关系;武将文官关系;开疆拓土与守护城池的关系;战斗与练兵的关系;水涨船高,水落船低的关系。

目录 前言&#xff1a; 一、手中拿着锤子,一切看起来都像钉子 1.1 企业经营中过渡强调管理的表现&#xff1f; 1.2 企业经营中过渡强调管理的误区&#xff08;背后深层次的原因&#xff09; 二、无知者的无畏&#xff0c;独断者的自high 2.1 企业经营中过度忽律管理的表…

5个顶级的Blender生成式AI插件

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 Blender 以其强大的 3D 建模和动画工具而闻名。 但你知道它也可以用来制作令人难以置信的纹理和背景吗&#xff1f; 当然&#xff0c;使用正确的插件。 在本文中&#xff0c;我们将了解 Blender 的顶级 AI 插件。 这些插…

普通卷积、转置卷积详细介绍以及用法

转置卷积&#xff08;普通卷积、转置卷积详细介绍以及用法 1、普通卷积操作2、转置卷积2.1 Pytorch转置卷积实验 1、普通卷积操作 首先回顾下普通卷积&#xff0c;下图以stride1&#xff0c;padding0&#xff0c;kernel_size3为例&#xff0c;假设输入特征图大小是4x4的&#…

Kotlin只截取Float小数点后数值DecimalFormat

Kotlin只截取Float小数点后数值DecimalFormat import java.text.DecimalFormatfun main(args: Array<String>) {val pi 3.141516Fvar p pi - pi.toInt()println(p)val decimalFormat DecimalFormat("00.0000")val format decimalFormat.format(p)println(…

ajax method to retrieve images as a blob

go 服务端&#xff1a; 就是先把这个图片读出来 然后返回二进制的数据 byteFile, err : ioutil.ReadFile("." "/processed/" uuidStr"processed.png")if err ! nil {fmt.Println(err)}c.Header("Content-Disposition", "att…

[Linux] 2.Linux开发环境的搭建(Ubuntu)

虚拟机&#xff1a;VMare安装、Ubuntu、VitualBox 真机&#xff1a;公司的研发服务器 Linux虚拟机安装所需文件&#xff1a; 网盘资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WN-tizjHpOgNF0tjbvcZsA?pwd2itd 提取码&#xff1a;2itd 文件解压&#xff…

聊聊设计模式——命令模式

目录 命令模式定义 优点 缺点 命令模式结构说明 工作流程 代码练习 应用场景 本质 涉及的设计原则 相关设计模式 开源框架中的应用 命令模式定义 将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志…

【内网穿透】隐蔽通信隧道技术之建立ICMP隧道

一、基础知识 1、概述 一般的网络通信、先在两台机器之间建立 TCP 连接&#xff0c;然后进行正常的数据通信。在知道P 地址的情况下、可以直接发送报文:如果不知道 P 地址&#xff0c;就需要将域名解析成P 地址。在实际的网络中、通常会通过各种边界设备、软/硬件防火墙甚至人…

React(react18)中组件通信06——redux-toolkit + react-redux

React&#xff08;react18&#xff09;中组件通信06——redux-toolkit react-redux 1 前言1.1 redux 和 react-redux1.2 关于redux-toolkit1.2.1 官网1.2.2 为什么要用Redux Toolkit&#xff1f; 1.3 安装 Redux Toolkit1.4 Redux Toolkit相关API 2. 开始例子——官网例子2.1 …

【Windows】 Windows 10 等系统如何关闭文件夹预览模式

在Windows系统进行文件操作时&#xff0c;由于屏幕尺寸有限&#xff0c;有时感觉文件夹右侧的预览模式很占位置&#xff0c;因此想预览时打开&#xff0c;想关闭时就关闭。 以下是两种解决方案&#xff1a; 方案一&#xff1a;彻底关闭预览模式 方案二&#xff1a;可通过快捷键…

Leetcode 1379.找出克隆二叉树中的相同节点

给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 target 相同 的节点&#xff0c;并返回对…

JDK 21 — JDK 21发布及多项新特性!

一、JDK 21 新特性说明 JDK 21 已经于 2023 年 9 月 19 日正式发布&#xff0c;Java 21 / JDK 21 已正式 GA&#xff0c;此版本是继 JDK 17 后的长期支持版本 (LTS)&#xff0c;Oracle 将为其提供至少八年的技术支持和更新。本文总结了 JDK 21 发布的新特性。 二、JDK 21 正式…

基于PyTorch3D的GeoAI实现【ESRI】

Esri 的 AI 原型团队正在以 PyTorch3D API 的一系列 PR 的形式分享一些功能增强功能。 这些功能支持 obj 格式的网格的输入/输出 (I/O)&#xff0c;该网格具有多个纹理和代表真实世界几何形状的顶点坐标。 对于 GeoAI 任务&#xff0c;这些功能支持跨网格分割管道的任务&#x…