35.第二阶段x86游戏实战2-C++遍历技能
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:34.第二阶段x86游戏实战2-游戏数据保存与定位(特征码定位基址)
上一个内容里使用特征码进行定位了基址偏移,本次就来使用C++把技能数据遍历出来
首先新加一个按钮
![]()
遍历技能按钮的点击事件,也是遍历技能入口代码
![]()
遍历技能二叉树代码
![]()
结构.cpp文件:主要新加 技能二叉数函数、AsmGetMonsterData函数
#include "pch.h"
#include "结构.h"DWORD R_rwjz = *(DWORD*)((DWORD)GetModuleHandleA("Game.exe") + 0x5A6AF4);//人物基地址
DWORD R_jnecs2 = *(DWORD*)(JNECS2);
DWORD R_jnecs = *(DWORD*)(JNECS);
DWORD R_jnlq = *(DWORD*)(JNLQ);void R_人物属性::初始化()
{__try {/**GetModuleHandleA("Game.exe")返回Game.exe模块的模块基址*///DWORD 状态基址 = (DWORD)GetModuleHandleA("Game.exe") + 0x59EF6C;/**(DWORD*)状态基址 的意思是把 状态基址 的值当成内存地址*(DWORD*)状态基址 意思把内存地址里的值取出来*//* DWORD 状态偏移 = *(DWORD*)状态基址 + 0x60;DWORD 状态偏移1 = *(DWORD*)状态偏移 + 0x14C;状态 = *(DWORD*)状态偏移1;*/DWORD RW偏移 = ReadDword(R_rwjz + 0xc);M_通用包 = ReadWord(RW偏移 + 0x2c);M_走路包 = ReadWord(RW偏移 + 0x30);//状态 = ReadDword(状态偏移1);fX = ReadFloat(RW偏移 + 0x3C);fY = ReadFloat(RW偏移 + 0x44);pName = "";pName = ReadStr((char*)(ReadDword(ReadDword(RW偏移 + 0x148) + 0x10) + 0x2c));血量 = ReadFloat(ReadDword(ReadDword(RW偏移 + 0x148) + 0x10) + 0x8);}__except (1) {Call_输出调试信息("读物人物信息异常\r\n");}
}void R_遍历背包::遍历背包()
{try {DWORD s = 0;//DWORD JZ = (DWORD)GetModuleHandleA("Game.exe") + 0x59F458;DWORD JZ = (DWORD)GetModuleHandleA("Game.exe") + 0x59F490;DWORD JZpy = ReadDword(ReadDword(JZ) + 0x181C4);背包[0].背包数量 = ReadDword(ReadDword(JZ) + 0x181C4 + 0x14); // 道具背包数量背包[1].背包数量 = ReadDword(ReadDword(JZ) + 0x181C4 + 0x15); // 材料背包数量背包[2].背包数量 = ReadDword(ReadDword(JZ) + 0x181C4 + 0x16);// 任务背包数量for (int i = 0; i < 3; i++){CString str;str.Format(L"数量2:%d %d %d", 背包[0].背包数量, 背包[1].背包数量, 背包[2].背包数量);//AfxMessageBox(str);for (int j = 0; j < 背包[i].背包数量; j++){if (i == 0) {s = j;}if (i == 1)s = j + 背包[0].背包数量;if (i == 2)s = j + 背包[0].背包数量 + 背包[1].背包数量;列表[s].dwObject = ReadDword(JZpy + j * 4);if (列表[s].dwObject != 0) {DWORD 值 = ReadDword(列表[s].dwObject + 0x2C);列表[s].pName = ReadStr((char*)ReadDword(值 + 0x18));列表[s].p使用等级 = ReadDword(值 + 0x20);列表[s].简介 = ReadStr((char*)ReadDword(值 + 0x1c));;列表[s].p数量 = (BYTE)ReadByte(ReadDword(列表[s].dwObject + 0x14) + 0x58);}else{列表[s].pName = "";列表[s].p数量 = 0;列表[s].简介 = "";列表[s].p使用等级 = 0;}d数量++;}JZpy = JZpy + 0x80;// 扩展背包大小,写死0x80,扩展背包大小0x80/0x47=十进制的32}}catch (...){Call_输出调试信息("tlhj 返回背包信息异常\r\n");}}void R_周围遍历::周围二叉数(DWORD Tree, R_人物属性 rw)
{try{int ss = 0;ss++;if (ss < 5000){BYTE data = -1;data = ReadByte(Tree + 0xd);DWORD 左子树 = ReadDword(Tree + 0x0);DWORD 右子树 = ReadDword(Tree + 0x8);if (data == 0){列表[d数量].dwObject = ReadDword(Tree + 0x14);列表[d数量].id = ReadDword(列表[d数量].dwObject + 0x2c);列表[d数量].fX = ReadFloat(列表[d数量].dwObject + 0x3c);//坐标X列表[d数量].fY = ReadFloat(列表[d数量].dwObject + 0x44);列表[d数量].PType = ReadByte(ReadDword(列表[d数量].dwObject + 0x24) + 0x14);if ((int)列表[d数量].fX == 100 && (int)列表[d数量].fY == 100){}else{// 计算最近距离的公式,所有游戏通用,看不懂死记住就行,小学的公式列表[d数量].距离 = sqrt((rw.fX - 列表[d数量].fX)*(rw.fX - 列表[d数量].fX) + (rw.fY - 列表[d数量].fY)*(rw.fY - 列表[d数量].fY));列表[d数量].pName = "";//Call_输出调试信息("-----r2-------%x", AA);列表[d数量].pName = ReadStr((char *)(ReadDword(ReadDword(列表[d数量].dwObject + 0x148) + 0x10) + 0x2c));列表[d数量].血量 = ReadFloat(ReadDword(ReadDword(列表[d数量].dwObject + 0x148) + 0x10) + 0x8);d数量++;}周围二叉数(左子树, rw);周围二叉数(右子树, rw);}}}catch (...){Call_输出调试信息("tlhj 遍历二叉数异常\r\n");}
}
DWORD R_blzw = *(DWORD*)((DWORD)GetModuleHandleA("Game.exe") + 0x59F008);
void R_周围遍历::AsmGetMonsterData()
{Sleep(10);try{DWORD dwTreeBase = *(DWORD*)(R_blzw + 0x54);dwTreeBase = *(DWORD*)(dwTreeBase + 0x4);DWORD dwEnvTreeBase = dwTreeBase;Call_输出调试信息("-----q-------");if (dwEnvTreeBase) {R_人物属性 rw;rw.初始化();d数量 = 0;周围二叉数(dwEnvTreeBase, rw);//遍历二叉树}//正确取到二叉树基址}catch (...){Call_输出调试信息("tlhj 得到二叉数根结点异常\r\n");}
}R_人物属性 R_周围遍历::遍历最近怪物()
{this->AsmGetMonsterData();R_人物属性 a;R_人物属性 人物;人物.初始化();try{if (this->d数量 > 0){for (int i = 0; i < (int)this->d数量; i++){for (int j = i + 1; j < (int)this->d数量; j++){if (this->列表[i].距离 > this->列表[j].距离){a = this->列表[j];this->列表[j] = this->列表[i];this->列表[i] = a;}}}if (d数量 >= 1){return this->列表[d数量 - 2];}else{return 人物;}}return 人物;}catch (...){Call_输出调试信息("tlhj 返回最近怪物信息异常\r\n");}
}void R_遍历技能::技能二叉数2(DWORD Tree)
{try{BYTE data = 0;data = ReadByte(Tree + 0xd);DWORD 左子树 = ReadDword(Tree + 0x0);DWORD 右子树 = ReadDword(Tree + 0x8);if (data == 0){列表[d数量].dwObject = ReadDword(Tree + 0x14);列表[d数量].pName = ReadStr((char *)ReadDword(Tree + 0x14) + 0x8);d数量++;技能二叉数2(左子树);技能二叉数2(右子树);}}catch (...){Call_输出调试信息("天龙怀旧 遍历二叉数异常\r\n");}
}void R_遍历技能::AsmGetMonster()
{try{DWORD dwTreeBase = ReadDword(R_jnecs2 + 0x28);dwTreeBase = ReadDword(dwTreeBase + 0x4);DWORD dwEnvTreeBase = dwTreeBase;if (dwEnvTreeBase) {d数量 = 0;技能二叉数2(dwEnvTreeBase);//遍历二叉树}//正确取到二叉树基址}catch (...){Call_输出调试信息("天龙怀旧 得到二叉数根结点异常\r\n");}
}void R_遍历技能::技能二叉数(DWORD Tree)
{try{BYTE data = 0;data = ReadByte(Tree + 0xd);DWORD 左子树 = ReadDword(Tree + 0x0);DWORD 右子树 = ReadDword(Tree + 0x8);if (data == 0){列表[d数量].dwObject = Tree;列表[d数量].pID = ReadByte(Tree + 0x10);列表[d数量].pName = ReadStr((char *)ReadDword(ReadDword(Tree + 0x18) + 0xc));列表[d数量].冷却ID = ReadDword(ReadDword(Tree + 0x18) + 0x40);DWORD dwTreeBase = ReadDword(R_jnlq + 0x18164);DWORD 冷却时间 = ReadDword(dwTreeBase + 列表[d数量].冷却ID * 3 * 4);char* a = "";if (冷却时间 == 0 || 冷却时间 == 0xffffffff) {a = "未冷却";}else {a = "冷却";}列表[d数量].冷却 = a;d数量++;技能二叉数(左子树);技能二叉数(右子树);}}catch (...){Call_输出调试信息("天龙怀旧 遍历二叉数异常\r\n");}
}void R_遍历技能::AsmGetMonsterData()
{try{DWORD dwTreeBase = ReadDword(R_jnecs + 0x60);dwTreeBase = ReadDword(dwTreeBase + 0x148);dwTreeBase = ReadDword(dwTreeBase + 0x10);dwTreeBase = ReadDword(dwTreeBase + 0x2A44);dwTreeBase = ReadDword(dwTreeBase + 0x4);DWORD dwEnvTreeBase = dwTreeBase;if (dwEnvTreeBase) {d数量 = 0;技能二叉数(dwEnvTreeBase);//遍历二叉树}//正确取到二叉树基址}catch (...){Call_输出调试信息("天龙怀旧 得到二叉数根结点异常\r\n");}
}
结构.h文件:新加 R_技能属性结构、R_遍历技能结构
#pragma once
#include <string>#define BLZW (DWORD)GetModuleHandleA("Game.exe") + 0x59EFA4//遍历周围 和人物状态同一个
using namespace std;
struct R_人物属性
{DWORD 状态;FLOAT 血量;DWORD 最大血量;FLOAT fX;FLOAT fY;DWORD id;DWORD dwObject;DWORD PType;DWORD M_走路包;FLOAT 距离;DWORD M_通用包;PCHAR pName = "";void 初始化();
};struct R_背包属性 {DWORD dwObject;string pName;BYTE p数量;string 简介;DWORD p使用等级;
};struct R_背包类
{BYTE 背包数量 = 0;
};struct R_遍历背包 {R_背包类 背包[0x3];R_背包属性 列表[0x100];DWORD d数量 = 0;void 遍历背包();
};struct 坐标 {FLOAT x;FLOAT y;
};struct R_周围遍历
{R_人物属性 列表[0x100];DWORD d数量 = 0;void 周围二叉数(DWORD Tree, R_人物属性 dw);void AsmGetMonsterData();R_人物属性 遍历最近怪物();};struct R_技能属性
{DWORD dwObject;string pName;DWORD 冷却ID;DWORD pID;string 冷却;
};struct R_遍历技能
{R_技能属性 列表[0x100];DWORD d数量 = 0;void 技能二叉数2(DWORD Tree);void AsmGetMonster();void 技能二叉数(DWORD Tree);void AsmGetMonsterData();
};
#define JNLQ (DWORD)GetModuleHandleA("Game.exe") + 0x59F4F8//技能冷却数组
#define JNECS (DWORD)GetModuleHandleA("Game.exe") + 0x59F008//技能二叉数
#define JNECS2 (DWORD)GetModuleHandleA("Game.exe") + 0x34cb88//技能二叉数2
CM.cpp文件:新加 OnBnClickedButton5函数(遍历技能按钮的点击事件处理函数)
// CM.cpp: 实现文件
//#include "pch.h"
#include "tl.h"
#include "CM.h"
#include "afxdialogex.h"// CM 对话框IMPLEMENT_DYNAMIC(CM, CDialogEx)CM::CM(CWnd* pParent /*=nullptr*/): CDialogEx(IDD_DIALOG1, pParent), edi_x(_T(""))
{}CM::~CM()
{
}void CM::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, edi_x);DDX_Text(pDX, IDC_EDIT2, edi_y);
}BEGIN_MESSAGE_MAP(CM, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &CM::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CM::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CM::OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON4, &CM::OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON5, &CM::OnBnClickedButton5)
END_MESSAGE_MAP()// CM 消息处理程序void CM::OnBnClickedButton1()
{R_人物属性 a;a.初始化();Call_输出调试信息("人物信息:人物状态%d",a.状态);
}void CM::OnBnClickedButton2()
{UpdateData(TRUE);CString str1 = edi_x;CString str2 = edi_y;// strtol((const char*)CW2A(str1.GetBuffer(0)), NULL, 10);把字符串转成int数字类型int x = strtol((const char*)CW2A(str1.GetBuffer(0)), NULL, 10);int y = strtol((const char*)CW2A(str2.GetBuffer(0)), NULL, 10);Call_xunlu(x, y);
}void CM::OnBnClickedButton3()
{R_遍历背包 a;a.遍历背包();// 遍历背包CString str;str.Format(L"a数量 %d", a.d数量);AfxMessageBox(str);for (int i = 0; i < a.d数量; i++){Call_输出调试信息("tl怀旧 背包信息 dwObject -------------%X----------------\r\n", a.列表[i].dwObject);Call_输出调试信息("tl怀旧 背包信息 名字:%s\r\n", a.列表[i].pName.c_str());Call_输出调试信息("tl怀旧 背包信息 使用等级:%d\r\n", a.列表[i].p使用等级);Call_输出调试信息("tl怀旧 背包信息 简介:%s\r\n", a.列表[i].简介.c_str());Call_输出调试信息("tl怀旧 背包信息 数量:%d\r\n", a.列表[i].p数量);}}void CM::OnBnClickedButton4()
{// TODO: 在此添加控件通知处理程序代码R_周围遍历 a;a.遍历最近怪物();// 让怪物重新排列for (int i = 0; i < a.d数量; i++){Call_输出调试信息("人物信息:---------------------%s-----%x---------------------", a.列表[i].pName, a.列表[i].dwObject);Call_输出调试信息("人物信息:人物id:%x", a.列表[i].id);Call_输出调试信息("人物信息:人物X:%f 人物Y:%f", a.列表[i].fX, a.列表[i].fY);Call_输出调试信息("人物信息:人物类型:%x 人物距离:%f", a.列表[i].PType, a.列表[i].距离);}
}void CM::OnBnClickedButton5()
{// TODO: 在此添加控件通知处理程序代码R_遍历技能 a;a.AsmGetMonsterData();// 遍历技能for (int i = 0; i < a.d数量; i++){Call_输出调试信息("tl怀旧 技能信息 名字:---------------%s-----------------------\r\n", a.列表[i].pName.c_str());Call_输出调试信息("tl怀旧 技能信息 ID:%d\r\n", a.列表[i].pID);Call_输出调试信息("tl怀旧 技能信息 是否冷却:%s\r\n", a.列表[i].冷却.c_str());Call_输出调试信息("tl怀旧 技能信息 冷却ID:%x\r\n", a.列表[i].冷却ID);Call_输出调试信息("tl怀旧 技能信息 对象地址:%x\r\n", a.列表[i].dwObject);}
}
上方的代码不全,只有手写的代码
完整代码:
链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg?pwd=q9n5
提取码:q9n5
复制这段内容后打开百度网盘手机App,操作更方便哦

相关文章:
35.第二阶段x86游戏实战2-C++遍历技能
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…...
Jenkins发布vue项目,版本不一致导致build错误
问题一 yarn.lock文件的存在导致在自动化的时候,频频失败问题二 仓库下载的资源与项目资源版本不一致 本地跑好久的一个项目,现在需要部署在Jenkins上面进行自动化打包部署;想着部署后今后可以省下好多时间,遂兴高采烈地去部署&am…...
vue3使用webSocket
1.安装插件 npm i vueuse/core10.11.12.引入使用 import { useWebSocket } from "vueuse/core"const { send, open, close: wsClose, status } useWebSocket(ws://192.168.100.90:53021/inms-application/alarm, {onMessage: (ws, { data }) > {console.log(&q…...
957种卫星参数文档的分享下载
自1957年10月4日苏联发射第一颗人造卫星Sputnik-1至今已经有67年,如今卫星已经在气象、遥感和通讯等领域为我们提供服务。 现在为你分享957种卫星参数,需要Excel文档请在文未查看领取下载方式。 卫星介绍 卫星是由人类制造并发射到太空,围…...
负载均衡详解:背景、实现技术、作用范围与常用算法
负载均衡(Load Balancing)是一种通过将请求分配到多个服务器上,从而优化资源使用、提高响应速度并增强系统可靠性的一种技术手段。它是现代分布式系统和互联网应用中不可或缺的一部分。在本篇文章中,我们将深入探讨负载均衡的方方…...
CCAA:产品认证基础3(产品认证方案)
学习要点 *产品认证方案和认证制度 *产品认证方案的基本要素、功能和活动 *产品认证方案的类型 *产品认证方案的制订和实施 *质量管理体系在产品认证方案中的应用 *典型产品认证方案的应用 第一节 产品认证方案和产品认证制度 一、概念 认证制度是指实施认证的规则、程序和…...
go语言中的Scan()和Scanln()输入函数
Scan()输入函数 package mainimport "fmt"func main() {var a intvar b stringfor {fmt.Println("请输入一个整数和一个字符串(用空格分隔):")fmt.Scan(&a, &b) // 直接读取输入到变量中fmt.Println("整数…...
UML外卖系统报告(包含具体需求分析)
1 系统背景 随着互联网技术的快速发展,外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制,而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来,…...
net Core Data Protection 数据保护 加密 编码 哈希 FromServices
》》》 通过构造函数 获取服务 [Route("api/[controller]")][ApiController]public class DataProtectController : ControllerBase{[HttpGet]public string Info(){return "zen";}// [FromServices] 自动获取 builder.Services.AddDataProtection()注…...
4K手机壁纸之动漫系列
因为平台限制了图片大小,大家将就看吧,原图找me...
关于eclipse的workspace
如果项目很多,为了方便管理,最好不要是使用working set 对项目进行分组。一个workspace加载项目过多,即使进行分组,有些操作也很对所有项目生效。为了避免卡顿,建议直接使用workspace分组管理,而不是workin…...
Vue引入高德地图自定义信息窗体绑定点击事件无效解决方案
你们好,我是金金金。 场景 笔者用的Vue3,引入了高德地图,version为2.0,场景如下: 在地图上根据经纬度度打点标记了一个位置,然后点击点标记弹出自定义信息窗体,右上角关闭按钮则是绑定了关闭自定…...
私域朋友圈运营
今天必须给大家分享一份超棒的朋友圈运营思维导图 有了它,你可以逐步打造属于自己的精彩朋友圈🎉。无论是想分享生活点滴💧,还是展示个人魅力✨,又或者推广自己的业务📈,这份思维导图都能给你指…...
【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览
文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六:扩展——kkFileView Vue3 一. word 安装:npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…...
如何加密电脑磁盘?电脑本地磁盘加密方法介绍
随着信息技术的不断发展,电脑磁盘加密已经成为保护个人隐私和数据安全的重要手段。本文将介绍几种常见的电脑本地磁盘加密方法,帮助用户保护自己的数据安全。 文件夹只读加密专家 文件夹只读加密专家不仅可以加密电脑中的文件夹,还可以加密保…...
1688、淘宝、京东搜索商品聚合接口技术实现与代码示例
在当今电商领域,多平台商品搜索已成为用户获取多样化商品信息的重要途径。为了满足用户对1688、淘宝、京东等主流电商平台商品搜索的需求,开发一个跨平台的商品搜索聚合接口显得尤为重要。本文将详细介绍如何实现这一接口,包括接口设计、平台…...
视频智能分析平台LiteAIServer烟火识别软件引领烟火检测与识别的智能新纪元
随着人工智能技术的飞速进步,视频智能分析技术正以前所未有的深度和广度渗透至安全防护、环境监测等多个关键领域。其中,烟火识别软件LiteAIServer凭借其卓越的烟火检测与识别算法,成为了业界瞩目的焦点。 一、烟火检测:守护公共安…...
VUE前端按钮添加遮罩层
需求 当前需求是由于部分按钮操作的执行时间过长,因此添加遮罩层,防止用户误操作。 实现方式 在请求接口时创建遮罩层,并将遮罩层保存为全局唯一,请求成功或失败时,关闭遮罩层即可,切记,请求…...
列出机器学习方向的创新点
以下是机器学习方向的一些创新点: 一、算法创新 新型神经网络架构 图神经网络(Graph Neural Networks,GNNs) 传统的神经网络主要处理欧几里得空间的数据,如图像(网格结构)和序列(线性结构)。然而,现实世界中有许多数据具有图结构,如社交网络、分子结构等。图神经网…...
ffmpeg视频滤镜:腐蚀滤镜
滤镜简述 erosion 官网链接> FFmpeg Filters Documentation 这个滤镜会在视频上应用腐蚀操作,腐蚀操作是形态学中一种操作,接触过opencv的同学应该很熟悉。滤镜主要有如下作用: 去除噪声:腐蚀可以帮助去除图像中的小颗粒噪…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...
高保真组件库:开关
一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...
