【大模型】深度解析 NLP 模型5大评估指标及 应用案例:从 BLEU、ROUGE、PPL 到METEOR、BERTScore

news2024/12/26 19:18:58

在自然语言处理(NLP)领域,无论是机器翻译、文本生成,还是问答系统开发,模型性能评估指标始终是开发者绕不开的工具。BLEU、ROUGE、PPL(困惑度)、METEOR 和 BERTScore 是五个最具代表性的指标,然而,它们的计算方式、优缺点和适用场景却大不相同。

本文将通过公式推导、代码实现、行业场景分析以及实践案例,深度解析这五大评估指标的特点和应用,帮助你在实际项目中合理选择适合的指标。


1. 引言:行业背景与问题引入

近年来,语言模型如 ChatGPT 和 BERT 已席卷 NLP 领域。然而,如何科学评估这些模型的性能,始终是一个关键问题。例如:

• OpenAI 使用 PPL 衡量 GPT 系列模型的生成流畅度。

机器翻译模型 通常以 BLEU 为优化目标。

文本摘要 和 问答生成 更偏好使用 ROUGE 评估覆盖内容。

核心问题:

1. 不同 NLP 任务适合哪些评估指标?

2. 这些指标在实际应用中是如何工作的?

接下来,我们将从 BLEU 到 BERTScore,深度解析五大指标的核心原理、计算方法及行业应用。


2. 深度解析五大指标

2.1 BLEU:翻译任务中的黄金标准

定义:

BLEU 是一种评估生成文本与参考文本相似性的指标,主要用于机器翻译任务。它通过计算生成文本与参考文本之间的 n-gram 匹配率 来衡量翻译质量。得分越高,生成的文本越接近参考文本。

公式推导:

BLEU 的计算包括以下步骤:

1. n-gram 精确率(Precision):统计候选文本中的 n-gram,与参考文本匹配的比例。

2. 加权几何平均(Weighted Geometric Mean)

  • • 计算不同长度的 n-gram 匹配率的加权几何平均,公式为:
  • • 通常  w_n  均为  \frac{1}{N} ,表示每种 n-gram 的权重相等。

3. 惩罚机制(BP, Brevity Penalty)

用于防止生成的文本长度明显短于参考文本时获得高分。公式如下:

4. 最终公式

综合上述步骤,BLEU 的计算公式为:

其中:

案例解析

假设:

候选文本:it is a nice day

参考文本:today is a nice day

步骤 1:计算 n-gram 匹配率

1. 1-gram 精确率:

• 候选文本的 1-grams 为:{it, is, a, nice, day}

• 参考文本的 1-grams 为:{today, is, a, nice, day}

• 匹配项:{is, a, nice, day}

• 匹配率:

2. 2-gram 精确率:

• 候选文本的 2-grams 为:{it is, is a, a nice, nice day}

• 参考文本的 2-grams 为:{today is, is a, a nice, nice day}

• 匹配项:{is a, a nice, nice day}

• 匹配率:

p_2 = \frac{3}{4}

3. 3-gram 精确率:

• 候选文本的 3-grams 为:{it is a, is a nice, a nice day}

• 参考文本的 3-grams 为:{today is a, is a nice, a nice day}

• 匹配项:{a nice day}

• 匹配率:

p_3 = \frac{1}{3}

4. 4-gram 精确率:

• 候选文本的 4-grams 为:{it is a nice, is a nice day}

• 参考文本的 4-grams 为:{today is a nice day}

• 匹配项:无

• 匹配率:

p_4 = 0

步骤 2:加权几何平均

• 取每种 n-gram 的匹配率的对数平均值:

ps: 默认是均匀平均,可以手动修改权重的。因此这里平均1/4

步骤 3:计算 BP

• 假设候选文本长度为  5 ,参考文本长度为  6 :

步骤 4:计算最终 BLEU 分数

最终 BLEU 分数(假设几何平均值为 0.55)为:

BLEU = 0.82 \cdot 0.55 \approx 0.45

实战代码

以下是用 Python 实现 BLEU 的完整示例:

# 导入 nltk 库中用于计算 BLEU 分数的两个函数:sentence_bleu 和 corpus_bleu
from nltk.translate.bleu_score import sentence_bleu, corpus_bleu

# 示例句子
candidate = ['it', 'is', 'a', 'nice', 'day']  # 候选文本,通常由模型生成的句子分词后得到
reference = [['today', 'is', 'a', 'nice', 'day']]  # 参考文本,人工生成的正确句子,外层列表允许包含多个参考句

# 计算单句 BLEU
# weights 指定使用的 n-gram 权重,默认是均匀分布 (0.25, 0.25, 0.25, 0.25) 对应 BLEU-1, BLEU-2, BLEU-3, BLEU-4
score = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))

# 打印结果
# 输出的是单句 BLEU 分数,范围在 0 到 1 之间
print(f"Sentence BLEU Score: {score}")

# 示例数据:多句子的 BLEU 计算
# candidates 是一个包含多个候选句的列表,每个句子都已经分词
candidates = [
    ['it', 'is', 'a', 'nice', 'day'],  # 第一个候选句
    ['what', 'a', 'great', 'day']     # 第二个候选句
]

# references 是一个包含参考句子的列表,每个参考句子可以包含多个参考文本
references = [
    [['today', 'is', 'a', 'nice', 'day']],  # 第一个候选句对应的参考句子列表
    [['what', 'a', 'wonderful', 'day']]    # 第二个候选句对应的参考句子列表
]

# 使用 corpus_bleu 计算整个语料库的 BLEU 分数
# 该函数会将多个候选句和对应的参考句作为整体进行评估
corpus_score = corpus_bleu(references, candidates)

# 打印结果
# 输出的是语料库级别的 BLEU 分数,范围在 0 到 1 之间
print(f"Corpus BLEU Score: {corpus_score}")

输出: 

运行结果解释应用场景

单句 BLEU:

• 测试单个句子的生成质量。

多句 BLEU:

• 比较模型在整个数据集上的翻译或生成能力。

2.2 ROUGE:文本摘要的评估利器

ROUGE (Recall-Oriented Understudy for Gisting Evaluation) 详解

定义:

ROUGE是基于召回率的评估指标,特别适用于 文本摘要问答生成 和 机器翻译 等任务。其核心思想是通过对生成文本和参考文本的 n-gram 或 子序列 匹配程度进行评估。

常见变体

1. ROUGE-N:基于 n-gram 匹配的召回率。

核心:基于 n-gram 的匹配

什么意思?

• 将文本分成连续的 n 个单词的组合(称为 n-gram)。

**适用场景:**机器翻译、摘要生成等。

• 计算生成文本和参考文本之间 匹配的 n-gram 占参考文本所有 n-gram 的比例

示例

• 生成文本:it is a nice day

• 参考文本:today is a nice day

• 1-gram 匹配:{is, a, nice, day},召回率为 \frac{4}{5} 。

• 2-gram 匹配:{is a, a nice, nice day},召回率为 \frac{3}{4}

2. ROUGE-L:基于最长公共子序列(LCS)的匹配。

核心:基于最长公共子序列(LCS)

什么意思?

• 找出生成文本和参考文本之间的 最长连续子序列(Longest Common Subsequence, LCS)。

• 子序列可以跳过部分单词,但保持顺序。

特点:

• 能够捕捉生成文本与参考文本在 顺序和语义上的相似性

• 更适合自然语言任务,因为它允许跳跃。

• **适用场景:**自动摘要、对话生成等。

示例

• 生成文本:it is a nice day

• 参考文本:today is a nice day

• LCS 为 is a nice day,长度为 4。

• 参考文本长度为 5,召回率为  \frac{4}{5}

3. ROUGE-S:允许跳跃匹配的 n-gram。

核心:基于跳跃 n-gram 匹配(Skip-Bigram)

什么意思?

• 考虑生成文本和参考文本中 不连续但有顺序的单词对

Skip-Bigram 是指两个单词之间可以跳过其他单词,但顺序必须一致。

特点:

• 跳跃匹配可以捕捉生成文本与参考文本在 长距离依赖上的相似性

• 对单词顺序有一定要求,但允许灵活性。

• **适用场景:**多文档摘要、长文本生成等。

示例

• 生成文本:it is a nice day

• 参考文本:today is a nice day

• Skip-Bigram 匹配:{is nice, a day}。

4. ROUGE-W

核心:加权最长公共子序列

什么意思?

• 和 ROUGE-L 类似,但 更强调连续匹配的部分

• 给连续匹配的子序列更高的权重,以鼓励生成文本和参考文本在内容上更连贯。

特点:

• 更加重视生成文本的 连贯性 和 流畅性

• 连续匹配的权重越高,得分越高。

• **适用场景:**对流畅性要求高的任务,例如文档摘要。

案例解析

候选文本:it is a nice day

参考文本:today is a nice day

计算结果:

ROUGE-1(1-gram 匹配):召回率 =\frac{4}{5} 。

ROUGE-2(2-gram 匹配):召回率 =\frac{3}{4} 。

ROUGE-L(LCS 匹配):is a nice day,召回率 = \frac{4}{5}

实战代码

from rouge import Rouge  # 导入 ROUGE 库,用于计算文本的 ROUGE 指标。

# 候选文本
candidate = "It is a nice day today"
# 候选文本是模型生成的文本(Candidate Text),用于与参考文本进行比较。

# 参考文本
reference = "Today is a nice day"
# 参考文本是人工生成的标准答案(Reference Text),通常用作评估基准。

# 初始化 ROUGE 计算器
rouge = Rouge()
# 创建一个 Rouge 对象,提供计算多种 ROUGE 指标的方法。

# 计算 ROUGE 分数
scores = rouge.get_scores(candidate, reference)
# 调用 get_scores 方法,计算候选文本与参考文本之间的 ROUGE 分数。
# 返回值是一个字典,其中包含 ROUGE-1、ROUGE-2 和 ROUGE-L 的精确率(Precision)、召回率(Recall)和 F1 分数。

# 打印结果
print("ROUGE-1:", scores[0]["rouge-1"])
# 打印 ROUGE-1 指标的得分。ROUGE-1 表示基于 1-gram(单词级别)的匹配。

print("ROUGE-2:", scores[0]["rouge-2"])
# 打印 ROUGE-2 指标的得分。ROUGE-2 表示基于 2-gram(连续两个单词)的匹配。

print("ROUGE-L:", scores[0]["rouge-l"])
# 打印 ROUGE-L 指标的得分。ROUGE-L 表示基于最长公共子序列(LCS)的匹配。

输出: 

 {
    "rouge-1": {"p": 0.8, "r": 0.6667, "f": 0.7273},
    "rouge-2": {"p": 0.75, "r": 0.6, "f": 0.6667},
    "rouge-l": {"p": 0.8333, "r": 0.6667, "f": 0.7407}
}

结果解释:

ROUGE-1:

精确率(p)= 0.8:候选文本的单词中有 80% 在参考文本中出现。

召回率(r)= 0.6667:参考文本的单词中有 66.67% 被候选文本覆盖。

F1 分数(f)= 0.7273:精确率和召回率的综合衡量值。

ROUGE-2:

精确率(p)= 0.75:候选文本的二元组中有 75% 在参考文本中匹配。

召回率(r)= 0.6:参考文本的二元组中有 60% 被候选文本覆盖。

F1 分数(f)= 0.6667:综合衡量候选文本与参考文本在短语级别的相似性。

ROUGE-L:

精确率(p)= 0.8333:候选文本与参考文本的最长公共子序列(LCS)长度占候选文本的比例。

召回率(r)= 0.6667:LCS 长度占参考文本的比例。

F1 分数(f)= 0.7407:衡量候选文本与参考文本的顺序和内容相似度。

2.3 PPL(困惑度):语言模型的试金石

定义:

PPL(Perplexity)衡量语言模型预测测试文本的能力,值越低,表示模型预测能力越强。

公式:

其中:

•  W :表示测试文本。

•  w_i:表示文本中的第  i  个单词。

•  P(w_i | w_1, w_2,..., w_{i-1}):表示模型预测第  i  个单词的概率。

•  N :测试文本的总单词数。

直观解释:

1. PPL 衡量模型的不确定性:

PPL 值越低:表示模型对文本的预测更准确。

PPL 值越高:表示模型对文本的预测越不确定。

2. PPL 的意义:

• 如果模型的 PPL 为  k ,可以理解为模型在预测每个单词时,平均有  k  个候选单词需要考虑。


2. PPL 的计算步骤

(1) 句子概率

语言模型会为测试句子分配一个生成概率  P(W) ,通过以下公式计算:

P(W) = \prod_{i=1}^{N} P(w_i | w_1, w_2, ..., w_{i-1})

• 其中, P(w_i | w_1, w_2,..., w_{i-1})  是根据语言模型计算的条件概率。

(2) 对数化处理

为了防止概率连乘导致的数值下溢问题(概率值非常小),对概率取对数:

\log_2 P(W) = \sum_{i=1}^{N} \log_2 P(w_i | w_1, w_2, ..., w_{i-1})

(3) 平均对数概率

计算单词的平均对数概率(归一化到每个单词):

-\frac{1}{N} \sum_{i=1}^{N} \log_2 P(w_i | w_1, w_2, ..., w_{i-1})

(4) 指数化

将对数均值通过指数化恢复到概率空间:

PPL(W) = 2^{-\frac{1}{N} \sum_{i=1}^{N} \log_2 P(w_i | w_1, w_2,..., w_{i-1})}


3. PPL 的意义

(1) 理想情况

• 当  PPL = 1 :模型对测试文本的预测完全准确,没有任何不确定性。

• 例如,一个完美的语言模型能精准地预测所有单词的出现。

(2) 一般情况

• 当  PPL > 1 :模型对测试文本存在一定的不确定性。

•  PPL  值越高,模型的预测质量越差。

(3) 实际意义

• PPL 反映了语言模型对测试数据的 “困惑” 程度。

• 低 PPL 表示模型更擅长预测文本中的单词。


案例解析

测试句子:I have a pen

假设概率分布:{'I': 0.1, 'have': 0.1, 'a': 0.4, 'pen': 0.1}

步骤 1:计算句子概率

根据 Unigram 模型的假设,句子的概率是各单词概率的乘积:

将每个单词的概率代入:

步骤 2:对数化处理

为避免数值下溢,对概率取对数,并累加:

计算每个单词的对数概率(保留两位小数):

累加结果:

步骤 3:归一化处理

将对数概率归一化为平均对数概率:

步骤 4:指数化处理

通过对平均对数概率指数化,得到困惑度:

结果

最终困惑度为:

PPL = 7.07


1. 困惑度含义

• PPL 表示模型在预测句子时的平均不确定性。

•  PPL = 7.07  表示模型平均需要考虑约 7 个候选单词。

2. 结果解读

• 如果困惑度较低,说明模型对句子的预测更准确。

• 本案例中,困惑度值适中,说明模型对该句子的预测尚有提升空间。

实战代码

import math  # 导入数学模块,用于对数计算

# 定义测试句子
sentence = ['I', 'have', 'a', 'pen']  # 测试句子:'I have a pen'

# 定义 Unigram 模型的单词概率分布
unigram_probs = {
    'I': 0.1,       # 单词 'I' 的概率为 0.1
    'have': 0.1,    # 单词 'have' 的概率为 0.1
    'a': 0.4,       # 单词 'a' 的概率为 0.4
    'pen': 0.1      # 单词 'pen' 的概率为 0.1
}

# 初始化句子概率
sentence_prob = 1  # 初始值设为 1,因为要用乘法累计每个单词的概率

# 遍历句子中的每个单词,计算句子概率
for word in sentence:
    sentence_prob *= unigram_probs[word]  # 将句子中每个单词的概率相乘

# 对句子概率取以 2 为底的对数,并取负号
log_prob = -math.log2(sentence_prob)

# 计算平均对数概率(归一化到单词级别)
avg_log_prob = log_prob / len(sentence)

# 通过指数化计算困惑度 PPL
ppl = 2 ** avg_log_prob

# 打印结果
print(f"句子概率: {sentence_prob}")       # 打印整个句子的生成概率
print(f"平均对数概率: {avg_log_prob}")   # 打印平均对数概率
print(f"困惑度 PPL: {ppl:.2f}")         # 打印困惑度(保留两位小数)

输出:

句子概率: 0.0004000000000000001
平均对数概率: 2.8228756555322954
困惑度 PPL: 7.07

2.4 METEOR 与 BERTScore:现代 NLP 的新方向

METEOR

核心特点

• 支持 同义词匹配(如 run 和 running)。

• 结合精确率与召回率,更注重语义相关性。

from nltk.translate.meteor_score import meteor_score

# 候选文本
candidate = "The cat is sleeping on the mat"

# 参考文本
reference = "A cat sleeps on the mat"

# 计算 METEOR 分数
score = meteor_score([reference], candidate)

# 输出结果
print(f"METEOR Score: {score:.4f}")

METEOR Score: 0.6444 

BERTScore

核心特点

• 使用预训练模型(如 BERT)生成上下文词向量。

• 通过余弦相似度计算生成文本与参考文本的语义相似性。

实战代码

from bert_score import score

# 候选文本
candidate = ["The cat is sleeping on the mat"]

# 参考文本
reference = ["A cat sleeps on the mat"]

# 计算 BERTScore
P, R, F1 = score(candidate, reference, lang="en", verbose=True)

# 输出结果
print(f"BERTScore Precision: {P[0]:.4f}")
print(f"BERTScore Recall: {R[0]:.4f}")
print(f"BERTScore F1 Score: {F1[0]:.4f}")

输出:

BERTScore Precision: 0.9786
BERTScore Recall: 0.9815
BERTScore F1 Score: 0.9801 

METEOR 适合对 翻译质量 和 文本生成 的基本评估,尤其是需要考虑词形变化和同义词匹配的场景。

BERTScore 在需要 深度语义匹配 的任务中表现更强,如对长文本或复杂语境进行评价。

3. 指标对比与选择指南

4. 实战案例

案例 1:BLEU 对比两种翻译模型性能。

案例 2:ROUGE 评估文本摘要质量。

案例 1:使用 BLEU 对比两种翻译模型性能

背景

任务: 比较两种机器翻译模型的性能。

指标: 使用 BLEU 分数衡量生成的翻译文本与参考翻译的相似性。

数据: 假设有一个句子和两种翻译模型的输出结果,以及参考翻译。

代码

from rouge import Rouge

# 参考摘要
reference_summary = "The cat is on the mat. It is sleeping."

# 机器生成的摘要
generated_summary = "The cat is sleeping on the mat."

# 初始化 ROUGE 计算器
rouge = Rouge()

# 计算 ROUGE 分数
scores = rouge.get_scores(generated_summary, reference_summary)

# 打印结果
print("ROUGE-1:", scores[0]["rouge-1"])
print("ROUGE-2:", scores[0]["rouge-2"])
print("ROUGE-L:", scores[0]["rouge-l"])

输出示例

Model 1 BLEU Score: 1.0000

Model 2 BLEU Score: 0.5170

分析

• 模型 1 的 BLEU 分数为 1.0,表示与参考翻译完全一致。

• 模型 2 的 BLEU 分数为 0.5170,说明翻译不完全准确(a 和 mat 的翻译质量较低)。

• BLEU 分数帮助我们量化两种翻译模型的性能。

案例 2:使用 ROUGE 评估文本摘要质量

背景

任务: 评估机器生成的摘要与参考摘要的质量。

指标: 使用 ROUGE 分数衡量摘要的覆盖率。

数据: 假设有一个参考摘要和一个机器生成的摘要。

代码

from rouge import Rouge

# 参考摘要
reference_summary = "The cat is on the mat. It is sleeping."

# 机器生成的摘要
generated_summary = "The cat is sleeping on the mat."

# 初始化 ROUGE 计算器
rouge = Rouge()

# 计算 ROUGE 分数
scores = rouge.get_scores(generated_summary, reference_summary)

# 打印结果
print("ROUGE-1:", scores[0]["rouge-1"])
print("ROUGE-2:", scores[0]["rouge-2"])
print("ROUGE-L:", scores[0]["rouge-l"])

输出示例

ROUGE-1: {'r': 0.8333, 'p': 0.8333, 'f': 0.8333}
ROUGE-2: {'r': 0.7500, 'p': 0.7500, 'f': 0.7500}
ROUGE-L: {'r': 0.8333, 'p': 0.8333, 'f': 0.8333}

分析

ROUGE-1: 单词级别的匹配分数。

• 召回率(r)、精确率(p)、F1 分数(f)均为 0.8333,表示生成摘要覆盖了大部分参考摘要的内容。

ROUGE-2: 二元组(bigram)的匹配分数为 0.7500,说明生成摘要对短语的结构较好,但略有缺失。

ROUGE-L: 基于最长公共子序列的分数为 0.8333,表明生成摘要较连贯。

总结

案例 1 通过 BLEU 分数对比两种翻译模型的性能,量化翻译质量。

案例 2 使用 ROUGE 分数评估机器摘要与参考摘要的覆盖率和连贯性。

• 这两种方法是 NLP 任务中常用的评估方式,可以帮助开发者改进模型性能。

5. 总结与展望

经典指标:BLEU 和 ROUGE 是传统任务的首选。

现代指标:METEOR 和 BERTScore 更关注语义,适合复杂任务。

未来方向:多模态任务评估指标将成为研究重点。

通过本文,希望你能深入理解 NLP 模型评估的五大核心指标,并灵活应用于实际任务中!

shud

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

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

相关文章

idea 自动导包,并且禁止自动导 *(java.io.*)

自动导包配置 进入 idea 设置,可以按下图所示寻找位置,也可以直接输入 auto import 快速定位到配置。 Add unambiguous imports on the fly:自动帮我们优化导入的包Optimize imports on the fly:自动去掉一些没有用到的包 禁止导…

Mac安装及合规无限使用Beyond Compare

文章目录 Beyond CompareBeyond Compare简介Beyond Compare安装Beyond Compare到期后继续免费使用 Beyond Compare Beyond Compare简介 Beyond Compare 是一款由 Scooter Software 开发的文件和文件夹比较工具。它主要用于对比两个文件或文件夹之间的差异,并支持文…

Navcat连接sqlserver报错:[IM002][Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0)

Navcat连接sqlserver报错:[IM002][Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0) 原因:navicat没有找到sqlserver驱动 解决:安装sqlserver驱动,下载后双击安装,安装完重新连接就可以了…

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“

参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…

微信小游戏/抖音小游戏SDK接入踩坑记录

文章目录 前言问题记录1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效2、微小支付的参数如何获取?3、iOS 平台不支持虚拟支付怎么办?微小 iOS 端支付时序图:抖小 iOS 端支付:4、展示广告时多次回调 onClose5、在使用单例时 this 引起的 bug6、使用 fetch 或…

vue 2 父组件根据注册事件,控制相关按钮显隐

目标效果 我不注册事件,那么就不显示相关的按钮 注册了事件,才会显示相关内容 实现思路 组件在 mounted 的时候可以拿到父组件注册监听的方法 拿到这个就可以做事情了 mounted() {console.log(this.$listeners, this.$listeners);this.show.search !…

服务熔断-熔断器设计

文章目录 服务为什么需要熔断熔断器设计思想熔断器代码实现 服务为什么需要熔断 对于服务端采用的保护机制为服务限流。 对于服务调用端是否存在保护机制? 假如要发布一个服务 B,而服务 B 又依赖服务 C,当一个服务 A 来调用服务 B 时&#x…

【Maven】依赖冲突如何解决?

准备工作 1、创建一个空工程 maven_dependency_conflict_demo,在 maven_dependency_conflict_demo 创建不同的 Maven 工程模块,用于演示本文的一些点。 什么是依赖冲突? 当引入同一个依赖的多个不同版本时,就会发生依赖冲突。…

代理IP地址的含义与设置指南‌

在数字化时代,互联网已经成为我们日常生活不可或缺的一部分。然而,在享受互联网带来的便利的同时,我们也面临着隐私泄露、访问限制等问题。代理IP地址作为一种有效的网络工具,能够帮助我们解决这些问题。本文将详细介绍代理IP地址…

【MyBatis】验证多级缓存及 Cache Aside 模式的应用

文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口, 采用 Redis 会引入什么问题?万一遇到需强一致场景&#x…

组播基础实验

当需要同时发给多个接受者或者接收者ip未知时使用组播 一、组播IP地址 1、组播IP地址范围 组播地址属于D类地址:224.0.0.0/4(224.0.0.0-239.255.255.255) 2、分类 (1)链路本地地址(link-local&#xf…

智慧银行反欺诈大数据管控平台方案(二)

智慧银行反欺诈大数据管控平台建设方案,通过系统性整合多元化数据源,融合先进的大数据处理与机器学习技术,构建一个具备实时性、智能性和高度集成能力的反欺诈系统框架。该方案以提升银行风险管理效率与精度为目标,创新性地采用多…

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现01-笑脸漏洞(vsftpd)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

手机控制载货汽车一键启动无钥匙进入广泛应用

移动管家载货汽车一键启动无钥匙进入手机控车系统‌, 该系统广泛应用于物流运输、工程作业等货车场景,为车主提供了高效、便捷的启动和熄火解决方案,体现了科技进步对物流行业的积极影响‌ 核心功能‌:简化启动流程,提…

OGRE 3D----5. OGRE和QML事件交互

在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGR…

macos下brew安装redis

首先确保已安装brew,接下来搜索资源,在终端输入如下命令: brew search redis 演示如下: 如上看到有redis资源,下面进行安装,执行下面的命令: brew install redis 演示效果如下: …

汽车轮毂结构分析有哪些?国产3D仿真分析实现静力学+模态分析

本文为CAD芯智库原创,未经允许请勿复制、转载! 之前分享了如何通过国产三维CAD软件如何实现「汽车/汽配行业产品设计」,兼容NX(UG)、Creo(Proe),轻松降低企业上下游图纸交互成本等。…

Kafka的消费消息是如何传递的?

大家好,我是锋哥。今天分享关于【Kafka的消费消息是如何传递的?】面试题。希望对大家有帮助; Kafka的消费消息是如何传递的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,消息的消费是通过消费…

常见靶场的搭建

漏洞靶场 渗透测试(漏洞挖掘)切忌纸上谈兵,学习渗透测试(漏洞挖掘)知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及…