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

【小游戏】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++控制台版本俄罗斯轮盘赌

制作团队&#xff1a;洛谷813622&#xff08;Igallta&#xff09; 989571&#xff08;_ayaka_&#xff09; Mod&#xff1a;_ayaka_ 双人模式&#xff1a;Igallta 公告&#xff1a; 原先的9.8改名为 Alpha 1.0&#xff0c;以后每次更新都增加 0.1。 Alpha 1.11 改为 Beta 1…...

【前端】使用WebStorm创建第一个项目

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

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…...

golang--字符串处理(rune类型)

在 Go 语言中&#xff0c;rune 类型是一个非常重要的基础类型&#xff0c;用于处理 Unicode 字符。以下是关于 rune 类型的详细用法说明&#xff1a; 一、基础概念 类型定义 rune 是 int32 的别名&#xff08;type rune int32&#xff09;&#xff0c;表示一个 Unicode 码点&a…...

如何通过AI优化敏捷开发中的任务管理与分配?

用ChatGPT做软件测试 在现代软件开发中&#xff0c;敏捷开发&#xff08;Agile&#xff09;已成为一种广泛采用的开发方法论&#xff0c;其核心思想是强调快速响应变化、与客户的持续沟通以及团队协作的高效性。然而&#xff0c;随着项目规模的不断扩大&#xff0c;敏捷开发面临…...

第1章大型互联网公司的基础架构——1.11 消息中间件技术

消息队列&#xff08;Message Queue&#xff09;是分布式系统中最重要的中间件之一&#xff0c;在服务架构设计中被广泛使用。 1.11.1 通信模式与用途 消息中间件构建了这样的通信模式&#xff1a; 一条消息由生产者创建&#xff0c;并被投递到存放消息的队列中&#xff1b;…...

FlutterAssetsGenerator插件的使用

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

EasyExcel 自定义头信息导出

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

网络运维学习笔记 012网工初级(HCIA-Datacom与CCNA-EI)某机构新增:GRE隧道与EBGP实施

文章目录 GRE隧道&#xff08;通用路由封装&#xff0c;Generic Routing Encapsulation&#xff09;协议号47实验&#xff1a;思科&#xff1a;开始实施&#xff1a; 华为&#xff1a;开始实施&#xff1a; eBGP实施思科&#xff1a;华为&#xff1a; GRE隧道&#xff08;通用路…...

【系列专栏】银行IT的云原生架构-存储架构-数据库部署 10

银行 IT 的云原生架构&#xff1a;存储架构&#xff08;数据库部署&#xff09; 一、引言 在银行 IT 云原生架构的构建中&#xff0c;存储架构作为关键支撑&#xff0c;其性能、可靠性和扩展性直接影响着银行各类业务系统的运行效率与数据安全。而数据库作为数据存储与管理的…...

Python 爬虫selenium

1.selenium自动化 selenium可以操作浏览器&#xff0c;在浏览器页面上实现&#xff1a;点击、输入、滑动 等操作。 不同于selenium自动化&#xff0c;逆向本质是&#xff1a; 分析请求&#xff0c;例如&#xff1a;请求方法、请求参数、加密方式等。用代码模拟请求去实现同等…...

为啥vue3设计不直接用toRefs,而是reactive+toRefs

Vue 3 设计中将 reactive 和 toRefs 结合使用而非直接使用 toRefs&#xff0c;主要基于以下设计考量&#xff1a; 1. 响应式粒度的不同需求 reactive 适用于对象整体响应式 reactive 会为整个对象创建响应式代理&#xff0c;自动追踪对象内部所有属性的变化。这种设计适用于需要…...

深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理

深入解析 vLLM&#xff1a;高性能 LLM 服务框架的架构之美&#xff08;一&#xff09;原理与解析 深入解析 vLLM&#xff1a;高性能 LLM 服务框架的架构之美&#xff08;二&#xff09;调度管理 1. vLLM 调度器结构与主要组件 在 vLLM 中&#xff0c;调度器的结构设计围绕任务…...

VMware安装教程

一、安装VMware软件 1. 安装前准备 系统要求&#xff1a; 操作系统&#xff1a;Windows 10/11 或 Linux&#xff08;如Ubuntu、CentOS&#xff09;。硬件要求&#xff1a; CPU&#xff1a;支持虚拟化技术&#xff08;Intel VT-x 或 AMD-V&#xff09;&#xff0c;需在BIOS中启…...

iOS事件传递和响应

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

TensorFlow 实现任意风格的快速风格转换

一、什么是风格迁移&#xff1f; 风格迁移&#xff08;Style Transfer&#xff09;是一种利用深度学习技术&#xff0c;将一幅图像的内容与另一幅图像的艺术风格相结合&#xff0c;生成新图像的技术。其核心思想是将图像的“内容”和“风格”分离&#xff0c;再重新组合&#…...

火绒终端安全管理系统V2.0【系统防御功能】

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

全志A133 android10 适配SLM770A 4G模块

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

第3章 3.2 配置系统 .NET Core配置系统

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

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...