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

遍历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的对决 第一部分&#xff1a;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中的文件编码:揭开字符世界的神秘面纱

引言 在计算机系统中&#xff0c;数据是以二进制形式存储的。而我们日常见到的文字、符号等信息&#xff0c;则需要通过特定的方式转化为二进制数据&#xff0c;这就是编码的过程。不同的编码方式决定了如何将字符映射成字节序列。选择合适的编码方案不仅能够保证信息传输的准…...

Vue3使用hiprint——批次打印条码

例图&#xff1a;打印编号 一、安装Vue-Plugin-HiPrint 要开始使用 Vue-Plugin-HiPrint&#xff0c;首先需要安装它。可以使用 npm npm install vue-plugin-hiprint --save 二、在main.js中引入 Vue-Plugin-HiPrint 在您的 main.js 或任何其他入口文件中&#xff0c;您可以按…...

智慧城市主要运营模式分析

(一)运营模式演变 作为新一代信息化技术落地应用的新事物,智慧城市在建设模式方面借鉴了大量工程建设的经验,如平行发包(DBB,Design-Bid-Build)、EPC工程总承包、PPP等模式等,这些模式在不同的发展阶段和条件下发挥了重要作用。 在智慧城市发展模式从政府主导、以建为主、…...

典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式

先看代码与实现&#xff1a; 文件结构 triangle_area4.jsp <% page contentType"text/html;charsetUTF-8" pageEncoding"UTF-8" %> <html> <body> <%--<jsp:useBean>&#xff1a;用于在JSP中实例化JavaBean。在这里&#xff0c…...

Vue引入js脚本问题记录(附解决办法)

目录 一、需求 二、import引入问题记录 三、解决方式 一、需求 我想在我的Vue项目中引入jquery.js和bootstrap.js这种脚本文件&#xff0c;但发现不能单纯的import引入&#xff0c;问题如下。 二、import引入问题记录 我直接这么引入&#xff0c;发现控制台报错TypeError: …...

数据清洗与数据治理的关系

数据清洗与数据治理是数据处理过程中的两个重要步骤&#xff0c;它们共同确保数据的质量和可靠性&#xff0c;以便于数据分析和决策支持。 数据清洗 数据清洗&#xff08;Data Cleaning&#xff09;是指识别并纠正或删除数据集中的不准确、不完整、重复或错误的记录的过程。数…...

树莓派pico上手

0 介绍 不同于作为单板计算机的树莓派5&#xff0c;树莓派 pico 是一款低成本、高性能的微控制器板&#xff0c;具有灵活的数字接口。主要功能包括&#xff1a; 英国树莓派公司设计的 RP2040 微控制器芯片双核 Arm Cortex M0 处理器&#xff0c;弹性的时钟频率高达 133 MHz26…...

TypeError: load() missing 1 required positional argument: ‘Loader‘

标题TypeError: load() missing 1 required positional argument: ‘Loader’ 源码&#xff1a; 处理后&#xff1a; 顺利通过&#xff0c;由于yaml版本导致的问题...

根据软件架构设计与评估的叙述开发一套机器学习应用开发平台

案例 阅读以下关于软件架构设计与评估的叙述&#xff0c;回答问题 1和问题 2。 【说明】 某公司拟开发一套机器学习应用开发平台&#xff0c;支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程&…...

【隐私计算篇】利用多方安全计算MPC实现VGG16人脸识别隐私推理

1. 背景介绍 本文主要介绍一种利用多方安全计算MPC技术&#xff0c;实现VGG16的人脸识别模型&#xff0c;侧重于模型推理阶段&#xff0c;目前已经公开专利&#xff0c;因此以下内容的分享都是基于公开材料。该分享涉及到最小化多方安全计算(MPC)以及明密文混合计算的思想&…...

Python 入门教程(3)基础知识 | 3.7、pass 关键字

文章目录 一、pass 关键字1、定义与用法2、pass 关键字的用法2.1、函数定义中的占位符2.2、 类定义中的占位符2.3、条件语句中的占位符2.4、循环中的占位符 3、注意事项 一、pass 关键字 1、定义与用法 pass语句用作将来代码的占位符。当执行pass语句时&#xff0c;不会有任何…...

nodejs基于vue+express度假村旅游管理系统设计与实现7t82p

目录 功能介绍数据库设计具体实现截图技术栈技术论证解决的思路论文目录核心代码风格详细视频演示源码获取 功能介绍 实现了一个完整的农家乐系统&#xff0c;其中主要有用户表模块、关于我们模块、收藏表模块、公告信息模块、酒店预订模块、酒店信息模块、景区信息模块、景区…...

【裸机装机系列】16.kali(ubuntu)-安装linux和win双系统-重装win11步骤

推荐阅读&#xff1a; 1.kali(ubuntu)-为什么弃用ubuntu&#xff0c;而选择基于debian的kali操作系统 注意&#xff1a; 要先装windows&#xff0c;再装linux&#xff0c;不然linux的启动分区会被覆盖掉。为什么双系统要先装windows呢&#xff1f; 在一个新硬盘上&#xff0…...

基于TypeScript+React+AntDesign 的车辆车型管理页面

项目目录结构&#xff1a; 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 持久化

概述 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来…...

【C++】——vector深度剖析模拟实现

低头赶路&#xff0c;敬事如仪 目录 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)从一组点中检测直线的函数

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在一组点中使用标准霍夫变换查找直线。 该函数使用霍夫变换的一种改进方法在一组点中查找直线。 HoughLinesPointSet 是 OpenCV 中的一个函数&a…...

C++_24_适配器

A 函数对象 概念&#xff1a; ​ 重载函数调用运算符的类实例化的对象&#xff0c;就叫函数对象.又名仿函数,函数对象和&#xff08;)触发重载函数调用运算符的执行。 作用&#xff1a; ​ 为算法提供策略 示例&#xff1a; #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. 并查集介绍 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不…...

elasticSearch常见命令及历史数据迁移

es这种非关系型数据库&#xff0c;感觉可视化效果不是很好&#xff0c;个人在操作中&#xff0c;习惯性通过简单的方式去访问。也是接触不久。只能出一些基操。共同学习记录&#xff0c;大家有好的操作也可留言备注。 1&#xff0c;常见命令 1&#xff09;查询有哪些index&…...

WebLogic 漏洞复现

1、后台弱⼝令GetShell 默认账号密码&#xff1a;weblogic/Oracle123 weblogic常⽤弱⼝令&#xff1a;https://cirt.net/passwords?criteriaweblogic 这⾥注意&#xff0c; 单个账号错误密码5次之后就会⾃动锁定。 http://47.121.212.195:7001/console 2、登录后台后&#…...

web基础:域名、网页、HTML、web版本

文章目录 引言域名网站访问方式域名结构域名解析DNS解析过程 网页网页文件类型静态网页与动态网页常用动态网页编程语言 HTMLHTML 语法规则HTML 文件结构HTML 文件基本结构示例&#xff1a;常用 HTML 标签HTML文件基本结构 WEB版本 引言 web&#xff08;World Wide Web&#x…...

【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频

练手项目推荐 1 智能小车 项目功能介绍&#xff1a; 本项目由三部分组成&#xff1a;应用端&#xff08;微信小程序&#xff09;、设备端&#xff08;Hi3861&#xff09;、驱动端&#xff08;UPS&#xff09;。 1. 应用端&#xff0c;采用微信小程序作为应用端控制界面。在开…...

AWS注册时常见错误处理

引言 创建AWS账号是使用AWS云服务的第一步&#xff0c;但在注册过程中可能会遇到一些常见的问题。本文中九河云将帮助您排查和解决在创建AWS账户时可能遇到的一些常见问题&#xff0c;包括未接到验证电话、最大失败尝试次数错误以及账户激活延迟等。 常见问题及解决方法 1. …...

Spark-RDD持久化

一、Spark的三种持久化机制 1、cache 它是persist的一种简化方式&#xff0c;作用是将RDD缓存到内存中&#xff0c;以便后续快速访问&#xff0c;提高计算效率。cache操作是懒执行的&#xff0c;即执行action算子时才会触发。 2、persist 它提供了不同的存储级别&#xff0…...

vue2中使用tailwindCss 详细教程

1、先看官方文档:https://www.tailwindcss.cn/ 2、先安装:npm install -D tailwindcss ---------------通过 npm 安装 tailwindcss,然后创建你自己的 create your tailwind.config.js 配置文件。 npm install -D tailwindcss 3、初始化文件—npx tailwindcss init npx ta…...

机器视觉工程师一直做调试,维护岗位,想转岗软件方面C#从零开始,快则三年不到,慢则一辈子不会

其实不是每一家做视觉检测&#xff0c;或者是做设备必须要机器视觉工程师开发&#xff0c;其实公司对标准软件更感兴趣&#xff0c;主要非常高的性价比&#xff0c;省时省钱省人。所以这里有个问题&#xff0c;就是公司平台的重要性&#xff0c;首先他对开发是刚需&#xff0c;…...

【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)

文章目录 前言1. 二叉树链式结构的意义2. 手搓一棵二叉树3. 二叉树的遍历&#xff08;重要&#xff09;3.1 遍历的规则3.2 先序遍历3.3 中序遍历3.4 后序遍历3.5 遍历的代码实现3.5.1 先序遍历代码实现3.5.2 中序遍历代码实现3.5.3 后序遍历代码实现 4. 统计二叉树结点的个数5.…...

【QT】QWidget 重要属性

文章目录 enabledgeometrywindowTitlewindowIconqrc 机制windowOpacitycursorfontQFont toolTip 和 toolTipDurationfocusPolicyQt::FocusPolicy styleSheet enabled 作用&#xff1a;设置控件是否可使用. true 表⽰可用, false 表⽰禁用. 对应的API bool isEnabled(); // 获…...