Windows核心编程 注册表

目录

注册表概述

打开关闭注册表

创建删除子健

查询写入删除键值

子健和键值的枚举

常用注册表操作


注册表概述

注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心"数据库",也可以说是一个非常巨大的树状分层结构的数据库系统

注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。

注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据。利用一个功能强大的注册表数据库来统一集中地管理系统硬件设施、软件配置等信息,从而方便了管理,增强了系统的稳定性

早期的注册表以ini为扩展名的文本文件的配置文件。

自Windows95操作系统开始,注册表真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用:

  • 注册表数据库由多个文件组成
  • Windows提供了注册表编辑器

与INI文件不同的是:

  • 注册表采用了二进制形式登录数据;
  • 注册表支持子键,各级子关键字都有自己的“键值”;
  • 注册表中的键值项可以包含可执行代码,而不是简单的字串;
  • 在同一台计算机上,注册表可以存储多个用户的特性。

特点:

  • 注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
  • 注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中,另外,还可以避免新设备与原有设备之间的资源冲突。
  • 管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。

注册表查看:Win + R 运行 regedit 。可以改动的区域 - HKEY_CURRENT_USER - SOFTWARE

注册表以树状结构进行呈现。

注册表根键说明:

值:

  • 字符串值(REG_Sz):固定长度的文本字符串
  • 二进制值(REG_BINARY):原始二进制数据。多数硬件组件信息都以二进制数据存储
  • DWORD值(REG_DWORD):数据由4字节长的数表示。设备驱动程序和服务的很多参数都是这种类型
  • QWORD值(REG_QwORD):数据由8字节长的数表示
  • 多字符串值(REG_MULTl_SZ):多重字符串。包含列表或多值的值通常为该类型
  • 可扩充字符串值(REG_EXPAND_Z):长度可变的数据串。该数据类型包含在程序或服务使用该数据时解析的变量

打开关闭注册表

RegOpenKeyEx           打开注册表

RegOpenKeyExA是Windows API函数之一,用于打开一个指定的注册表项。

LSTATUS RegOpenKeyExA(HKEY   hKey,LPCSTR lpSubKey,DWORD  ulOptions,REGSAM samDesired,PHKEY  phkResult
);

下面是对该函数参数的解释:

  • hKey:表示要打开的注册表项的父项句柄。常见的父项句柄包括HKEY_LOCAL_MACHINEHKEY_CURRENT_USER等,可以使用这些常量来表示。

  • lpSubKey:表示相对于父项的子项路径。字符串类型,使用 ANSI 编码。

  • ulOptions:指定打开注册表项的选项。可以使用零或者REG_OPTION_NON_VOLATILE(非易失性注册表项)。

  • samDesired:指定打开注册表项时的访问权限。使用KEY_READKEY_WRITE等常量来表示。

  • phkResult:指向一个HKEY类型的指针,用于接收打开的注册表项的句柄。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

RegCloseKey   关闭已打开的注册表句柄

LSTATUS RegCloseKey(HKEY hKey
);

hKey:要关闭的键句柄,即RegOpenKeyExphkResult

测试代码

#include <Windows.h>
#include <iostream>int main()
{// 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion注册表项HKEY hKey;LPCSTR lpSubKey = "Software\\Microsoft\\Windows\\CurrentVersion";LSTATUS result = RegOpenKeyExA(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ, &hKey);if (result == ERROR_SUCCESS){std::cout << "成功打开注册表项!" << std::endl;// 在这里可以使用其他注册表API函数来读取或修改注册表项的键值对// 关闭注册表项句柄RegCloseKey(hKey);}else{std::cout << "无法打开注册表项,错误代码:" << result << std::endl;}return 0;
}

创建删除子健

RegCreateKeyEx         创建一个子键

RegCreateKeyExA是Windows API函数之一,用于创建或打开一个指定的注册表项。

LSTATUS RegCreateKeyExA(HKEY                        hKey,LPCSTR                      lpSubKey,DWORD                       Reserved,LPSTR                       lpClass,DWORD                       dwOptions,REGSAM                      samDesired,const LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY                       phkResult,LPDWORD                     lpdwDisposition
);

下面是对该函数参数的解释:

  • hKey:表示要创建或打开的注册表项的父项句柄。常见的父项句柄包括HKEY_LOCAL_MACHINEHKEY_CURRENT_USER等,可以使用这些常量来表示。

  • lpSubKey:表示相对于父项的子项路径。字符串类型,使用 ANSI 编码。

  • Reserved:保留参数,必须为零。

  • lpClass:为新创建的注册表项指定一个类别。该参数可以为NULL。

  • dwOptions:指定创建或打开注册表项时的选项。

  • samDesired:指定创建或打开注册表项时的访问权限。

  • lpSecurityAttributes:指定注册表项的安全性设置。可以为NULL。

  • phkResult:指向一个HKEY类型的指针,用于接收创建或打开的注册表项的句柄。

  • lpdwDisposition:指定一个DWORD类型的指针,用于接收返回的操作结果信息。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

使用RegCreateKeyExA函数可以创建或打开一个注册表项后,可以使用其他注册表API函数来读取或修改注册表项的键值对。

RegDeleteKey    删除子键

LSTATUS RegDeleteKeyA(HKEY   hKey,LPCSTR lpSubKey
);

测试代码

#include <Windows.h>
#include <iostream>int main()
{// 创建或打开HKEY_CURRENT_USER\Software\MyApp注册表项HKEY hKey;LPCSTR lpSubKey = "Software\\MyApp";LSTATUS result = RegCreateKeyExA(HKEY_CURRENT_USER, lpSubKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, NULL);if (result == ERROR_SUCCESS){std::cout << "成功创建或打开注册表项!" << std::endl;// 在这里可以使用其他注册表API函数来读取或修改注册表项的键值对// 关闭注册表项句柄RegCloseKey(hKey);}else{std::cout << "无法创建或打开注册表项,错误代码:" << result << std::endl;}return 0;
}

查询写入删除键值

RegQueryValueEx   读取键名称中的数据或查询键名称的属性

LSTATUS RegQueryValueExA(HKEY    hKey,LPCSTR  lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE  lpData,LPDWORD lpcbData
);

下面是对该函数参数的解释:

  • hKey:表示要查询的注册表项的句柄。

  • lpValueName:表示要查询的注册表项中的值的名称。字符串类型,使用 ANSI 编码。

  • lpReserved:保留参数,必须为NULL。

  • lpType:指向一个DWORD类型的指针,用于接收查询的值的数据类型。

  • lpData:指向一个缓冲区,用于接收查询到的值的数据。

  • lpcbData:指向一个DWORD类型的指针,用于指定缓冲区的大小,并返回实际写入缓冲区的字节数。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

RegSetValueEx         写入键值项

LSTATUS RegSetValueExA(HKEY       hKey,LPCSTR     lpValueName,DWORD      Reserved,DWORD      dwType,const BYTE *lpData,DWORD      cbData
);

下面是对该函数参数的解释:

  • hKey:表示要设置的注册表项的句柄。

  • lpValueName:表示要设置的注册表项中的值的名称。字符串类型,使用 ANSI 编码。

  • Reserved:保留参数,必须为0。

  • dwType:表示要设置的值的数据类型。可以使用预定义的常量,如REG_SZ表示字符串类型。

  • lpData:指向要设置的数据的缓冲区的指针。

  • cbData:表示要设置的数据的大小,以字节为单位。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

使用RegSetValueExA函数可以设置注册表项中指定值的数据。通过指定dwType参数来确定数据的类型,并将要设置的数据存储在lpData缓冲区中

RegDeleteValue      删除键值项

LSTATUS RegDeleteValueA(HKEY   hKey,LPCSTR lpValueName
);

下面是对该函数参数的解释:

  • hKey:表示要删除值的注册表项的句柄。

  • lpValueName:表示要删除的注册表项中的值的名称。字符串类型,使用 ANSI 编码。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

使用RegDeleteValueA函数可以删除注册表项中指定的值。通过指定hKey参数来确定要删除值的注册表项的位置,通过指定lpValueName参数来指定要删除的值的名称。

测试代码

#include <Windows.h>
#include <iostream>int main() {// 打开注册表项HKEY hKey;if (RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\MyApp", 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS) {std::cout << "Failed to open registry key." << std::endl;return 1;}// 查询注册表项中的值DWORD dwType;DWORD dwValue;DWORD dwSize = sizeof(DWORD);if (RegQueryValueExA(hKey, "MyValue", nullptr, &dwType, reinterpret_cast<LPBYTE>(&dwValue), &dwSize) == ERROR_SUCCESS) {std::cout << "Value found: " << dwValue << std::endl;} else {std::cout << "Value not found." << std::endl;}// 设置注册表项中的值DWORD dwNewValue = 123;if (RegSetValueExA(hKey, "MyValue", 0, REG_DWORD, reinterpret_cast<const BYTE*>(&dwNewValue), sizeof(DWORD)) == ERROR_SUCCESS) {std::cout << "Value set successfully." << std::endl;} else {std::cout << "Failed to set value." << std::endl;}// 删除注册表项中的值if (RegDeleteValueA(hKey, "MyValue") == ERROR_SUCCESS) {std::cout << "Value deleted successfully." << std::endl;} else {std::cout << "Failed to delete value." << std::endl;}// 关闭注册表项RegCloseKey(hKey);return 0;
}

子健和键值的枚举

RegEnumKeyEx         子键枚举函数

LSTATUS RegEnumKeyExA(HKEY      hKey,DWORD     dwIndex,LPSTR     lpName,LPDWORD   lpcchName,LPDWORD   lpReserved,LPSTR     lpClass,LPDWORD   lpcchClass,PFILETIME lpftLastWriteTime
);

下面是对该函数参数的解释:

  • hKey:表示要枚举子项的注册表项的句柄。

  • dwIndex:表示要枚举的子项的索引。使用0开始的索引。

  • lpName:指向一个缓冲区,用于存储返回的子项名称。

  • lpcchName:指向一个变量,用于指定lpName缓冲区的大小。在调用函数之前,应将其设置为缓冲区大小(以字节为单位),并在函数调用后,它将被设置为实际写入到lpName缓冲区中的字节数(不包括终止null字符)。

  • lpReserved:保留参数,必须为NULL。

  • lpClass:指向一个缓冲区,用于存储返回的子项的类名(可选)。可以将该参数设置为NULL,如果不需要子项的类名。

  • lpcchClass:指向一个变量,用于指定lpClass缓冲区的大小。在函数调用之前,应将其设置为缓冲区大小(以字节为单位),并在函数调用后,它将被设置为实际写入到lpClass缓冲区中的字节数(不包括终止null字符)。

  • lpftLastWriteTime:指向一个FILETIME结构体的指针,用于存储子项的最后修改时间。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

使用RegEnumKeyExA函数可以枚举注册表项中的子项。通过指定hKey参数来确定要枚举子项的注册表项的位置,通过指定dwIndex参数来指定要枚举的子项的索引,然后将子项名称存储在lpName缓冲区中。

RegEnumValue     枚举键值

LSTATUS RegEnumValueA(HKEY    hKey,DWORD   dwIndex,LPSTR   lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE  lpData,LPDWORD lpcbData
);

下面是对该函数参数的解释:

  • hKey:表示要枚举值的注册表项的句柄。

  • dwIndex:表示要枚举的值的索引。使用0开始的索引。

  • lpValueName:指向一个缓冲区,用于存储返回的值的名称。

  • lpcchValueName:指向一个变量,用于指定lpValueName缓冲区的大小。在调用函数之前,应将其设置为缓冲区大小(以字节为单位),并在函数调用后,它将被设置为实际写入到lpValueName缓冲区中的字节数(不包括终止null字符)。

  • lpReserved:保留参数,必须为NULL。

  • lpType:指向一个变量,用于接收值的类型。可以将该参数设置为NULL,如果不需要值的类型。

  • lpData:指向一个缓冲区,用于存储值的数据。

  • lpcbData:指向一个变量,用于指定lpData缓冲区的大小。在函数调用之前,应将其设置为缓冲区大小(以字节为单位),并在函数调用后,它将被设置为实际写入到lpData缓冲区中的字节数。

函数返回值:返回一个LSTATUS类型的值,代表函数执行的结果状态码。如果函数成功执行,返回值将是ERROR_SUCCESS

使用RegEnumValueA函数可以枚举注册表项中的值。通过指定hKey参数来确定要枚举值的注册表项的位置,通过指定dwIndex参数来指定要枚举的值的索引,然后将值的名称存储在lpValueName缓冲区中,并将值的数据存储在lpData缓冲区中。

测试代码


#include <iostream>
#include <windows.h>using namespace stdvoid EnumValue()
{// 遍历HKEY_CURRENT_USER\SOFTWARE\360se6// 打开键HKEY hKey360se6  = NULL;LONG lRet  = RegCreateKey(HKEY_CURRENT_USER, "SOFTWARE\\360se6", &hKey360se6);if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "打开结点失败", "提示", MB_OK);return;}// 获取值的个数DWORD dwValCnt  = 0;lRet  = RegQueryInfoKey(hKey360se6, NULL, NULL, NULL, NULL, NULL, NULL,&dwValCnt, NULL, NULL, NULL, NULL);// 遍历值for (DWORD dwIdx  = 0; dwIdx  < dwValCnt; dwIdx++){char szBuff[MAXWORD] = {};DWORD dwNameLen  = sizeof(szBuff);RegEnumValue(hKey360se6, dwIdx, szBuff, &dwNameLen, NULL, NULL, NULL, NULL);cout  << szBuff  << endl;}RegCloseKey(hKey360se6);
}int main()
{// 枚举值EnumValue();// 创建结点(项)HKEY hKey720  = NULL;LONG lRet  = RegCreateKey(HKEY_CURRENT_USER, "SOFTWARE\\360\\720", &hKey720);if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "创建结点失败", "提示", MB_OK);return 0;}// 删除key‐value对lRet  = RegDeleteValue(hKey720, "测试");if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "删除key‐value对失败", "提示", MB_OK);return 0;}// 删除指定键lRet  = RegDeleteKey(HKEY_CURRENT_USER, "SOFTWARE\\360\\720");if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "删除子键720失败", "提示", MB_OK);return 0;}// 添加新的key‐value对char szBuff[] = { "hello register" };lRet  = RegSetValueEx(hKey720, "测试", 0, REG_SZ, (PBYTE)szBuff, sizeof(szBuff));if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "添加新的key‐value对失败", "提示", MB_OK);return 0;}DWORD dwVal  = 0x12345678;lRet  = RegSetValueEx(hKey720, "数值", 0, REG_DWORD, (PBYTE)&dwVal, sizeof(dwVal));if (lRet  != ERROR_SUCCESS){MessageBox(NULL, "添加新的key‐value对失败", "提示", MB_OK);return 0;}RegCloseKey(hKey720);std::cout  << "Hello World!\n";return 0;
}

常用注册表操作

禁用快捷菜单的”发送到“菜单项

打开计算机\HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo 删除默认值。如果要恢复,将默认值设置为 {7BA4C740-9E81-11CF-99D3-00AA004AE837}

删除快捷方式箭头

打开计算机\HKEY_CLASSES_ROOT\lnkfile,删除IsShortcut键值

隐藏桌面图标

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建名称为NoSetFolders键值,并设置数据为1

禁止访问任务管理器

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System,修改DisableTaskmgr键值的数据为1。如果没有DisableTaskmgr键值,就创建一个。

在桌面显示Windows版本

打开计算机\HKEY_CURRENT_USER\Control Panel\Desktop,修改PaintDesktopVersion键值的数据为1

隐藏”重新启用“、”睡眠”和“休眠”命令

打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,新建一个NoClose键值,并设置数据为1

禁用计算机中的USB端口

打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR,修改Start键值数据为4

配置开机启动项

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/205792.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django路由分发

首先明白一点&#xff0c;Django的每一个应用下都可以有自己的templates文件夹&#xff0c;urls.py文件夹&#xff0c;static文件夹&#xff0c;基于这个特点&#xff0c;Django能够很好的做到分组开发&#xff08;每个人只写自己的app&#xff09;&#xff0c;作为老大&#x…

使用tomcat搭建简易文件服务器

步骤 1、在本机另外部署一个tomcat作为文件服务器 可以像我这样将tomcat文件复制一个做为服务器 2、在webapps下新建文件夹uploadfiles&#xff0c;这个文件夹就是用来存储上传的文件的 &#xff08;记住一定要是在作为服务器的tomcat的webapps下&#xff09; 3、修改conf/…

Redis集群模式

Redis集群主要有三种模式 主从复制模式&#xff08;Master-Slave&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Cluster模式 主从复制模式&#xff1a;适用于数据备份和读写分离场景&#xff0c;配置简单&#xff0c;但在主节点故障时需要手动切换。哨兵模式&…

vue005——vue组件入门(非单文件组件和单文件组件)

一、非单文件组件 1.1、单文件组件的使用 1.1.1、局部注册 1、第一步&#xff1a;创建school组件 2、第二步&#xff1a;注册组件&#xff08;局部注册&#xff09; 3、第三步&#xff1a;使用组件&#xff08;编写组件标签&#xff09; <!DOCTYPE html> <html>…

kettle入门教程

一、概述 1.什么是kettle Kettle是一款开源的ETL(Extract-Transform-Load)工具&#xff0c;纯java编写&#xff0c;可以在Window、Linux、Unix上运行&#xff0c;绿色无需安装&#xff0c;数据抽取高效稳定。 2.kettle工程存储方式 &#xff08;1&#xff09;以XML形式存储 …

37 - 数据库参数设置优化,失之毫厘差之千里

MySQL 是一个灵活性比较强的数据库系统&#xff0c;提供了很多可配置参数&#xff0c;便于我们根据应用和服务器硬件来做定制化数据库服务。如果现在让你回想&#xff0c;你可能觉得在开发的过程中很少去调整 MySQL 的配置参数&#xff0c;但我今天想说的是我们很有必要去深入了…

什么是PDM图纸管理系统?PDM图纸管理系统主要功能有哪些?

PDM (Product Data Management) 图纸管理系统 是用于管理企业内部图纸和相关文件的软件系统。它提供了一个集中存储、组织和跟踪图纸和文件的平台&#xff0c;以确保团队成员能够轻松访问、共享和更新所需的工程设计和制造数据。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺…

Kubernetes(K8s)资源管理-03

资源管理 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务&#xff0c;所谓的部署服务&#xff0c;其实就是在kubernetes集…

Stable-Diffusion——Windows部署教程

Windows 参考文章&#xff1a;从零开始&#xff0c;手把手教你本地部署Stable Diffusion Webui AI绘画(非最新版) 一键脚本安装 默认环境安装在项目路径的venv下 conda create -n df_env python3.10安装pytorch&#xff1a;&#xff08;正常用国内网就行&#xff09; python -…

Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 本文所说的方法是在出现文件名乱码情况下&#xff0c;如何恢复文件名的正确中文名称&#xff0c;并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现&#xff0c;往往是系统、浏览器、网站三方面因素共…

Redis 通用命令和数据类型

get和set get和set两个命令是最基本也是最常用的命令&#xff0c;主要用于操作字符串类型的数据。 1.SET 命令: SET 命令用于设置指定 key 的值。如果 key 已经持有其他值&#xff0c;SET 就覆写旧值&#xff0c;无视类型。具体的命令格式如下&#xff1a; SET key value例如…

CentOS 7 部署 Nacos (单机版)

CentOS 7 部署 Nacos &#xff08;单机版&#xff09; 1. 下载 Nacos 安装包 历史版本&#xff1a;https://github.com/alibaba/nacos/releases/ 我选的是 2.1.0 版本&#xff0c;https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz 2. …

PostgreSQL-SQL联表查询LEFT JOIN 数据去重复

我们在使用left join联表查询时&#xff0c;如果table1中的一条记录对应了table2的多条记录&#xff0c;则会重复查出id相同的多条记录。 1、解决方法一 SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id t2.tid 第一种方法我们发现还是有重复数据 2、解决方法二…

深度学习毕设项目 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

Elasticsearch:FMA 风格的向量相似度计算

作者&#xff1a;Chris Hegarty 在 Lucene 9.7.0 中&#xff0c;我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在&#xff0c;我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算&#xff0c;…

RNN-T Training,RNN-T模型训练详解——语音信号处理学习(三)(选修三)

参考文献&#xff1a; Speech Recognition (option) - RNN-T Training哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 Alignment Train - 8 - 知乎 (zhihu.com) 本次省略所有引用论文 目录 一、如何将 Alignment 概率加和 对齐方式概率如何计算 概率加和计…

OBC、DCDC自动化测试解决方案!

OBC(车载充电机&#xff09;和DCDC&#xff08;直流-直流变换器&#xff09;是电动汽车的核心部件&#xff0c;DCDC和OBC的功能质量对于整车的性能和安全性至关重要。在OBC和DCDC&#xff0c;以及整车开发测试过程中&#xff0c;需要对OBC和DCDC进行功能和性能方面进行全面的测…

1990-2021年上市公司排污费和环境保护税数据

1990-2021年上市公司排污费和环境保护税数据 1、时间&#xff1a;1990-2021年 2、指标&#xff1a; 证券代码、会计期间、year、month、行业、应缴排污费/环境保护税、其中&#xff1a;大气污染物、其中&#xff1a;水污染物、其中&#xff1a;固体废物、其中&#xff1a;噪…

京东API商品详情接口,通过商品ID获取商品名称,淘宝主图,价格,颜色规格尺寸,库存,SKU数据等调用示例

要接入京东API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 注册并获取API密钥&#xff1a;在使用API接口之前&#xff0c;需要注册并获取API密钥。API密钥是识别身份的唯一标识符。每个API接口都有自己的注册、认证和授权过程&#xff0c;因…

设计规则:模块化的力量

这是一本比较冷门的书**《设计规则&#xff1a;模块化的力量》**&#xff0c;虽然豆瓣上只有58个评价&#xff0c;但是确实能学到很多东西。 这本书对我非常深远。不是是投资&#xff0c;创业&#xff0c;还是其他领域&#xff0c;模块化思想都能帮上你。这本书告诉我们生万物…