MFC文件和注册表的操作
MFC文件和注册表的操作
日志、操作配置文件、ini、注册表、音视频的文件存储
Linux下一切皆文件
C/C++操作文件
const char* 与 char* const
const char* 常量指针,表示指向的内容为常量。指针可以指向其他变量,但是内容不能再变了
char szName[6]="Bingo";
const char* pName = szName;
*pName = 'b';错误
//pName常量指针,表示指向的内容为常量。指针可以指向其他变量,但是内容不能再变了
-----------------------------------------------------
char szName[6]="Bingo";
char * const pName=szName;
char *p;错误
*pNmae = 'b';正确
//表示pName是指针常量;表示地址是常量。不能再变了。但是内容可以改变
C语言操作文件
_Check_return_wat_
_Success_(return == 0)
_ACRTIMP errno_t __cdecl fopen_s(_Outptr_result_nullonfailure_ FILE** _Stream,_In_z_ char const* _FileName,_In_z_ char const* _Mode //文件打开方式
);
- 文件打开的模式
- 'r’模式:这是“只读”模式。如果文件不存在,尝试打开将失败。文件指针位于文件开头,不会清空文件原有内容。
- 'w’模式:这是“只写”模式。如果文件存在,它将被清空并从头开始写入;如果文件不存在,将创建一个新文件。文件指针位于文件开头。
- 'a’模式:**这是“追加”模式。如果文件存在,写入的数据将添加到文件末尾,不会清空原有内容;**如果文件不存在,将创建一个新文件。文件指针位于文件结尾。
- 'r+'模式:这是“读写”模式。文件必须存在,文件指针位于文件开头。可以在文件任意位置读取或写入内容,写入操作会覆盖原有位置的内容。
- 'w+'模式:这也是“读写”模式。它类似于’w’模式,但是它允许读取操作。打开文件后,会清空文件内原有的内容。
- 'a+'模式:这同样是“读写”模式。它类似于’a’模式,但是它允许读取操作。写入内容时,只会追加在文件尾部。
_Check_return_opt__ACRTIMP size_t __cdecl fwrite(_In_reads_bytes_(_ElementSize * _ElementCount) void const* _Buffer,_In_ size_t _ElementSize,//一个元素的字节数_In_ size_t _ElementCount,//元素个数_Inout_ FILE* _Stream
);
对于宽字节而言 wchar a[20] = “bingo”;
ANSI char a[20]=“bingo”;
fseek(//文件指针的定位_Inout_ FILE* _Stream, //指向FILE结构体指针_In_ long _Offset, //偏移量_In_ int _Origin //指定文件指针的起始位置//SEEK_CUR 当前位置,//SEEK_END 文件结尾位置 //SEEK_SET文件开始位置
);
Ftell 返回文件指针的当前位置
-
文件操作
void CMyMFCFileView::OnFileWrite() {FILE* pFile = NULL;//打开文件errno_t err = _wfopen_s(&pFile, _T("1.txt"),_T("w"));if (err == 0){MessageBox(_T("Open Success!!"));}else{TRACE("Open Failed ErrorCode = %d", GetLastError());return;}//fwrite()//WCHAR a[20] = L"bingo";//宽字节而言 一个元素的字节数是2// char a1[20] = "bingo";//ANSI 一个元素的字节数是1//TRACE("*************a = %d, a1 = %d", sizeof(a), sizeof(a1)); //40,20//fwrite("Bingo", 1, strlen("bingo"), pFile);fwrite(L"Bingo", 2, wcslen(_T("bingo")) + 1, pFile);//宽字节fclose(pFile);}void CMyMFCFileView::OnFileRead() {FILE* pFile = NULL;//打开文件errno_t err = _wfopen_s(&pFile, _T("1.txt"), _T("r"));if (err != 0){TRACE("Open Failed ErrorCode = %d", GetLastError());return;} #if 0WCHAR pBuf[100] = { 0 };//长度是未知的!!!fread(pBuf,2,100,pFile);MessageBox(pBuf); #endiffseek(pFile,0,SEEK_END);//偏移到结尾位置int len = ftell(pFile); //文件指针的当前位置(文件长度)WCHAR* pBuf = new WCHAR[len + 1];fseek(pFile, 0, SEEK_SET);//偏移到起始位置//rewind(pFile);//将文件指针重新放到文件开始处pBuf[len] = 0;//确保数组最后一个元素为'\0'fread(pBuf, 2, len, pFile);//从指针位置开始读MessageBox(pBuf);fclose(pFile);}
C++操作文件
ofstream
explicit basic_ofstream(const char* _Filename, ios_base::openmode _Mode = ios_base::out,int _Prot = ios_base::_Default_open_prot)
#include <io.h>
#include <fstream>
using namespace std;void CMyMFCFileView::OnFileWrite()
{ofstream ofs("2.txt"); //第一个参数表示文件名,2打开方式ofs.write("BingoC++", strlen("BingoC++"));ofs.close();
}void CMyMFCFileView::OnFileRead()
{ifstream ifs("2.txt");char pBuf[100] = { 0 };ifs.read(pBuf, 100);USES_CONVERSION;CString str = A2W(pBuf);MessageBox(str); ifs.close();
}
Win32 API/MFC操作文件
CreateFile
文件、管道、邮槽 通信资源、磁盘设备、控制台、目录
CreateFileW(LPCWSTR lpFileName, //创建或打开的对象的名称DWORD dwDesiredAccess, //访问方式 读、读写、写、查询 0 GENERIC_READ,GENERIC_WRITEDWORD dwShareMode, //共享方式 0 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //NULL,安全权限,不能被子进程继承DWORD dwCreationDisposition, //如何创建文件 CREATE_NEW CREATE_ALWAYSDWORD dwFlagsAndAttributes, //设置文件的属性和标志HANDLE hTemplateFile //NULL);WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, //要写入的字节数LPDWORD lpNumberOfBytesWritten, //用来接收实际写入到文件的字节数LPOVERLAPPED lpOverlapped
);
ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped
);
Win32 API 操作文件
void CMyMFCFileView::OnFileWrite()
{HANDLE hFile;hFile = CreateFile(_T("3.txt"), GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE){TRACE("INVALID_HANDLE_VALUE, ERRORCODE = %d", GetLastError());return;}DWORD dwWrites;WriteFile(hFile, "BingoWin32API", strlen("BingoWin32API"), &dwWrites, NULL);TRACE("###dwWrite = %d", dwWrites);CloseHandle(hFile);}void CMyMFCFileView::OnFileRead()
{HANDLE hFile;hFile = CreateFile(_T("3.txt"), GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//读数据、已存在的char pBuf[100] = { 0 };DWORD dwReads;ReadFile(hFile, pBuf, 100, &dwReads, NULL);TRACE("###dwReads = %d", dwReads);CloseHandle(hFile);
}
MFC操作文件
void CMyMFCFileView::OnFileWrite()
{//CFile(LPCTSTR lpszFileName, UINT nOpenFlags); 文件名、CFile file(L"4.txt", CFile::modeCreate | CFile::modeWrite);file.Write("BingoMFC", strlen("BingoMFC"));file.Close();}void CMyMFCFileView::OnFileRead()
{CFile file(L"4.txt", CFile::modeRead);char* pBuf;DWORD dwFileLen = file.GetLength();pBuf = new char[dwFileLen + 1];pBuf[dwFileLen] = 0;file.Read(pBuf, dwFileLen);file.Close();USES_CONVERSION;CString str = A2W(pBuf);MessageBox(str);
}
基于文件对话框的读写
派生关系:CFileDialog -> CCommonDialog -> CDialog -> CWnd -> CCmdTarget -> CObject
CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAsLPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL,DWORD dwSize = 0,BOOL bVistaStyle = TRUE);
void CMyMFCFileView::OnFileWrite()
{// CFileDialog(BOOL bOpenFileDialog, // TRUE for 构建一个打开的对话框, FALSE for 构建一个保存对话框
// LPCTSTR lpszDefExt = NULL, // 指定默认的文件扩展名 NULL
// LPCTSTR lpszFileName = NULL, // 初始文件名 NULL 默认没有初始文件名
// DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
// LPCTSTR lpszFilter = NULL, //用来指定一个或一组文件的过滤器
// CWnd * pParentWnd = NULL, //用来指定文件对话框的父窗口或者拥有窗口
// DWORD dwSize = 0, //大小
// BOOL bVistaStyle = TRUE); //可见或者不可见CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrTitle = L"Bingo"; //该窗口标题fileDlg.m_ofn.lpstrFilter = _T("Text Files (*.txt)");fileDlg.m_ofn.lpstrDefExt = L"txt";//默认保存类型//fileDlg.DoModal();if (IDOK == fileDlg.DoModal()){CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);USES_CONVERSION;char* szBuf = T2A(fileDlg.GetFileName());TRACE("####fileDlg.GetFileName() = %s", szBuf);file.Write("BingoMFC111", strlen("BingoMFC111"));file.Close();}
}void CMyMFCFileView::OnFileRead()
{
// CFileDialog(BOOL bOpenFileDialog, // TRUE for 构建一个打开的对话框, FALSE for 构建一个保存对话框
// LPCTSTR lpszDefExt = NULL, // 指定默认的文件扩展名 NULL
// LPCTSTR lpszFileName = NULL, // 初始文件名 NULL 默认没有初始文件名
// DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
// LPCTSTR lpszFilter = NULL, //用来指定一个或一组文件的过滤器
// CWnd * pParentWnd = NULL, //用来指定文件对话框的父窗口或者拥有窗口
// DWORD dwSize = 0, //大小
// BOOL bVistaStyle = TRUE); //可见或者不可见CFileDialog fileDlg(TRUE);fileDlg.m_ofn.lpstrTitle = L"Bingo"; //该窗口标题fileDlg.m_ofn.lpstrFilter = _T("Chart Files (*.xlc)|*.xlc|")_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")_T("*.xlc; *.xls|All Files (*.*)|*.*||"); //该窗口标题//fileDlg.DoModal();if (IDOK == fileDlg.DoModal()){CFile file(fileDlg.GetFileName(), CFile::modeRead);char* pBuf;DWORD dwFileLen = file.GetLength();pBuf = new char[dwFileLen + 1];pBuf[dwFileLen] = 0;file.Read(pBuf, dwFileLen);file.Close();USES_CONVERSION;CString szBuf = A2W(pBuf);MessageBox(szBuf);}}
配置文件的访问与读写
[metadata]
title=搜狗双拼
[声母]
ch=I
sh=U
void CMyMFCFileView::OnWriteConfig()
{// TODO: 在此添加命令处理程序代码//获得当前路径WCHAR strPath[MAX_PATH] = { 0 };GetCurrentDirectoryW(MAX_PATH, strPath);TRACE("333strPath = %s", strPath);// 当前路径: E:\奇牛培训\学习笔记\mfc\MyMFCFile\ + Test.iniCString strFilePath;strFilePath.Format(L"%ls//Test.ini", strPath);WritePrivateProfileStringW(L"metadata", L"title", L"搜狗双拼", strFilePath);WritePrivateProfileStringW(L"声母", L"ch", L"I", strFilePath);WritePrivateProfileStringW(L"声母", L"sh", L"U", strFilePath);
}void CMyMFCFileView::OnReadConfig()
{ //获得当前路径WCHAR strPath[MAX_PATH] = { 0 };WCHAR strTitle[MAX_PATH] = { 0 }; WCHAR strCh[MAX_PATH] = { 0 };WCHAR strSh[MAX_PATH] = { 0 };GetCurrentDirectoryW(MAX_PATH, strPath);TRACE("333strPath = %s", strPath);// 当前路径: E:\奇牛培训\学习笔记\mfc\MyMFCFile\ + Test.iniCString strFilePath;strFilePath.Format(L"%ls//Test.ini", strPath);DWORD dwNum1 = GetPrivateProfileStringW(L"metadata", L"title", NULL, strTitle, MAX_PATH, strFilePath);DWORD dwNum2 = GetPrivateProfileStringW(L"声母", L"ch", NULL, strCh, MAX_PATH, strFilePath);DWORD dwNum3 = GetPrivateProfileStringW(L"声母", L"sh", NULL, strSh, MAX_PATH, strFilePath);TRACE("dwNum1 = %d,dwNum2 = %d,dwNum3 = %d", dwNum1, dwNum2, dwNum3);USES_CONVERSION;char* szTitle = W2A(strTitle);char* szCh = W2A(strCh);char* szSh = W2A(strSh);TRACE("strTitle = %s,strCh = %s,strSh = %s", szTitle, szCh, szSh);
}
注册表编程
注册表API
注册表 存储在二进制文件里面,win32API提供了大量的函数操作注册表
注册表:Win+R组合键 regedit
注册表读写
write
RegCreateKeyW(_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支_In_opt_ LPCWSTR lpSubKey, //打开或者创建的表项的名称_Out_ PHKEY phkResult //用来接收创建或者打开表项句柄 regclose);RegOpenKeyW(_In_ HKEY hKey,_In_opt_ LPCWSTR lpSubKey,_Out_ PHKEY phkResult);//写入注册表RegSetValueW(_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支_In_opt_ LPCWSTR lpSubKey, //打开或者创建的表项的名称_In_ DWORD dwType, //只是被存储信息的类型 REG_SZ类型_In_reads_bytes_opt_(cbData) LPCWSTR lpData, //要存放到注册表里面的数据_In_ DWORD cbData //要存放的字符串数据的大小、长度);RegSetValueExW(_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支_In_opt_ LPCWSTR lpValueName,//指向一个字符串的指针,包含了将要设置值的名称_Reserved_ DWORD Reserved, //保留参数 0_In_ DWORD dwType, //REG_BINARY_In_reads_bytes_opt_(cbData) CONST BYTE * lpData,_In_ DWORD cbData);
·read
RegQueryValueW(_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支_In_opt_ LPCWSTR lpSubKey,_Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPWSTR lpData,_Inout_opt_ PLONG lpcbData);
--------------管理员身份运行--------------------
----------------------------------------------
void CMyMFCFileView::OnWriteReg()
{HKEY hKey;DWORD dwAge = 39;//创建注册表项 管理员权限运行int ret = ::RegCreateKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Rock\\admin", &hKey);//写注册表if(ret != ERROR_SUCCESS){TRACE("RegCreateKeyW Failed, ErrorCode = %d", GetLastError());MessageBox(L"创建注册表失败");return;}//写注册表 ::RegSetValueEx(hKey, L"age", 0, REG_DWORD, (CONST BYTE*) & dwAge, 4);::RegCloseKey(hKey);
}void CMyMFCFileView::OnReadReg()
{HKEY hKey;DWORD dwAge;//创建注册表项 管理员权限运行int ret = ::RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Rock\\admin", &hKey);//写注册表if (ret != ERROR_SUCCESS){TRACE("RegOpenKeyW Failed, ErrorCode = %d", GetLastError());MessageBox(L"打开注册表失败");return;}//写注册表 DWORD dwType;DWORD dwValue;::RegQueryValueEx(hKey, L"age", 0, &dwType, (LPBYTE) & dwAge,&dwValue);TRACE("####dwType = %d, dwValue = %d, dwAge = %d", dwType, dwValue, dwAge);::RegCloseKey(hKey);
}
文件操作的企业级应用
1、调试日志 debugview 文件日志:警告日志 错误日志
2、视频存储
3、文件传输 CFile 与 socket 结合使用
4、C语言和MFC的文件操作用途广泛;win32API少用 ifstream ofstream
5、配置文件 windows
6、注册表的操作 病毒 逆向 操作注册表
相关文章:
MFC文件和注册表的操作
MFC文件和注册表的操作 日志、操作配置文件、ini、注册表、音视频的文件存储 Linux下一切皆文件 C/C操作文件 const char* 与 char* const const char* 常量指针,表示指向的内容为常量。指针可以指向其他变量,但是内容不能再变了 char szName[6]&qu…...

vscode如何使用鼠标滚轮调整字体大小
1.打开设置 2.搜索Font Ligatures 3.编辑配置文件 4.修改代码并保存 修改前 修改后 在最后一行添加:“editor.mouseWheelZoom”: true 记得在上一行最后,加上英文版的“,”逗号 5.配置成功,再次按Ctrl鼠标滚轮便可以缩放了。...
C++之vector和list辨析
std::vector 和 std::list 是 C 标准库中两种常用的容器,它们都用于存储和管理元素集合,但在底层实现和性能特性上有显著的区别。 1. 底层实现 std::vector: 基于动态数组实现。元素在内存中是连续存储的。支持随机访问(通过下标访问元素&a…...

冯诺依曼体系结构 ──── linux第8课
目录 冯诺依曼体系结构 关于冯诺依曼,必须强调几点: 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 输入单元:包括键盘, 鼠标,网卡,扫…...
EX_25/2/22
找到第一天mystring练习,实现以下功能 mystring str "hello" mystring ptr "world" str str ptr; str ptr str[0] H #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #in…...

rust安装教程以及git连接到远程仓库
1.官方网站下载rustup-init程序 链接: rust-lang 从这里可以获取到rust的下载程序,这个下载程序会帮助你下载visual-studio的安装包从而获取相关的编译环境。 tips:无需再下载visual_studio 2确认安装所需要的框架,SKD工具 安装完毕之后可以检查一下 rustc --ve…...

Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因
Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因 一、背景二、查看topic日志信息三、结论四、解决方法一、背景 源头数据库在很短的时间内刷了大量的数据,部分数据在hdfs丢失了 理论上debezium数据采集不会丢失,就需要排查数据链路某个节点是否有数据丢失。 数据…...
VC++零基础入门之系列教程 【附录E MFC快速参考指南】
附录E MFC快速参考指南 E.1 创建窗口 使用M F C CWnd wnd; W n d . C r e a t e E x ( E xSt y l e , C l a s s N a m e , Wi n d o w N a m e , S t y l e , x , y, Wi d t h , H e i g h t , P a r e n t , M e n u , P a r a m ) ; 使用A P I HWND hwnd=::CreateWi n d …...
在CentOS 7下部署NFS的详细教程
在CentOS 7下部署NFS的详细教程 NFS(Network File System)是一种分布式文件系统协议,允许用户在网络中的不同主机之间共享文件和目录。NFS广泛应用于Linux和Unix系统中,特别适合在集群环境中共享存储资源。本文将详细介绍如何在C…...

LabVIEW C编译支持工具库CCompileSupp.llb
路径:C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\CCompileSupp.llb 1. 工具库概述 定位:LabVIEW内置的C语言编译支持工具库,用于处理LabVIEW与C/C代码的混合编程接口,涵盖编译器配置、代码生成…...

【含文档+PPT+源码】基于微信小程序的农产品自主供销商城系统
项目介绍 本课程演示的是一款基于微信小程序的农产品自主供销商城系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3…...
MongoDB私人学习笔记
俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步! 此笔记主要是ZooKeeper3.4.9版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。 一、基础知识…...

C++---了解STL
上节学习了模板,那么就得谈到C的标准模板库STL。 C98:以模板方式重写了C标准库,引入了STL(标准模板库)。 1.概念 STL(Standard template Libarary)标准模板库:是C标准库的重要组成部分,不仅是一个可复用的组件库&am…...
智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践
智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践 引言 在数字化转型的浪潮中,企业对于自动化技术的需求已从简单的任务执行转向更复杂的智能决策。传统RPA(Robotic Process Automation)通过模拟人类操作处理重复性任务…...
2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命
引言 2025年的科技领域持续呈现爆发式增长,AI大模型竞争白热化、量子计算商业化加速、开源工具生态繁荣成为本月最受关注的议题。本文结合最新行业动态,从技术突破、商业布局到开发者生态,全面解析当前科技热点,为读者提供深度洞…...

计算机网络————(三)
前文二 前文一 Websocket协议 是一种存在TCP协议之上的协议 当客户端需要了解服务器是否更新就需要不断给客户端发送请求询问是否更新,这行会造成服务端压力很大 而Websocket相当于服务器一旦更新了就会给客户端发送消息表明自己更新了,类似客户端订阅…...
请谈谈 React 中的状态管理,如何使用 Context API 和 Redux 进行状态管理?
一、Context API 深度应用 1. 核心实现原理 通过createContext创建上下文对象,使用Provider组件包裹需要共享状态的组件树,子组件通过useContext Hook或Consumer组件消费数据。 代码示例(主题切换场景): // 创建上…...
【考研】复试相关上机题目
文章目录 22机试回忆版1、判断燃气费描述输入格式输出格式输入样例输出样例 C o d e Code Code 2、统计闰年数量描述输入格式输出格式输入样例输出样例 C o d e Code Code 3、打印图形描述输入格式输出格式 C o d e Code Code 4、密文数据描述输入格式输出格式输入样例输出样例…...
利用机器学习实现实时交易欺诈检测
以下是一个基于Python的银行反欺诈AI应用示例代码,演示如何利用机器学习实现实时交易欺诈检测。该示例使用LightGBM算法训练模型,并通过Flask框架构建实时检测API: python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preproc…...
Modelfile配置说明
参数说明翻译 参数描述值类型示例用法mirostat启用Mirostat采样以控制困惑度。(默认:0,0禁用,1Mirostat,2Mirostat 2.0)intmirostat 0mirostat_eta影响算法对生成文本反馈的响应速度。较低的学习率将导致调…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...