浅谈棋牌游戏开发流程七:反外挂与安全体系——守护游戏公平与玩家体验
一、前言:为什么反外挂与安全这么重要?
对于任何一款线上棋牌游戏而言,公平性和玩家安全都是最重要的核心要素之一。如果游戏环境充斥着各式各样的外挂、作弊方式,不仅会毁坏玩家体验,更会导致游戏生态崩塌、口碑下滑、玩家快速流失。为此,建立完善的反外挂与安全体系至关重要。
在本篇文章中,我们将从以下几个方面入手,全面剖析如何在棋牌游戏中构建一套有效的安全与反外挂体系:
- 外挂检测策略:常见的外挂形式有哪些,我们该如何识别和阻止?
- 数据一致性与验证:确保游戏数据的完整性和一致性,防止篡改或替换数据;
- 实时监控与行为分析:利用日志和数据分析手段,实时发现并定位异常行为;
- 安全防护措施:加固服务器、加密通信、防止 DDoS 攻击等;
- 玩家反馈与封禁机制:建立有效的举报渠道和封禁流程,为公平游戏保驾护航。
让我们一同探讨,如何把外挂、作弊等破坏游戏生态的因素“扼杀在摇篮里”,为玩家打造一个健康、稳定、可持续的游戏世界。
二、外挂检测策略:如何识别并阻止“神秘力量”?
2.1 常见外挂形式
-
修改客户端内存:
- 外挂通过篡改客户端内存数据,实现透视牌、自动出牌、无限道具等功能;
- 这类外挂常见于本地运算偏重的游戏,如果防护不足,就容易被“内存挂”攻破。
-
模拟客户端操作:
- 外挂在操作系统层面模拟鼠标、键盘或触摸指令,进行高频或精准的自动化操作;
- 对于需要快速出牌或自动匹配的场景尤为常见。
-
网络截包与伪造数据:
- 外挂可能截获客户端-服务器的通信数据(如封包),并进行解包、篡改或重放;
- 通过伪造数据包实现作弊,例如在斗地主中伪造“出牌指令”或篡改结算数据。
-
全局加速器:
- 通过修改本地时钟或网络封包节奏,使客户端相比其他玩家“更快”执行操作;
- 通常出现在需要快速反应的游戏中。
-
AI 辅助:
- 借助图像识别或机器学习技术,自动识别牌面、玩家动作,再进行最优策略出牌;
- 对于一些社交性强的牌类游戏,AI 外挂可能造成极其不公平的局面。
2.2 对策与检测方法
-
服务器主导逻辑:
- 核心规则判定放在服务器端执行,不相信客户端提交的关键结果;
- 例如:洗牌、发牌、结算等均在服务器计算,客户端只做展示,最大化减少“篡改游戏逻辑”的机会。
-
数据签名与校验:
- 对关键数据进行签名、校验码或 hash 校验,防止客户端篡改后再发送给服务器;
- 若签名不匹配,立即判定为非法请求,拒绝处理。
-
反调试与加固:
- 在客户端集成反调试、反内存修改的安全模块,如封装App加固/反篡改的 SDK;
- 定期检测应用完整性、运行环境(是否在模拟器或外挂工具环境中)等。
-
异常行为检测:
- 在服务器端通过统计玩家操作频率、出牌间隔、胜率曲线等,发现异常激增或超自然反应;
- 例如:若一个玩家在极短时间内迅速出牌且胜率远超正常水平,则可能存在外挂行为。
-
网络流量分析:
- 对通信层进行加密(如 TLS/SSL 或自定义加密),并监控出现大量异常封包或重放攻击;
- 如果发现不符合协议格式或重复提交的可疑数据包,需要自动阻断或警告。
三、数据一致性与验证:别让“篡改的数据”左右牌局
3.1 为什么数据一致性至关重要?
在棋牌游戏中,任何一处数据的异常,都可能导致**“判定出错”或“结算异常”**。若有人通过篡改或替换数据来作弊,会破坏整个对局体验。为此,数据一致性验证成为反外挂的另一大核心策略。
3.2 主要手段与机制
-
服务端逻辑校验:
- 不要把关键逻辑交给客户端执行,再由客户端告诉服务器“结果”;
- 例如:对局中,服务器负责检测出牌的牌型是否符合规则,而不是相信客户端的“我出的牌是王炸”;
- 无论客户端怎么篡改,本质出牌合法性都要以服务器校验为准。
-
客户端-服务端数据对照:
- 在一些关键环节,如结算时,服务器生成并返回一个签名结果,客户端只展示;
- 客户端发回的结算信息也需要服务器端再度验证。
-
帧同步或状态同步(在实时对战游戏里常见):
- 每个关键帧或回合结束,服务器都要向客户端广播“可信状态”,客户端只负责可视化;
- 一旦客户端发出的状态与服务器记录的状态不一致,立即警告并断开连接。
-
日志审计与回放:
- 服务器保留玩家的关键操作日志(如出牌记录、结算结果),可在后台或运维系统做二次审计;
- 若某玩家连续多次出现与常规行为截然不同的操作,系统可以自动触发作弊检测。
四、实时监控与行为分析:用数据说话,揪出“异常操作”
4.1 实时监控的重要性
依靠单次判断或简单的客户端加固,并不能完全杜绝外挂。更稳妥的方法是持续地收集和分析玩家行为数据,通过大数据、机器学习或规则引擎,及时发现“人类不可能完成”的异常操作。
4.2 典型行为分析指标
-
出牌间隔统计:
- 正常玩家的操作速度存在一定人类极限;
- 若玩家多次在“毫秒级”完成精准出牌,且毫无停顿,则可能是外挂或脚本。
-
胜率与收益曲线:
- 若某玩家在短期内胜率或收益远超平均水平,且无合理解释,如打牌量极高却零失误;
- 需排查其操作是否异常,如是否存在外挂辅助或多开刷分。
-
操控频率与时段分布:
- 是否在极夜或早晨等常见玩家离线时段里,高强度对战、不间断操作;
- 若一个账号 24 小时连轴转,极可能是工作室批量外挂操作。
-
IP/MAC/设备指纹:
- 统计相同 IP 或设备指纹下登录了多少账号,是否在同一时段发起大量匹配;
- 防止工作室批量脚本,用同一个设备伪装多账号进行作弊。
4.3 实践:搭建行为分析与报警系统
-
日志与数据采集:
- 服务器实时记录玩家操作日志(出牌时间、操作类型、对局结果等);
- 前端可配合埋点记录一些可疑操作,但核心数据放后端为准。
-
数据聚合与分析:
- 采用大数据平台(如 ELK、ClickHouse 或自研方案)进行离线/实时分析;
- 设定行为特征或阈值,如“单小时出牌次数大于 X 次”、“胜率大于 Y%”等,触发告警。
-
告警与处理:
- 系统检测到异常行为后,自动发出警告给运营或安全人员;
- 若异常极其明显(如瞬间爆仓、天文数字金币增加),可自动封禁并拉入黑名单。
五、安全防护措施:保护“云端牌桌”不被攻击
5.1 服务器加固
-
防火墙与安全组:
- 限制端口访问范围,仅开放必要的端口;
- 对关键端口做 IP 白名单或限流策略。
-
身份验证与权限管理:
- 服务器管理端、数据库等内部系统,需要强密码、双因子验证或 VPN 访问;
- 避免被黑客攻陷后直接操作数据库或注入作弊脚本。
-
自动化安全扫描:
- 使用工具(如 Nessus、OpenVAS 等)定期扫描服务器漏洞,及时打补丁;
- 对 Web 层或 API 层进行渗透测试,发现安全漏洞并修复。
5.2 通信加密与防护
-
TLS/SSL 加密:
- 客户端与服务器之间,强制使用 HTTPS 或 WSS(WebSocket Secure)通信;
- 防止网络层截包、篡改数据。
-
数据签名:
- 关键请求参数使用 HMAC 或 RSA 签名方式,防止被中间人伪造或重放。
-
防止 DDoS 攻击:
- 配合云厂商或 CDN,自带防护能力;
- 设置流量清洗、限频策略,当访问量异常暴增时自动拦截。
5.3 反爬虫与脚本检测
-
校验码/验证码:
- 针对高频操作或登录场景,引入简单的人机校验,以阻断脚本批量操作;
- 例如:玩家短时间内发起多次匹配、创建房间或充值请求,需要验证码通过后才继续。
-
节流与限流:
- 对单 IP、单设备等设置访问或操作频率限制,如每小时最多 N 次匹配;
- 若超过阈值则临时封禁或触发人机校验。
六、玩家反馈与封禁机制:让社区共同维护公平游戏
6.1 有效的玩家举报流程
-
举报入口:
- 在游戏内设置便捷的“举报”按钮或菜单,让玩家能快速提交举报;
- 允许玩家在对局结算后,对可疑玩家进行投诉(如“玩家疑似外挂”)。
-
举报信息收集:
- 收集对战记录、玩家操作日志、聊天记录(若有)等;
- 为后端分析提供依据,避免冤枉无辜玩家。
-
自动化处理与人工复核:
- 对多次被举报、或行为统计异常的玩家,系统自动标记为“高危”;
- 后台安全专员可进行人工复核,确认后可实施封号或惩罚。
6.2 封禁与处罚
-
临时封禁:
- 初步判定玩家存在作弊可能时,可进行临时封禁,限制其登录或游戏操作一段时间;
- 给予玩家申诉渠道,若误判可恢复。
-
永久封禁:
- 对明确外挂、严重破坏游戏生态者,采取永久封禁、清空资产等措施;
- 公告处理结果,对外宣示“零容忍”态度。
-
连坐机制:
- 若发现玩家间通过利益输送或组队作弊,牵连一并处理;
- 对“工作室”或“黑产”常用的 IP、设备进行批量封禁。
-
不退还资产:
- 避免玩家在被封禁前,将金币、钻石等转移到另一个账号;
- 对于外挂所获收益不予保留,一律清零。
七、实际案例与最佳实践
7.1 案例分析:某大型棋牌游戏的反外挂体系
背景:
某大型棋牌游戏日活跃用户超过百万,外挂与黑产工作室频发。为确保游戏生态良性发展,官方投入专项团队与技术方案开展“深度反外挂”行动。
核心亮点:
-
客户端加固与外挂识别:
- 客户端集成反调试 SDK,每次启动都检测运行环境,若发现模拟器或注入行为,自动退出或上报;
- 定期更新游戏客户端安全模块,增加变形加壳、代码混淆等措施。
-
服务端主导逻辑:
- 所有牌局逻辑均在服务端运算,客户端只负责 UI 显示;
- 扑克发牌、输赢结算均由服务器内部完成,客户端难以篡改。
-
行为大数据分析:
- 采集玩家操作日志,分时段分析出牌速度、胜率等曲线;
- 搭建机器学习模型,识别“人类不可实现”的高频操作或不合理盈利曲线。
-
异步校验与回放机制:
- 后端保留历史对局数据,若发现玩家异常,可随时对该局进行回放分析;
- 部分严重涉嫌外挂的账号在回放审计后立刻封停。
-
玩家举报与封禁流程:
- 在结算界面或游戏大厅提供“一键举报”,采集嫌疑玩家信息;
- 后台自动对多次被举报者进行 AI 排查,若证据确凿则执行封禁、公告警示等措施。
成果:
- 外挂使用率大幅下降,打击黑产工作室成效显著;
- 玩家社区认可度提高,留存率和活跃度也随之上升;
- 公平游戏环境巩固了品牌声誉与收入。
7.2 最佳实践分享
- 持续更新安全策略:外挂技术也在不断迭代,需定期更新客户端安全模块与服务端检测策略;
- 把逻辑放服务器:客户端仅做输入与展示,关键逻辑和数据均在后端处理;
- 大数据 + AI:利用行为分析或机器学习及时发掘隐藏的高级外挂;
- 保留充足日志:为审计和复盘保留关键操作记录,一旦作弊疑虑,能迅速回放对局进行定性;
- 玩家社群力量:重视玩家举报与反馈,提供奖惩制度,让社区共同维护游戏公平;
- 封禁不手软:对确定为外挂的账号采取强硬措施,封禁、清空资产,起到震慑作用;
- 数据安全与灾备:除外挂外,也要防范被黑客攻破后台篡改数据,定期做安全扫描与数据备份。
八、总结:安全与反外挂是“一场持久战”
通过本篇文章,我们深度探讨了反外挂与安全体系在棋牌游戏后端架构中的关键作用。外挂、作弊、黑产等问题并不是“一劳永逸”能彻底解决的,需要持续的技术升级与多方联动(包括玩家、运营、安全团队)的不懈努力。
核心要点回顾:
- 外挂检测策略:识别外挂类型(内存修改、模拟操作、截包、AI 等),采取服务器主导逻辑、反调试、数据签名等多重措施;
- 数据一致性与验证:将核心逻辑放到服务端,数据签名校验、帧同步或回放审计,防止篡改;
- 实时监控与行为分析:利用大数据手段,关注出牌间隔、胜率曲线、玩家在线行为等指标,及时识别异常;
- 安全防护措施:服务器加固、TLS/SSL 加密、防 DDoS、验证码、人机校验等,全方位“护城河”;
- 玩家反馈与封禁机制:鼓励玩家举报可疑账号,执行严格的封号或惩戒措施,巩固游戏环境;
- 持续升级与最佳实践:通过打击外挂的成功案例,积累经验并保持技术、策略的迭代更新。
真正优秀的游戏安全体系,往往是技术 + 人力 + 社区三方协同的结果;只有建立起完善的反外挂生态,才能为玩家提供一个更健康、更公平、更长寿的游戏环境。
下一篇预告:运维与数据分析——让棋牌游戏在“云端”稳健起舞
在完成了反外挂与安全体系的探讨后,我们的系列文章即将进入运维与数据分析阶段。届时我们将讨论:
- 运维自动化:如何利用 Docker、Kubernetes、CI/CD 等技术,实现快速部署与弹性扩容;
- 监控与告警:如何通过 Prometheus、Grafana、日志平台对系统健康进行实时监控和预警;
- 数据分析与 BI:用户留存、付费率、流失预测……如何用数据驱动游戏运营决策;
- 日志与埋点:关键事件记录与分析,为优化游戏和商业化提供精准依据。
敬请期待,我们将继续为您带来专业且易懂的技术实践,助力您的棋牌游戏项目在“云端”稳健起舞!
相关文章:
浅谈棋牌游戏开发流程七:反外挂与安全体系——守护游戏公平与玩家体验
一、前言:为什么反外挂与安全这么重要? 对于任何一款线上棋牌游戏而言,公平性和玩家安全都是最重要的核心要素之一。如果游戏环境充斥着各式各样的外挂、作弊方式,不仅会毁坏玩家体验,更会导致游戏生态崩塌、口碑下滑…...
Laravel操作ElasticSearch
在Laravel项目中操作ElasticSearch可以通过以下步骤来实现,通常会借助相应的ElasticSearch客户端扩展包。 ### 安装ElasticSearch客户端包 在Laravel项目中,常用的是 elasticsearch/elasticsearch 这个PHP客户端库来与ElasticSearch进行交互,…...
缓存-文章目录
关于缓存系列文章: 缓存学习总结1(缓存分类) 缓存学习总结2(服务器本地缓存) 缓存学习总结3(服务器内存缓存)推荐使用 缓存学习总结4(分布式缓存) 关于redis系列文章…...
安装教程:慧集通集成平台(DataLinkX)智能体客户端安装操作(Linux/windows/mac)
1.下载客户端 使用提供的账号登录集成平台后台(https://www.datalinkx.cn/),点击左侧菜单栏【智能体】→【智能体】进入到智能体列表界面,在该界面我们找到功能栏中的下载按钮点击则会弹出下载界面,在该界面我们可以选择不同的系统操作系统来下载对应版…...
解决vmware虚拟机和宿主机之间不能复制粘贴
在虚拟机内执行一下命令 /usr/bin/vmware-user 更多解决方案 https://www.cnblogs.com/wutou/p/17629408.html...
由源程序到运行
由源程序到运行 第一步:编写源程序 assume cs:codesg codesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00hint 21h codesg ends end第二步:进行编译 进入到编译目录 编译 .asm文件生成目标文件(.obj) m…...
Java-JDBC的使用
目录 一、JDBC(java数据库连接):java database connector 二、使用JDBC的步骤 三、加条件查询 四、预处理(防止SQL注入) 五、Statement和PreparedStatement的优略 六、将数据中的数据查询出来后需要保存在一个集合中,方便前端…...
如何优化亚马逊广告以提高ROI?
在竞争激烈的亚马逊市场中,优化广告以提高投资回报率(ROI)是卖家的关键任务。以下是一些实用的策略: 一、精准的关键词研究与选择 深入了解产品特性和目标受众 详细分析产品的功能、用途、优势和适用人群。例如,如果你…...
身是菩提树,心如明镜台;时时勤拂拭,莫使惹尘埃。
神秀: 身是菩提树,心如明镜台;时时勤拂拭,莫使惹尘埃。 第一个毛病1: 在神秀看来,修行就是要保持我们本来干净的心, 跟外部世界的灰尘之间的隔绝状态,始终保持这种隔绝, 尘世是什么? 尘就是烦恼,人世间无处不是烦恼&a…...
如何修复富士相机卡错误并恢复卡数据
富士相机以其卓越的图像质量而闻名,但不幸的是,其 SD 卡错误可能会意外发生,导致数据丢失和摄影会话中断。 在本指南中,我们将引导您了解常见的富士相机 SD 卡错误、如何修复这些错误,以及如何有效地从损坏的卡中恢复…...
呼叫中心中间件实现IVR进入排队,判断排队超时播放提示音
文章目录 [TOC](文章目录) 前言需求排队结束原因 联系我们实现步骤1. 调用http接口返回动作2. 启用拨号方案 前言 需求 呼叫中心需要实现调用IVR接口进入排队,如果是因为等待超时导致退出排队的,那就播放一段提示音再挂断通话;其他的情况就…...
数据分析思维(八):分析方法——RFM分析方法
数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…...
SpringBoot3动态切换数据源
背景 随着公司业务战略的发展,相关的软件服务也逐步的向多元化转变,之前是单纯的拿项目,赚人工钱,现在开始向产品化\服务化转变。最近雷袭又接到一项新的挑战:了解SAAS模型,考虑怎么将公司的产品转换成多租…...
Java虚拟机面试题:内存管理(上)
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
WPF通过反射机制动态加载控件
Activator.CreateInstance 是 .NET 提供的一个静态方法,它属于 System 命名空间。此方法通过反射机制根据提供的类型信息。 写一个小demo演示一下 要求:在用户反馈界面点击建议或者评分按钮 弹出相应界面 编写MainWindow.xmal 主窗体 <Window x:C…...
前端学习-操作元素属性(二十三)
前言 假期快乐,大家加油 操作元素属性 操作元素常用属性 还可以通过 JS 设置/修改标签元素属性,比如通过 src更换 图片最常见的属性 比如:href、title、src等语法:对象.属性 值 const pic document.querySelector(img);pic.src ./images/b0.jpgp…...
Javascript 编写的一个红、黄、绿灯交替变亮
为了创建一个简单但功能完整的交通灯程序,我们将使用 HTML、CSS 和 JavaScript 来实现红、黄、绿三种颜色按照规定的顺序循环显示。这个例子将确保灯光按照红 -> 绿 -> 黄的顺序循环,并且可以调整每个灯光的持续时间以模拟真实的交通灯行为。 效果…...
基于64QAM的载波同步和定时同步性能仿真,包括Costas环和gardner环
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 载波同步是…...
小于n的最大数 - 贪心算法 - C++
字节经典面试题 给定一个整数n,并从1~9中给定若干个可以使用的数字,根据上述两个条件,得到每一位都为给定可使用数字的、最大的小于整数n的数,例如,给定可以使用的数字为 {2,3,8} 三个数:给定 n3589&#x…...
leetcode(hot100)4
解题思路:双指针思想 利用两个for循环,第一个for循环把所有非0的全部移到前面,第二个for循环将指针放在非0的末尾全部加上0。 还有一种解法就是利用while循环双指针条件,当不为0就两个指针一起移动 ,为0就只移动右指针…...
【Pandas】pandas Series xs
Pandas2.2 Series Indexing, iteration 方法描述Series.get()用于根据键(索引标签)从 Series 中获取值Series.at用于快速访问标量值(单个元素)的访问器Series.iat用于快速访问标量值(单个元素)的访问器Se…...
【linux内核分析-存储】EXT4源码分析之“文件删除”原理【七万字超长合并版】(源码+关键细节分析)
EXT4源码分析之“文件删除”原理【七万字超长合并版】(源码关键细节分析),详细的跟踪了ext4文件删除的核心调用链,分析关键函数的细节,解答了开篇中提出的三个核心疑问。 文章目录 提示前言全文重点索引1.源码解析1.1 …...
一个在ios当中采用ObjectC和opencv来显示图片的实例
前言 在ios中采用ObjectC编程利用opencv来显示一张图片,并简单绘图。听上去似乎不难,但是实际操作下来,却不是非常的容易的。本文较为详细的描述了这个过程,供后续参考。 一、创建ios工程 1.1、选择ios工程类型 1.2、选择接口模…...
使用Python实现基于强化学习的游戏AI:打造智能化游戏体验
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
STM32G0B1 can Error_Handler 解决方法
问题现象 MCU上电,发送0x13帧数据固定进入 Error_Handler 硬件介绍 MCU :STM32G0B1 can:NSI1042 tx 接TX RX 接RX 折腾了一下午,无解,问题依旧; 对比测试 STM32G431 手头有块G431 官方评估版CAN 模块; 同样的…...
洛谷 P2511 [HAOI2008] 木棍分割
第一问很简单,第二问 d p dp dp。 (真是哪都能混个 d p dp dp) 参考题解 #include <bits/stdc.h>using namespace std;int read() {int x 0, f 1; char c getchar();while (c < 0 || c > 9) {if (c -) f -1; c getcha…...
二极管钳位电路分享
二极管钳位(I/O的过压/浪涌保护等) 如果我们的电路环境接收外部输入信号容易受到噪声影响,那我们必须采取过压和浪涌保护措施,其中一个方式就是二极管钳位保护。 像上图,从INPUT输入的电压被钳位在-Vf与VCCVf之间&…...
guestfish/libguestfs镜像管理工具简介
文章目录 简介guestfishlibguestfs项目 例子原理代码libguestfs架构参考 简介 guestfish Guestfish 是libguestfs项目中的一个工具软件,提供修改虚机镜像内部配置的功能。它不需要把虚机镜像挂接到本地,而是为你提供一个shell接口,你可以查…...
AutoSar架构学习笔记
1.AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一个针对汽车行业的软件架构标准,旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元(ECU…...
Scade pragma: separate_io
概述 在 Scade 语言中,支持对用户自定义算子使用 separate_io pragma 进行修饰。其形式如: function #pragma kcg separate_io #end N(x: int8) returns (y,z: int8) let y x;z x; tel在上例中,算子N 就被 pragma #pragma kcg separate_i…...
三天速成微服务
微服务技术栈 总结 微服务技术对比 技术栈 SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud Springboot和SpringCould兼容性 代码目录结构如下 用于远程调用Bean 代码 package cn.itcast.order.config;//import …...
【MySQL】九、表的内外连接
文章目录 前言Ⅰ. 内连接案例:显示SMITH的名字和部门名称 Ⅱ. 外连接1、左外连接案例:查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来 2、右外连接案例:对stu表和exam表联合查询,把…...
GitLab 创建项目、删除项目
1、创建项目 点击左上角图标,回到首页 点击 Create a project 点击 Create blank project 输入项目名称,点击Create Project 创建成功 2、删除项目 进入项目列表 点击对应项目,进入项目 进入Settings页面 拖到页面底部,展开Adva…...
python学opencv|读取图像(二十六)使用cv2.putText()绘制文字进阶-在图像上写文字
【1】引言 前序已经学会了在画布上绘制文字的大部分技巧,相关文章链接为: python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客 python学opencv|读取图像(二十四)使用cv2.putText()绘制…...
Apache HTTPD 多后缀解析漏洞
目录 漏洞简介 漏洞环境 漏洞复现 漏洞防御 漏洞简介 Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件: AddType text/html .html AddLanguage zh-CN .cn 以上就是Apache多后缀的特性。如果运维…...
(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?
在上一篇文章中,我们通过二次函数的例子,讲解了如何训练人工智能。今天,让我们进一步探讨:面对不同的实际问题,应该如何选择合适的函数形式? 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…...
JavaScript学习-入门篇
JavaScript的运行环境 开发环境就是开发JavaScript代码所需的环境,一般建议新手刚刚开始使用一些记事本工具(如sublime、editPlus、VScode),锻炼代码的手感。等学习到一定阶段,就可以使用集成开发工具IDE࿰…...
今日头条ip属地根据什么显示?不准确怎么办
在今日头条这样的社交媒体平台上,用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而,不少用户发现自己的IP属地显示与实际位置不符,这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据,并提供解决IP属…...
python之移动端测试---appium
Appium Appium介绍环境准备新版本appium的用法介绍元素定位函数被封装,统一使用By.xxx(定位方式):通过文本定位的写法 一个简单的请求示例APP操作api基础apk安装卸载发送,拉取文件uiautomatorviewer工具使用获取页面元素及属性模拟事件操作模…...
【网络安全实验室】基础关实战详情
须知少时凌云志,曾许人间第一流 1.key在哪里 url:http://rdyx0/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 查看网页源代码的方式有4种,分别是:1、鼠标右击会看到”查看源代码“,这个网页的源代码就出现在你眼前了&…...
在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)
安装ceres出现以下报错,将2版本的ceres换成1版本的ceres CMake did not find one.Could not find a package configuration file provided by "absl" with any ofthe following names:abslConfig.cmakeabsl-config.cmakeAdd the installation prefix of …...
MarkDown怎么转pdf;Mark Text怎么使用;
MarkDown怎么转pdf 目录 MarkDown怎么转pdf先用CSDN进行编辑,能双向看版式;标题最后直接导出pdfMark Text怎么使用一、界面介绍二、基本操作三、视图模式四、其他功能先用CSDN进行编辑,能双向看版式; 标题最后直接导出pdf Mark Text怎么使用 Mark Text是一款简洁的开源Mar…...
代码实战:基于InvSR对视频进行超分辨率重建
Diffusion Models专栏文章汇总:入门与实战 前言:上一篇博客《使用Diffusion Models进行图像超分辩重建》中讲解了InvSR的原理,博主实测的效果是非常不错的,和PASD基本持平。这篇博客就讲解如何利用InvSR对视频进行超分辨率重建。 目录 环境准备 代码讲解 环境准备...
解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件;图示如下: 但是,下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …...
邻接表深度优先遍历和广度优先遍历计算方法
DFS和BFS 一、 深度优先遍历次序(DFS)二、 深度优先遍历生成树三、 广度优先遍历次序(BFS)四、 广度优先遍历生成树示例说明1. DFS遍历2. BFS遍历 在图的遍历中,常用的两种算法是深度优先遍历(DFSÿ…...
计算机网络-数据链路层(CSMA/CD协议,CSMA/CA协议)
2.2 ppp协议 点对点协议ppp是目前使用最广泛的点对点数据链路层协议。 2.3 媒体接入控制基本概念 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC。 2.3.1 静态划分信道 频分复用 时分复用 波分复用 码分复…...
网络安全的学习与实践经验(附资料合集)
学习资源 在线学习平台: Hack This Site:提供从初学者到高级难度的挑战任务,适合练习各种网络安全技术。XCTF_OJ:由XCTF组委会开发的免费在线网络安全网站,提供丰富的培训材料和资源。SecurityTube:提供丰…...
Navicat 17 for Mac 数据库管理软件
Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕。2. 应用程序/启动台显示Navicat图标,表示安装成功。 二、运行测试运行后提示:“Navicat Premium.pp”已损坏&#x…...
Json与jsoncpp
目录 一、关于Json 1.数据类型 2.语法规则 二、写Json相关API 1.Json::Value类 2.append方法 3.toStyledString方法 三、读Json相关API 1.Json::Reader类 2.parse方法 3.类型判断方法 4.类型转换方法 5.getMemberNames方法 四、完整代码 一、关于Json Json是一种轻…...
Webpack、Vite区别知多少?
前端的项目打包,我们常用的构建工具有Webpack和Vite,那么Webpack和Vite是两种不同的前端构建工具,那么你们又是否了解它们的区别呢?我们在做项目时要如何选择呢? 一、工具定义 1、Webpack:是一个强大的静态模块打包工…...