手把手制作Vue3+Flask全栈项目 全栈开发之路实战篇 问卷网站(五)数据处理

全栈开发一条龙——前端篇
第一篇:框架确定、ide设置与项目创建
第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。
第三篇:setup语法,设置响应式数据。
第四篇:数据绑定、计算属性和watch监视
第五篇 : 组件间通信及知识补充
第六篇:生命周期和自定义hooks
第七篇:路由
第八篇:传参
第九篇:插槽,常用api和全局api。
全栈开发一条龙——全栈篇
第一篇:初识Flask&MySQL实现前后端通信
第二篇: sql操作、发送http请求和邮件发送
第三篇:全栈实现发送验证码注册账号
第四篇:图片验证码及知识补充
全栈开发一条龙——实战篇

第一篇:项目建立与login页面
第二篇:建立管理员后台和添加题目功能实现
第三篇:完善管理员后台
第四篇:用户视图

本篇将完成数据处理页面

文章目录

  • 后端
    • 数据处理工具
    • 蓝图
  • 前端
    • 模板
    • 脚本
    • 完整前端代码
  • 效果展示

后端

数据处理工具

我们先来写数据处理的工具,我们的思路是从数据库中取出我们之前存储的答案序列,然后分析到达不同阶段的人数和相关系数等等。
我们先从数据库中获取数据

                raw_list = db.session.execute( text("select * from data_analysis") ).fetchall()answer_list = list_row2list_dic(raw_list)temp = sql_ex()question_info = temp.search()

接下来进行基础的数据统计,各个题目的答题次数,平均分等

                # 初始化每道题的选项计数和分数统计question_stats = []for question in question_info:question_stats.append({'question': question['questions'],'choice_counts': {'A': 0, 'B': 0, 'C': 0, 'D': 0},'total_score': 0,'response_count': 0,'points': {'A': question['point_a'],'B': question['point_b'],'C': question['point_c'],'D': question['point_d']}})# 统计每个选项的选择次数和总分for answer in answer_list:answer_str = answer['answer']for i, char in enumerate(answer_str):if char in 'ABCD':question_stats[i]['choice_counts'][char] += 1question_stats[i]['total_score'] += question_stats[i]['points'][char]question_stats[i]['response_count'] += 1# 计算每道题的平均分for stats in question_stats:if stats['response_count'] > 0:stats['average_score'] = stats['total_score'] / stats['response_count']else:stats['average_score'] = 0

我们可以使用以下代码来查看处理的情况,当然,最后需要把他们注释掉。

# 输出结果 question_stats# for stats in question_stats:#     print(f"Question: {stats['question']}")#     print(f"Choice Counts: {stats['choice_counts']}")#     print(f"Average Score: {stats['average_score']:.2f}")#     print('-' + '-' * 50)#输出格式:[{'question': '惺惺惜惺惺哈哈哈哈和和和和和和和和谢谢谢谢选项下下下下下下下下下下下下下下下下', 'choice_counts': {'A': 4, 'B': 0, 'C': 0, 'D': 1}, 'total_score': 3, 'response_count': 5, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 0.6}, {'question': 'csy——beautiful!!', 'choice_counts': {'A': 1, 'B': 1, 'C': 1, 'D': 2}, 'total_score': 9, 'response_count': 5, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 1.8}, {'question': '1', 'choice_counts': {'A': 0, 'B': 0, 'C': 1, 'D': 1}, 'total_score': 5, 'response_count': 2, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 2.5}, {'question': 'huaidan no', 'choice_counts': {'A': 1, 'B': 0, 'C': 0, 'D': 1}, 'total_score': 3, 'response_count': 2, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 1.5}, {'question': '8的合伙人发', 'choice_counts': {'A': 0, 'B': 0, 'C': 0, 'D': 1}, 'total_score': 3, 'response_count': 1, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 3.0}, {'question': '9ehwc', 'choice_counts': {'A': 0, 'B': 0, 'C': 0, 'D': 1}, 'total_score': 3, 'response_count': 1, 'points': {'A': 0, 'B': 1, 'C': 2, 'D': 3}, 'average_score': 3.0}, {'question': '接口', 'choice_counts': {'A': 0, 'B': 0, 'C': 0, 'D': 1}, 'total_score': 4, 'response_count': 1, 'points': {'A': 1, 'B': 2, 'C': 3, 'D': 4}, 'average_score': 4.0}]

然后我们统计达到各个stage的人数,逻辑是只要回答了任意一道stage3的题目,这个人就达到了stage3的阶段,counter++

                #统计stage人数# 初始化每个阶段的回答人数统计stage_answer_counts = {1: 0, 2: 0, 3: 0, 4: 0}# 统计每个阶段回答了至少一个问题的人数for answer in answer_list:answer_str = answer['answer']answered_stages = set()for i, char in enumerate(answer_str):if char in 'ABCD':stage = question_info[i]['stage']answered_stages.add(stage)for stage in answered_stages:stage_answer_counts[stage] += 1#  stage_answer_counts  output:{1: 5, 2: 2, 3: 1, 4: 1}

最后,我们进行相关性分析,这里我们需要使用numpy和pandas

answer_matrix = []for answer in answer_list:answer_str = answer['answer']answer_row = []for char in answer_str:if char == 'A':answer_row.append(1)elif char == 'B':answer_row.append(2)elif char == 'C':answer_row.append(3)elif char == 'D':answer_row.append(4)else:answer_row.append(0)answer_matrix.append(answer_row)# 转换为DataFramedf = pd.DataFrame(answer_matrix, columns=[f'Q{i+1}' for i in range(len(answer_matrix[0]))])# 计算相关性矩阵correlation_matrix = df.corr()

这里我们需要先把内容转为pandas特定的格式,然后调用库。最后输出的结果是output type <class ‘pandas.core.frame.DataFrame’>格式的,内容是

                #     Q1        Q2        Q3        Q4        Q5        Q6        Q7# Q1  1.000000  0.514496  0.745601  0.968246  1.000000  1.000000  1.000000# Q2  0.514496  1.000000  0.826234  0.664211  0.514496  0.514496  0.514496# Q3  0.745601  0.826234  1.000000  0.888523  0.745601  0.745601  0.745601# Q4  0.968246  0.664211  0.888523  1.000000  0.968246  0.968246  0.968246# Q5  1.000000  0.514496  0.745601  0.968246  1.000000  1.000000  1.000000# Q6  1.000000  0.514496  0.745601  0.968246  1.000000  1.000000  1.000000# Q7  1.000000  0.514496  0.745601  0.968246  1.000000  1.000000  1.000000

这样的矩阵,至此,我们的处理工具就做好了,接下来我们需要完善后端节后,使得前端可以访问并获取到处理好的数据。

蓝图

    def post(self):temp = answer_ex()question,stage,rela = temp.search()response = {'question': question,'stage': stage,'rela': rela.to_dict()}return jsonify({"errcode": 0, "msg": response})

如上就做好了,这里我们将举证转化为dict,方便我们前端展示数据。

前端

前端我们需要做以下几件事,展示基础数据,根据相关性数据绘制图表。这需要用到chart.js 我们可以用npm i一键安装。
我们的展示思路就是把一个个问题做成card,一一展示。

模板

<template><div class="container"><div class="header"><button class="custom-button" @click="rt">返回编辑页</button></div><h1>数据统计</h1><div class="card"><h2>数据总览</h2><div class="data-row"><strong>总问卷数:</strong> {{ stage[1] }}</div><h3>累计人数统计</h3><div class="data-row"><strong>二阶段以上:</strong> {{ stage[2] }}</div><div class="data-row"><strong>三阶段以上:</strong> {{ stage[3] }}</div><div class="data-row"><strong>四阶段以上:</strong> {{ stage[4] }}</div><h3>阶段人数统计</h3><div class="data-row"><strong>一阶段人数:</strong> {{ stage[1]-stage[2] }}</div><div class="data-row"><strong>二阶段人数:</strong> {{ stage[2] - stage[3]}}</div><div class="data-row"><strong>三阶段人数:</strong> {{ stage[3] - stage[4] }}</div><div class="data-row"><strong>四阶段人数:</strong> {{ stage[4] }}</div><h2>人数分布图表</h2><div class="chart-container"><canvas id="stage-chart"></canvas></div></div><h1>题目详情</h1><div class="card" v-for="(item, index) in question" :key="index"><h2>{{ index + 1 }}. {{ item.question }}</h2><div class="data-row"><strong>答题统计:</strong></div><div class="choice"><div>A: {{ item.choice_counts.A }}</div><div>B: {{ item.choice_counts.B }}</div><div>C: {{ item.choice_counts.C }}</div><div>D: {{ item.choice_counts.D }}</div></div><div class="data-row"><strong>回答次数:</strong> {{ item.response_count }}</div><div class="data-row"><strong>均分(期望为1.5):</strong> {{ item.average_score }}</div><h3>题目相关性<button @click="toggleRelaVisibility(index)" class="bt">{{ relaVisible[index] ? '隐藏相关系数' : '显示相关系数' }}</button></h3><ul v-if="relaVisible[index]"><li v-for="(value, key) in getRelaValues(index)" :key="key">与{{ key }}的相关系数为: {{ value }}</li></ul><canvas :id="'chart-' + index"></canvas></div></div>
</template>

这里,我们定义了一个标题,枚举了各个问题的card以展示。

脚本

<script setup>
import { ref, onMounted, nextTick } from 'vue';
import axios from 'axios';
import { Chart, CategoryScale, BarController, BarElement, PointElement, LinearScale, Title, PieController, ArcElement, Tooltip, Legend } from 'chart.js';
import { useRouter } from 'vue-router';
import { useUrlStore } from '@/store/urlStore'; // 确保路径正确
const urlStore = useUrlStore(); // 使用URL Storeconst router = useRouter();
Chart.register(CategoryScale,BarController,BarElement,PointElement,LinearScale,Title,PieController,ArcElement,Tooltip,Legend
);const question = ref([]);
const stage = ref({});
const rela = ref({});
const relaVisible = ref([]);const fetchData = async () => {try {const response = await axios.post(urlStore.urls.data);if (response.data.errcode === 0) {question.value = response.data.msg.question;stage.value = response.data.msg.stage;rela.value = response.data.msg.rela;relaVisible.value = new Array(question.value.length).fill(false);await nextTick();renderCharts();renderStageChart();} else {console.error('Error fetching data:', response.data.msg);}} catch (error) {console.error('Error fetching data:', error);}
};const formatNumber = (number) => number.toFixed(3);const getRelaValues = (index) => {const key = `Q${index + 1}`;const values = rela.value[key] || {};const formattedValues = {};Object.keys(values).forEach(k => {formattedValues[k] = formatNumber(values[k]);});return formattedValues;
};const toggleRelaVisibility = (index) => {relaVisible.value[index] = !relaVisible.value[index];
};const renderCharts = () => {question.value.forEach((item, index) => {const ctx = document.getElementById('chart-' + index).getContext('2d');const correlations = getRelaValues(index);const correlationValues = Object.values(correlations).map(value => parseFloat(value));const backgroundColors = correlationValues.map(value =>value < 0 ? 'rgba(255, 99, 132, 0.5)' : 'rgba(75, 192, 192, 0.5)');new Chart(ctx, {type: 'bar',data: {labels: Object.keys(correlations),datasets: [{label: `Correlations for Q${index + 1}`,data: correlationValues,backgroundColor: backgroundColors,borderColor: 'rgba(75, 192, 192, 1)',borderWidth: 1}]},options: {responsive: true,scales: {x: {type: 'category',display: true,title: {display: true,text: 'Questions'}},y: {type: 'linear',beginAtZero: true,display: true,title: {display: true,text: 'Correlation Value'}}}}});});
};const renderStageChart = () => {const ctx = document.getElementById('stage-chart').getContext('2d');const stageData = [stage.value['1'] - stage.value['2'],stage.value['2'] - stage.value['3'],stage.value['3'] - stage.value['4'],stage.value['4']];new Chart(ctx, {type: 'pie',data: {labels: ['stage1', 'stage2', 'stage3', 'stage4'],datasets: [{data: stageData,backgroundColor: ['rgba(255, 99, 132, 0.6)','rgba(54, 162, 235, 0.6)','rgba(255, 206, 86, 0.6)','rgba(75, 192, 192, 0.6)'],borderColor: ['rgba(255, 99, 132, 1)','rgba(54, 162, 235, 1)','rgba(255, 206, 86, 1)','rgba(75, 192, 192, 1)'],borderWidth: 1}]},options: {responsive: true,plugins: {legend: {position: 'right'},tooltip: {enabled: true}}}});
};function rt(){alert("切换成功,一秒后跳转编辑页面");setTimeout(() => { router.push({ path: "/home" }) }, 1000);
}onMounted(fetchData);
</script>

我们脚本实现的逻辑就是先访问后端接口获取数据,然后解析数据,绘制图表。我们绘制了一个pie图,用于展示各个阶段人数。也制作了一个柱状图来展示各个题目之间的相关性。

完整前端代码

<template><div class="container"><div class="header"><button class="custom-button" @click="rt">返回编辑页</button></div><h1>数据统计</h1><div class="card"><h2>数据总览</h2><div class="data-row"><strong>总问卷数:</strong> {{ stage[1] }}</div><h3>累计人数统计</h3><div class="data-row"><strong>二阶段以上:</strong> {{ stage[2] }}</div><div class="data-row"><strong>三阶段以上:</strong> {{ stage[3] }}</div><div class="data-row"><strong>四阶段以上:</strong> {{ stage[4] }}</div><h3>阶段人数统计</h3><div class="data-row"><strong>一阶段人数:</strong> {{ stage[1]-stage[2] }}</div><div class="data-row"><strong>二阶段人数:</strong> {{ stage[2] - stage[3]}}</div><div class="data-row"><strong>三阶段人数:</strong> {{ stage[3] - stage[4] }}</div><div class="data-row"><strong>四阶段人数:</strong> {{ stage[4] }}</div><h2>人数分布图表</h2><div class="chart-container"><canvas id="stage-chart"></canvas></div></div><h1>题目详情</h1><div class="card" v-for="(item, index) in question" :key="index"><h2>{{ index + 1 }}. {{ item.question }}</h2><div class="data-row"><strong>答题统计:</strong></div><div class="choice"><div>A: {{ item.choice_counts.A }}</div><div>B: {{ item.choice_counts.B }}</div><div>C: {{ item.choice_counts.C }}</div><div>D: {{ item.choice_counts.D }}</div></div><div class="data-row"><strong>回答次数:</strong> {{ item.response_count }}</div><div class="data-row"><strong>均分(期望为1.5:</strong> {{ item.average_score }}</div><h3>题目相关性<button @click="toggleRelaVisibility(index)" class="bt">{{ relaVisible[index] ? '隐藏相关系数' : '显示相关系数' }}</button></h3><ul v-if="relaVisible[index]"><li v-for="(value, key) in getRelaValues(index)" :key="key">{{ key }}的相关系数为: {{ value }}</li></ul><canvas :id="'chart-' + index"></canvas></div></div>
</template><script setup>
import { ref, onMounted, nextTick } from 'vue';
import axios from 'axios';
import { Chart, CategoryScale, BarController, BarElement, PointElement, LinearScale, Title, PieController, ArcElement, Tooltip, Legend } from 'chart.js';
import { useRouter } from 'vue-router';
import { useUrlStore } from '@/store/urlStore'; // 确保路径正确
const urlStore = useUrlStore(); // 使用URL Storeconst router = useRouter();
Chart.register(CategoryScale,BarController,BarElement,PointElement,LinearScale,Title,PieController,ArcElement,Tooltip,Legend
);const question = ref([]);
const stage = ref({});
const rela = ref({});
const relaVisible = ref([]);const fetchData = async () => {try {const response = await axios.post(urlStore.urls.data);if (response.data.errcode === 0) {question.value = response.data.msg.question;stage.value = response.data.msg.stage;rela.value = response.data.msg.rela;relaVisible.value = new Array(question.value.length).fill(false);await nextTick();renderCharts();renderStageChart();} else {console.error('Error fetching data:', response.data.msg);}} catch (error) {console.error('Error fetching data:', error);}
};const formatNumber = (number) => number.toFixed(3);const getRelaValues = (index) => {const key = `Q${index + 1}`;const values = rela.value[key] || {};const formattedValues = {};Object.keys(values).forEach(k => {formattedValues[k] = formatNumber(values[k]);});return formattedValues;
};const toggleRelaVisibility = (index) => {relaVisible.value[index] = !relaVisible.value[index];
};const renderCharts = () => {question.value.forEach((item, index) => {const ctx = document.getElementById('chart-' + index).getContext('2d');const correlations = getRelaValues(index);const correlationValues = Object.values(correlations).map(value => parseFloat(value));const backgroundColors = correlationValues.map(value =>value < 0 ? 'rgba(255, 99, 132, 0.5)' : 'rgba(75, 192, 192, 0.5)');new Chart(ctx, {type: 'bar',data: {labels: Object.keys(correlations),datasets: [{label: `Correlations for Q${index + 1}`,data: correlationValues,backgroundColor: backgroundColors,borderColor: 'rgba(75, 192, 192, 1)',borderWidth: 1}]},options: {responsive: true,scales: {x: {type: 'category',display: true,title: {display: true,text: 'Questions'}},y: {type: 'linear',beginAtZero: true,display: true,title: {display: true,text: 'Correlation Value'}}}}});});
};const renderStageChart = () => {const ctx = document.getElementById('stage-chart').getContext('2d');const stageData = [stage.value['1'] - stage.value['2'],stage.value['2'] - stage.value['3'],stage.value['3'] - stage.value['4'],stage.value['4']];new Chart(ctx, {type: 'pie',data: {labels: ['stage1', 'stage2', 'stage3', 'stage4'],datasets: [{data: stageData,backgroundColor: ['rgba(255, 99, 132, 0.6)','rgba(54, 162, 235, 0.6)','rgba(255, 206, 86, 0.6)','rgba(75, 192, 192, 0.6)'],borderColor: ['rgba(255, 99, 132, 1)','rgba(54, 162, 235, 1)','rgba(255, 206, 86, 1)','rgba(75, 192, 192, 1)'],borderWidth: 1}]},options: {responsive: true,plugins: {legend: {position: 'right'},tooltip: {enabled: true}}}});
};function rt(){alert("切换成功,一秒后跳转编辑页面");setTimeout(() => { router.push({ path: "/home" }) }, 1000);
}onMounted(fetchData);
</script><style scoped>
.chart-container {width: 60%;margin: auto;
}.header {width: 100%;display: flex;justify-content: center;align-items: center;position: relative;
}.custom-button {position: absolute;top: 0;right: 0;background-color: #f0adcd;color: white;border: none;width: 120px;height: 30px;border-radius: 4px;cursor: pointer;font-size: 12px;display: flex;justify-content: center;align-items: center;
}.custom-button:hover {background-color: #e5347d;
}.bt {background-color: #77d6dd;width: 150px;height: 29%;
}.container {padding: 20px;font-family: 'Arial', sans-serif;color: #333;display: flex;flex-direction: column;width: 700px;margin-left: 15vw;
}h1 {font-size: 32px;text-align: center;margin-bottom: 40px;color: #2c3e50;
}.card {background-color: #f9f9f9;border: 1px solid #ddd;border-radius: 8px;padding: 20px;margin-bottom: 40px;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);transition: transform 0.3s, box-shadow 0.3s;
}.card:hover {transform: scale(1.005);box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}.card h2 {font-size: 24px;color: #3498db;margin-bottom: 10px;
}.data-row {font-size: 16px;margin: 8px 0;
}.choice {margin-left: 20px;
}.card h3 {font-size: 20px;color: #2c3e50;margin-top: 20px;
}.card ul {list-style-type: none;padding: 0;
}.card li {font-size: 14px;color: #555;margin-bottom: 5px;
}canvas {margin-top: 20px;
}
</style>

以上是前端的完整代码,你可以自己修改样式。

效果展示

在questionlist里加入一个按钮,来跳转数据处理页面,很简单就不说了。

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

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

相关文章

性能级NVMe全闪存储系统开箱评测

近日&#xff0c;我们对一款备受瞩目的Infortrend普安科技推出更高性能的存储产品——性能级NVMe全闪存储系统GS 5024UE 进行评测&#xff0c;这款设备搭载第五代IntelXeon处理器&#xff0c;性能达到50GB/s、1.3M IOPS与0.3毫秒延迟。下面对此款设备从外观、配置、产品性能及适…

瑞鑫RK3588 画中画 OSD 效果展示

这些功能本来在1126平台都实现过 但是迁移到3588平台之后 发现 API接口变化较大 主要开始的时候会比较费时间 需要找到变动接口对应的新接口 之后 就比较好操作了 经过几天的操作 已实现 效果如下

ThinkPHP发邮件配置教程?群发功能安全吗?

ThinkPHP发邮件的注意事项&#xff1f;如何优化邮件发送的性能&#xff1f; 无论是用户注册、密码重置还是消息提醒&#xff0c;发送邮件都是一个常见的需求。AokSend将详细介绍如何在ThinkPHP框架中配置和发送邮件&#xff0c;帮助开发者轻松实现邮件功能。 ThinkPHP发邮件&…

【Linux驱动】【手把手配置3568寄存器】点亮RK3568的一颗LED

【硬件】 3568的LED9 &#xff1a;引脚 GPIO0 B7 【配置GPIO的复用】 找配置复用关系的寄存器基地址、偏移地址、对应配置的GPIO。 查找&#xff1a;io -r -4 0xfdc2000c 系统设置的默认值 结果为1&#xff0c;意思是只有bit 0是1&#xff0c;其他全都为0。所以系统默认就是…

资质升级路径:掌握建筑装饰乙级设计资质要求

建筑装饰乙级设计资质的升级路径及要求可以归纳如下&#xff1a; 一、基本要求 企业资历与信誉&#xff1a; 企业需具有独立法人资格。社会信誉良好&#xff0c;注册资本不少于100万元人民币。从事建筑设计业务4年以上&#xff0c;并独立承担过不少于3项工程等级为二级及以上的…

翻译《The Old New Thing》- What were ShellExecute hooks designed for?

What were ShellExecute hooks designed for? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080910-00/?p20933 Raymond Chen 2008年09月10日 ShellExecute 钩子是为什么设计的&#xff1f; 简要 ShellExecute钩子设计用于扩展可执行字…

Python中的“点阵字体”

“点阵字体”是个啥&#xff1f;&#xff0c;在python中怎么使&#xff1f;在现在全面高清的 5 G 5G 5G时代&#xff0c;它还有用“武”之地&#xff1f; (笔记模板由python脚本于2024年06月01日 18:44:31创建&#xff0c;本篇笔记适合会基本编程的coder翻阅) 【学习的细节是欢…

一文搞懂DevOps、DataOps、MLOps、AIOps:所有“Ops”的比较

引言 近年来&#xff0c;“Ops”一词在 IT 运维领域的使用迅速增加。IT 运维正在向自动化过程转变&#xff0c;以改善客户交付。传统的应用程序开发采用 DevOps 实施持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;。但对于数据密集型的机器学习和人…

网络隔离后的跨网投递需求,要这样做才能让需求落地

为了保护企业的核心数字资产、隔离有害的网络安全威胁、保障数据信息在可信网络内进行安全交互&#xff0c;越来越多的企业在网络建设时&#xff0c;选择进行网络隔离。应用较为普遍的网络隔离手段包括物理隔离、协议隔离、应用隔离等&#xff0c;而常见的状态是企业进行内部网…

Lab_ Finding and exploiting an unused API endpoint

https://portswigger.net/web-security/learning-paths/api-testing/api-testing-identifying-and-interacting-with-api-endpoints/api-testing/lab-exploiting-unused-api-endpoint# 查看功能点&#xff1a; 在Burp的HTTP history中发现 /api路径 我们先尝试一下将API请求…

全网最全!场外个股期权的询价下单流程的详细解析

场外个股期权的询价下单流程 场外个股期权交易&#xff0c;作为在交易所外进行的个性化期权交易方式&#xff0c;为投资者提供了更加灵活和定制化的交易选择。以下是场外个股期权询价下单流程的详细步骤&#xff1a; 文章来源/&#xff1a;财智财经 第一步&#xff1a;明确交…

STM32——ADC篇(ADC的使用)

一、ADC的介绍 1.1什么是ADC ADC&#xff08;Analogto-Digital Converter&#xff09;模拟数字转换器&#xff0c;是将模拟信号转换成数字信号的一种外设。比如某一个电阻两端的是一个模拟信号&#xff0c;单片机无法直接采集&#xff0c;此时需要ADC先将短租两端的电…

AI日报|文生语音大模型国内外均有突破,Pika完成6亿新融资,视频大模型也不远了!

文章推荐 AI搜索哪家强&#xff1f;16款产品实战测评&#xff0c;效率飙升秘籍&#xff01; AI日报&#xff5c;智谱AI再降价&#xff0c;同时开源9B系列模型&#xff1b;国内外气象大模型竞逐升级 字节推出文本到语音模型家族Seed-TTS&#xff1a;擅长情感表达&#xff0c;…

短视频矩阵系统----可视化剪辑独立开发(采用php)

短视频矩阵系统源头技术开发&#xff1a; 打磨短视频矩阵系统的开发规则核心框架可以按照以下几个步骤进行&#xff1a; 明确系统需求&#xff1a;首先明确系统的功能需求&#xff0c;包括短视频的上传、编辑、发布、播放等环节。确定系统的目标用户和主要的使用场景&#xff…

C++三大特性之继承,详细介绍

阿尼亚全程陪伴大家学习~ 前言 每个程序员在开发新系统时&#xff0c;都希望能够利用已有的软件资源&#xff0c;以缩短开发周期&#xff0c;提高开发效率。 为了提高软件的可重用性(reusability)&#xff0c;C提供了类的继承机制。 1.继承的概念 继承&#xff1a; 指在现有…

鸢尾花分类和手写数字识别(K近邻)

鸢尾花分类 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd import mglearn# 加载鸢尾花数据集 iris load_iris() X_train, X_test, y_train, y_test train_test_split(iris.data,iris.target,test_siz…

免费分享一套SpringBoot+Vue校园论坛(微博)系统【论文+源码+SQL脚本】,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue校园论坛(微博)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue校园论坛(微博)系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue校园论坛(微博)系统 Java毕业设计…

数据中心网络架构设计与优化

数据中心是现代企业和组织的核心基础设施&#xff0c;它们用于存储、处理和传输大量的数据和信息。为了满足不断增长的数据需求和提供可靠的服务&#xff0c;设计和优化数据中心网络架构至关重要。 首先&#xff0c;数据中心网络架构设计需要考虑可扩展性。随着业务的增长&…

[Bug]使用Transformers 微调 Whisper出现版本不兼容的bug

错误的现象 ImportError Traceback (most recent call last) <ipython-input-20-6958d7eed552> in () from transformers import Seq2SegTrainingArguments training_args Seq2SeqTrainingArguments( output_dir"./whisper-small-…

【全开源】防伪溯源一体化管理系统源码(FastAdmin+ThinkPHP+Uniapp)

&#x1f50d;防伪溯源一体化管理系统&#xff1a;守护品质&#xff0c;追溯无忧 一款基于FastAdminThinkPHP和Uniapp进行开发的多平台&#xff08;微信小程序、H5网页&#xff09;溯源、防伪、管理一体化独立系统&#xff0c;拥有强大的防伪码和溯源码双码生成功能&#xff0…