2023 年 数维杯(C题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

问题重述

信息技术和人工智能的迅速发展,特别关注大型语言模型(Large Language Models,LLMs)在全球范围内的广泛应用,以ChatGPT为代表。这些模型在机器人导航、语音识别、图像识别、自然语言处理和智能推荐等领域表现出色,为人们提供了丰富、智能和便捷的体验。
然而,随着这些技术的普及,也出现了一些潜在问题。首先,这些大型语言模型是基于文本训练的,而不同领域的语言和文化背景可能对生成的结果产生重要影响。其次,生成的文本可能存在语义偏见、逻辑不连贯和缺乏创造力的问题。最后,涉及隐私保护、版权保护以及学术不端行为等问题,特别是在学术领域可能存在使用AI生成论文导致的相关问题。
因此,虽然这些模型为我们带来了很多便利,但也需要认识到其潜在风险和挑战。在这个背景下,题目提出了一系列问题,旨在深入探讨使用AI生成文本可能引发的问题,并提出建立模型和方法来解决这些问题。
在这里插入图片描述

问题一

我们可以定义一些关键变量,然后通过对这些变量进行统计分析来寻找AI文本生成的基本规律。以下是一些可能的变量:

  1. W W W:生成的字数要求,取值为200字、500字等。
  2. G G G:生成次数,包括首次生成和点击"重新生成"按钮的次数。
  3. T T T:是否中英文翻译,取值为0表示未翻译,1表示中文翻译,2表示英文翻译。
  4. S S S:生成文本的风格,可以用一个离散值表示。

我们可以通过一个包含这些变量的矩阵 X X X 来表示数据:

X = [ W 1 G 1 T 1 S 1 W 2 G 2 T 2 S 2 ⋮ ⋮ ⋮ ⋮ W N G N T N S N ] X = \begin{bmatrix} W_1 & G_1 & T_1 & S_1 \\ W_2 & G_2 & T_2 & S_2 \\ \vdots & \vdots & \vdots & \vdots \\ W_N & G_N & T_N & S_N \end{bmatrix} X= W1W2WNG1G2GNT1T2TNS1S2SN

接下来,我们可以通过对矩阵 X X X 进行统计分析,找到生成文本的基本规律。例如,我们可以计算在特定字数要求下,重新生成的次数的平均值、中英文翻译的频率分布、不同风格的出现频率等。

使用统计学方法,例如计算均值、方差、频率分布等。例如,我们可以定义一个函数 (f(W, G, T, S)) 来表示生成文本的某个方面,然后通过对 (X) 中的数据进行分析,得到关于这个函数的统计信息。

f ( W , G , T , S ) = 某个方面的特征 f(W, G, T, S) = \text{某个方面的特征} f(W,G,T,S)=某个方面的特征

在简单多元回归中,通过回归模型的输出来判断文本是否为AI生成,设置一个阈值,当模型的输出超过这个阈值时,认为文本是由AI生成的。

在多元回归中,模型的输出 Y Y Y 可以表示为:

Y = β 0 + β 1 ⋅ W + β 2 ⋅ G + β 3 ⋅ T + β 4 ⋅ S + ϵ Y = \beta_0 + \beta_1 \cdot W + \beta_2 \cdot G + \beta_3 \cdot T + \beta_4 \cdot S + \epsilon Y=β0+β1W+β2G+β3T+β4S+ϵ

其中, β 0 , β 1 , β 2 , β 3 , β 4 \beta_0, \beta_1, \beta_2, \beta_3, \beta_4 β0,β1,β2,β3,β4是回归系数, ϵ \epsilon ϵ 是误差项。

设置一个阈值 T AI T_{\text{AI}} TAI,当 Y > T AI Y > T_{\text{AI}} Y>TAI 时,认为文本是由AI生成的,否则认为不是。

在进行假设检验时,我们的目标是判断某个回归系数是否显著不为零。假设检验通常涉及到以下步骤:

首先,我们建立两个假设,即零假设 H 0 H_0 H0备择假设 H 1 H_1 H1

  • H 0 H_0 H0: 回归系数等于零,即 β i = 0 \beta_i = 0 βi=0,表示该变量对生成文本的某个方面没有显著影响。
  • H 1 H_1 H1: 回归系数不等于零,即 β i ≠ 0 \beta_i \neq 0 βi=0,表示该变量对生成文本的某个方面有显著影响。

选择显著性水平(Significance Level),通常用 (\alpha) 表示,例如取 (\alpha = 0.05)。这代表我们允许的错误发生率,即在零假设为真时错误地拒绝它的概率。

计算检验统计量(Test Statistic),该统计量用于在给定显著性水平下决定是否拒绝零假设。对于回归系数 (\beta_i),检验统计量通常计算为:

t = β ^ i SE ( β ^ i ) t = \frac{\hat{\beta}_i}{\text{SE}(\hat{\beta}_i)} t=SE(β^i)β^i

其中, β ^ i \hat{\beta}_i β^i 是回归系数的估计值, SE ( β ^ i ) \text{SE}(\hat{\beta}_i) SE(β^i) 是估计的标准误差。
根据检验统计量计算 p-值,p-值表示在零假设为真的情况下,观察到当前检验统计量或更极端情况的概率。

在给定的显著性水平下(通常为 (\alpha = 0.05)),比较 p-值和显著性水平,如果 (p < \alpha),则拒绝零假设,认为回归系数显著不为零;如果 (p \geq \alpha),则接受零假设,表示没有足够的证据拒绝零假设。

如果拒绝了零假设,说明相应的变量对生成文本的某个方面有显著影响。反之,如果接受了零假设,说明该变量对生成文本的某个方面没有显著影响。

通过假设检验的步骤,判断每个变量的回归系数是否显著不为零,从而在统计学上推断它们对生成文本的影响。

问题二

我们可以考虑使用一种二元分类的方法,通过分析每一段文本的多个因素来判断该段是否由AI生成。

定义一些可能影响判断的变量:

  1. L L L:生成语言,0表示未生成,1表示中文生成,2表示英文生成。
  2. (T):是否翻译,0表示未翻译,1表示中文翻译,2表示英文翻译。
  3. (G):生成次数,表示生成的次数。
  4. (L):输出字数限制,0表示没有字数限制,1表示有字数限制。

将这些变量用一个矩阵 (Y) 表示,其中每一行代表一段文本。

Y = [ L 1 T 1 G 1 L 1 L 2 T 2 G 2 L 2 ⋮ ⋮ ⋮ ⋮ L N T N G N L N ] Y = \begin{bmatrix} L_1 & T_1 & G_1 & L_1 \\ L_2 & T_2 & G_2 & L_2 \\ \vdots & \vdots & \vdots & \vdots \\ L_N & T_N & G_N & L_N \end{bmatrix} Y= L1L2LNT1T2TNG1G2GNL1L2LN

步骤二:建立二元分类模型

使用Transformer进行二元分类提供一些更具体的数学公式解释。我们将主要关注Transformer的Self-Attention机制和二元分类的数学表达。

1. Transformer的Self-Attention机制

Self-Attention机制允许模型在处理输入序列时对不同位置的信息分配不同的权重。对于一个输入序列 X X X,经过Self-Attention的计算,我们可以得到新的表示 (Z),其中 Z i Z_i Zi 表示第 i i i 个位置的表示。Self-Attention的计算可以用以下公式表示:

Z i = ∑ j Attention ( X i , X j ) ⋅ X j Z_i = \sum_{j} \text{Attention}(X_i, X_j) \cdot X_j Zi=jAttention(Xi,Xj)Xj

其中, Attention ( X i , X j ) \text{Attention}(X_i, X_j) Attention(Xi,Xj)表示第 i i i 个位置和第 j j j 个位置之间的注意力权重。

2. 文本表示

对于文本段落的表示,我们可以使用Transformer的输出中的某一维度,通常是CLS标记的输出。表示为 C C C

C = Transformer ( X ) C = \text{Transformer}(X) C=Transformer(X)

3. 二元分类层

将文本表示输入二元分类层,其中 (W) 是权重,(b) 是偏置,(f) 是激活函数(通常是Sigmoid函数):

y ^ = f ( W ⋅ C + b ) \hat{y} = f(W \cdot C + b) y^=f(WC+b)

4. 损失函数

使用二元交叉熵损失函数:

Loss = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] \text{Loss} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i) \right] Loss=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]

其中, N N N 是样本数量, y i y_i yi 是实际标签(0或1), y ^ i \hat{y}_i y^i 是模型的预测输出。

5. 训练过程

通过反向传播算法,优化模型参数以最小化损失函数。使用梯度下降算法或其他优化算法。

6. 推断过程

在推断过程中,将新的文本输入模型,得到输出概率。可以根据概率设定一个阈值,例如0.5,判断文本是由AI生成还是非AI生成。

这些数学公式提供了对问题二中使用Transformer进行二元分类任务的详细解释。在实践中,可以根据具体情况调整模型结构和超参数。

步骤三:训练模型

使用已有的数据集,包含标记好的文本段落和对应的变量值,对模型进行训练。在训练中,模型将学习不同变量对于文本生成的影响,从而能够判断一段文本是否由AI生成。

在实际应用中,基于Transformer的二元分类任务的代码通常使用深度学习框架,例如TensorFlow或PyTorch。由于代码的长度较长,这里提供一个简化版本的伪代码,展示了关键的步骤和概念。

这个伪代码使用PyTorch作为深度学习框架,同时使用Hugging Face的Transformers库以便快速使用预训练的Transformer模型。

import torch
import torch.nn as nn
from transformers import BertModel, BertTokenizer# 定义Transformer模型
class TransformerClassifier(nn.Module):def __init__(self, hidden_size, num_classes):super(TransformerClassifier, self).__init__()self.transformer = BertModel.from_pretrained('bert-base-uncased')self.fc = nn.Linear(hidden_size, num_classes)self.sigmoid = nn.Sigmoid()def forward(self, input_ids, attention_mask):outputs = self.transformer(input_ids, attention_mask=attention_mask)cls_output = outputs.last_hidden_state[:, 0, :]logits = self.fc(cls_output)proba = self.sigmoid(logits)return proba# 数据预处理
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "This is a sample text."
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)# 构建模型
hidden_size = 768  # BERT-base的隐藏层大小
num_classes = 1    # 二元分类
model = TransformerClassifier(hidden_size, num_classes)# 模型输入
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]# 模型输出
output_proba = model(input_ids, attention_mask)# 计算损失
criterion = nn.BCELoss()
target = torch.tensor([1.0])  # 实际标签
loss = criterion(output_proba, target)# 反向传播与优化
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
optimizer.zero_grad()
loss.backward()
optimizer.step()

使用BERT模型进行文本表示,使用了Sigmoid激活函数和二元交叉熵损失函数进行二元分类。

步骤四:模型评估

使用另外的数据集对模型进行评估,检查模型的性能,包括准确率、召回率、精确率等指标。这些指标可以衡量模型在判断每一段文本生成情况上的表现。

import torch
from transformers import BertTokenizer# 加载已训练的模型
model = TransformerClassifier(hidden_size, num_classes)
model.load_state_dict(torch.load('your_trained_model.pth'))  # 请替换为你实际的模型文件路径
model.eval()# 数据预处理
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "This is a new text for inference."
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)# 模型输入
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]# 推断
with torch.no_grad():output_proba = model(input_ids, attention_mask)# 输出概率
print("预测概率:", output_proba.item())# 根据阈值进行分类
threshold = 0.5
prediction = 1 if output_proba.item() > threshold else 0
print("预测结果:", prediction)

推理代码加载了之前训练好的模型权重,并使用该模型对新的文本进行推断。

这个方法结合了机器学习的思想,通过学习不同变量对文本生成的影响,使得模型能够在给定输入变量的情况下判断文本是否由AI生成。

问题三

对于语言模型特征中的信息熵,以及统计验证、特征工程、文献网络分析和社交网络分析等方法。

1. 语言模型特征:

1.1 信息熵:

信息熵是用来度量一个随机变量不确定度的概念,可以应用于文本的信息量评估。

H ( X ) = − ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) H(X) = - \sum_{i=1}^{n} P(x_i) \log_2 P(x_i) H(X)=i=1nP(xi)log2P(xi)

其中, P ( x i ) P(x_i) P(xi) 是词汇表中第 i i i个词出现的概率。

2. 实验设计与验证:

2.1 统计验证:

在统计验证中,一个常见的做法是使用 t 检验。

t = X ˉ − μ s / n t = \frac{\bar{X} - \mu}{s/\sqrt{n}} t=s/n Xˉμ

其中, X ˉ \bar{X} Xˉ 是样本均值, μ \mu μ是总体均值, s s s 是样本标准差, n n n 是样本大小。

3. 技术细节:

3.1 特征工程:

使用 TF-IDF进行关键词权重计算。

TF-IDF ( t , d ) = TF ( t , d ) × IDF ( t ) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

其中,TF 表示词频,IDF 表示逆文档频率。

4. 引用和参考文献:

4.1 文献网络分析:

可以使用图论的相关指标,如节点度、中心性等。

centrality = 连接到节点的边数 总节点数 − 1 \text{centrality} = \frac{\text{连接到节点的边数}}{\text{总节点数}-1} centrality=总节点数1连接到节点的边数

5. 作者身份可疑:

5.1 社交网络分析:

使用社交网络中的中心性指标,例如介数中心性。

介数中心性 = ∑ s ≠ v ≠ t σ ( s , t ∣ v ) σ ( s , t ) \text{介数中心性} = \sum_{s \neq v \neq t} \frac{\sigma(s, t|v)}{\sigma(s, t)} 介数中心性=s=v=tσ(s,t)σ(s,tv)

其中, σ ( s , t ) \sigma(s, t) σ(s,t) 表示从节点 s s s 到节点 t t t 的最短路径数, σ ( s , t ∣ v ) \sigma(s, t|v) σ(s,tv) 表示通过节点 (v) 的最短路径数。

结合多个特征进行加权得分和二元分类判断:

class BinaryClassifier:def __init__(self, weights, threshold):self.weights = weightsself.threshold = thresholddef calculate_total_score(self, features):# 计算总得分total_score = sum(f * w for f, w in zip(features, self.weights))return total_scoredef classify(self, total_score):# 进行二元分类判断return "AI生成" if total_score > self.threshold else "人类创作"# 示例特征和权重
example_features = [feature1, feature2, feature3]  # 请替换为实际特征的值
example_weights = [weight1, weight2, weight3]  # 请替换为实际权重的值# 示例阈值
example_threshold = 0.5  # 请替换为实际阈值# 创建二元分类器对象
classifier = BinaryClassifier(weights=example_weights, threshold=example_threshold)# 计算总得分
total_score_example = classifier.calculate_total_score(example_features)# 进行二元分类判断
classification_result = classifier.classify(total_score_example)# 打印结果
print(f"总得分: {total_score_example}")
print(f"分类结果: {classification_result}")

问题四:

了解,建立一个综合的抄袭检测模型需要综合考虑文本、图像和公式等多个方面。以下是一个简化的框架,其中包括文本相似性、图像处理和公式匹配等不同模块:

文本相似性模块:

使用文本相似性度量方法,如余弦相似度,来比较文章中数学模型的文本描述。

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similaritydef calculate_text_similarity(text1, text2):vectorizer = CountVectorizer().fit_transform([text1, text2])vectors = vectorizer.toarray()similarity = cosine_similarity([vectors[0]], [vectors[1]])[0][0]return similarity

图像处理模块:

使用深度学习方法对图像进行特征提取,然后比较图像的相似性。

# 使用适当的深度学习库导入模型和相关功能
from tensorflow.keras.applications import VGG16
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import preprocess_input
from tensorflow.keras.models import Model
import numpy as npdef calculate_image_similarity(image_path1, image_path2):# 使用预训练的VGG16模型提取图像特征model = VGG16(weights='imagenet', include_top=False)img1 = image.load_img(image_path1, target_size=(224, 224))img2 = image.load_img(image_path2, target_size=(224, 224))img1 = image.img_to_array(img1)img2 = image.img_to_array(img2)img1 = preprocess_input(np.expand_dims(img1, axis=0))img2 = preprocess_input(np.expand_dims(img2, axis=0))features1 = model.predict(img1)features2 = model.predict(img2)# 使用余弦相似度计算特征向量的相似性similarity = cosine_similarity(features1.flatten().reshape(1, -1), features2.flatten().reshape(1, -1))[0][0]return similarity

公式匹配模块:

使用LaTeX解析器将公式解析成结构化的数据,然后比较两个公式的结构相似性。

# 使用适当的LaTeX解析库导入模型和相关功能
from sympy import Eq, latex, simplify, symbols
from sympy.parsing.latex import parse_latexdef calculate_formula_similarity(formula1, formula2):# 解析LaTeX公式expr1 = parse_latex(formula1)expr2 = parse_latex(formula2)# 简化表达式simplified_expr1 = simplify(expr1)simplified_expr2 = simplify(expr2)# 比较两个公式的相似性similarity = float(simplified_expr1.equals(simplified_expr2))return similarity

模型整合:

将以上三个模块整合为一个综合的抄袭检测模型:

class PlagiarismDetectionModel:def __init__(self, text_weight, image_weight, formula_weight):self.text_weight = text_weightself.image_weight = image_weightself.formula_weight = formula_weightdef detect_plagiarism(self, text1, text2, image_path1, image_path2, formula1, formula2):# 计算各模块相似性text_similarity = calculate_text_similarity(text1, text2)image_similarity = calculate_image_similarity(image_path1, image_path2)formula_similarity = calculate_formula_similarity(formula1, formula2)# 综合得分total_score = self.text_weight * text_similarity + self.image_weight * image_similarity + self.formula_weight * formula_similarity# 返回结果return total_score

消融实验

消融实验是为了评估模型中各个组成部分的重要性,通常通过逐步移除某个组件并观察模型性能的变化来进行。在抄袭检测模型中,我们可以进行消融实验以评估文本、图像和公式模块对整体抄袭检测性能的贡献。

以下是一个简单的消融实验示例,假设我们有一个包含文本、图像和公式的抄袭检测模型,我们分别对这三个模块进行消融实验:

class AblationExperiment:def __init__(self, model):self.model = modeldef text_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):# 移除文本模块self.model.text_weight = 0total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)return total_scoredef image_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):# 移除图像模块self.model.image_weight = 0total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)return total_scoredef formula_ablation(self, text1, text2, image_path1, image_path2, formula1, formula2):# 移除公式模块self.model.formula_weight = 0total_score = self.model.detect_plagiarism(text1, text2, image_path1, image_path2, formula1, formula2)return total_score

在这个示例中,我们创建了一个AblationExperiment类,该类允许我们分别移除文本、图像和公式模块,然后检查模型性能的变化。

plagiarism_model = PlagiarismDetectionModel(text_weight=0.5, image_weight=0.3, formula_weight=0.2)
experiment = AblationExperiment(plagiarism_model)# 示例文本、图像和公式
example_text1 = ""
example_text2 = ""
example_image_path1 = "path/to/image1.jpg"
example_image_path2 = "path/to/image2.jpg"
example_formula1 = "a = b + c"
example_formula2 = "x = y * z"# 消融实验:移除文本模块
text_ablation_score = experiment.text_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)# 消融实验:移除图像模块
image_ablation_score = experiment.image_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)# 消融实验:移除公式模块
formula_ablation_score = experiment.formula_ablation(example_text1, example_text2, example_image_path1, example_image_path2, example_formula1, example_formula2)# 打印结果
print(f"移除文本模块后得分: {text_ablation_score}")
print(f"移除图像模块后得分: {image_ablation_score}")
print(f"移除公式模块后得分: {formula_ablation_score}")

2023 年 数维杯(C题) CS数模 国际大学生数学建模挑战赛 全解全析

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

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

相关文章

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model: gpt-3.5-turbo-1106,token: sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59,messages: [{role: user,content:使用json格式返回十二生肖&#xff0c;包含中文名和英文名&#xff0c;[{id:"1", enName:"", cnName: &quo…

振弦传感器表面应变计与振弦采集仪形成岩土工程监测的解决方案

振弦传感器表面应变计与振弦采集仪形成岩土工程监测的解决方案 振弦传感器表面应变计与振弦采集仪可以结合使用&#xff0c;形成岩土工程监测的解决方案。具体的方案包括以下几个步骤&#xff1a; 1. 安装振弦传感器表面应变计&#xff1a;首先需要在需要监测的岩土结构表面安…

如何在Jupyter Lab中安装不同的Kernel

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

mysql操作 sql语句中的完整性约束有哪些,主键约束、外键约束、引用完整性约束,主键外键、唯一性

什么是约束&#xff1a;约束&#xff1a;就是约定哪些东西能填、怎么填&#xff1f;哪些东西不能填&#xff1f; 文章目录 前言&#xff1a;建表正文一、实体完整性约束1. 主键约束2. 唯一性约束3. 自增长约束4. 联合主键约束 二、域完整性约束三、引用完整性约束1. 外键约束 讲…

从程序员到架构师,实现技术巅峰的完美转型

文章目录 一、程序员到架构师的转型过程1. 技术知识的积累2. 设计和决策能力的提升3. 沟通和协调能力的锻炼4. 批判性思维和解决问题能力的培养5. 不断学习和创新的精神 二、转型中需要克服的困难和挑战1. 技术知识的广度和深度2. 设计和决策的难度和风险3. 沟通和协调的挑战4.…

OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76

microsoft/Web-Dev-For-Beginners Stars: 71.5k License: MIT 这个开源项目是一个为期 12 周的全面课程&#xff0c;由微软云倡导者团队提供。它旨在帮助初学者掌握 JavaScript、CSS 和 HTML 的基础知识。每一节都包括预习和复习测验、详细的书面指南、解决方案、作业等内容。…

Javaweb之Vue的概述

2.1 Vue概述 通过我们学习的htmlcssjs已经能够开发美观的页面了&#xff0c;但是开发的效率还有待提高&#xff0c;那么如何提高呢&#xff1f;我们先来分析下页面的组成。一个完整的html页面包括了视图和数据&#xff0c;数据是通过请求 从后台获取的&#xff0c;那么意味着我…

pycharm/vscode 配置black和isort

Pycharm blackd Pycharm中有插件可以实现后台服务运行black&#xff1a;BlackConnect 安装 配置 Pycharm isort pycharm中&#xff0c;isort没有插件&#xff0c;暂使用外部工具实现&#xff0c;外部工具也可添加快捷键实现快捷对文件、文件夹进行format import&#xff1…

promise时效架构升级方案的实施及落地 | 京东物流技术团队

一、项目背景 为什么需要架构升级 promise时效包含两个子系统&#xff1a;内核时效计算系统&#xff08;系统核心是时效计算&#xff09;和组件化时效系统&#xff08;系统核心是复杂业务处理以及多种时效业务聚合&#xff0c;承接结算下单黄金流程流量&#xff09;&#xff…

622.设计循环队列(LeetCode)

思路 先确定什么情况为空&#xff0c;什么情况为满。 这里有两种解决方案&#xff0c; 1.留一个空间空置&#xff0c;当rear1 front时 &#xff0c;则队列为满 &#xff08;这里我们选用方案一&#xff09; 2.增加一个size变量记录数据个数&#xff0c;size 0则为空&#xff…

RabbitMQ之死信队列

文章目录 一、死信的概念二、死信的来源三、实战1、消息 TTL 过期2、队列达到最大长度3、消息被拒 总结 一、死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#x…

AI创作系统ChatGPT网站源码+详细搭建部署教程+支持DALL-E3文生图/支持最新GPT-4-Turbo-With-Vision-128K多模态模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

010.cat、find

1、用cat进行拼接 cat命令能够显示或拼接文件内容&#xff0c;不过它的能力远不止如此。比如说&#xff0c;cat能够将标准输入数据与文件数据组合在一起。通常的做法是将stdin重定向到一个文件&#xff0c;然后再合并两个文件。而cat命令一次就能搞定这些操作。 用cat读取文件…

Java排序算法之希尔排序

希尔排序&#xff08;Shell Sort&#xff09;又称“缩小增量排序”&#xff0c;是直接插入排序算法的一种更高效的改进版本。它的基本思想是&#xff1a;首先将整个数组按照一定的间隔分成若干个子序列&#xff0c;然后对每个子序列分别进行插入排序&#xff0c;减小间隔&#…

2023双十一爆冷收场,订单后暗藏这些电商痛点问题需要注意

打开某软件的瞬间&#xff0c;手不小心抖一下就进入了淘宝&#xff0c;而且无法第一时间准确找到关闭按钮。相信不少人都在这个双十一通过开屏广告为淘宝“贡献”至“超8亿”的访问量&#xff0c;更有网友辣评&#xff1a;“现在打开别的软件跳转淘宝的速度都比直接打开淘宝要快…

大语言模型量化方法对比:GPTQ、GGUF、AWQ

在过去的一年里&#xff0c;大型语言模型(llm)有了飞速的发展&#xff0c;在本文中&#xff0c;我们将探讨几种(量化)的方式&#xff0c;除此以外&#xff0c;还会介绍分片及不同的保存和压缩策略。 说明&#xff1a;每次加载LLM示例后&#xff0c;建议清除缓存&#xff0c;以…

【LIUNX】配置缓存DNS服务

配置缓存DNS服务 A.安装bind bind-utils1.尝试修改named.conf配置文件2.测试nslookup B.修改named.conf配置文件1.配置文件2.再次测试 缓存DNS服务器&#xff1a;只提供域名解析结果的缓存功能&#xff0c;目的在于提高数据查询速度和效率&#xff0c;但是没有自己控制的区域地…

虹科方案 | 从概念到生产的自动驾驶软件在环(SiL)测试解决方案

来源&#xff1a;雅名特自动驾驶 虹科方案 | 从概念到生产的自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案能够研究和验证高历程实验和恶劣驾…

计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法

7.计算属性 7-1计算属性-有缓存 模板中的表达式虽然很方便,但是只能做简单的逻辑操作,如果在模版中写太多的js逻辑,会使得模板过于臃肿,不利于维护,因此我们推荐使用计算属性来解决复杂的逻辑 <!DOCTYPE html> <html lang"en"> <head><meta …

初试 jmeter做压力测试

一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试&#xff0c;他可以帮助我们发现系统中的瓶颈问题&#xff0c;减少发布到生产环境后出问题的几率&#xff1b;预估系统的承载能力&#xff0c;使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步…