当前位置: 首页 > 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…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...