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

遗传算法组卷系统实现(Java版)

遗传算法组卷系统实现(Java版)

下面是一个完整的遗传算法组卷系统的Java实现,包含题目表示、适应度计算、选择、交叉和变异等核心操作。

1. 核心类设计

1.1 题目实体类(Question.java)

public class Question {private String id;private String content;private String type; // 题型:单选、多选、填空等private double difficulty; // 难度系数 0-1private double score; // 题目分值private String knowledgePoint; // 知识点// 构造函数、getter和setter省略...
}

1.2 试卷个体类(Paper.java)
import java.util.List;

public class Paper {
private List questions;
private double fitness; // 适应度

public Paper(List<Question> questionPool, int questionCount) {// 随机初始化试卷Collections.shuffle(questionPool);this.questions = new ArrayList<>(questionPool.subList(0, questionCount));this.fitness = 0;
}public Paper(List<Question> questions) {this.questions = questions;this.fitness = 0;
}// 计算试卷总分
public double getTotalScore() {return questions.stream().mapToDouble(Question::getScore).sum();
}// 计算试卷平均难度
public double getAverageDifficulty() {return questions.stream().mapToDouble(Question::getDifficulty).average().orElse(0);
}// getter和setter...

}

1.3 组卷规则类(PaperRule.java)

public class PaperRule {private double totalScore; // 试卷总分private double difficulty; // 期望难度private int questionCount; // 题目数量private Map<String, Integer> typeDistribution; // 题型分布private Map<String, Integer> knowledgeDistribution; // 知识点分布// 构造函数、getter和setter...
}

2. 遗传算法核心实现

2.1 遗传算法主类(GAExamPaper.java)

import java.util.*;public class GAExamPaper {private List<Question> questionPool; // 题库private PaperRule rule; // 组卷规则private int populationSize; // 种群大小private double crossoverRate; // 交叉概率private double mutationRate; // 变异概率private int maxGeneration; // 最大迭代次数private List<Paper> population; // 种群public GAExamPaper(List<Question> questionPool, PaperRule rule, int populationSize, double crossoverRate, double mutationRate, int maxGeneration) {this.questionPool = questionPool;this.rule = rule;this.populationSize = populationSize;this.crossoverRate = crossoverRate;this.mutationRate = mutationRate;this.maxGeneration = maxGeneration;initPopulation();}// 初始化种群private void initPopulation() {population = new ArrayList<>();for (int i = 0; i < populationSize; i++) {population.add(new Paper(questionPool, rule.getQuestionCount()));}}// 运行遗传算法public Paper evolve() {for (int generation = 0; generation < maxGeneration; generation++) {// 计算适应度calculateFitnessForAll();// 选择List<Paper> newPopulation = selection();// 交叉crossover(newPopulation);// 变异mutation(newPopulation);// 更新种群population = newPopulation;// 输出当前最优解Paper best = getBestPaper();System.out.printf("Generation %d: Best Fitness=%.4f%n", generation, best.getFitness());// 提前终止条件if (best.getFitness() >= 0.95) {break;}}return getBestPaper();}// 计算所有个体的适应度private void calculateFitnessForAll() {for (Paper paper : population) {paper.setFitness(calculateFitness(paper));}}// 计算单个个体的适应度private double calculateFitness(Paper paper) {// 1. 总分差异(越小越好)double scoreDiff = Math.abs(paper.getTotalScore() - rule.getTotalScore());double scoreFitness = 1 - scoreDiff / rule.getTotalScore();// 2. 难度差异(越小越好)double difficultyDiff = Math.abs(paper.getAverageDifficulty() - rule.getDifficulty());double difficultyFitness = 1 - difficultyDiff;// 3. 题型分布符合度double typeFitness = calculateTypeFitness(paper);// 4. 知识点分布符合度double knowledgeFitness = calculateKnowledgeFitness(paper);// 综合适应度(权重可根据需要调整)return 0.3 * scoreFitness + 0.2 * difficultyFitness + 0.25 * typeFitness + 0.25 * knowledgeFitness;}// 计算题型分布适应度private double calculateTypeFitness(Paper paper) {Map<String, Integer> actualCount = new HashMap<>();for (Question q : paper.getQuestions()) {actualCount.merge(q.getType(), 1, Integer::sum);}double fitness = 0;for (Map.Entry<String, Integer> entry : rule.getTypeDistribution().entrySet()) {int expected = entry.getValue();int actual = actualCount.getOrDefault(entry.getKey(), 0);fitness += 1 - (double) Math.abs(expected - actual) / expected;}return fitness / rule.getTypeDistribution().size();}// 计算知识点分布适应度private double calculateKnowledgeFitness(Paper paper) {// 类似题型分布的计算方法// ...}// 选择操作(轮盘赌选择)private List<Paper> selection() {List<Paper> newPopulation = new ArrayList<>();// 计算总适应度double totalFitness = population.stream().mapToDouble(Paper::getFitness).sum();// 轮盘赌选择for (int i = 0; i < populationSize; i++) {double slice = Math.random() * totalFitness;double sum = 0;for (Paper paper : population) {sum += paper.getFitness();if (sum >= slice) {newPopulation.add(new Paper(new ArrayList<>(paper.getQuestions())));break;}}}return newPopulation;}// 交叉操作(单点交叉)private void crossover(List<Paper> newPopulation) {for (int i = 0; i < newPopulation.size() - 1; i += 2) {if (Math.random() < crossoverRate) {Paper parent1 = newPopulation.get(i);Paper parent2 = newPopulation.get(i + 1);// 随机选择交叉点int crossoverPoint = (int) (Math.random() * parent1.getQuestions().size());// 执行交叉List<Question> child1Questions = new ArrayList<>();child1Questions.addAll(parent1.getQuestions().subList(0, crossoverPoint));child1Questions.addAll(parent2.getQuestions().subList(crossoverPoint, parent2.getQuestions().size()));List<Question> child2Questions = new ArrayList<>();child2Questions.addAll(parent2.getQuestions().subList(0, crossoverPoint));child2Questions.addAll(parent1.getQuestions().subList(crossoverPoint, parent1.getQuestions().size()));// 替换原个体newPopulation.set(i, new Paper(child1Questions));newPopulation.set(i + 1, new Paper(child2Questions));}}}// 变异操作private void mutation(List<Paper> newPopulation) {for (Paper paper : newPopulation) {if (Math.random() < mutationRate) {// 随机选择变异位置int mutationPos = (int) (Math.random() * paper.getQuestions().size());// 从题库中随机选择一道不同的题目替换Question oldQuestion = paper.getQuestions().get(mutationPos);Question newQuestion;do {newQuestion = questionPool.get((int) (Math.random() * questionPool.size()));} while (newQuestion.equals(oldQuestion));paper.getQuestions().set(mutationPos, newQuestion);}}}// 获取当前种群中最优个体private Paper getBestPaper() {return Collections.max(population, Comparator.comparingDouble(Paper::getFitness));}
}

3. 使用示例

public class Main {public static void main(String[] args) {// 1. 准备题库List<Question> questionPool = prepareQuestionPool();// 2. 设置组卷规则PaperRule rule = new PaperRule();rule.setTotalScore(100);rule.setDifficulty(0.6);rule.setQuestionCount(50);Map<String, Integer> typeDistribution = new HashMap<>();typeDistribution.put("单选", 30);typeDistribution.put("多选", 10);typeDistribution.put("填空", 10);rule.setTypeDistribution(typeDistribution);// 3. 创建遗传算法组卷实例GAExamPaper ga = new GAExamPaper(questionPool, rule, 100, 0.8, 0.1, 200);// 4. 执行组卷Paper bestPaper = ga.evolve();// 5. 输出结果System.out.println("最佳试卷:");System.out.println("总分:" + bestPaper.getTotalScore());System.out.println("平均难度:" + bestPaper.getAverageDifficulty());System.out.println("适应度:" + bestPaper.getFitness());}private static List<Question> prepareQuestionPool() {// 这里应该从数据库或文件加载题目List<Question> questions = new ArrayList<>();// 添加各种题目...return questions;}
}

4. 算法优化建议

适应度函数优化:

可以根据实际需求调整各项指标的权重

加入对重复知识点的惩罚项

选择策略改进:

可以结合精英保留策略,确保最优个体不被淘汰

使用锦标赛选择代替轮盘赌选择

交叉和变异改进:

实现多点交叉或均匀交叉

变异时可以优先选择与当前题目相似的题目

并行计算:

适应度计算可以并行化以提高性能

动态参数调整:

随着迭代进行动态调整交叉率和变异率

这个实现提供了遗传算法组卷的核心框架,你可以根据具体需求进行调整和扩展。实际应用中,还需要考虑题库的存储和检索效率等问题。

相关文章:

遗传算法组卷系统实现(Java版)

遗传算法组卷系统实现&#xff08;Java版&#xff09; 下面是一个完整的遗传算法组卷系统的Java实现&#xff0c;包含题目表示、适应度计算、选择、交叉和变异等核心操作。 1. 核心类设计 1.1 题目实体类&#xff08;Question.java&#xff09; public class Question {pri…...

JVM 逃逸分析

JVM逃逸分析&#xff1a;让Java对象"乖乖听话"的侦探游戏 大家好&#xff01;我是你们的老朋友"代码神探福尔摩斯"&#xff0c;今天要带大家破解一个JVM界的经典悬案——如何让Java对象乖乖待在它该待的地方&#xff1f; 第一章&#xff1a;案发现场——…...

第三天——贪心算法——区间问题

题目描述 给定多个区间&#xff0c;计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。 输入输出样例 输入是一个数组&#xff0c;包含多个长度固定为的子数组&#xff0c;表示每个区间的开始和结尾。输出一个 整数&#xff0c;表示需要移除的区间数量。 …...

路由重发布

路由重发布 实验目标&#xff1a; 掌握路由重发布的配置方法和技巧&#xff1b; 掌握通过路由重发布方式实现网络的连通性&#xff1b; 熟悉route-pt路由器的使用方法&#xff1b; 实验背景&#xff1a;假设学校的某个分区需要配置简单的rip协议路由信息&#xff0c;而主校…...

嵌入式与物联网:C 语言在边缘计算时代的破局之道

引言 在万物互联的 2025 年&#xff0c;全球物联网设备连接数突破 300 亿台&#xff0c;其中 78% 的嵌入式控制系统仍基于 C 语言开发。这种跨越半个世纪的编程语言&#xff0c;正以新的技术形态在智能汽车、工业物联网、边缘计算等领域重塑竞争力。本文通过三个前沿应用场景&…...

计算机网络:WiFi路由器发射的电磁波在空气中的状态是什么样的?

WiFi路由器发射的电磁波是高频无线电波,属于微波频段(2.4GHz或5GHz),在空气中以光速传播(约310⁸米/秒),其传播状态和特性可通过以下维度详细解析: 一、电磁波的物理特性 频率与波长 2.4GHz频段:波长约12.5厘米,穿透力较强但易受干扰(微波炉、蓝牙等共用频段)。5GH…...

使用FastAPI和Apache Flink构建跨环境数据管道

系统概述 本文介绍如何使用FastAPI微服务、Apache Flink和AWS ElastiCache Redis构建一个可扩展的数据管道&#xff0c;实现本地Apache Hive数据仓库与AWS云上Redis之间的数据交互。 该架构通过FastAPI提供RESTful接口&#xff0c;Apache Flink处理数据流&#xff0c;实现了本…...

解决 SQL Server 2008 导入 Excel 表卡在“正在初始化数据流”问题

在使用 SQL Server 2008 导入 Excel 表时&#xff0c;可能会遇到卡在“正在初始化数据流”这一令人困扰的情况。笔者近期也遭遇了同样的问题&#xff0c;尝试了多种常规方法均未解决&#xff0c;最终通过特定命令成功化解难题&#xff0c;在此分享解决过程与经验。 一、问题描…...

【Linux系统】从零开始构建简易 Shell:从输入处理到命令执行的深度剖析

文章目录 前言一、打印命令行提示符代码功能概述 二、读取键盘输入的指令2.1 为什么不继续使用scanf()而换成了fgets()&#xff1f;2.2 调试输出的意义2.3 为什么需要去掉换行符&#xff1f; 三、指令切割补充知识&#xff1a; strtok 的函数原型 四、普通命令的执行代码功能概…...

SSRF服务端请求伪造

SSRF&#xff1a;服务端请求伪造 危害&#xff1a;任意文件读取、任意服务探测&#xff08;通过端口来探测&#xff09; 例&#xff1a;探测3306端口&#xff0c;看mysql服务是否开启&#xff0c;再通过文件读取&#xff0c;获得mysql配置文件 例&#xff1a;当我们点击链接…...

LVGL的三层屏幕结构

文章目录 &#x1f31f; LVGL 的三层屏幕架构1. **Top Layer&#xff08;顶层&#xff09;**2. **System Layer&#xff08;系统层&#xff09;**3. **Active Screen&#xff08;当前屏幕层&#xff09;** &#x1f9e0; 总结对比&#x1f50d; 整体作用✅ 普通屏幕层对象&…...

使用互斥锁保护临界

Linux线程互斥及相关概念解析 1. 临界资源&#xff08;Critical Resource&#xff09; 定义&#xff1a;被多个线程共享的资源&#xff08;如变量、文件、内存区域等&#xff09;&#xff0c;需通过互斥访问确保数据一致性。特点&#xff1a; 共享性&#xff1a;多个线程可能…...

5.8线性动态规划2

P1004 [NOIP 2000 提高组] 方格取数 做法1&#xff1a;DFS剪枝 #include<bits/stdc.h> using namespace std; int n, a[10][10], maxs, minx 11, miny 11, maxx, maxy; void dfs(int x, int y, int s, int type){if(type 1 && x minx && y miny){…...

linux系统Ubuntn界面更改为中文显示,配置流程

Linux 系统是一种开源的、多用户的、多任务的操作系统&#xff0c;具有高度的稳定性、安全性和灵活性&#xff0c;被广泛应用于服务器、嵌入式系统、科研、教育以及个人电脑等领域。以下是关于 Linux 系统的一些基本信息&#xff1a; 发展历程&#xff1a;Linux 的发展始于 19…...

Looper死循环阻塞为什么没有ANR

Looper 死循环阻塞没有 ANR 的原因在于 ANR (Application Not Responding) 的检测机制依赖于特定线程的事件处理超时。以下是详细解释&#xff1a; 1. ANR 的触发机制&#xff1a; 主线程 (UI 线程) 阻塞&#xff1a; ANR 最常见的情况是主线程阻塞。Android 系统会监控主线程…...

数字孪生陆上风电场可视化管理系统

图扑软件搭建陆上风电场数字孪生平台&#xff0c;通过高精度建模与实时数据采集&#xff0c;1:1 还原风机设备、输电网络及场区环境。动态展示风机运行参数、发电量、设备健康状态等信息&#xff0c;实现风电场运维管理的智能化、可视化与高效化。...

图像处理篇---MJPEG视频流处理

文章目录 前言一、MJPEG流基础概念MJPEG流特点格式简单无压缩时序HTTP协议传输边界标记 常见应用场景IP摄像头视频流嵌入式设备&#xff08;如ESP32&#xff09;视频输出简单视频监控系统 二、基础处理方法方法1&#xff1a;使用OpenCV直接读取优点缺点 方法2&#xff1a;手动解…...

ensp的华为小实验

1.先进行子网划分 2.进行接口的IP地址配置和ospf的简易配置&#xff0c;先做到全网小通 3.进行ospf优化 对区域所有区域域间路由器进行一个汇总 对区域1进行优化 对区域2.3进行nssa设置 4.对ISP的路由进行协议配置 最后ping通5.5.5.5...

webpack和vite区别

webpack将文件视为模块打包 &#xff0c;从入口文件递归解析依赖&#xff0c;生成依赖图&#xff0c;使用loader处理非JS模块&#xff0c;最终输出到dist目录 因为要解析所有依赖&#xff0c;所以他启动慢 vite利用浏览器对于es模块的原生支持&#xff0c;利用ESM能力&#x…...

从父类到子类:C++ 继承的奇妙旅程(2)

前言&#xff1a; 各位代码航海家&#xff0c;欢迎回到C继承宇宙&#xff01;上回我们解锁了继承的「基础装备包」&#xff0c;成功驯服了public、protected和花式成员隐藏术。但—— ⚠️前方高能预警&#xff1a; 继承世界的暗流涌动远不止于此&#xff01;今天我们将勇闯三大…...

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。

ScaleTransition 是 Flutter 中的一个动画组件&#xff0c;用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换&#xff0c;从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用&#xff0c;以控制动画的开始、结束和过渡效果。 基…...

部署RocketMQ

部署环境&#xff1a;jdk8以上&#xff0c;Linux系统 下载和安装指令&#xff1a; wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip 显示下载成功&#xff1a; --2025-05-10 11:34:46-- https://archive.apache.org/dist/rocketm…...

从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净

1.停止并删除所有正在运行的容器 docker ps -a # 查看所有容器 docker stop $(docker ps -aq) # 停止所有容器 docker rm $(docker ps -aq) # 删除所有容器如果提示没有找到容器&#xff0c;可以忽略这些提示。 2.删除所有镜像 docker images # 查看所有镜像 dock…...

每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))

洛谷P2241 统计方形&#xff08;数据加强版&#xff09;题解 题目描述 给定一个 n m n \times m nm 的方格棋盘&#xff0c;要求统计其中包含的正方形数量和长方形数量&#xff08;不包含正方形&#xff09;。输入为两个正整数 n n n 和 m m m&#xff0c;输出两个整数分…...

LLaVA:开源多模态大语言模型深度解析

一、基本介绍 1.1 项目背景与定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人开发的开源多模态大语言模型,旨在实现GPT-4级别的视觉-语言交互能力。该项目通过视觉指令微调技术,将预训练的视觉编码器与语言模型深度融合,在多个多模态基准测试中达到…...

基于Spring Boot + Vue的母婴商城系统( 前后端分离)

一、项目背景介绍 随着母婴行业在互联网平台的快速发展&#xff0c;越来越多的家庭倾向于在线选购母婴产品。为了提高商品管理效率和用户购物体验&#xff0c;本项目开发了一个基于 Spring Boot Vue 技术栈的母婴商城系统&#xff0c;实现了商品分类、商品浏览、资讯展示、评…...

HNUST湖南科技大学-软件测试期中复习考点(保命版)

使用说明&#xff1a;本复习考点仅用于及格保命。软件测试和其他专业课不太一样&#xff0c;记忆的太多了&#xff0c;只能说考试的时候&#xff0c;想到啥就写啥&#xff0c;多写一点&#xff01;多写一点&#xff01;多写一点&#xff01;&#xff08;重要事情说三遍&#xf…...

【AI智能推荐系统】第七篇:跨领域推荐系统的技术突破与应用场景

第七篇:跨领域推荐系统的技术突破与应用场景 提示语:🔥 “打破数据孤岛,实现1+1>2的推荐效果!深度解析美团、亚马逊如何用跨领域推荐技术实现业务协同,知识迁移核心技术全公开!” 目录 跨领域推荐的商业价值跨领域推荐技术体系 2.1 基于共享表征的学习2.2 迁移学习…...

【现代深度学习技术】注意力机制04:Bahdanau注意力

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

使用FastAPI和React以及MongoDB构建全栈Web应用01 概述

Are you ready to craft digital experiences that captivate and convert? 您准备好打造令人着迷并能带来转变的数字体验了吗&#xff1f; In a world driven by innovation, the demand for robust and scalable web applications has never been higher. Whether you’re…...

Flutter - UIKit开发相关指南 - 概览

环境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 概览 UIView与Widgets的比较 在UIKit使用UIView类的对象进行页面开发,布局也是UIView类的对象,在Flutter中使用的是Widget,在概念上Widget可以理解成UIView。 差异&#xff1a; 有效期: Widgets是不可变的,它的生存期只…...

扩容 QCOW2 磁盘镜像文件

&#x1f308; 个人主页&#xff1a;Zfox_ 目录 ✅ 一、扩展 QCOW2 文件大小✅ 二、启动虚拟机后扩展分区和文件系统方式一&#xff1a;如果使用的是标准分区&#xff08;如 /dev/vda1&#xff09;方式二&#xff1a;使用 gparted&#xff08;图形工具&#xff09; ✅ 总结 &am…...

【ts】for in对象时,ts如何正确获取对应的属性值

第一种&#xff1a;for…in keyof&#xff1a;适合需要遍历对象属性键并动态访问值的场景。 keyof typeof obj是ts的类型操作符&#xff0c;用于获取对象obj的所有属性键的联合类型&#xff08;“name” | “age” | “city”&#xff09;通过obj[key keyof typeof obj]&…...

软考 系统架构设计师系列知识点之杂项集萃(55)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;54&#xff09; 第89题 某软件公司欲开发一个Windows平台上的公告板系统。在明确用户需求后&#xff0c;该公司的架构师决定采用Command模式实现该系统的界面显示部分&#xff0c;并设计UML类图如…...

绑定 SSH key(macos)

在 macOS 上绑定 Gitee 或 GitHub 的 SSH Key&#xff0c;通常分为以下几步操作&#xff0c;包括生成 SSH key、添加到 ssh-agent&#xff0c;并配置到 Gitee 或 GitHub 平台。 1. 检查是否已有 SSH Key ls -al ~/.ssh 看看是否已有 id_rsa 或 id_ed25519 等文件。如果没有就…...

PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪

文章目录 torch.compiler延伸阅读 torch.fft快速傅里叶变换辅助函数 torch.func什么是可组合的函数变换&#xff1f;为什么需要可组合的函数变换&#xff1f;延伸阅读 torch.futurestorch.fx概述编写转换函数图结构快速入门图操作直接操作计算图使用 replace_pattern() 进行子图…...

Unreal 从入门到精通之VR常用操作

文章目录 前言1.如何设置VRPawn视角的位置。2.如何播放视频3.如何播放VR全景视频。4.如何打开和关闭VR模式。前言 我们使用Unreal5 开发VR 项目的时候,会遇到很多常见问题。 比如: 1.如何设置VRPawn视角的位置。 2.如何播放视频。 3.如何播放VR全景视频。 4.如何打开和关闭V…...

Dify使用总结

最近完成了一个Dify的项目简单进行总结下搭建服务按照官方文档操作就行就不写了。 进入首页之后由以下组成&#xff1a; 探索、工作室、知识库、工具 探索&#xff1a; 可以展示自己创建的所有应用&#xff0c;一个应用就是一个APP&#xff0c;可以进行测试使用 工作室包含…...

事务连接池

一、事务概述 &#xff08;一&#xff09;事务的定义 事务是数据库提供的一种特性&#xff0c;用于确保数据操作的完整性和一致性。事务将多个数据操作组合成一个逻辑单元&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。 &#xff08;二&#xff09;事务的特性…...

如何用AWS Lambda构建无服务器解决方案:实战经验与场景解析

一、为什么开发者都在关注Serverless&#xff1f; 一、为什么开发者都在关注Serverless&#xff1f; 在云计算高速发展的今天&#xff0c;“无服务器架构”正成为技术新宠。根据Gartner预测&#xff0c;到2025年全球将有50%企业采用Serverless技术。而作为无服务器领域的领头…...

Android Compose 框架物理动画之捕捉动画深入剖析(29)

Android Compose 框架物理动画之捕捉动画深入剖析 一、引言 在 Android 应用开发中&#xff0c;动画是提升用户体验的关键元素之一。它能够让界面更加生动、交互更加自然。Android Compose 作为新一代的声明式 UI 框架&#xff0c;为开发者提供了强大且灵活的动画能力。其中&…...

Jmeter中的Json提取器如何使用?

在JMeter中使用JSON提取器可以方便地从JSON格式的响应数据中提取特定字段的值。以下是详细步骤和示例&#xff1a; 1. 添加JSON提取器 右击目标HTTP请求 -> 选择 添加 -> 后置处理器 -> JSON提取器。 2. 配置JSON提取器参数 变量名称&#xff08;Names of created…...

STM32中断

STM32 GPIO外部中断简图 中断向量表 定义一块固定的内存&#xff0c;以4字节对齐&#xff0c;存放各个中断服务函数程序的首地址 中断向量表定义在启动文件&#xff0c;当发生中断&#xff0c;CPU会自动执行对应的中断服务函数 中断向量表以及中断函数 NVIC嵌套向量中断控制…...

navicat 如何导出数据库表 的这些信息 字段名 类型 描述

navicat 如何导出数据库表 的这些信息 字段名 类型 描述 数据库名字 springbootmt74k 表名字 address SELECT COLUMN_NAME AS 字段名,COLUMN_TYPE AS 类型,COLUMN_COMMENT AS 描述 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA springbootmt74k AND TABLE_NAME a…...

LangGraph(三)——添加记忆

目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针&#xff1a; from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…...

数仓-可累计,半累加,不可累加指标,是什么,举例说明及解决方案

目录 1. 可累计指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 2. 半累加指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 3. 不可累加指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 4. 总结对比5. 实际场景中的注意事项 这是数据仓库设计…...

Java ClassLoader双亲委派机制

Java ClassLoader双亲委派机制 1 什么是双亲委派模型 “类加载体系”及ClassLoader双亲委派机制。java程序中的 .java文件编译完会生成 .class文件&#xff0c;而 .class文件就是通过被称为类加载器的ClassLoader加载的&#xff0c;而ClassLoder在加载过程中会使用“双亲委派…...

upload-labs靶场通关详解:第四关

一、分析源代码 可以看出这一关仍然是黑名单验证&#xff0c;但是它禁止了更多的后缀。像php3&#xff0c;php4这类后缀也被加入了黑名单&#xff0c;第三关的方法在这里显然就失效了。那么我们想一想&#xff0c;既然配置文件中存在将php3当作php来执行的功能&#xff0c;那么…...

Webug4.0通关笔记25- 第30关SSRF

目录 一、SSRF简介 1.SSRF原理 2.渗透方法 二、第30关SSRF渗透实战 1.打开靶场 2.渗透实战 &#xff08;1&#xff09;Windows靶场修复 &#xff08;2&#xff09;Docker靶场修复 &#xff08;3&#xff09;获取敏感文件信息 &#xff08;4&#xff09;内网端口与服务…...

【 Redis | 实战篇 缓存 】

目录 前言&#xff1a; 1.认识缓存 2.添加Redis缓存 2.1.根据id查询商铺缓存 2.2.优化根据id查询商铺缓存 3.缓存更新策略 3.1.三种策略 3.2.策略选择 3.3.主动更新的方案 3.4. Cache Aside的模式选择 3.5.最佳实践方案 4.缓存三大问题 4.1.缓存穿透 4.1.1.介绍 …...