关于windows API 的键鼠可控可测
相关函数解释
GetAsyncKeyState 是 Windows API 中的一个函数,用于判断某个虚拟键是否被按下。GetAsyncKeyState(VK_ESCAPE) 专门用于检测 Esc 键的状态。下面为你详细介绍其用法:
函数原型
cpp
SHORT GetAsyncKeyState(
int vKey
);
参数
vKey:虚拟键码,对于 Esc 键,使用 VK_ESCAPE 作为参数。
返回值
返回一个 SHORT 类型的值,其含义如下:
最高位(第 15 位)为 1 时,表示该键当前处于按下状态;为 0 时,表示该键当前处于释放状态。
最低位(第 0 位)为 1 时,表示该键在最近一次调用 GetAsyncKeyState 之后被按下过;为 0 时,表示该键在最近一次调用之后没有被按下过。
示例代码
以下是一个简单的 C++ 示例,展示了如何使用 GetAsyncKeyState(VK_ESCAPE) 来检测 Esc 键的状态:
cpp
#include <iostream>
#include <windows.h>
int main() {std::cout << "Press the Esc key to exit..." << std::endl;while (true) {// 检测 Esc 键的状态SHORT state = GetAsyncKeyState(VK_ESCAPE);// 检查最高位是否为 1,即 Esc 键是否被按下if (state & 0x8000) {std::cout << "Esc key is pressed. Exiting..." << std::endl;break;}// 可以在这里添加其他代码,处理其他任务Sleep(10); // 短暂休眠,减少 CPU 占用}return 0;}
代码解释
引入必要的头文件:windows.h 包含了 GetAsyncKeyState 函数的声明,iostream 用于输入输出操作。
进入循环:在 while (true) 循环中不断检测 Esc 键的状态。
检测 Esc 键状态:调用 GetAsyncKeyState(VK_ESCAPE) 函数获取 Esc 键的状态,并将结果存储在 state 变量中。
检查最高位:使用按位与运算符 & 检查 state 的最高位是否为 1。如果为 1,则表示 Esc 键被按下,输出提示信息并退出循环。
短暂休眠:使用 Sleep(10) 函数让程序暂停 10 毫秒,减少 CPU 占用。
注意事项
GetAsyncKeyState 是异步的,它返回的是调用时键的状态,而不是在某个特定消息处理过程中的状态。
由于该函数是异步的,可能会出现按键抖动的问题。在实际应用中,可以根据需要添加防抖处理。
虚拟键码 对应值 对应键
对应键值
VK_LBUTTON 1 鼠标左键VK_RBUTTON 2 鼠标右键VK_CANCEL 3 CancelVK_MBUTTON 4 鼠标中键VK_XBUTTON1 5VK_XBUTTON2 6VK_BACK 8 BackspaceVK_TAB 9 TabVK_CLEAR 12 Clear13 EnterVK_SHIFT 16 ShiftVK_CONTROL 17 CtrlVK_MENU 18 AltVK_PAUSE 19 PauseVK_CAPITAL 20 Caps LockVK_KANA 21 VK_HANGUL 21 VK_JUNJA 23 VK_FINAL 24 VK_HANJA 25 VK_KANJI 25*VK_ESCAPE 27 EscVK_CONVERT 28 VK_NONCONVERT 29 VK_ACCEPT 30 VK_MODECHANGE 31 VK_SPACE 32 SpaceVK_PRIOR 33 Page UpVK_NEXT 34 Page DownVK_END 35 EndVK_HOME 36 HomeVK_LEFT 37 Left ArrowVK_UP 38 Up ArrowVK_RIGHT 39 Right ArrowVK_DOWN 40 Down ArrowVK_SELECT 41 SelectVK_PRINT 42 PrintVK_EXECUTE 43 ExecuteVK_SNAPSHOT 44 SnapshotVK_INSERT 45 InsertVK_DELETE 46 DeleteVK_HELP 47 Help48 049 150 251 352 453 554 655 756 857 965 A66 B67 C68 D69 E70 F71 G72 H73 I74 J75 K76 L77 M78 N79 O80 P81 Q82 R83 S84 T85 U86 V87 W88 X89 Y90 ZVK_LWIN 91 VK_RWIN 92 VK_APPS 93 VK_SLEEP 95 VK_NUMPAD0 96 小键盘 0VK_NUMPAD1 97 小键盘 1VK_NUMPAD2 98 小键盘 2VK_NUMPAD3 99 小键盘 3VK_NUMPAD4 100 小键盘 4VK_NUMPAD5 101 小键盘 5VK_NUMPAD6 102 小键盘 6VK_NUMPAD7 103 小键盘 7VK_NUMPAD8 104 小键盘 8VK_NUMPAD9 105 小键盘 9VK_MULTIPLY 106 小键盘 *VK_ADD 107 小键盘 +VK_SEPARATOR 108 小键盘 EnterVK_SUBTRACT 109 小键盘 -VK_DECIMAL 110 小键盘 .VK_DIVIDE 111 小键盘 /VK_F1 112 F1VK_F2 113 F2VK_F3 114 F3VK_F4 115 F4VK_F5 116 F5VK_F6 117 F6VK_F7 118 F7VK_F8 119 F8VK_F9 120 F9VK_F10 121 F10VK_F11 122 F11VK_F12 123 F12VK_F13 124VK_F14 125VK_F15 126VK_F16 127VK_F17 128VK_F18 129VK_F19 130VK_F20 131VK_F21 132VK_F22 133VK_F23 134VK_F24 135VK_NUMLOCK 144 Num LockVK_SCROLL 145 ScrollVK_LSHIFT 160VK_RSHIFT 161VK_LCONTROL 162VK_RCONTROL 163VK_LMENU 164VK_RMENU 165VK_BROWSER_BACK 166VK_BROWSER_FORWARD 167VK_BROWSER_REFRESH 168VK_BROWSER_STOP 169VK_BROWSER_SEARCH 170VK_BROWSER_FAVORITES 171VK_BROWSER_HOME 172VK_VOLUME_MUTE 173 VolumeMuteVK_VOLUME_DOWN 174 VolumeDownVK_VOLUME_UP 175 VolumeUpVK_MEDIA_NEXT_TRACK 176VK_MEDIA_PREV_TRACK 177VK_MEDIA_STOP 178VK_MEDIA_PLAY_PAUSE 179VK_LAUNCH_MAIL 180VK_LAUNCH_MEDIA_SELECT 181VK_LAUNCH_APP1 182VK_LAUNCH_APP2 183VK_OEM_1 186 ; :VK_OEM_PLUS 187 = +VK_OEM_COMMA 188VK_OEM_MINUS 189 - _VK_OEM_PERIOD 190VK_OEM_2 191 / ?VK_OEM_3 192 ` ~VK_OEM_4 219 [ {VK_OEM_5 220 \VK_OEM_6 221 ] }VK_OEM_7 222 引号VK_OEM_8 223VK_OEM_102 226VK_PACKET 231VK_PROCESSKEY 229VK_ATTN 246VK_CRSEL 247VK_EXSEL 248VK_EREOF 249VK_PLAY 250VK_ZOOM 251VK_NONAME 252VK_PA1 253VK_OEM_CLEAR 254
代码块
模拟按键而实际使用模拟按键只需按下和放下(有时需要在这两个操作之中放入延时)#include<stdio.h>;#include<windows.h>keybd_event(122, 0, 0, 0);keybd_event(122, 0, KEYEVENTF_KEYUP, 0);组合键keybd_event(VK_LWIN, 0, 0 ,0);keybd_event('R', 0, 0 ,0);keybd_event('R', 0, KEYEVENTF_KEYUP ,0);keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);以及上述这四行用于win + 各种键的组合键!!
鼠标操作
POINT p;
SetCursorPos(1577, 346);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
鼠标滑动操作
#include <windows.h>#include <stdio.h>#include<unistd.h>#include<conio.h>#include <math.h>int zx(int x1,int y1,int x2,int y2){POINT p;int x;SetConsoleTitle("5082.txt");usleep(200000);SetCursorPos(x1, y1);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);usleep(200000);SetCursorPos(x2,y2);mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);}int main(){zx(1577,346,1125,685);zx(1135,304,1557,801);return 0;}
若keybd_event函数已被系统弃用,则使用SendInput函数
SendInput 函数是 Windows API 中的一个重要函数,用于模拟用户输入事件,包括键盘和鼠标操作。它比旧的 keybd_event 和 mouse_event 函数更强大、更可靠,并且在现代 Windows 系统中被推荐使用。下面将对 SendInput 函数进行详细介绍。
函数原型
c
UINT SendInput(
UINT cInputs,
LPINPUT pInputs,
int cbSize
);
参数说明
cInputs
类型:UINT
描述:pInputs 数组中 INPUT 结构体的数量,即要模拟的输入事件的数量。
pInputs
类型:LPINPUT(指向 INPUT 结构体数组的指针)
描述:一个指向 INPUT 结构体数组的指针,每个 INPUT 结构体代表一个输入事件,如键盘按键、鼠标移动或鼠标点击等。
cbSize
类型:int
描述:INPUT 结构体的大小,通常使用 sizeof(INPUT) 来获取。
返回值
类型:UINT
描述:函数返回实际插入到输入队列中的输入事件的数量。如果返回值与 cInputs 不相等,则表示出现了错误。可以使用 GetLastError 函数来获取具体的错误代码。
INPUT 结构体
INPUT 结构体用于描述一个输入事件,其定义如下:
c
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
} INPUT, *PINPUT, *LPINPUT;
type:指定输入事件的类型,可以是以下值之一:
INPUT_MOUSE:表示鼠标事件。
INPUT_KEYBOARD:表示键盘事件。
INPUT_HARDWARE:表示硬件事件,通常很少使用。
联合部分:根据 type 的值,使用不同的结构体来描述具体的输入事件。
MOUSEINPUT:用于描述鼠标事件,如鼠标移动、鼠标点击等。
KEYBDINPUT:用于描述键盘事件,如按键按下、按键释放等。
HARDWAREINPUT:用于描述硬件事件。
示例代码
模拟键盘按键
c
#include <windows.h>
#include <stdio.h>
重点就在于这两个函数的使用
// 模拟按键按下
// 模拟按键按下
void pressKey(WORD keyCode) {INPUT input = {0};input.type = INPUT_KEYBOARD;input.ki.wVk = keyCode;SendInput(1, &input, sizeof(INPUT));}// 模拟按键释放void releaseKey(WORD keyCode) {INPUT input = {0};input.type = INPUT_KEYBOARD;input.ki.wVk = keyCode;input.ki.dwFlags = KEYEVENTF_KEYUP;SendInput(1, &input, sizeof(INPUT));}int main() {// 按下 'A' 键pressKey('A');// 等待一段时间Sleep(500);// 释放 'A' 键releaseKey('A');return 0;}模拟鼠标点击c#include <windows.h>#include <stdio.h>int main() {INPUT input = {0};input.type = INPUT_MOUSE;input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;// 按下鼠标左键SendInput(1, &input, sizeof(INPUT));Sleep(500);input.mi.dwFlags = MOUSEEVENTF_LEFTUP;// 释放鼠标左键SendInput(1, &input, sizeof(INPUT));return 0;}
注意事项
权限问题:在某些情况下,模拟输入事件可能需要管理员权限,特别是在系统受保护的区域或应用程序中。
兼容性:SendInput 函数在现代 Windows 系统中具有良好的兼容性,但在一些特殊环境或虚拟机中可能会受到限制。
错误处理:在使用 SendInput 函数时,建议检查返回值并使用 GetLastError 函数来处理可能的错误。
相关文章:
关于windows API 的键鼠可控可测
相关函数解释 GetAsyncKeyState 是 Windows API 中的一个函数,用于判断某个虚拟键是否被按下。GetAsyncKeyState(VK_ESCAPE) 专门用于检测 Esc 键的状态。下面为你详细介绍其用法: 函数原型 cpp SHORT GetAsyncKeyState( int vKey ); 参数 vKey&a…...
普发ASM392EUV检漏仪维修说明手测内容可目录
普发ASM392EUV检漏仪维修说明手测内容可目录...
Python pip下载包及依赖到指定文件夹
要使用pip下载包及其所有依赖到指定文件夹,请按照以下步骤操作: 步骤说明 使用pip download命令:该命令用于下载包及其依赖而不安装。指定目标目录:通过-d或--dest参数设置下载路径。确保包含依赖:默认情况下会下载依…...
DIFY 又跟新了,来到 1.3.0 版本,看正文
欢迎来到 1.3.0 版本!添加了各种巧妙的功能、修复了错误,并带来了一些新功能: 一、核心亮点: 结构化输出 1、LLM 节点新增JSON Schema编辑器,确保大语言模型能够返回符合预设格式的JSON数据。这一功能有助于提升数据…...
凸包问题 Graham 扫描算法 MATLAB
算法要解决的问题 Graham 扫描算法要解决的问题是在给定一组二维平面上的点集时,找出能够完全包含这些点的最小凸多边形,这个最小凸多边形就是这些点的凸包。在很多实际场景中,我们可能只关注一个点集的最外层边界,而凸包算法就可…...
es+kibana---集群部署
其实一般es要跑3个节点的,这样才能做高可用,处理并发大,但是我这里只是一个pod mkdir -p /stroe/data/es es搭建: #【拉取镜像】 #docker pull elasticsearch:6.8.7 #docker pull busybox:1.28 【导入镜像】 docker load -i es.…...
定时器的源码介绍与简单实现——多线程编程简单案例[多线程编程篇(5)]
目录 前言 什么是定时器 JAVA标准库中的定时器 而关于sched方法,请看源码: 为什么我们能知道"notify() 唤醒后台线程 TimerThread"? TimerThread 关键逻辑 第一步:加锁 queue,看有没有任务 第二步:取出最近要执行的任务 …...
SQL常用数据清洗语句
数据清洗:发现并纠正数据文件里的数据错误和不一致性,让数据达到分析要求的过程。 运用 SQL 进行数据清洗时,可借助多种语句和函数来处理数据中的缺失值、重复值、异常值以及格式错误等问题。 1. 处理缺失值 数据中某些变量的值为空的情况&…...
《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
在电商数据处理领域,高效获取并处理海量商品数据是企业实现精准运营、市场分析的重要基础。Go 语言凭借其出色的并发性能,成为开发高并发爬虫的理想选择。本文将介绍如何使用 Go 语言进行淘宝商品 API 实时采集,并构建 ETL(Extrac…...
大模型(LLMs)加速篇
当前优化模型最主要技术手段有哪些? 算法层面:蒸馏、量化软件层面:计算图优化、模型编译硬件层面:FP8(NVIDIA H系列GPU开始支持FP8,兼有fp16的稳定性和int8的速度) 推理加速框架有哪一些&#…...
Linux0.11引导启动程序:简略过程
引言 目标:是重写boot文件夹下面的引导文件,加入一些个人信息。语法:由于使用两个语法风格的汇编需要两个汇编器,有些麻烦,直接全都用GNU的 as(gas)进行编译。使用AT&T 语法的汇编语言程序。接下来先拜读同济大学赵…...
【JAVAFX】controller中反射调用@FXML的点击事件失败
场景 当前有一个controller中定义的事件如 FXMLvoid openZhengjieWindow(ActionEvent event) {System.out.println("zhengjie");}通过反射去调用 public void callMethodByString(String methodSuffix) {try {Method method this.getClass().getMethod("open&…...
人工智能数学基础(二):初等数学
在人工智能领域,初等数学知识是构建复杂模型的基石。本文将从函数、数列、排列组合与二项式定理、集合等方面进行讲解,并结合 Python 编程实现相关案例,帮助大家更好地理解和应用这些数学知识。资源绑定附上完整代码供读者参考学习࿰…...
opendds的配置
配置的使用 文档中说明有4种使用配置的方式: 环境变量 命令行参数(将覆盖环境变量中的配置) 配置文件(不会覆盖环境变量或命令行参数中的配置) 用户调用的 API(将覆盖现有配置) 这里对开发…...
mac 基于Docker安装minio
在 macOS 上基于 Docker 安装 MinIO 是一个高效且灵活的方案,尤其适合本地开发或测试环境。以下是详细的安装与配置步骤,结合了最佳实践和常见问题的解决方案: 一、安装 Docker Desktop 下载安装包 访问 Docker 官网,下载适用于 …...
Docker网络架构深度解析与技术实践
目录 第一章 Docker网络架构核心原理 1.1 容器网络模型(CNM)体系 1.2 网络命名空间隔离机制 1.3 虚拟网络设备对(veth) 1.4 网桥驱动模型 第二章 Docker网络模式深度剖析 2.1 Bridge模式(默认模式) …...
如何通过Google Chrome增强网页内容的安全性
在现代互联网环境中,网页安全问题时常困扰着用户。谷歌浏览器作为全球使用最广泛的浏览器之一,提供了多种方式帮助用户增强网页的安全性。以下是一些简单有效的方法,可以帮助用户提高浏览器的安全防护能力。 首先,谷歌浏览器自带了…...
劳动节ppt免费下载,劳动节ppt模板,劳动节课件
劳动节ppt免费下载,劳动节ppt模板,劳动节素材,学生,幼儿园课件:劳动节ppt_模板素材_PPT模板_ppt素材_免抠图片_AiPPTer...
应用在通信网络设备的爱普生晶振SG2016CBN
在数字化浪潮席卷全球的当下,通信网络已成为信息时代的核心基础设施,从 5G 基站的快速部署到数据中心的高效运转,从光纤网络的稳定传输到无线通信的流畅连接,每一个环节都对时钟信号的稳定性和精准性有着极高要求。一个高质量的时…...
STM32 RTC配置
一、什么是RTC? RTC,即实时时钟,是一种能持续运行并保持当前时间信息的电子装置。它常用于在设备断电的情况下依然能保持准确的年、月、日、时、分、秒信息。 与CPU核心时钟不同,RTC通常采用独立的低频晶振(如32.768…...
图像保边滤波之BEEPS滤波算法
目录 1 简介 2 算法原理 3 代码实现 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 简介 BEEPS(Bias Elimination in Edge-Preserving Smoothing) 是一种基于偏微分方程(PDE)的边缘保留平滑滤波算法。它能够…...
使用OpenCV和dlib库进行人脸关键点定位
文章目录 引言一、环境准备二、代码实现解析1. 导入必要的库2. 加载图像和人脸检测器3. 加载关键点预测模型4. 检测并绘制关键点5. 显示结果 三、68个关键点的含义四、常见问题解决五、总结 引言 人脸关键点定位是计算机视觉中的一项基础任务,它在人脸识别、表情分…...
Transformer数学推导——Q27 证明时序注意力(Temporal Attention)在视频模型中的帧间依赖建模
该问题归类到Transformer架构问题集——注意力机制——跨模态与多模态。请参考LLM数学推导——Transformer架构问题集。 在视频理解任务中,捕捉帧与帧之间的时间依赖关系(如动作的连贯性、物体的运动轨迹)是核心挑战。时序注意力(…...
相机-IMU联合标定:相机标定
文章目录 📚简介💡标定方法🚀标定工具kalibr🚀标定数据录制🚀相机标定📚简介 在 VINS(Visual-Inertial Navigation System,视觉惯性导航系统) 中,相机标定 是确保视觉数据准确性和系统鲁棒性的关键步骤,其核心作用可总结为以下方面: 消除镜头畸变,提升特征…...
sevlet API
sevlet API API就是一组类和方法 HttpServlet 这是写servlet代码用到的核心的类,通过继承这个类,并重写其中的方法,让Tomcat去调用这里的逻辑. init:webapp被加载的时候,执行 destroy:webapp被销毁的时候(Tomcat结束)执行,进行一些收尾工作.但是这个方法不保证能够调用到!!…...
python程序设习题答案
第一章 1.在下列领域中,使用 Python 不可能实现的是( C ) A . Web 应用开发 B .科学计算 C .操作系统管理 D .游戏开发 2.Python程序文件的扩展名是( D )。 A.python B.pyt C.pt D.py 3&…...
[计算机科学#4]:二进制如何塑造数字世界(0和1的力量)
【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要: 二进制是计算机世界的基石,数学是世界的…...
一种在使用Kaggle并遇上会话中断时强行保存数据的方法
问题:kaggle会话结束后,无法保存训练模型时记录的excel文件 解决方法:使用kaggle时,使用下面脚本可将保存到训练数据excel转为链接形式,从而在kaggle会话终止时也可以下载到该excel文件 import base64 import pandas …...
【人工智能agent】--dify搭建智能体和工作流
【人工智能agent】--docker本地部署dify教程-CSDN博客 上期讲到如何部署dify,然后进入页面: docker服务: 目录 1.基础设置 2.创建聊天助手 3.创建知识库应用 4.创建智能体 5.创建工作流 5.1.文档总结规划 5.2.爬取网页新闻 1.基础设…...
[4282]PHP跨境电商源码-多语言商城源码/支持代理+商家入驻+分销+等等众多功能/带详细安装
源码获取:[4282]PHP跨境电商源码-多语言商城源码/支持代理商家入驻分销等等众多功能/带详细安装云溪资源网_源码下载,小程序源码下载,网站源码下载,游戏源码下载云溪资源网_源码下载,小程序源码下载,网站源码下载,游戏源码下载...
MongoDB的增删改查操作
1.文档创建 首先要插入数据前,要先创建数据库,创建完之后建立集合,然后才能进行增删改查的步骤 切换(新建)数据库: use <db> db是指要创建数据库的名称 新建集合: db.createCollection(…...
TimDbg
晚上随意浏览,发现一个有趣的网站: TimDbg 调试器谎言:堆栈损坏 // TimDbg 2022.11的一篇很有趣,讲如何培养裸眼反汇编的能力,即培训心智模型,模式识别能力。 识别内存中的模式 // TimDbg 我是用edge浏…...
MySQL 表的约束(二)
文章目录 自增长唯一键外键 自增长 auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。 create …...
大数据应用开发和项目实战
Matplotlib的介绍 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Matplotlib 可以用来绘制各种静态,动态,交互式的图表。比如说散点图、柱状图等等。 Matplotlib Pyplot plot(…...
OpenLayers矢量数据可视化高级技巧(进阶二)
1. 高级样式技术 矢量数据的样式直接影响可视化效果的表达能力和美观度。OpenLayers提供了丰富的样式API,通过组合和创新,可以实现各种复杂的视觉效果。 1.1 动态样式 // 根据属性值动态设置样式 const vectorLayer new ol.layer.Vector({source: ne…...
实用的java技术架构组件汇总
1.后端数据校验 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>校验注解 jakarta.validation-api 规范提供如下: size hibern…...
Rmarkdown输出为pdf的方法与问题解决
R 是一种在数据分析与统计计算领域广泛使用的编程语言。其关键优势之一是能够生成高质量的报告和文档,这些报告和文档可以使用 RMarkdown 轻松定制和更新。在本文中,我们将探讨使用 R 从 RMarkdown 文件生成.pdf 文件 1.生成方法 新建Rmarkdown…...
【超详细讲解】什么是序列化和反序列化?
目录 一、什么是序列化(Serialization)? 举个直观的例子 二、什么是反序列化(Deserialization)? 三、为什么需要序列化? 四、常见的序列化格式对比 五、序列化底层是怎么做的?…...
深入浅出JavaScript常见设计模式:从原理到实战(2)
深入浅出JavaScript常见设计模式:从原理到实战(2) 本文是深入浅出JavaScript常见设计模式:从原理到实战(1)的续集 设计模式是一种在特定情境下解决软件设计中常见问题的通用方案或模板。在特定的开发场景中使用特定的设计模式,可以提升代码质…...
MySQL 主从复制
数据的高可用性、读写分离以及数据备份是至关重要的需求。MySQL 作为一款广泛使用的开源关系型数据库,其主从复制功能为解决这些问题提供了有效的方案。本文将详细介绍 MySQL 主从复制的原理、搭建步骤以及实际应用。 一、MySQL 主从复制原理 1.1 基本概念 MySQL…...
小目标检测的集成融合论文阅读
摘要 小目标检测常因图像模糊和分辨率低而受到阻碍,这给小目标的精确检测和定位带来了重大挑战。此外,传统的特征提取方法往往难以捕捉到这些目标的有效表征,因为下采样和卷积操作会导致小目标细节的模糊化。为了解决这些问题,本研究提出了一种基于集成融合的方法,通过利…...
IP SSL证书常见问题:快速实现HTTPS加密
SSL证书作为实现HTTPS加密和身份验证的关键工具,不仅适用于域名,还能直接绑定IP地址,为IP通信提供安全保障。 一、什么是IP SSL证书? IP SSL证书(IP HTTPS证书)是一种专为IP地址设计的SSL/TLS证书…...
Scratch——第20课 辗转相除法/绳子算法
辗转相除法是用于求取最大公约数时需要用到的方法,它还有个名字称为绳子算法,这类题目只要理解辗转相处的原理即可拿下。 一、辗转相除法的基本原理 两个整数的最大公约数不变,当较大数减去较小数后,得到的差值与较小数的最大公…...
MYOJ_1349:(洛谷P3951)[NOIP 2017 提高组] 小凯的疑惑(数学公式套用,两步搞定代码)
提示 本题代码纯属数学的结晶,因此肥肠简单,但需要一定理解。 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付…...
如何免费把PPT的页面输出为透明的图片-快速制作图新说汇报内容
0.序 经常有朋友问想把PPT中的内容输出为图片,但是PPT里面的officePlus还得付费才可以。不付费就带水印还不高清,关键是还不透明,如果需要透明就设置纯底色去PS里面抠图(可自动化),或者手动右键挨个输出。…...
操作系统——第四章(文件管理与文件的逻辑结构)
一、文件系统基础 1.文件的属性 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性。因此标识符只是操作系统用…...
剑指offer经典题目(七)
目录 动态规划 字符串相关 排序思想相关 链表相关 动态规划 题目1:输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。OJ地址 图示如下。 题目解析:…...
[RoarCTF 2019]Easy Calc 详解
[RoarCTF 2019]Easy Calc 1 ajax 是进行前后端交互的 但是我们发现一个waf 就是他提示的"calc.php?num"encodeURIComponent($("#content").val()) ?num 的值必须是数字审计一下 foreach 发现了num的限制但是eval是rce的标志所以我们首选的就是使用命令…...
AI日报 - 2025年04月29日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | 巨头CEO预测AGI时间线,5年内或达人类认知水平;Yann LeCun强调多模态训练重要性。 关于AGI定义和实现时间的讨论升温,对超越纯文本训练的需求成为共识。 ▎💼 商业动向…...
Kubernetes的错误信息处理
报错信息 E0428 13:18:25.531614 3193818 memcache.go:287] couldn’t get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request 以下是处理该 Kubernetes 指标服务报错的系统化解决方案: 错误诊断流程 # 1. 检查 …...