C++蓝桥杯基础篇(八)
片头
嗨~小伙伴们,大家好!今天我们一起来学习C++蓝桥杯基础篇(八),练习相关字符串的习题,准备好了吗?Are you ready? Let's go!

第1题 字符串中的数字个数

这道题,我们用字符数组或者string类型来存储数据都可以。
因为其中可能包含空格,因此scanf和cin是不能使用的。如果是字符数组,采用fgets函数从键盘中读取;如果是string类型,使用getline函数从键盘中读取。
代码如下:
方法一:使用string类型从键盘中读取数据
//字符串中的数字个数
//输入一行字符,长度不超过10
//统计其中的数字字符的个数
//输入一行字符,注意其中包含空格
//输出一个整数,表示数字字符的个数//string类型来读取数据
int main() {string str;getline(cin, str);int num = 0;for (int i = 0; str[i]; i++) {if (str[i] >= '0' && str[i] <= '9') {num++;}}cout << num << endl;return 0;
}
方法二:用字符数组从键盘中读取数据
int main() {char a[10]; //定义一个字符数组,长度为10fgets(a, 10, stdin); //从键盘中最多输入9个有效数据,最后1个值为'\0'int num = 0;for (int i = 0; a[i] != '\0' && a[i] != '\n'; i++) {if (a[i] >= '0' && a[i] <= '9') {num++;}}cout << num << endl;return 0;
}
第2题 循环相克令

这道题,类似于我们小时候玩的剪刀石头布,2个玩家,石头赢剪刀,布赢石头,剪刀赢布。如果双方出的相同,则平局。
这道题也一样。狗熊赢猎人,枪赢狗熊,猎人赢枪。

好啦,本道题的代码如下:
//循环相克令
//循环相克令是一个两人玩的小游戏。
//令词为“猎人、狗熊、枪”,两人同时说出令词,同时做出一个动作--
//猎人的动作是双手叉腰; 狗熊的动作是双手搭在胸前 : 枪的动作是双手举起呈手枪状。
//双方以此动作判定输赢,猎人赢枪、枪狗熊、狗熊赢猎人,动作相同则视为平局。
//现在给定你一系列的动作组合,请你判断游戏结果。
//第一行包含整数T,表示共有T组测试数据。
//接下来T行,每行包含两个字符串,表示一局游戏中两人做出的动作,
//字符串为“Hunter"“Bear", “Gun”中的一个
//这三个单词分别代表猎人,狗熊和枪。
//如果第一个玩家赢了,则输出“Player1”。
//如果第二个玩家赢了,则输出“Player2”。
//如果平局,则输出“Tie”。// 猎人 0 1赢0
// 狗熊 1 2赢1
// 枪 2 0赢2// x == (y + 1) % 3int main() {int t;cin >> t; //表示共有t组测试数据int x, y;while (t--) {string a, b;cin >> a >> b;if (a == "Hunter") x = 0;else if (a == "Bear") x = 1;else x = 2;if (b == "Hunter") y = 0;else if (b == "Bear") y = 1;else y = 2;if (x == y) cout << "Tie" << endl;else if (x == (y + 1) % 3) cout << "Player1" << endl;else cout << "Player2" << endl;}return 0;
}
第3题 字符串加空格

这道题,要求在字符串的每个字符之间加一个空格。代码如下:
//字符串加空格
//给定一个字符串,在字符串的每个字符之间都加一个空格。
//输出修改后的新字符串。
//输入共一行,包含一个字符串。注意字符串中可能包含空格。
//输出增加空格后的字符串。
//1 < 字符串长度 < 100int main() {string s;getline(cin, s);int len = s.size();string b = "";for (int i = 0; i < len; i++) {b = b + s[i] + ' ';}cout << b << endl;return 0;
}
或者采用范围for也可以
int main() {string s;getline(cin, s);string b = "";for (auto e : s) {b = b + e + ' ';}cout << b << endl;return 0;
}
注意:必须写成 b = b + s[i] + ' '; 如果写成 b += s[i] + ' '; 那么 s[i] 会先和空格相加,得到一个ASCII码值,再用这个ASCII码值和字符串b相加。很显然,违背了题意,因此,我们必须分开写。
第4题 字符串插入

首先,我们先来介绍substr函数。
string substr(size_t pos = 0,size_t len = npos);
参数:
pos: 要复制的第一个字符的位置
len: 子字符串的长度
size_t: 这是一个无符号整数类型
返回值: 返回一个字符串对象功能:在str中从pos位置开始,截取len个字符,然后将其返回
例如:
void test() {string s1("hello world!");//从下标为0的元素开始,截取5个字符string s2 = s1.substr(0, 5);cout << s2 << endl;
}

欧克欧克,我们回到这道题上面。
题目要求我们把sub插入到str中ASCII码值最大的那个字符后面。我们可以采用擂台法。用一个变量p来保存下标为0的元素,依次和后面的元素进行比较。如果后面的元素比当前元素值大,那么就把p更新。
再用substr函数,插入到ASCII码最大值的字符后面。分成3段,第1部分是下标为0的元素~下标为p的元素,总共p+1个元素;第2部分就是我们要插入的sub;第3部分是下标为p+1的元素一直到字符串的结束位置'\0'
代码如下:
//s.substr(i,len)
//从字符串s中的索引i开始打印,长度为len的子字符串
//len默认为nposint main() {string str;string sub;while (cin >> str >> sub) {int p = 0; //设最大值的下标为0for (int i = 1; str[i]; i++) {if (str[i] > str[p]) {p = i;}}//因为是从下标为p的位置开始插入,因此前面的字符个数为p+1//从字符串str中的下标为0的位置开始,截取p+1个字符//将得到的结果和sub字符串进行拼接//最后将从下标p+1的位置,截取npos个字符,也就是剩余的字符串长度//和之前的结果拼接到一起cout << str.substr(0, p + 1) + sub + str.substr(p + 1) << endl;}return 0;
}
第5题 字符串匹配

这道题,其实就是依次比较2个字符串中的字符是否相同
代码如下:
//字符串匹配
//给定两个长度相同的字符串a和字符串 b。
//如果在某个位置i上,满足字符串a上的字符a[i]和字符串b上的字符b[i]相同,那么这个位置上的字符就是匹配的。
//如果两个字符串的匹配位置的数量与字符串总长度的比值大于或等于k,则称两个字符串是匹配的。
//现在请你判断给定的两个字符串是否匹配。
//第一行包含一个浮点数k,第二行包含字符串a,第三行包含字符串b。
//输入的字符串中不包含空格。
//如果两个字符串匹配,则输出“yes”;否则,输出“no”。
//0 < k < 1,
//字符串的长度不超过100。int main() {double k;cin >> k;string a, b;cin >> a >> b;int count = 0;int len = a.size();for (int i = 0; a[i]; i++) {if (a[i] == b[i]) {count++;}}if ((double)count / len >= k) {cout << "yes" << endl;}else {cout << "no" << endl;}return 0;
}
第6题 忽略大小写比较字符串大小

这道题,其实是比较2个字符串,将大写字母转变成小写字母,进行比较。'a'为97,'A'为65,差值为32。如果将大写字母转为小写字母,那么只需要将数值加上32即可。最后将2个字符串用strcmp函数进行比较。如果相等,输出"=";如果结果为1,输出">";否则输出"<"。
需要注意的是,字符串中可能包含空格,因此我们需要用fgets函数或者getline函数。
代码如下:
//忽略大小写比较字符串大小
//一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0’为止。
//如果全部字符都相同,则认为相同; 如果出现不相同的字符,则以第一个不相同的字符的比较结果为准
//但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如”Hello”和”hello”在忽略字母大小写时是相等的。
//请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较
//输入为两行,每行一个字符串,共两个字符串。注意字符串中可能包含空格。
//数据保证每个字符串的长度都不超过80。
//如果第一个字符串比第二个字符串小,输出一个字符”<”。
//如果第一个字符串比第二个字符串大,输出一个字符” > ”
//如果两个字符串相等,输出一个字符” = ”。int main() {char a[80];char b[80];fgets(a, 80, stdin);fgets(b, 80, stdin);if (a[strlen(a) - 1] == '\n') a[strlen(a) - 1] = 0; //去掉末尾回车if (b[strlen(b) - 1] == '\n') b[strlen(b) - 1] = 0; //去掉末尾回车for (int i = 0; a[i]; i++) {if (a[i] >= 'A' && a[i] <= 'Z') { //将大写字母转换为小写字母a[i] += 32;}}for (int j = 0; b[j]; j++) {if (b[j] >= 'A' && b[j] <= 'Z') { //将大写字母转换为小写字母b[j] += 32;}}int t = strcmp(a, b);if (t == 0) cout << "=" << endl;else if (t > 0) cout << ">" << endl;else cout << "<" << endl;return 0;
}
第7题 去掉多余的空格

这道题,咱们有2种方法~
方法一:直接用cin读取一整行字符串,注意这里使用while循环。cin遇到空格或换行会停止读取
代码如下:
//去掉多余的空格
//输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。
//输入共一行,包含一个字符串。
//输出去掉多余空格后的字符串,占一行。
//输入字符串的长度不超过200//在控制台上输入,是遇到\n结束
//而cin读取的话,直到遇到空白字符(如空格、制表、换行符等)就会结束
//cin其实是遇到空格或\n就停止,执行循环内部,再去读取下一个值int main() {string s;while (cin >> s) cout << s << " ";return 0;
}
方法二:采用双指针法,下标 i 在起始位置,定义下标 j ,初始位置为下标 i 的位置,如果下标 j 没有走到 '\0' ,并且下标 j 对应的值为空格,那么 j++,直到下标 j 对应的值不是空格。此时下标 i 位置更新,更新到下标 j 的位置。
int main() {string a;getline(cin, a); //使用getline函数读取一整行字符串(包含空格)string b = ""; //定义字符串b为最终输出的结果int len = a.size();for (int i = 0; i < len; i++) {if (a[i] != ' ') b += a[i]; //如果a[i]不是空格,直接拼接到字符串belse {b = b + ' '; //如果a[i]是空格,字符串b只需要加1次空格int j = i;while (j < a.size() && a[j] == ' ') j++;//for (; j < a.size() && a[j] == ' '; j++);i = j - 1; //因为else语句的外面还有i++,i又会自增1次//如果 i == j,那么i++,i就会跳到j位置的右边(下一个位置)//所以 i = j - 1; 执行完else语句,i++,i刚好等于j}}cout << b << endl;return 0;
}
第8题 输出字符串

这道题,要求我们输出字符串b,那么对字符串b的要求是什么呢?咱们画个图~

本题的代码如下:
//输出字符串
//给定一个字符串a,请你按照下面的要求输出字符串b。
//给定字符串a的第一个字符的ASCII值加第二个字符的ASCII值,得到b的第一个字符;
//给定字符串a的第二个字符的ASCII值加第三个字符的ASCII值,得到b的第二个字符
//给定字符串a的倒数第二个字符的ASCII值加最后一个字符的ASCII值,得到b的倒数第二个字符,
//给定字符串a的最后一个字符的ASCII值加第一个字符的ASCII值,得到b的最后一个字符。
//输入共一行,包含字符串a。注意字符串中可能包含空格。
//数据保证字符串内的字符的ASCII值均不超过63。//输入: 1 2 3
//输出: QRRSdint main() {string a;string b;getline(cin, a); //因为要包含空格,所以使用getline函数int len = a.size();for (int i = 0; i < len; i++) {b += (char)(a[i] + a[(i + 1) % a.size()]); //不强转成char类型也可以}cout << b << endl;return 0;
}
第9题 单词替换

这道题,本意是让我们输入一整行字符串s,输入待替换的单词a,接着再输入将被替换的单词b,输出将字符串s中所有单词a替换成b之后的字符串。
这个就需要stringstream类来解决此类问题了, stringstream 是 C++ 提供的专门用于处理字符串的 输入输出 流类。 stringstream 定义于头文件 <sstream>。
stringstream的用途:利用 stringstream 去除字符串空格,因为 stringstream 默认是以空格来分割字符串的。
示例代码:
int main() {string a;getline(cin, a); // I am a student!stringstream ssin(a); //将字符串a传入stringstream对象ssin中//注意:stringstream的对象ssin,是一个单词一个单词"流入"e的string e;while (ssin >> e) cout << e << endl;//打印结果为:// I // am// a// student!return 0;
}

因此,我们先定义字符串s,s包含多个单词。接着定义待替换的单词a,定义将被替换的单词b。定义stringstream类的一个对象ssin,将字符串s传递过去。此时ssin会把一整行字符串s,以空格为分隔符,拆分成一个一个单词。再逐一判断每个单词是否要被替换。
代码如下:
//单词替换//stringstream 的用法:
//默认以空格来分割字符串int main() {string s,a,b;getline(cin, s); //多个单词的字符串scin >> a; //待替换的单词acin >> b; //a将被替换的单词bstringstream ssin(s); //stringstream 读取s字符串的时候,自动把s字符串里面的内容按照空格分隔提取出来string part; //将s字符串中,按照空格分隔符,将每个单词都存放到part变量中//注意: stringstream的对象ssin,是一个单词一个单词"流入"part的while (ssin >> part) {if (part == a) cout << b << " "; else cout << part << " ";}return 0;
}
第10题 字符串中最长的连续出现的字符

题目要求字符串中最长的连续出现的字符,还是运用我们双指针法。

OK啦,本道题的代码如下:
//字符串中最长的连续出现的字符
//求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab)
//如果这样的字符不止一个,则输出第一个。
//第一行输入整数N,表示测试数据的组数。
//每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。
//输出共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。int main() {int n; //测试的组数cin >> n;while (n--) {string str;cin >> str;int len = str.size();int count = 0;//字符出现的次数char c; //字符for (int i = 0; i < len; i++) {int j = i;while (j < len && str[j] == str[i]) j++;if (count < j - i) count = j - i, c = str[i];i = j - 1;}cout << c << " " << count << endl;}return 0;
}
第11题 最长单词

对于这道题,咱们先来一个简单方法:
//最长单词
//一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。
//输入这个简单英文句子,长度不超过500。
//输出该句子中最长的单词。如果多于一个,则输出第一个。
//输入样例:
//I am a student of Peking University.
//输出样例:
//University//方法一
int main() {string s;string res = "";while (cin >> s) {if (s.back() == '.') s.pop_back(); //如果当前字符串的最后一个字符为'.'//那么就调用pop_back()函数//把最后这个字符删除if (s.size() > res.size()) res = s; //如果字符串s的长度大于之前res的长度//将新的字符串赋给res}cout << res << endl;return 0;
}
另外,s.back() == '.' 也可以写成 s[s.size()-1] == '.'
第12题 倒排单词

对于这道题,咱们先来试一试~
//倒排单词
//编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),
//将所有单词的顺序倒排并输出,依然以单个空格分隔。
//输入为一个字符串(字符串长度至多为100)。
//输出为按要求排序后的字符串。
//输入样例 :
//I am a student
//输出样例 :
//student a am Iint main() {string a[100]; //定义一个字符串数组,可以存放100个字符串int i = 0;while (cin >> a[i]) i++; //往字符串a数组里面存入元素时,下标i自增for (int j = i - 1; j >= 0; j--) //下标j从最后一个元素的下标开始,从后往前遍历整个字符串数组{ cout << a[j] << " ";}return 0;
}
片尾
今天我们学习了字符串相关的习题,希望这篇文章对友友们有所帮助!!!
求点赞收藏加关注!!!
谢谢大家!!!

相关文章:
C++蓝桥杯基础篇(八)
片头 嗨~小伙伴们,大家好!今天我们一起来学习C蓝桥杯基础篇(八),练习相关字符串的习题,准备好了吗?Are you ready? Lets go! 第1题 字符串中的数字个数 这道题,我们用字符数组或者…...
AI 实战 - pytorch框架基于retinaface实现face检测
pytorch框架基于retinaface实现face检测 简介模型结构MobileNet-0.25SSH结构Head结构 Anchor编解码 环境开发环境 数据简介 训练测试参考 简介 RetinaFace是在RetinaNet基础上引申出来的人脸检测框架,所以大致结构和RetinaNet非常像。 主要改进:1.Mobi…...
如何在PHP中实现API版本管理:保持向后兼容性
如何在PHP中实现API版本管理:保持向后兼容性 在现代Web开发中,API(应用程序编程接口)是连接前端和后端的关键桥梁。随着业务需求的不断变化,API的版本管理变得尤为重要。良好的版本管理策略不仅能够确保新功能的顺利引…...
Docker Compose企业示例
利用容器编排完成haproxy和nginx负载均衡架构实施 1.mkdir docker.test 2.touch haproxy.yml 3.mkdir /var/lib/docker/volumes/conf 4.dnf install haproxy -y --downloadonly --downloaddir/xixi:下载内容到/xixi目录下 5. rpm2cpio haproxy-2.4.22-4.el9.x8…...
TMS320F28P550SJ9学习笔记6:SCI所有寄存器__结构体寄存器方式配置 SCI通信初始化__库函数发送测试
继续学习如何使用结构体寄存器的方式配置这款单片机的外设,这里配置SCI通信的初始化 但SCI gpio 的初始化还是调用的库函数比较方便,它的发送部分页调用了库函数 有关收发方面的逻辑,我会在之后重新自己写一次 文章提供测试代码讲解、完整…...
详细探索如何用脚本实现M小ySQL一键安装与配置,提升运维效率!
以下是基于脚本实现MySQL一键安装与配置的详细方案,涵盖Linux主流系统(CentOS/Ubuntu)及Windows环境,结合自动化部署与高可用性扩展,旨在提升运维效率: 一、Linux系统(CentOS 7.x)一…...
无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法
视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外,平台还支持用户自行上传视频文件,也可将上传的点播…...
增删改查 数据下载 一键编辑 删除
index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…...
【Go学习实战】03-2-博客查询及登录
【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…...
回溯算法(C/C++)
目录 一、组合问题 组合 组合剪枝 组合总和 III编辑 组合总和编辑 组合总和 II 电话号码的字母组合编辑 二、分割问题 分割回文串 复原 IP 地址 三、集合问题 子集 子集 II 非递减子序列 四、排列问题 全排列 全排列 II 五、棋盘问题 N 皇后 课程&#x…...
物联网智慧农业一体化解决方案-可继续扩展更多使用场景
在智慧农业中,从种子、施肥、灌溉、锄地、农具管理、日常照料到蔬菜档案管理,以及与客户、供应商、市场的对接,可以通过物联网(IoT)、大数据、人工智能(AI)、区块链和云计算等技术,构建一个从生产到销售的全流程数字化、智能化农业生态系统。以下是实现方案和技术路径的…...
Jackson 详解
目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一,广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能,支持注解、模块化设计和多种数据格式(如 XML、YAML)。本文将详细介…...
游戏引擎学习第143天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并规划今天的内容 目前,我们正在进行声音混合的开发。我们已经写好了声音混合器,并且已经实现了一些功能,比如声音流播放和音量插值。过去一周我们做了很多工作,进展非常快。不…...
SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决
介绍一下我的是ubuntu20.04.机载电脑是orinnx,通过源码烧写的系统。 首先打开终端,输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容, ONNX(Open Neural Network E…...
Nginx解决前端跨域问题
1. 理解 CORS 和同源策略 1.1 同源策略 同源策略是一种浏览器安全机制,用于阻止不同源(不同域名、协议或端口)的 Web 应用相互访问数据。它确保了 Web 应用的隔离性,防止恶意网站访问用户数据或执行不安全的操作。 同源策略下&…...
ReferenceError: assignment to undeclared variable xxx
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
国产编辑器EverEdit - 宏功能介绍
1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器,可以让用户愉快的从繁琐的工作中解放出来,其本质是对键盘和菜单的操作序列的录制,并不会识别文件的内容,属于无差别无脑执行。 特别是对一些有规律的重复按键动作,…...
图像滑块对比功能的开发记录
背景介绍 最近,公司需要开发一款在线图像压缩工具,其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此,我们设计了一个对比组件,它允许用户通过拖动滑块,动态调整两张图像的显示区域,从而清晰…...
【计算机网络】Socket
Socket 是网络通信的核心技术之一,充当应用程序与网络协议栈之间的接口。 1. Socket 定义 Socket(套接字)是操作系统提供的 网络通信抽象层,允许应用程序通过标准接口(如 TCP/IP 或 UDP)进行数据传输。它…...
Electron应用中获取设备唯一ID和系统信息
让我创建一篇关于如何在Electron应用中获取设备唯一ID和系统信息,并在登录时使用这些信息的博客文章。我将确保步骤明确、条理清晰,适合初学者和有经验的开发者。 这篇博客应包含以下部分: 介绍 - 为什么需要获取设备信息前提条件和安装依赖…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
