C++--综合应用-演讲比赛项目
需求
分析
1、初始化,生成演讲学生数组,打乱数组以便随机分组
2、每轮比赛后需要统计每个学生的胜场,以便决定进入下一轮和最终胜利的学生
代码实现
#pragma once#include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<fstream>using namespace std;/*
* N为M的倍数
* N(=12)个学生参加演讲比赛。比赛共两轮。
* 第一轮、分组淘汰赛,随机分组,每组M(=6)人,两两演讲PK。每组决出前三名进入下一轮。
* 第二轮、决赛,每组两两PK,决出比赛前三名。
* 每轮比赛过后显示晋级选手信息。(可以保存比赛记录到文件中,方便查看)
*/
class Student {
public:int id;string name;Student(int id, string name) : id(id), name(name) {this->id = id;this->name = name;}int say() { // 演讲 通过比较随机数大小判断演讲胜负return rand() % 12;}
};static int times = 0;
static const int NUM = 12;
static const int MAX_NUM = 10001;
static Student** stu;
static Student** origin_stu;
static string s_name = "ABCDEFGHIJKL";
static const string file_name = "competition.txt";auto int_asc_sort = [](int a, int b)->bool {return a > b;
};
auto asc_sort = [](pair<Student*, int> a, pair<Student*, int> b)->bool {return a.second > b.second;
};
static void print_set_no_erase(multiset<pair<Student*, int>, decltype(asc_sort)> topK) {for (multiset<pair<Student*, int>, decltype(asc_sort)>::iterator a = topK.begin(); a != topK.end(); a++) {pair<Student*, int> p = *a;Student* s = p.first;int count = p.second;cout << "id:" << s->id << " name:" << s->name << " 胜场: " << count << endl;}
}
static multiset<pair<Student*, int>, decltype(asc_sort)> print_set(multiset<pair<Student*, int>, decltype(asc_sort)> topK) {cout << "胜场降序排序后......" << endl;int limit = 1;for (multiset<pair<Student*, int>, decltype(asc_sort)>::iterator a = topK.begin(); a != topK.end(); a++) {if (limit++ > 6) {break;}pair<Student*, int> p = *a;Student* s = p.first;int count = p.second;cout << "id:" << s->id << " name:" << s->name << " 胜场: " << count << endl;}multiset<pair<Student*, int>, decltype(asc_sort)>::iterator a = topK.begin();a++; a++; a++;topK.erase(a, topK.end());return topK;
}
static void print_score(int a[], int len) {for (int i = 0; i < len; i++) {cout << s_name.substr(i, 1) << " 胜场: " << a[i] << endl;}
}
static multiset<pair<Student*, int>, decltype(asc_sort)> print_score(int a[], int len, multiset<pair<Student*, int>, decltype(asc_sort)> topK) {for (int i = 0; i < len; i++) {//cout << s_name.substr(i, 1) << " stu[" << i << "] = " << a[i] << endl;topK.insert(make_pair(origin_stu[i], a[i]));}return print_set(topK);
}
static void print_stu(Student ** stu, int len) {for (int i = 0; i < len; i++) {cout << "student[" << i << "] id:" << stu[i]->id << " name:" << stu[i]->name << endl;}
}void count_times() {// 计算是第几次比赛fstream read_file;read_file.open(file_name, ios::in);string temp;while (getline(read_file, temp, '\n')) {times++;}times = times / 3;read_file.close();
}// 初始化演讲的学生,打乱顺序以便随机分组
void init() {stu = new Student* [NUM];origin_stu = new Student* [NUM];srand(time(NULL));for (int i = 0; i < NUM; i++) {stu[i] = new Student(10000 + i + 1, s_name.substr(i, 1));origin_stu[i] = new Student(10000 + i + 1, s_name.substr(i, 1));}random_shuffle(stu, stu+NUM);//print_stu(stu);if (times == 0) {count_times();}
}void competition(Student** stu1, Student** stu2, int len, int result[], int result2[]) {for (int i = 0; i < len; i++) {cout << "选手【" << stu1[i]->name << "】的比赛......";for (int j = 0; j < len; j++) {cout << "场次:" << stu1[i]->name << " PK " << stu2[j]->name << " -> ";if (stu1[i]->say() >= stu2[j]->say()) {cout << stu1[i]->name << "胜" << "\t";result[stu1[i]->id - MAX_NUM]++;}else{cout << stu2[j]->name << "胜" << "\t";result2[stu2[j]->id - MAX_NUM]++;}}cout << endl;}
}// 提取哪些学生晋级了
void extraction(multiset<pair<Student*, int>, decltype(asc_sort)> top, Student** s) {int i = 0;for (multiset<pair<Student*, int>, decltype(asc_sort)>::iterator a = top.begin(); a != top.end(); a++) {s[i++] = a->first;}
}void merge_array(int a[], int b[], int c[], int len) {for (int i = 0; i < len; i++) {c[i] = a[i] + b[i];}
}// 比赛结果写入文件
static void store(pair<Student*, int> p[], int len) {// 写入比赛结果fstream out(file_name, ios::app);//while (out.getline((char *)p, sizeof(pair<Student*, int>))) {//}for (int i = 0; i < len; i++) {out << p[i].first->id << " " << p[i].first->name << " " << p[i].second << endl;}out.close();times++; // 比赛场数加1
}// 清空比赛记录文件
static void clear() {fstream out(file_name, ios::out|ios::trunc);out.close();times = 0;
}// 查看历史比赛结果
static void look_result() {fstream read_file;read_file.open(file_name, ios::in);string temp;int count = 1;for (int i = 1; i <= times; i++) {cout << "第" << i << "次比赛结果如下:" << endl;while (getline(read_file, temp, '\n')) {cout << temp << endl;if ((count++) % 3 == 0) {break;}}read_file.seekg(11/*每行11个字节,换行回车占2个字节*/ * (count - 1));}
}void main_entry() {init();cout << "输入1开始第一轮比赛:";int start1;cin >> start1;if (start1 != 1) {cout << "游戏中止......" << endl;return;}Student** stu1 = new Student* [NUM/2];Student** stu2 = new Student * [NUM / 2];for (int i = 0; i < NUM; i++) {if (i < NUM/2) {stu1[i] = stu[i];}else {stu2[i-NUM/2] = stu[i];}}cout << "第一轮分组情况:" << endl;cout << "1组: " << endl;print_stu(stu1, NUM/2);cout << "2组: " << endl;print_stu(stu2, NUM / 2);delete[] stu;srand(time(NULL));int result[NUM] = {0};int result2[NUM] = {0};// 总共36场比赛 6 * 6 = 36// 0 7 8 9 10 11 12// 1 7 8 9 10 11 12// 2 7 8 9 10 11 12// 3 7 8 9 10 11 12// 4 7 8 9 10 11 12// 5 7 8 9 10 11 12// 6 7 8 9 10 11 12cout << "第一轮总共36场比赛,比赛结果如下:" << endl;competition(stu1, stu2, NUM/2, result, result2);//for (int i = 0; i < NUM / 2; i++) {// for (int j = 0; j < NUM / 2; j++) {// if (stu1[i]->say() >= stu2[j]->say()) {// result[MAX_NUM - stu1[i]->id]++;// }// else// {// result2[MAX_NUM - stu2[j]->id]++;// }// }//}//print_score(result, NUM);//print_score(result2, NUM);int result_array1[NUM] = { 0 };merge_array(result, result2, result_array1, NUM);print_score(result_array1, NUM);//multiset<pair<Student*, int>, decltype(asc_sort)> topK(asc_sort);multiset<pair<Student*, int>, decltype(asc_sort)> set1(asc_sort);multiset<pair<Student*, int>, decltype(asc_sort)> set2(asc_sort);cout << "1组胜场详情:";multiset<pair<Student*, int>, decltype(asc_sort)> top1 = print_score(result, NUM, set1);cout << "2组胜场详情:";multiset<pair<Student*, int>, decltype(asc_sort)> top2 = print_score(result2, NUM, set2);cout << "1组前三名如下:" << endl;print_set_no_erase(top1);cout << "2组前三名如下:" << endl;print_set_no_erase(top2);delete[] stu1;delete[] stu2;cout << endl;cout << "---------------------------" << endl;cout << "输入数字1继续第二轮比赛:";int select;cin >> select;if (select != 1) {cout << "第二轮游戏中止......" << endl;return;}//sort(result, result + NUM, greater<int>());//sort(result, result + NUM, asc_sort);Student** s1 = new Student*[3];Student** s2 = new Student*[3];extraction(top1, s1);extraction(top2, s2);cout << "第二轮分组情况:" << endl;cout << "1组: " << endl;print_stu(s1, 3);cout << "2组: " << endl;print_stu(s2, 3);int r1[NUM] = {0};int r2[NUM] = {0};//int* r1 = new int[6]{0};//int* r2 = new int[6]{0};cout << "第二轮总共9场比赛,比赛结果如下:" << endl;competition(s1, s2, 3, r1, r2);//print_score(r1, NUM);//cout << endl;//print_score(r2, NUM);int result_array[NUM] = {0};merge_array(r1, r2, result_array, NUM);print_score(result_array, NUM);//sort(result_array, result_array + NUM, greater<int>());//sort(result_array, result_array + NUM, int_asc_sort);pair<Student*, int> p[NUM];for (int i = 0; i < NUM; i++) {p[i] = make_pair(origin_stu[i], result_array[i]);}sort(p, p+NUM, asc_sort);store(p, 3);cout << "前三名信息如下:" << endl;cout << "第一名 id:" << p[0].first->id << " name:" << p[0].first->name << " 总胜场:" << p[0].second << endl;cout << "第二名 id:" << p[1].first->id << " name:" << p[1].first->name << " 总胜场:" << p[1].second << endl;cout << "第三名 id:" << p[2].first->id << " name:" << p[2].first->name << " 总胜场:" << p[2].second << endl;
}// 比赛入口
void entry() {while (true) {int select;cout << "=============================" << endl;cout << "0、退出" << endl;cout << "1、开始游戏" << endl;cout << "2、查看历史比赛结果" << endl;cout << "3、清空历史比赛记录" << endl;cout << "=============================" << endl;cin >> select;if (select == 1) {system("cls");cout << "开始游戏..." << endl;cout << endl;main_entry();//look_result();}else if (select == 2) {if (times == 0) {count_times();}system("cls");look_result();}else if (select == 3) {clear();system("cls");}else {break;}}cout << "比赛结束..." << endl;
}
一种测试结果
开始游戏...
输入1开始第一轮比赛:1
第一轮分组情况:
1组:
student[0] id:10002 name:B
student[1] id:10009 name:I
student[2] id:10001 name:A
student[3] id:10007 name:G
student[4] id:10012 name:L
student[5] id:10011 name:K
2组:
student[0] id:10003 name:C
student[1] id:10005 name:E
student[2] id:10008 name:H
student[3] id:10004 name:D
student[4] id:10006 name:F
student[5] id:10010 name:J
第一轮总共36场比赛,比赛结果如下:
选手【B】的比赛......场次:B PK C -> C胜 场次:B PK E -> B胜 场次:B PK H -> B胜 场次:B PK D -> D胜 场次:B PK F -> F胜 场次:B PK J -> J胜
选手【I】的比赛......场次:I PK C -> C胜 场次:I PK E -> E胜 场次:I PK H -> I胜 场次:I PK D -> D胜 场次:I PK F -> F胜 场次:I PK J -> J胜
选手【A】的比赛......场次:A PK C -> A胜 场次:A PK E -> A胜 场次:A PK H -> H胜 场次:A PK D -> D胜 场次:A PK F -> A胜 场次:A PK J -> J胜
选手【G】的比赛......场次:G PK C -> C胜 场次:G PK E -> E胜 场次:G PK H -> G胜 场次:G PK D -> G胜 场次:G PK F -> G胜 场次:G PK J -> J胜
选手【L】的比赛......场次:L PK C -> L胜 场次:L PK E -> E胜 场次:L PK H -> L胜 场次:L PK D -> L胜 场次:L PK F -> F胜 场次:L PK J -> L胜
选手【K】的比赛......场次:K PK C -> K胜 场次:K PK E -> K胜 场次:K PK H -> K胜 场次:K PK D -> D胜 场次:K PK F -> F胜 场次:K PK J -> J胜
A 胜场: 3
B 胜场: 2
C 胜场: 3
D 胜场: 4
E 胜场: 3
F 胜场: 4
G 胜场: 3
H 胜场: 1
I 胜场: 1
J 胜场: 5
K 胜场: 3
L 胜场: 4
1组胜场详情:胜场降序排序后......
id:10012 name:L 胜场: 4
id:10001 name:A 胜场: 3
id:10007 name:G 胜场: 3
id:10011 name:K 胜场: 3
id:10002 name:B 胜场: 2
id:10009 name:I 胜场: 1
2组胜场详情:胜场降序排序后......
id:10010 name:J 胜场: 5
id:10004 name:D 胜场: 4
id:10006 name:F 胜场: 4
id:10003 name:C 胜场: 3
id:10005 name:E 胜场: 3
id:10008 name:H 胜场: 1
1组前三名如下:
id:10012 name:L 胜场: 4
id:10001 name:A 胜场: 3
id:10007 name:G 胜场: 3
2组前三名如下:
id:10010 name:J 胜场: 5
id:10004 name:D 胜场: 4
id:10006 name:F 胜场: 4---------------------------
输入数字1继续第二轮比赛:1
第二轮分组情况:
1组:
student[0] id:10012 name:L
student[1] id:10001 name:A
student[2] id:10007 name:G
2组:
student[0] id:10010 name:J
student[1] id:10004 name:D
student[2] id:10006 name:F
第二轮总共9场比赛,比赛结果如下:
选手【L】的比赛......场次:L PK J -> J胜 场次:L PK D -> D胜 场次:L PK F -> F胜
选手【A】的比赛......场次:A PK J -> A胜 场次:A PK D -> D胜 场次:A PK F -> A胜
选手【G】的比赛......场次:G PK J -> G胜 场次:G PK D -> G胜 场次:G PK F -> F胜
A 胜场: 2
B 胜场: 0
C 胜场: 0
D 胜场: 2
E 胜场: 0
F 胜场: 2
G 胜场: 2
H 胜场: 0
I 胜场: 0
J 胜场: 1
K 胜场: 0
L 胜场: 0
前三名信息如下:
第一名 id:10001 name:A 总胜场:2
第二名 id:10004 name:D 总胜场:2
第三名 id:10006 name:F 总胜场:2
=============================
0、退出
1、开始游戏
2、查看历史比赛结果
3、清空历史比赛记录
=============================
相关文章:
C++--综合应用-演讲比赛项目
需求 分析 1、初始化,生成演讲学生数组,打乱数组以便随机分组 2、每轮比赛后需要统计每个学生的胜场,以便决定进入下一轮和最终胜利的学生 代码实现 #pragma once#include<iostream> #include<string> #include<algorithm…...
简单实现网页加载进度条
一、监听静态资源加载情况 可以通过window.performance 对象来监听⻚⾯资源加载进度。该对象提供了各种⽅法来获取资源加载的详细信息。 可以使⽤performance.getEntries() ⽅法获取⻚⾯上所有的资源加载信息。可以使⽤该⽅法来监测每个资源的加载状态,计算加载时间…...
C语言——深入理解指针(一)
C语言——指针(一) 进入指针后,C语言就有了一定的难度,我们需要认真理解 指针(一) 1 .内存和地址 内存:程序运行起来后,要加载到内存中,数据的存储也是在内存中。 我…...
计算机组织原理第一章
1、 2、 3、 4、 5、 从源程序到可执行文件: 6、 7、 8、 8、...
upload-labs通关笔记-第12关 文件上传之白名单GET法
目录 一、白名单过滤 二、%00截断 1、%00截断原理 2、空字符 3、截断条件 (1)PHP版本 < 5.3.4 (2)magic_quotes_gpc配置为Off (3)代码逻辑存在缺陷 三、源码分析 1、代码审计 (1&…...
网络学习-epoll(四)
一、为什么使用epoll? 1、poll实质是对select的优化,解决了其参数限制的问题,但是其本质还是一个轮询机制。 2、poll是系统调用,当客户端连接数量较多时,会将大量的pollfd从用户态拷贝到内核态,开销较大。…...
uWSGI、IIS、Tomcat有啥区别?
uWSGI、IIS 和 Tomcat对比 以下是 uWSGI、IIS 和 Tomcat 的对比分析,包括它们的核心特性、适用场景和典型用例: 1. uWSGI 核心特性 • 定位:专为 Python 应用设计的应用服务器(支持 WSGI/ASGI 协议)。 • 协议支持&a…...
AI本地化服务的战略机遇与发展路径
一、市场机遇:线下商业的AI赋能真空 1. 需求侧痛点明确 实体商家面临线上平台25%-30%的高额抽成挤压利润,传统地推转化率不足5%,而AI驱动的精准营销可将获客成本降低60%以上。区域性服务商凭借对本地消费习惯的深度理解,能构建更精…...
游戏盾的功有哪些?
游戏盾的功能主要包括以下几方面: 一、网络攻击防护 DDoS攻击防护: T级防御能力:游戏盾提供分布式云节点防御集群,可跨地区、跨机房动态扩展防御能力和负载容量,轻松达到T级别防御,有效抵御SYN Flood、UD…...
C++开源库argh使用教程
概述 argh 是一个轻量级的 C 命令行参数解析库,只需要包含一个头文件即可使用。 github页面: https://github.com/adishavit/argh 基本用法 #include "argh.h" 创建argh::parser对象 使用parse方法解析命令行 argh::parser重载了括号运…...
万用表如何区分零线、火线、地线
普通验电笔只能区分火线,零线和地线是区分不出来的,那么,我们就需要使用万用表来进行区分!轻松搞定! 万用表操作步骤: 1、黑表笔插Com,红表笔接电压和电阻档,万用表打到交流电压750V档。 2、黑表…...
java配置webSocket、前端使用uniapp连接
一、这个管理系统是基于若依框架,配置webSocKet的maven依赖 <!--websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 二、配…...
01、java方法
前面与c都很相似,于是我决定从这一章开始复盘java的学习 一、方法 方法的好处主要体现在使用方便,可以在多处调用,不必反复造轮子 1、方法的使用 这就是一个简单的方法创建: public class java0517 {public static int ret(int …...
springboot实现幂等性
一 增加注解 import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Documented public interface ApiIdempotent { } 二 aop实现切面 import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSONObject; import…...
Flink 快速入门
本文涉及到大量的底层原理知识,包括运行机制图解都非常详细,还有一些实战案例,所以导致本篇文章会比较长,内容比较多,由于内容太多,很多目录可能展示不出来,需要去细心的查看,非常适…...
MySQL 8.0 OCP 英文题库解析(五)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题31~40 试题31:…...
lovart design 设计类agent的系统提示词解读
文章目录 lovart 设计agent介绍角色定义工作规范工具调用任务复杂度指南任务移交指南其他ref lovart 设计agent介绍 lovart作为设计agent,产品功能包括: 全链路设计能力:可以快速生成完整的品牌视觉方案,包括标志、配色、品牌规范…...
C++11特性
一.C的发展历史 C11是C的第二个主要版本,从C98起的重要更新,引入了大量更改,从C11起C规律的进行每3年更新一次。 二.列表初始化 2.1 C98和C11中的 { } 传统的C98中使用 { } 来进行列表初始化,结构体函数体都使用此类方法&…...
鸿蒙PC操作系统:从Linux到自研微内核的蜕变
鸿蒙PC操作系统是否基于Linux内核,需要结合其技术架构、发展阶段和官方声明综合分析。以下从多个角度展开论述: 一、鸿蒙操作系统的多内核架构设计 多内核混合架构 根据资料,鸿蒙操作系统(HarmonyOS)采用分层多内核架构,内核层包含Linux内核、LiteOS-m内核、LiteOS-a内核…...
用 RefCounted + WeakPtr 构建线程安全的异步模块
在 Chromium 的多线程异步编程中,合理管理对象生命周期非常关键。本文深入介绍 base::RefCountedThreadSafe 和 base::WeakPtr 的组合使用方法,并通过示例分析其使用要点及易踩的坑。 🌱 基础概念回顾 1. RefCountedThreadSafe<T> 是 …...
ElasticSearch 8.x 快速上手并了解核心概念
目录 核心概念概念总结 常见操作索引的常见操作常见的数据类型指定索引库字段类型mapping查看索引库的字段类型最高频使用的数据类型 核心概念 在新版Elasticsearch中,文档document就是一行记录(json),而这些记录存在于索引库(index)中, 索引名称必须是…...
2025.5.19总结
工作:今天回归了3个问题单,测需求提交两个问题。然后再工作中慢慢有了自己的一些成就感,觉得工作越来越有干劲,因为感觉自己在工作上能做得越来越好,无论是在沟通方面,还是与同事的关系上,感觉都…...
C++(25): 标准库 <deque>
目录 1、 核心概念 2. 基本语法 3. 特点 4. 特有成员函数 5. 内存与性能 6. 示例代码 7. 成员函数列表 8. 使用场景 9. 注意事项 1、 核心概念 双端队列(Double-Ended Queue,deque) 是一种允许在队列头部和尾部高效插入和删除元素的线性数据结构,同时支持随机访问。…...
[ 计算机网络 ] | 宏观谈谈计算机网络
(目录占位) 网络间通信,本质是不同的两个用户通信;本质是两个不同主机上的两个进程间通信。 因为物理距离的提升,就衍生出了很多问题。TCP/IP协议栈 / OSI七层模型,将协议分层,每一层都是为了…...
会议动态|第十五届亚太燃烧学术年会精彩探析
ASPACC 2025第十五届亚太燃烧学术年会5月19日在新加坡隆重召开,本届盛会,以“构建零碳和可持续未来”为主题,汇聚了来自亚太的2000余位专家学者进行学术交流。会议聚焦燃烧反应动力学、火焰传播、燃烧效率等方向。 千眼狼在会议上展示了高速摄…...
Dify-3:系统架构
系统架构 概述了 Dify 的系统架构,解释主要组件如何协同工作以提供大语言模型(LLM)应用开发平台。内容涵盖高层架构、部署选项、核心子系统和外部集成。 1. 整体架构 Dify 采用基于微服务的架构,将前端 Web 应用与后端 API 服务…...
使用 docker-volume-backup 备份 Docker 卷
docker-volume-backup 是一个用于备份 Docker 卷的工具,在 Windows 10 上使用它,你可以按照以下步骤操作: 1. 确保 Docker 环境已安装并正常运行 在 Windows 10 上,你需要安装 Docker Desktop for Windows。可以从 Docker 官方网…...
分布式与集群:概念、区别与协同
分布式与集群:概念、区别与协同 在分布式系统与云计算领域,分布式(Distributed)和集群(Cluster)是两个高频出现的核心概念。它们常被混淆,但本质上属于不同维度的设计思想。本文将从定义、分类、实际应用及协同关系四个层面,结合 Dubbo、Git、Hadoop 等典型案例,系统…...
Matlab简单优化模型应用
一、目的 掌握优化模型的建立方法,能够借助Matlab工具对建立的优化模型进行求解。 二、内容与设计思想 1、分析:某石油设备制造厂每月需要100套压缩机用于维护和运营石油开采设备。这些零件由工厂内部生产,每月生产500套,每批压缩机的生产…...
板凳-------Mysql cookbook学习 (四)
综合对比与选择建议 维度 PHP Java Python Ruby Perl 学习门槛 低(适合新手) 高(语法复杂) 低(语法简洁) 中(需理解 Rails 理念) 中(特殊语法…...
C语言学习笔记之条件编译
编译器根据条件的真假决定是否编译相关的代码 常见的条件编译有两种方法: 一、根据宏是否定义,其语法如下: #ifdef <macro> …… #else …… #endif例子: #include <stdio.h>//def _DEBUG_ //定义_DEBUG_ int main(…...
网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...
Android设备 显示充电速度流程
整体逻辑:设备充电速度的判断 系统通过读取充电器的最大电流(Current)与最大电压(Voltage),计算最大充电功率(Wattage),以此判断当前是慢充、普通充还是快充:…...
megatron——EP并行
1、专家并行(Expert Parallelism, EP)适用场景 定义: 专家并行是指在混合专家模型(Mixture of Experts, MoE)中,将不同的专家(即子模型)分配到不同的设备上,每个设备只负…...
如何轻松删除电脑上的文件(无法恢复文件)
如果您想清理电脑上的存储空间,您可能需要轻松删除电脑上的文件以释放空间。此外,如果您打算出售或捐赠您的旧电脑,永久删除您的文件至关重要,这可以保护您的隐私。无论如何,您需要一种有效且可靠的方法来从计算机中删…...
搭建一个永久免费的博客
搭建永久免费的博客(1)基本介绍 HugoStackGitHub GitHub GitHub GitHub Build and ship software on a single, collaborative platform GitHub 下载安装git Git - Downloads Edge插件authenticator 2fa client Settings->Password and auth…...
计算机底层的多级缓存以及缓存带来的数据覆盖问题
没有多级缓存的情况 有多级缓存的情况 缓存带来的操作覆盖问题 锁总线带来的消耗太大了。...
ICRA 2024 PROGrasp——实用的人机交互物体抓取系统
在机器人抓取任务中,自然语言理解能够显著改善人机交互体验,尤其是在需要机器人根据人类指令进行环境交互的场景中。然而,现有的抓取系统往往要求用户明确指定目标对象的类别,限制了交互的自然性和灵活性。为了解决这一问题&#…...
【Vue篇】潮汐中的生命周期观测站
目录 引言 一、Vue生命周期 二、Vue生命周期钩子 三、、生命周期钩子实战 1.在created中发送数据 2.在mounted中获取焦点 四、综合案例-小黑记账清单 1.需求图示: 2.需求分析 3.思路分析 4.代码 5. 总结 引言 💬 欢迎讨论:如果…...
【OpenCV基础2】图像运算、水印、加密、摄像头
目录 一、图像运算 1、利用“” 2、cv2.add() 3、掩膜异或 二、摄像头 1、读取、视频流保存 2、人脸识别 三、数字水印 1、水印嵌入 2、水印提取 四、图像加密 一、图像运算 1、利用“” import cv2 利用""方法将两幅图像相加img1 cv2.imread(project…...
第 25 届中国全电展即将启幕,构建闭环能源生态系统推动全球能源转型
由 AI 算力爆发引发的能源消耗剧增,与碳中和目标、能源安全需求及电网转型压力形成叠加效应,使全球能源体系面临前所未有的挑战。在此背景下,第 25 届中国全电展(EPOWER EXPO)将于 2025 年 6 月 11 日至 13 日在上海新…...
vue3:十三、分类管理-表格--编辑、新增、详情、刷新
一、效果 实现封装表格的新增、编辑、详情查看,表格刷新功能 实现表格组件中表单的封装 1、新增 如下图,新增页面显示空白的下拉,文本框,文本域,并实现提交功能 2、编辑 如下图,点击行数据,可将行数据展示到编辑弹窗,并实现提交功能 3、详情 如下图,点击行数据,…...
一周快讯 | 银发文娱旅游一周新鲜事
银发文娱旅游一周新鲜事 一周银发文娱旅游产业资讯速览 星期一 5月19日 1 企业动态 同方全球人寿等共建一站式康养服务生态 东秀星健康养老产业等合作赋能康养产业,开发“旅居养老”项目 欧莱雅等合作将推出银发族形象管理课程 2 行业风向 总投资10亿&a…...
C++寻位映射的奇幻密码:哈希
文章目录 1.什么是哈希?2.哈希的常见实现方法2.1 直接定址法2.2 除留余数法 3.哈希冲突4.哈希冲突的解决4.1 闭散列4.1.1 线性探测4.1.1.1 哈希表的基本数据结构4.1.1.2 哈希表的key转换4.1.1.3 哈希表的插入4.1.1.4 哈希表的查找4.1.1.5 哈希表的删除 4.1.2 二次探…...
Spring Boot 集成 druid,实现 SQL 监控
文章目录 背景Druid 简介监控统计 StateFilter其它 Filter详细步骤第 1 步:添加依赖第 2 步:添加数据源配置【通用部分】第 3 步:添加监控配置【关键部分】第 3 步:访问 druid 页面参考背景 😂 在 Code Review 过程中发现,经常有开发会忘记给表加索引。这就导致,生产运…...
从零开始学习three.js(21):一文详解three.js中的矩阵Matrix和向量Vector
一、三维世界的数学基石 在Three.js的三维世界里,所有视觉效果的实现都建立在严密的数学基础之上。其中向量(Vector) 和矩阵(Matrix) 是最核心的数学工具,它们就像构建数字宇宙的原子与分子,支…...
无需笔墨之功,锦绣SQL自成桥——QuickAPI古法炼数据秘术
楔子:锦绣SQL,化身为桥 昔有匠人苦修代码之术,欲通数据库与前朝之界,然笔耕不辍,耗时弥久。今有秘器名曰QuickAPI,但凭三寸SQL文,顷刻间筑起数据虹桥。纵使不谙代码之道者,亦可挥毫…...
模块与包的导入
一、导入官方库 我们复盘下学习python的逻辑,所谓学习python就是学习python常见的基础语法学习你所处理任务需要用到的第三方库 类别典型库解决的问题学习门槛基础工具os、sys、json操作系统交互、序列化数据(如读写 JSON 文件)低科学计算n…...
智能文档抽取技术可以应用于哪些场景?
近日,合合信息编撰并发布了《2025智能文档技术与应用白皮书》。该书中不仅深度解析技术原理与创新突破,更聚焦金融、法律、制造等行业的典型场景,结合典型案例揭示技术如何赋能合同智能审查、票据自动化处理、知识库构建等业务场景࿰…...
实践促成长:成都理工大学华清远见成都中心实训
2025年5月, 华清远见成都中心迎来了成都理工大学大数据管理与应用专业23级以及电子商务22级的同学们,以实践为导向、以提升能力为目标的校企合作实训活动在此展开,为同学们开启了一段充满挑战与收获的学习之旅。 华清远见成都中心为两个专业的同学们量身…...