遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决
遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决

第一部分:windbg调试记录。
0: kd> g
Breakpoint 10 hit
winmine!DoButton1Up:
001b:0100390e a130510001 mov eax,dword ptr [winmine!xCur (01005130)]
0: kd> kc
#
00 winmine!DoButton1Up
01 winmine!MainWndProc
02 USER32!InternalCallWinProc
03 USER32!UserCallWinProcCheckWow
04 USER32!DispatchMessageWorker
05 USER32!DispatchMessageW
06 winmine!WinMain
07 winmine!WinMainCRTStartup
08 kernel32!BaseProcessStart
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
1: kd> u
winmine!StepBox [d:\srv03rtm\shell\osshell\ep\winmine\rtns.c @ 254]:
010031aa 55 push ebp
010031ab 8bec mov ebp,esp
010031ad 53 push ebx
010031ae ff750c push dword ptr [ebp+0Ch]
010031b1 33db xor ebx,ebx
010031b3 ff7508 push dword ptr [ebp+8]
010031b6 43 inc ebx
010031b7 891db8570001 mov dword ptr [winmine!iStepMac (010057b8)],ebx
1: kd> pc
winmine!StepBox+0x13:
001b:010031bd e86cffffff call winmine!StepXY (0100312e)
1: kd> t
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
1: kd> dv
x = 0n1
y = 0n6
cBombs = 0n6
1: kd> kc
#
00 winmine!StepXY
01 winmine!StepBox
02 winmine!StepBlock
03 winmine!DoButton1Up
04 winmine!MainWndProc
05 USER32!InternalCallWinProc
06 USER32!UserCallWinProcCheckWow
07 USER32!DispatchMessageWorker
08 USER32!DispatchMessageW
09 winmine!WinMain
0a winmine!WinMainCRTStartup
0b kernel32!BaseProcessStart
1: kd> g
Breakpoint 18 hit
winmine!DisplayBlk:
001b:01002744 55 push ebp
1: kd> gu
winmine!StepXY+0x4a:
001b:01003178 837d0c00 cmp dword ptr [ebp+0Ch],0
0: kd> dv
x = 0n1
y = 0n1
cBombs = 0n1
0: kd> h
^ Syntax error in 'h'
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n2
y = 0n6
0: kd> kc
#
00 winmine!StepBox
01 winmine!StepBlock
02 winmine!DoButton1Up
03 winmine!MainWndProc
04 USER32!InternalCallWinProc
05 USER32!UserCallWinProcCheckWow
06 USER32!DispatchMessageWorker
07 USER32!DispatchMessageW
08 winmine!WinMain
09 winmine!WinMainCRTStartup
0a kernel32!BaseProcessStart
0: kd> y
^ Syntax error in 'y'
0: kd> u
winmine!StepBox [d:\srv03rtm\shell\osshell\ep\winmine\rtns.c @ 254]:
010031aa 55 push ebp
010031ab 8bec mov ebp,esp
010031ad 53 push ebx
010031ae ff750c push dword ptr [ebp+0Ch]
010031b1 33db xor ebx,ebx
010031b3 ff7508 push dword ptr [ebp+8]
010031b6 43 inc ebx
010031b7 891db8570001 mov dword ptr [winmine!iStepMac (010057b8)],ebx
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n2
y = 0n6
cBombs = 0n6
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n3
y = 0n6
0: kd> p
winmine!StepBox+0x4:
001b:010031ae ff750c push dword ptr [ebp+0Ch]
0: kd> p
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n3
y = 0n6
cBombs = 0n6
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n1
y = 0n7
0: kd> p
winmine!StepBox+0x4:
001b:010031ae ff750c push dword ptr [ebp+0Ch]
0: kd> p
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n1
y = 0n7
cBombs = 0n7
0: kd> g
Breakpoint 18 hit
winmine!DisplayBlk:
001b:01002744 55 push ebp
0: kd> gu
winmine!StepXY+0x4a:
001b:01003178 837d0c00 cmp dword ptr [ebp+0Ch],0
0: kd> dv
x = 0n1
y = 0n0
cBombs = 0n0
0: kd> gu
winmine!StepBox+0x18:
001b:010031c2 391db8570001 cmp dword ptr [winmine!iStepMac (010057b8)],ebx
0: kd> u
winmine!StepBox+0x18 [d:\srv03rtm\shell\osshell\ep\winmine\rtns.c @ 262]:
010031c2 391db8570001 cmp dword ptr [winmine!iStepMac (010057b8)],ebx
010031c8 7470 je winmine!StepBox+0x90 (0100323a)
010031ca 56 push esi
010031cb 57 push edi
010031cc 8b349de0570001 mov esi,dword ptr winmine!rgStepY (010057e0)[ebx*4]
010031d3 8b3c9dc0510001 mov edi,dword ptr winmine!rgStepX (010051c0)[ebx*4]
010031da 4e dec esi
010031db 8d47ff lea eax,[edi-1]
0: kd> p
winmine!StepBox+0x22:
001b:010031cc 8b349de0570001 mov esi,dword ptr winmine!rgStepY (010057e0)[ebx*4]
0: kd> dv
x = 0n1
y = 0n7
0: kd> d winmine!rgStepX[1]
0: kd> dt winmine!rgStepX[1]
[1] 0n1
0: kd> dt winmine!rgStepY[1]
[1] 0n7
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n0
y = 0n6
cBombs = 0n6
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n1
y = 0n6
cBombs = 0n6
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> fv
Couldn't resolve error at 'v'
0: kd> dv
x = 0n2
y = 0n6
cBombs = 0n6
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n0
y = 0n7
cBombs = 0n7
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n2
y = 0n7
cBombs = 0n7
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n0
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n1
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 18 hit
winmine!DisplayBlk:
001b:01002744 55 push ebp
0: kd> dv
x = 0n1
y = 0n8
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n2
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n2
y = 0n7
0: kd> kc
#
00 winmine!StepBox
01 winmine!StepBlock
02 winmine!DoButton1Up
03 winmine!MainWndProc
04 USER32!InternalCallWinProc
05 USER32!UserCallWinProcCheckWow
06 USER32!DispatchMessageWorker
07 USER32!DispatchMessageW
08 winmine!WinMain
09 winmine!WinMainCRTStartup
0a kernel32!BaseProcessStart
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n2
y = 0n7
cBombs = 0n7
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n3
y = 0n7
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n3
y = 0n7
cBombs = 0n7
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n1
y = 0n8
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n1
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n2
y = 0n8
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n2
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 12 hit
winmine!StepBox:
001b:010031aa 55 push ebp
0: kd> dv
x = 0n3
y = 0n8
0: kd> g
Breakpoint 15 hit
winmine!StepXY:
001b:0100312e 55 push ebp
0: kd> dv
x = 0n3
y = 0n8
cBombs = 0n8
0: kd> g
Breakpoint 14 hit
winmine!DrawButton:
001b:010029e2 55 push ebp
第二部分:解释和代码
++i 返回加1后的值,碰到X1Y7cBombs等于0,
所以++iStepMac等于2
if (++iStepCur != iStepMac)
成立
所以会遍历8个格子。
其他情况iStepMac等于1,++iStepCur等于1,
直接返回了。
所以会到X1Y7的时候会遍历8个格子。
X0Y6 X1Y6 X2Y6
X0Y7 X3Y7
X0Y8 X1Y8 X2Y8
返回,继续遍历第五个格子X2Y7
/****** S T E P X Y ******/
VOID StepXY(INT x, INT y)
{
INT cBombs;
INT iBlk = (y<<5) + x;
BLK blk = rgBlk[iBlk];
if ( (blk & MaskVisit) ||
((blk &= MaskData) == iBlkMax) ||
(blk == iBlkBombUp) )
return;
cBoxVisit++;
rgBlk[iBlk] = (CHAR) (MaskVisit | (cBombs = CountBombs(x,y)));
//
// SetDIBitsToDevice(hDCCapture,
// (x<<4)+(dxGridOff-dxBlk), (y<<4)+(dyGridOff-dyBlk),
// dxBlk, dyBlk, 0, 0, 0, dyBlk,
// lpDibBlks + rgDibOff[cBombs],
// (LPBITMAPINFO) lpDibBlks, DIB_RGB_COLORS);
//
DisplayBlk(x,y);
if (cBombs != 0)
return;
rgStepX[iStepMac] = x;
rgStepY[iStepMac] = y;
if (++iStepMac == iStepMax)
iStepMac = 0;
}
/****** S T E P B O X ******/
VOID StepBox(INT x, INT y)
{
INT iStepCur = 0;
iStepMac = 1;
StepXY(x,y);
if (++iStepCur != iStepMac)
while (iStepCur != iStepMac)
{
x = rgStepX[iStepCur];
y = rgStepY[iStepCur];
StepXY(x-1, --y);
StepXY(x, y);
StepXY(x+1, y);
StepXY(x-1, ++y);
StepXY(x+1, y);
StepXY(x-1, ++y);
StepXY(x, y);
StepXY(x+1, y);
if (++iStepCur == iStepMax)
iStepCur = 0;
}
}
/****** S T E P B L O C K ******/
/* Step in a block around a single square */
VOID StepBlock(INT xCenter, INT yCenter)
{
REGISTER INT x;
REGISTER INT y;
BOOL fGameOver = fFalse;
if ( (!fVISIT(xCenter,yCenter))
/* || fGUESSBOMB(xCenter,yCenter) */
|| (iBLK(xCenter,yCenter) != CountMarks(xCenter,yCenter)) )
{
/* not a safe thing to do */
TrackMouse(-2, -2); /* pop up the blocks */
return;
}
for(y=yCenter-1; y<=yCenter+1; y++)
for(x=xCenter-1; x<=xCenter+1; x++)
{
if (!fGUESSBOMB(x,y) && fISBOMB(x,y))
{
fGameOver = fTrue;
ChangeBlk(x, y, MaskVisit | iBlkExplode);
}
else
StepBox(x,y);
}
if (fGameOver)
GameOver(fLose);
else if (fCheckWin())
GameOver(fWin);
}
第三部分:关键数组
0: kd> db winmine!rgBlk
01005360 10 10 10 10 10 10 10 10-10 10 10 0f 0f 0f 0f 0f ................
01005370 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
01005380 10 0f 0f 8f 41 40 40 40-40 40 10 0f 0f 0f 0f 0f ....A@@@@@......
01005390 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
010053a0 10 0f 8f 0f 41 41 41 41-40 40 10 0f 0f 0f 0f 0f ....AAAA@@......
010053b0 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
010053c0 10 0f 0f 0f 41 41 8e 41-40 40 10 0f 0f 0f 0f 0f ....AA.A@@......
010053d0 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
0: kd> db
010053e0 10 8f 0f 8f 42 41 41 41-40 40 10 0f 0f 0f 0f 0f ....BAAA@@......
010053f0 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
01005400 10 0f 8f 8f 43 40 40 40-40 40 10 0f 0f 0f 0f 0f ....C@@@@@......
01005410 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
01005420 10 41 43 8e 42 40 40 40-40 40 10 0f 0f 0f 0f 0f .AC.B@@@@@...... 第六行
01005430 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
01005440 10 40 41 41 41 40 40 40-40 40 10 0f 0f 0f 0f 0f .@AAA@@@@@...... 第七行
01005450 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
0: kd> db
01005460 10 41 41 40 41 41 41 40-40 40 10 0f 0f 0f 0f 0f .AA@AAA@@@...... 第八行
01005470 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
01005480 10 8f 41 40 41 8f 41 40-40 40 10 0f 0f 0f 0f 0f ..A@A.A@@@...... 第九行
01005490 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
010054a0 10 10 10 10 10 10 10 10-10 10 10 0f 0f 0f 0f 0f ................
010054b0 0f 0f 0f 0f 0f 0f 0f 0f-0f 0f 0f 0f 0f 0f 0f 0f ................
相关文章:
遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决
遍历9个格子winmine!StepBlock和遍历8个格子winmine!StepBox的对决 第一部分:windbg调试记录。 0: kd> g Breakpoint 10 hit winmine!DoButton1Up: 001b:0100390e a130510001 mov eax,dword ptr [winmine!xCur (01005130)] 0: kd> kc # 00 winmine…...
Python中的文件编码:揭开字符世界的神秘面纱
引言 在计算机系统中,数据是以二进制形式存储的。而我们日常见到的文字、符号等信息,则需要通过特定的方式转化为二进制数据,这就是编码的过程。不同的编码方式决定了如何将字符映射成字节序列。选择合适的编码方案不仅能够保证信息传输的准…...
Vue3使用hiprint——批次打印条码
例图:打印编号 一、安装Vue-Plugin-HiPrint 要开始使用 Vue-Plugin-HiPrint,首先需要安装它。可以使用 npm npm install vue-plugin-hiprint --save 二、在main.js中引入 Vue-Plugin-HiPrint 在您的 main.js 或任何其他入口文件中,您可以按…...
智慧城市主要运营模式分析
(一)运营模式演变 作为新一代信息化技术落地应用的新事物,智慧城市在建设模式方面借鉴了大量工程建设的经验,如平行发包(DBB,Design-Bid-Build)、EPC工程总承包、PPP等模式等,这些模式在不同的发展阶段和条件下发挥了重要作用。 在智慧城市发展模式从政府主导、以建为主、…...
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
先看代码与实现: 文件结构 triangle_area4.jsp <% page contentType"text/html;charsetUTF-8" pageEncoding"UTF-8" %> <html> <body> <%--<jsp:useBean>:用于在JSP中实例化JavaBean。在这里,…...
Vue引入js脚本问题记录(附解决办法)
目录 一、需求 二、import引入问题记录 三、解决方式 一、需求 我想在我的Vue项目中引入jquery.js和bootstrap.js这种脚本文件,但发现不能单纯的import引入,问题如下。 二、import引入问题记录 我直接这么引入,发现控制台报错TypeError: …...
数据清洗与数据治理的关系
数据清洗与数据治理是数据处理过程中的两个重要步骤,它们共同确保数据的质量和可靠性,以便于数据分析和决策支持。 数据清洗 数据清洗(Data Cleaning)是指识别并纠正或删除数据集中的不准确、不完整、重复或错误的记录的过程。数…...
树莓派pico上手
0 介绍 不同于作为单板计算机的树莓派5,树莓派 pico 是一款低成本、高性能的微控制器板,具有灵活的数字接口。主要功能包括: 英国树莓派公司设计的 RP2040 微控制器芯片双核 Arm Cortex M0 处理器,弹性的时钟频率高达 133 MHz26…...
TypeError: load() missing 1 required positional argument: ‘Loader‘
标题TypeError: load() missing 1 required positional argument: ‘Loader’ 源码: 处理后: 顺利通过,由于yaml版本导致的问题...
根据软件架构设计与评估的叙述开发一套机器学习应用开发平台
案例 阅读以下关于软件架构设计与评估的叙述,回答问题 1和问题 2。 【说明】 某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程&…...
【隐私计算篇】利用多方安全计算MPC实现VGG16人脸识别隐私推理
1. 背景介绍 本文主要介绍一种利用多方安全计算MPC技术,实现VGG16的人脸识别模型,侧重于模型推理阶段,目前已经公开专利,因此以下内容的分享都是基于公开材料。该分享涉及到最小化多方安全计算(MPC)以及明密文混合计算的思想&…...
Python 入门教程(3)基础知识 | 3.7、pass 关键字
文章目录 一、pass 关键字1、定义与用法2、pass 关键字的用法2.1、函数定义中的占位符2.2、 类定义中的占位符2.3、条件语句中的占位符2.4、循环中的占位符 3、注意事项 一、pass 关键字 1、定义与用法 pass语句用作将来代码的占位符。当执行pass语句时,不会有任何…...
nodejs基于vue+express度假村旅游管理系统设计与实现7t82p
目录 功能介绍数据库设计具体实现截图技术栈技术论证解决的思路论文目录核心代码风格详细视频演示源码获取 功能介绍 实现了一个完整的农家乐系统,其中主要有用户表模块、关于我们模块、收藏表模块、公告信息模块、酒店预订模块、酒店信息模块、景区信息模块、景区…...
【裸机装机系列】16.kali(ubuntu)-安装linux和win双系统-重装win11步骤
推荐阅读: 1.kali(ubuntu)-为什么弃用ubuntu,而选择基于debian的kali操作系统 注意: 要先装windows,再装linux,不然linux的启动分区会被覆盖掉。为什么双系统要先装windows呢? 在一个新硬盘上࿰…...
基于TypeScript+React+AntDesign 的车辆车型管理页面
项目目录结构: my-app/├── node_modules/├── public/├── src/│ ├── App.js│ ├── VehicleForm.js│ └── index.js├── package.json└── README.md目录 1.创建项目 2.列表页面VehicleForm.js,预留接口使用axios 1.创建项目 npx crea…...
sentinel-dashboard数据 redis 持久化
概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来…...
【C++】——vector深度剖析模拟实现
低头赶路,敬事如仪 目录 1、模拟vector 1.1底层结构 1.2构造析构 1.3尾插扩容 1.4迭代器 1.5增删查改 1.6模拟中的注意事项 2、vector模拟补充 2.1迭代器区间构造问题 2.2memcpy深浅拷贝问题 2.3动态二维数组的模拟及遍历 1、模拟vector 想要模拟实现自…...
OpenCV特征检测(11)从一组点中检测直线的函数
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在一组点中使用标准霍夫变换查找直线。 该函数使用霍夫变换的一种改进方法在一组点中查找直线。 HoughLinesPointSet 是 OpenCV 中的一个函数&a…...
C++_24_适配器
A 函数对象 概念: 重载函数调用运算符的类实例化的对象,就叫函数对象.又名仿函数,函数对象和()触发重载函数调用运算符的执行。 作用: 为算法提供策略 示例: #include <iostream> using namespace s…...
算法.图论-并查集
文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板4. 并查集习题4.1 情侣牵手4.2 相似字符串组 1. 并查集介绍 定义: 并查集是一种树型的数据结构,用于处理一些不…...
NeoPixel光剑制作全攻略:从WS2812B原理到实战装配
1. 项目概述:从零件到光剑的旅程如果你和我一样,是个对《星球大战》里的光剑毫无抵抗力,同时又喜欢动手折腾电子玩意儿的人,那么用NeoPixel灯带自制一把会发光、能变色的光剑,绝对是件充满成就感的事。这不仅仅是把灯塞…...
Deep Lake:AI数据湖与向量数据库一体化管理实践
1. 项目概述:当数据湖遇上深度学习如果你正在构建一个AI应用,无论是图像识别、自然语言处理还是多模态模型,数据管理绝对是你绕不开的“硬骨头”。数据分散在各个文件夹、云存储、数据库里,格式五花八门,加载速度慢&am…...
All in Token, 移动,电信,联通,阿里,百度,华为,字节,Token石油战争,Token经济,百度要“重写”AI价值度量
AI Agent的价值,应该怎么被衡量? 2026年,AI行业的标志性拐点是Agent(智能体)快速普及。Agent作为核心生产力载体,将AI从Chatbot聊天模式带进主动执行的办事时代。 这个时候,如果我们还用旧尺子…...
ComfyUI ControlNet Aux 终极指南:30+种预处理器让AI图像生成更精准
ComfyUI ControlNet Aux 终极指南:30种预处理器让AI图像生成更精准 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想让您的AI图像生成具备真实…...
基于Trinket M0与伺服电机的宠物激光护目镜DIY全攻略
1. 项目概述与核心思路给自家毛孩子做个赛博朋克风的万圣节装备,这个想法在我脑子里盘桓很久了。市面上那些宠物装饰要么千篇一律,要么就是简单的布料缝制,总感觉少了点“硬核”的趣味。直到我看到伺服电机和激光二极管这两个小玩意儿&#x…...
复杂会场巡检机器人路径规划【附代码】
✨ 长期致力于路径规划、RRT~*算法、人工势场法、自动巡检研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)提出基于安全边界与朝向合力场随机游走的改…...
MATLAB调用C/C++库报错?手把手教你配置Visual Studio 2022编译器(含低版本MATLAB适配指南)
MATLAB调用C/C库报错?手把手教你配置Visual Studio 2022编译器(含低版本MATLAB适配指南) 当你在MATLAB中尝试调用C/C库时,突然弹出一个令人头疼的错误提示:"未找到支持的编译器或 SDK"。这种情况在工程开发和…...
FanControl深度实战指南:5分钟精通Windows风扇精准控制
FanControl深度实战指南:5分钟精通Windows风扇精准控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...
从ERR_CERT_COMMON_NAME_INVALID到安全连接:证书主题与域名匹配的实战指南
1. 当浏览器说"不信任"时发生了什么? 上周我在部署内部测试环境时,遇到了一个熟悉的红色警告页。Chrome用刺眼的红色告诉我:"您的连接不是私密连接",错误代码ERR_CERT_COMMON_NAME_INVALID。这就像你去银行办…...
pgwatch2监控指标详解:从基础性能到高级洞察
pgwatch2监控指标详解:从基础性能到高级洞察 【免费下载链接】pgwatch2 PostgreSQL metrics monitor/dashboard 项目地址: https://gitcode.com/gh_mirrors/pg/pgwatch2 pgwatch2是一款功能强大的PostgreSQL metrics monitor/dashboard工具,它能够…...
