【小游戏】C++控制台版本俄罗斯轮盘赌
制作团队:洛谷813622(Igallta) 989571(_ayaka_)
Mod:_ayaka_
双人模式:Igallta
公告:
原先的9.8改名为 Alpha 1.0,以后每次更新都增加 0.1。
Alpha 1.11 改为 Beta 1.0。
手铐机制:朝自己开枪也算一个回合,例如:
上手铐+朝自己开枪 -> 朝对面开枪 -> 对面回合
Data:
Data 9.3:新增设定:对方死了之后对方的手铐也会解掉。
Data Alpha 1.1 :为防止有人钻牛角尖,大部分改为 string 类型。
Data Alpha 1.2 :为防止有些人数道具是第几号数大脑过载数晕过去了,显示道具时会增加编号。
Data Alpha 1.3 :不能命名为上帝、God…不然就会&%#@&)DHD*#。
Data Alpha 1.4 :游戏结束后并不会立刻窗口结束,而是会等三秒后按任意键结束。
Data Alpha 1.5 :增加等待时间,让你反应过来(原来只有 100ms,现在改为 500ms)。
Data Alpha 1.6 :缩短代码长度,没错,仅此而已。
Data Alpha 1.7 :增加如果射出的是实弹那么窗口就会抖动、每次获得的道具从固定4个改为 1~4 随机。以及优化游玩体验。
Data Alpha 1.8 :经讨论,认为道具设置为 1~5 个/次更为合适。
Data Alpha 1.9 :优化玩家体验。
Data Alpha 1.10 :修复关于输入无限循环的 bug。
Data Beta 1.0 :删除死亡后手铐解除的机制。
Data Beta 1.1 :修复在开发手铐时不小心让p1直接获得12个手铐的bug(汗),优化玩家体验。
Date Beta 1.2:大大缩短代码长度(目前有 bug 无法游玩)
/*
作者:洛谷813622、989571 csdn:luogu_Igallta
严禁搬迁
这个版本是Beta 1.1版本
*/
#include<bits/stdc++.h>
#include<windows.h>
#define clr system("cls")
#define int long long
using namespace std;
string dj[] = {"放大镜", "华子", "小刀", "饮料", "手铐"}, zd[] = {"空弹", "实弹"}, pl1, pl2;
bool is1 = 1, sk, zs; //sk:手铐 zs:打自己
int yu, kb, sd, b1 = 2, win1,win2,b2 = 2, ls = 1, hit = 1, mxb = 2, jl; //jl:记录被挂手铐后局数
vector<int>dj1, dj2;
queue<int>g;//枪械装弹
inline void dist(int atime, int st = 20) {int shake_distance = 10, x, y, width, height;int counts = atime / st / 2;RECT rect;HWND window = NULL, oldwindow = NULL;for (int i = 1; i <= counts; i++) {window = GetForegroundWindow();if (window != oldwindow) {GetWindowRect(window, &rect);x = rect.left;y = rect.top;width = rect.right - x;height = rect.bottom - y;oldwindow = window;}MoveWindow(window, x - shake_distance, y, width, height, TRUE);Sleep(st);MoveWindow(window, x + shake_distance, y, width, height, TRUE);Sleep(st);}
}
inline void split() {clr;int shake_time = 20, shake_distance = 10, x, y, width, height;RECT rect;HWND window = NULL, oldwindow = NULL;clr;for (int i = 1; i <= 300; i++) {window = GetForegroundWindow();if (window != oldwindow) {GetWindowRect(window, &rect);x = rect.left;y = rect.top;width = rect.right - x;height = rect.bottom - y;oldwindow = window;}MoveWindow(window, x - shake_distance, y, width, height, TRUE);Sleep(shake_time);MoveWindow(window, x + shake_distance, y, width, height, TRUE);Sleep(shake_time);if (i == 1)cout << "你";else if (i == 20)cout << "怎";else if (i == 40)cout << "么";else if (i == 60)cout << "这";else if (i == 80)cout << "么";else if (i == 100)cout << "不";else if (i == 120)cout << "听";else if (i == 140)cout << "话";else if (i == 160)cout << "呢";else if (i == 170)cout << "?";else if (i == 180)cout << "你";else if (i == 200)cout << "让";else if (i == 220)cout << "我";else if (i == 240)cout << "要";else if (i == 260)cout << "消";else if (i == 280)cout << "失";else if (i == 300)cout << "了";}int t = 250;while (t--) {cout << "ERROR ";Sleep(3);}t = 20;while (t--)system("start cmd");t = 20;while (t--) {MessageBox(NULL, "ERROR!", "ERROR", MB_OK | MB_ICONWARNING);}exit(0);
}
inline void dontagain() {clr;Sleep(500);for (int i = 0; i <= 2; i++) {cout << '.';Sleep(1000);}cout << "够";Sleep(2000);cout << "了!!!\n";dist(800);system("pause");cout << "你再这样程序就出 bug 了!\n";system("pause");clr;
}
inline void drink() {int tmpo = g.front();g.pop();cout << "你选择了饮料!退出的这发子弹是:" << zd[tmpo] << "!\n";--yu;if (tmpo) {--sd;} else --kb;Sleep(1500);
}
inline void over() {Sleep(1000);system("pause");clr;++ls;
}
inline void fdj() {cout << "当前子弹:";cout << zd[g.front()] << '\n';Sleep(1500);
}
signed main() {cout << "玩家1的名字:";cin >> pl1;int cnt1 = 0, cnt2 = 0;while (pl1 == "上帝" || pl1 == "GOD" || pl1 == "GOd" || pl1 == "GoD" || pl1 == "God" || pl1 == "gOD" || pl1 == "goD" || pl1 == "gOd" || pl1 == "god") {if (cnt1 == 6) {dontagain();}if (cnt1 == 12) {split();}cout << "ERROR 010101000110100001100101001000000100011101101111011001000010000001101000011000010111001100100000011000100110010101100101011011100010000001100100011001010110000101100100001011000111100101101111011101010010000001100011011000010110111000100111011101000010000001101110011000010110110101100101001000000111100101101111011101010111001000100000011011100110100101100011011010110110111001100001011011010110010100100000001000100100011101101111011001000010001000101110";cout << "\n你需要重新输入一个名字......\n";++cnt1;cin >> pl1;}cout << "玩家2的名字:";cin >> pl2;while (pl2 == "上帝" || pl2 == "GOD" || pl2 == "GOd" || pl2 == "GoD" || pl2 == "God" || pl2 == "gOD" || pl2 == "goD" || pl2 == "gOd" || pl2 == "god") {if (cnt2 == 6) {dontagain();}if (cnt2 == 12) {split();}cout << "ERROR 010101000110100001100101001000000100011101101111011001000010000001101000011000010111001100100000011000100110010101100101011011100010000001100100011001010110000101100100001011000111100101101111011101010010000001100011011000010110111000100111011101000010000001101110011000010110110101100101001000000111100101101111011101010111001000100000011011100110100101100011011010110110111001100001011011010110010100100000001000100100011101101111011001000010001000101110";cout << "\n你需要重新输入一个名字......\n";cin >> pl2;}clr;cout << "现在讲解规则:\n小刀:可以让下一发子弹伤害变成两倍\n华子:可以回一滴血\n放大镜:你可以查看当前子弹\n饮料:可以退一发子弹\n手铐:可以限制对方一回合动不了\n一共有3轮。\n";Sleep(1200);system("pause");clr;
start:;if (ls == 4) {clr;cout << "局数已到,游戏结束。\n";if(win1>win2){cout<<"p1赢了!";}else cout<<"p2赢了!";Sleep(2000);system("pause");exit(0);}//初始化b1 = 2 * ls;b2 = 2 * ls;hit = 1;zs = 0;sk = 0;yu = 0;kb = 0;sd = 0;jl = 0;mxb = b1;dj1.clear();dj2.clear();while (g.size())g.pop();cout << "第" << ls << "局\n目前比分(p1 : p2):"<<win1<<" : "<<win2<<'\n';Sleep(1200);clr;while (1) {clr;srand(time(0));if (!yu) {
sc:;int k = rand() % 5 + 1;cout << "现在开始上道具!\n" << pl1 << "(p1)获得了:";for (int i = 1; i <= k; i++) {int t = rand() % 5;dj1.push_back(t);cout << dj[t] << ' ';Sleep(500);}cout << "\n现在" << pl1 << "(p1)拥有道具:\n";for (auto v : dj1) {cout << dj[v] << ' ';}cout << '\n';Sleep(1200);system("pause");clr;cout << pl2 << "(p2)获得了:";for (int i = 1; i <= k; i++) {int t = rand() % 5;dj2.push_back(t);cout << dj[t] << ' ';Sleep(500);}cout << "\n现在" << pl2 << "(p2)拥有道具:\n";for (auto v : dj2) {cout << dj[v] << ' ';}cout << '\n';Sleep(1200);system("pause");clr;kb = rand() % 6 + 1;sd = rand() % 6 + 1;yu = (kb + sd);int tk = kb, ts = sd;cout << "空包弹有:" << kb << " 实弹有:" << sd << '\n';cout << "装填子弹中......\n";srand(time(0));for (int i = 1; i <= yu; i++) {bool k = rand() % 2;if (k) {if (tk) {g.push(0);--tk;} else {g.push(1);--ts;}} else {if (ts) {g.push(1);--ts;} else {g.push(0);--tk;}}}Sleep(1200);}cout << "\n现在" << pl1 << "(p1)拥有道具:\n";for (auto v : dj1) {cout << dj[v] << ' ';}cout << "\n现在" << pl2 << "(p2)拥有道具:\n";for (auto v : dj2) {cout << dj[v] << ' ';}cout << "\n生命值(p1,p2):" << b1 << "," << b2 << "\n";cout << "空包弹有:" << kb << "发,实弹有:" << sd << "发\n";if (is1) {cout << "现在是" << pl1 << "(p1)的回合\n";
use1:;if (dj1.size()) {cout << "\n现在" << pl1 << "(p1)拥有道具:\n";int total = 0;for (auto v : dj1) {cout << (++total) << "号:" << dj[v] << " ";}cout << "你要使用道具吗?(Y/N)\n";string t;
ques:;cin >> t;if (t.size() > 1) {cout << "请重新输入:";goto ques;}char q = t[0];q = toupper(q);if (q == 'Y') {cout << "\n请告诉我要使用道具在你拥有的的编号(从1开始;输入0代表不小心输错不使用道具):";int bh;string inp;
quesd1:;cin >> inp;if (inp.size() > 1) {cout << "不合法!\n请重新输入!";goto quesd1;}if (!isdigit(inp[0])) {cout << "不合法!\n请重新输入!";goto quesd1;}bh = inp[0] - 49;if (bh == -1)goto hit1;if (bh > dj1.size() - 1 || bh < 0) {cout << "不合法!\n请重新输入!";goto quesd1;} else {int tmp = dj1[bh];dj1.erase(dj1.begin() + bh);switch (tmp) {case 0: {fdj();break;}case 1: {if (b1 == mxb) {cout << "达到上限值,无法回复。";} else {++b1;cout << "你选择了华子!\n" << pl1 << "回复1点血量,现在他有" << b1 << "条生命值!";}Sleep(1500);break;}case 2: {if (hit == 2) {cout << "你在本回合已经使用了小刀,不能再使用了!将会新加小刀至末尾。\n";dj1.push_back(2);} else {hit = 2;cout << "你选择了小刀!这一回合将造成双倍伤害!\n";}Sleep(1500);break;}case 3: {drink();break;}case 4: {if (sk) {cout << "别人已经被铐起来了.....将把手铐移至末尾!\n";dj1.push_back(4);} else {sk = 1;jl = 0;cout << "你选择了手铐!下一回合敌人将无法移动!\n";}Sleep(1500);break;}}if (!yu) {goto sc;}goto use1;}} else if (q == 'N') {cout << "好的。";} else {cout << "请重新输入:";goto ques;}}
hit1:;cout << "你要打谁?(0:自己 1:另一名玩家):";string ht1;bool ht;cin>>ht1;if(ht1.size()>1||!isdigit(ht1[0])){cout<<"请重新输入!\n";goto hit1; }ht=(ht1[0]-48);int k = g.front();if (ht) {if (k) {cout << "当前是实弹!" << pl2 << "受到了" << hit << "点伤害!\n";dist(400);b2 -= hit;--sd;} else {cout << "很遗憾,当前是空包弹。\n";--kb;}} else {zs = 1;if (k) {cout << "哦豁,当前是实弹!" << pl1 << "受到了" << hit << "点伤害!\n";dist(400);b1 -= hit;--sd;} else {cout << "恭喜你,当前是空包弹!\n";--kb;}}g.pop();Sleep(1000);--yu;hit = 1;} else {cout << "现在是" << pl2 << "(p2)的回合\n";
use2:;if (dj2.size()) {char q;int total = 0;cout << "\n现在" << pl2 << "(p2)拥有道具:\n";for (auto v : dj2) {cout << (++total) << "号:" << dj[v] << " ";}
ques2:;cout << "\n你要使用道具吗?(Y/N)\n";string t;cin >> t;if (t.size() > 1) {cout << "请重新输入:";goto ques2;}q = t[0];q = toupper(q);if (q == 'Y') {cout << "\n请告诉我要使用道具在你拥有的的编号(从1开始;输入0代表不小心输错不使用道具):";string inp;
quesd2:;cin >> inp;if (inp.size() > 1) {cout << "不合法!\n请重新输入!";goto quesd2;}if (!isdigit(inp[0])) {cout << "不合法!\n请重新输入!";goto quesd2;}int bh = inp[0] - 49;if (bh == -1) {goto hit2;}if (bh > dj2.size() - 1 || bh < 0) {cout << "不合法!\n请重新输入!";goto quesd2;} else {int tmp = dj2[bh];dj2.erase(dj2.begin() + bh);switch (tmp) {case 0: {fdj();break;}case 1: {if (b2 == mxb) {cout << "达到上限值,无法回复。";} else {++b2;cout << "你选择了华子!\n" << pl2 << "回复1点血量,现在他有" << b2 << "条生命值!";}Sleep(1500);break;}case 2: {if (hit == 2) {cout << "你在本回合已经使用了小刀,不能再使用了!将会新加小刀至末尾。\n";dj2.push_back(2);} else {hit = 2;cout << "你选择了小刀!这一回合将造成双倍伤害!\n";}Sleep(1500);break;}case 3: {drink();break;}case 4: {if (sk) {cout << "别人已经被铐起来了......将把手铐移至末尾!\n";dj2.push_back(4);} else {sk = 1;jl = 0;cout << "你选择了手铐!下一回合敌人将无法移动!\n";}Sleep(1500);break;}}if (!yu) {goto sc;}goto use2;}} else if (q == 'N') {cout << "好的。";} else {cout << "请重新输入:";goto ques2;}}
hit2:;cout << "你要打谁?(0:自己 1:另一名玩家):";string ht1;bool ht;cin >> ht1;if(ht1.size()>1 || !isdigit(ht1[0])){cout<<"请重新输入!\n";goto hit2;}ht=(ht1[0]-48);int k = g.front();if (ht) {if (k) {cout << "当前是实弹!" << pl1 << "受到了" << hit << "点伤害!\n";dist(400);b1 -= hit;--sd;} else {cout << "很遗憾,当前是空包弹。\n";--kb;}} else {zs = 1;if (k) {cout << "哦豁,当前是实弹!" << pl2 << "受到了" << hit << "点伤害!\n";dist(400);b2 -= hit;--sd;} else {cout << "恭喜你,当前是空包弹!\n";--kb;}}g.pop();Sleep(1000);--yu;hit = 1;}if (b1 <= 0) {clr;cout << pl2 << "赢了\n";++win2;over();goto start;}if (b2 <= 0) {clr;cout << pl1 << "赢了\n";++win1;over();goto start;}if (sk) {++jl;if (jl == 2) {sk = 0;jl = 0;}}if (!sk && !zs) {is1 = 1 - is1;}zs = 0;}return 0;
}
如果你的 Dev 说这个代码 CE,解决方案如下:
最顶上一栏的“工具” -> “编译选项” -> “编译时加入以下参数”
填 -std=c++14 -O2 -lm -static
如果还是 CE,并且提示的里面含有 -std=c++14 -O2 -lm -static
,那么代表你的 Dev 版本过低,你需要下载 DevC++5.11 或 DevC++6.5(推荐下载 DevC++6.5)。
其他编译器(诸如 VSCode Codeblock)我不知道,反正你使用的是 c++14 及以上版本即可。
历代版本:
Alpha 1.2
Alpha 1.3
Alpha 1.4
Alpha 1.5
Alpha 1.6
Alpha 1.7
Alpha 1.8
Alpha 1.9
Alpha 1.10
Beta 1.0
Beta 1.1
Beta 1.2 很严重bug,修复中,请勿游玩
另外,我们也提供 Mod 玩法:
三国杀版本
-
如果原版复刻出现了 bug,请私信 Igallta 或者给这个博客回复。
-
如果Mod出现了 bug,请私信 _ayaka_ 或者给ta的博客回复。
-
有 bug 一定要说!而且一定要说明确,比如某些同学只说手铐有问题,我也不知道你出现了什么问题,只知道手铐有问题,导致我 de 了半天一点问题都没看出来,也一头雾水。如果你自己非要钻牛角尖,输入个什么转义字符啊,ctrl啊…那些我们也没办法。就不要发出来了。
真要求改的话,你可以去找找 C/C++ 作者,和ta谈谈…
相关文章:
【小游戏】C++控制台版本俄罗斯轮盘赌
制作团队:洛谷813622(Igallta) 989571(_ayaka_) Mod:_ayaka_ 双人模式:Igallta 公告: 原先的9.8改名为 Alpha 1.0,以后每次更新都增加 0.1。 Alpha 1.11 改为 Beta 1…...

【前端】使用WebStorm创建第一个项目
文章目录 前言一、步骤1、启动2、创建项目3、配置Node.js4、运行项目 二、Node.js介绍 前言 根据前面文章中记录的步骤,已经安装好了WebStorm开发软件,接下来我们就用这个IDE开发软件创建第一个项目。 一、步骤 1、启动 启动软件。 2、创建项目 新建…...

前后端项目部署服务器(传统部署和Docker部署)
内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...

C++,设计模式,【工厂方法模式】
文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…...
golang--字符串处理(rune类型)
在 Go 语言中,rune 类型是一个非常重要的基础类型,用于处理 Unicode 字符。以下是关于 rune 类型的详细用法说明: 一、基础概念 类型定义 rune 是 int32 的别名(type rune int32),表示一个 Unicode 码点&a…...
如何通过AI优化敏捷开发中的任务管理与分配?
用ChatGPT做软件测试 在现代软件开发中,敏捷开发(Agile)已成为一种广泛采用的开发方法论,其核心思想是强调快速响应变化、与客户的持续沟通以及团队协作的高效性。然而,随着项目规模的不断扩大,敏捷开发面临…...

第1章大型互联网公司的基础架构——1.11 消息中间件技术
消息队列(Message Queue)是分布式系统中最重要的中间件之一,在服务架构设计中被广泛使用。 1.11.1 通信模式与用途 消息中间件构建了这样的通信模式: 一条消息由生产者创建,并被投递到存放消息的队列中;…...

FlutterAssetsGenerator插件的使用
在Plugins中找到FlutterAssetsGenerator插件,点击安装。 更改生成的资源索引类可以修改名字。 在根目录下创建assets/images文件夹,用于存储图片。 点击images文件夹,鼠标右键点击Flutter:Configuring Paths,pub…...

EasyExcel 自定义头信息导出
需求:需要在导出 excel时,合并单元格自定义头信息(动态生成),然后才是字段列表头即导出数据。 EasyExcel - 使用table去写入:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write#%E4%BD%BF%E7%94%A8table%E…...

网络运维学习笔记 012网工初级(HCIA-Datacom与CCNA-EI)某机构新增:GRE隧道与EBGP实施
文章目录 GRE隧道(通用路由封装,Generic Routing Encapsulation)协议号47实验:思科:开始实施: 华为:开始实施: eBGP实施思科:华为: GRE隧道(通用路…...
【系列专栏】银行IT的云原生架构-存储架构-数据库部署 10
银行 IT 的云原生架构:存储架构(数据库部署) 一、引言 在银行 IT 云原生架构的构建中,存储架构作为关键支撑,其性能、可靠性和扩展性直接影响着银行各类业务系统的运行效率与数据安全。而数据库作为数据存储与管理的…...
Python 爬虫selenium
1.selenium自动化 selenium可以操作浏览器,在浏览器页面上实现:点击、输入、滑动 等操作。 不同于selenium自动化,逆向本质是: 分析请求,例如:请求方法、请求参数、加密方式等。用代码模拟请求去实现同等…...
为啥vue3设计不直接用toRefs,而是reactive+toRefs
Vue 3 设计中将 reactive 和 toRefs 结合使用而非直接使用 toRefs,主要基于以下设计考量: 1. 响应式粒度的不同需求 reactive 适用于对象整体响应式 reactive 会为整个对象创建响应式代理,自动追踪对象内部所有属性的变化。这种设计适用于需要…...

深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理
深入解析 vLLM:高性能 LLM 服务框架的架构之美(一)原理与解析 深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理 1. vLLM 调度器结构与主要组件 在 vLLM 中,调度器的结构设计围绕任务…...
VMware安装教程
一、安装VMware软件 1. 安装前准备 系统要求: 操作系统:Windows 10/11 或 Linux(如Ubuntu、CentOS)。硬件要求: CPU:支持虚拟化技术(Intel VT-x 或 AMD-V),需在BIOS中启…...

iOS事件传递和响应
背景 对于身处中小公司且业务不怎么复杂的程序员来说,很多技术不常用,你可能看过很多遍也都大致了解,但是实际让你讲,不一定讲的清楚。你可能说,我以独当一面,应对自如了,但是技术的知识甚多&a…...

TensorFlow 实现任意风格的快速风格转换
一、什么是风格迁移? 风格迁移(Style Transfer)是一种利用深度学习技术,将一幅图像的内容与另一幅图像的艺术风格相结合,生成新图像的技术。其核心思想是将图像的“内容”和“风格”分离,再重新组合&#…...

火绒终端安全管理系统V2.0【系统防御功能】
火绒企业版V2.0系统防御功能包含系统加固、应用加固、软件安装拦截、摄像头保护和浏览器保护。火绒终端安全管理软件V2.0守护企业用户终端安全。 系统防御 1. 系统加固 系统加固功能根据火绒提供的安全加固策略,当程序对特定系统资源操作时提醒用户可能存在的安…...

全志A133 android10 适配SLM770A 4G模块
一,模块基本信息 1.官方介绍 SLM770A是美格智能最新推出的一款LTE Cat.4无线通讯模组,最大支持下行速率150Mbps及上行速率50Mbps。同时向下兼容现有的3G和2G网络,以确保即使在偏远地区也可以进行网络通信。 SLM770A模组支持分集接收和MIMO技…...

第3章 3.2 配置系统 .NET Core配置系统
3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源,包括文件(JSON、XML、INI等)、注册表、环境变量、命令行、Azure Key Vault等,配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...