WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析三

上一篇:WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析二
如果有错误欢迎指正批评,在此只作为科普和参考。

文章目录

  • GetTcpTable&GetExtendedTcpTable:获取TCP连接的信息
  • GetOwnerModuleFromTcpEntry:获取与特定TCP连接关联的模块信息
    • TcpipOwnerModuleInfoBasic&TcpipOwnerModuleInfoEnhanced是什么
  • GetUdpTable&GetExtendedUdpTable:用于获取UDP监听器信息
    • MIB_UDPTABLE 结构的指针都包含什么信息?
  • GetOwnerModuleFromUdpEntry&GetTcpTable2:用于获取与 UDP 和 TCP 相关的网络信息
    • MIB_UDPROW_OWNER_MODULE 结构都包含什么信息?
    • MIB_TCPTABLE2 结构的指针都包含什么信息?

GetTcpTable&GetExtendedTcpTable:获取TCP连接的信息

//
//                                                                          //
// Gets TCP Connection/UDP Listener Table                                   //
//                                                                          //
//#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion#pragma region Application Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetTcpTable(_Out_writes_bytes_opt_(*SizePointer)   PMIB_TCPTABLE TcpTable,_Inout_                          PULONG        SizePointer,_In_                             BOOL          Order);IPHLPAPI_DLL_LINKAGE
DWORD
WINAPI
GetExtendedTcpTable(_Out_writes_bytes_opt_(*pdwSize)        PVOID           pTcpTable,_Inout__When_(ulAf == AF_INET, _Deref_in_range_(>=, sizeof(MIB_TCPTABLE)))_When_((TableClass == TCP_TABLE_OWNER_PID_LISTENER ||TableClass == TCP_TABLE_OWNER_PID_CONNECTIONS ||TableClass == TCP_TABLE_OWNER_PID_ALL) && ulAf == AF_INET6,_Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_PID)))_When_((TableClass == TCP_TABLE_OWNER_MODULE_LISTENER ||TableClass == TCP_TABLE_OWNER_MODULE_CONNECTIONS ||TableClass == TCP_TABLE_OWNER_MODULE_ALL) && ulAf == AF_INET6,_Deref_in_range_(>=, sizeof(MIB_TCP6TABLE_OWNER_MODULE)))PDWORD          pdwSize,_In_                          BOOL            bOrder,_In_                          ULONG           ulAf,_In_                          TCP_TABLE_CLASS TableClass,_In_                          ULONG           Reserved);#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

这段代码是Windows网络编程相关的API函数声明,它们定义在Windows的IP Helper API(iphlpapi.h头文件)中。GetTcpTable和GetExtendedTcpTable函数用于获取TCP连接的信息。下面是每个函数的简要说明:

  1. GetTcpTable 函数:

    • 功能:获取一个包含当前所有TCP连接、监听端口和其他TCP表条目的表。
    • 参数:
      • TcpTable:指向一个MIB_TCPTABLE结构的指针,该结构将接收TCP表。
      • SizePointer:一个指向变量的指针,该变量在输入时表示TcpTable的大小,在输出时表示填充TcpTable所需的实际大小。
      • Order:如果为TRUE,则返回的TCP表将按连接状态排序;如果为FALSE,则不排序。
  2. GetExtendedTcpTable 函数:

    • 功能:获取一个扩展的TCP连接表,可以提供比GetTcpTable更多的信息,比如每个连接的进程ID或模块信息。
    • 参数:
      • pTcpTable:指向缓冲区的指针,该缓冲区将接收扩展的TCP表。
      • pdwSize:指向变量的指针,该变量在输入时表示pTcpTable的大小,在输出时表示填充pTcpTable所需的实际大小。
      • bOrder:与GetTcpTable中的Order参数相同。
      • ulAf:指定地址族(AF_INET表示IPv4,AF_INET6表示IPv6)。
      • TableClass:指定需要哪种类型的TCP表(例如,只包含监听端口的表,只包含连接的表,或者两者都包含)。
      • Reserved:保留参数,必须设置为0。

这段代码还包含了预处理指令,这些指令用于确保只有在特定的Windows平台版本下才编译这些函数。WINAPI_FAMILY_PARTITION宏用于确定当前的Windows平台版本,以确保代码只在一个特定的应用程序家族(如桌面、系统、游戏或通用Windows平台)中编译。这有助于确保API的可用性与应用程序的目标平台相匹配。

GetOwnerModuleFromTcpEntry:获取与特定TCP连接关联的模块信息

#pragma region Desktop Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)IPHLPAPI_DLL_LINKAGE
DWORD
WINAPI
GetOwnerModuleFromTcpEntry(_In_                   PMIB_TCPROW_OWNER_MODULE      pTcpEntry,_In_                   TCPIP_OWNER_MODULE_INFO_CLASS Class,_Out_writes_bytes_(*pdwSize) PVOID                         pBuffer,_Inout_                PDWORD                        pdwSize);#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

这段代码是Windows网络编程中用于获取与特定TCP连接相关的拥有者模块信息的API函数声明。这个函数声明位于Windows的IP Helper API(iphlpapi.h头文件)中。以下是函数的详细说明:

函数:GetOwnerModuleFromTcpEntry

功能

  • 此函数用于获取与指定TCP连接条目相关的拥有者模块信息。拥有者模块信息可以用来确定哪个进程或哪个网络模块拥有特定的TCP连接。

参数

  1. pTcpEntry:指向MIB_TCPROW_OWNER_MODULE结构的指针,该结构包含要查询的TCP连接的索引信息。
  2. Class:指定要检索的信息类型。TCPIP_OWNER_MODULE_INFO_CLASS是一个枚举类型,可以是以下几种值之一:
    • TcpipOwnerModuleInfoBasic
    • TcpipOwnerModuleInfoEnhanced
  3. pBuffer:指向一个缓冲区,该缓冲区将接收请求的信息。缓冲区的内容取决于Class参数的值。
  4. pdwSize:指向一个变量的指针,该变量在输入时表示pBuffer的大小,在输出时表示填充pBuffer所需的实际大小。

返回值

  • 函数返回一个DWORD值,表示操作的结果。常见的返回值包括:
    • NO_ERROR:成功完成操作。
    • ERROR_INSUFFICIENT_BUFFER:提供的缓冲区大小不足以存储请求的信息。
    • ERROR_INVALID_PARAMETER:一个或多个参数无效。

使用场景

  • 当需要确定哪个网络模块或进程拥有特定的TCP连接时,可以使用此函数。这对于调试网络应用、安全审计或网络监控等场景非常有用。

这段代码还包含了预处理指令,这些指令用于确保只有在特定的Windows平台版本下才编译这个函数。WINAPI_FAMILY_PARTITION宏用于确定当前的Windows平台版本,以确保代码只在一个特定的应用程序家族(如桌面、系统、游戏)中编译。这有助于确保API的可用性与应用程序的目标平台相匹配。

TcpipOwnerModuleInfoBasic&TcpipOwnerModuleInfoEnhanced是什么

TcpipOwnerModuleInfoBasicTcpipOwnerModuleInfoEnhancedTCPIP_OWNER_MODULE_INFO_CLASS 枚举的成员,用于指定在调用 GetOwnerModuleFromTcpEntry 函数时希望检索的模块信息类型。这些枚举值决定了函数返回的信息详细程度。

  1. TcpipOwnerModuleInfoBasic:这是一个基础的信息类,它返回与 TCP 连接相关联的模块的基本信息。根据搜索结果,TCPIP_OWNER_MODULE_BASIC_INFO 结构体包含两个成员:pModuleNamepModulePath。这些成员分别指向模块的名称和包括模块名称的完整路径。如果模块所有者是系统内核,则这些成员指向包含“System”的宽字符串。TCPIP_OWNER_MODULE_BASIC_INFO 结构在 Windows Vista 及更高版本中定义于 iprtrmib.h 头文件中。

  2. TcpipOwnerModuleInfoEnhanced:这通常表示更详细的信息类,可能包括模块的所有者信息、模块路径以及其他可能与模块关联的额外数据。不过,根据搜索结果,TCPIP_OWNER_MODULE_INFO_CLASS 枚举中只提到了 TCPIP_OWNER_MODULE_INFO_BASIC 作为一个常量,没有提及 TcpipOwnerModuleInfoEnhanced。这可能意味着在当前的上下文中只有一个基础级别的信息类可用。

需要注意的是,这些信息类用于 GetOwnerModuleFromTcpEntry 函数,该函数可以查询给定 TCP 连接条目的模块所有者信息。这些信息对于诊断网络问题或进行网络安全分析非常有用。由于这是一个比较专业的API,使用时需要有一定的网络编程和Windows编程知识。

GetUdpTable&GetExtendedUdpTable:用于获取UDP监听器信息

#pragma region Application Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetUdpTable(_Out_writes_bytes_opt_(*SizePointer)   PMIB_UDPTABLE UdpTable,_Inout_                          PULONG        SizePointer,_In_                             BOOL          Order);IPHLPAPI_DLL_LINKAGE
DWORD
WINAPI
GetExtendedUdpTable(_Out_writes_bytes_opt_(*pdwSize)    PVOID           pUdpTable,_Inout_                       PDWORD          pdwSize,_In_                          BOOL            bOrder,_In_                          ULONG           ulAf,_In_                          UDP_TABLE_CLASS TableClass,_In_                          ULONG           Reserved);#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

这段代码是Windows IP Helper API中用于获取UDP监听器信息的函数声明。这些函数允许查询系统上的UDP端点信息,包括监听的端口和相关的统计数据。以下是每个函数的简要说明:

  1. GetUdpTable 函数:

    • 功能:获取一个包含所有UDP监听端口的表格。
    • 参数:
      • UdpTable:指向一个MIB_UDPTABLE结构的指针,该结构将接收UDP表。
      • SizePointer:一个指向变量的指针,该变量在输入时表示UdpTable的大小,在输出时表示填充UdpTable所需的实际大小。
      • Order:如果为TRUE,则返回的UDP表将按端口号排序;如果为FALSE,则不排序。
  2. GetExtendedUdpTable 函数:

    • 功能:获取一个扩展的UDP表,可以提供比GetUdpTable更多的信息,比如与每个UDP端口关联的进程ID或模块信息。
    • 参数:
      • pUdpTable:指向缓冲区的指针,该缓冲区将接收扩展的UDP表。
      • pdwSize:指向一个变量的指针,该变量在输入时表示pUdpTable的大小,在输出时表示填充pUdpTable所需的实际大小。
      • bOrder:与GetUdpTable中的Order参数相同。
      • ulAf:指定地址族(AF_INET表示IPv4,AF_INET6表示IPv6)。
      • TableClass:指定需要哪种类型的UDP表(例如,只包含监听端口的表,或者包含更多详细信息的表)。
      • Reserved:保留参数,必须设置为0。

这些函数对于网络编程、监控网络活动、调试网络应用或进行网络安全分析等场景非常有用。它们可以帮助开发者或系统管理员了解系统上的UDP端口使用情况。

代码中的预处理指令确保只有在特定的Windows平台版本下才编译这些函数。WINAPI_FAMILY_PARTITION宏用于确定当前的Windows平台版本,以确保代码只在一个特定的应用程序家族(如应用程序、系统、游戏)中编译。这有助于确保API的可用性与应用程序的目标平台相匹配。

MIB_UDPTABLE 结构的指针都包含什么信息?

MIB_UDPTABLE 结构的指针指向一个包含本地计算机上所有 UDP 侦听器信息的表。这个表由多个 MIB_UDPROW 结构组成,每个 MIB_UDPROW 结构代表一个 UDP 侦听器。以下是 MIB_UDPTABLE 结构包含的信息:

  1. dwNumEntries:一个 DWORD 类型的变量,表示 MIB_UDPTABLE 结构中 MIB_UDPROW 元素的数量。这个值指示了表中有多少个 UDP 侦听器。

  2. table:一个数组,其中的每个元素都是 MIB_UDPROW 结构。每个 MIB_UDPROW 结构包含以下信息:

    • dwLocalAddr:一个 DWORD 类型的变量,表示侦听器的本地 IP 地址。这个地址以网络字节序(big-endian)存储。
    • dwLocalPort:一个 DWORD 类型的变量,表示侦听器的本地端口号。这个端口号以网络字节序存储。
    • dwRemoteAddr:一个 DWORD 类型的变量,表示远程 IP 地址。这个地址以网络字节序存储。对于侦听器来说,这个值通常是 0,因为侦听器等待来自任何远程地址的连接。
    • dwRemotePort:一个 DWORD 类型的变量,表示远程端口号。这个端口号以网络字节序存储。对于侦听器来说,这个值通常是 0。

MIB_UDPTABLE 结构通常用于网络诊断和监控工具,以获取和显示本地计算机上的 UDP 侦听器信息。这些信息可以帮助识别正在运行的服务、检测潜在的安全问题以及优化网络性能。

需要注意的是,MIB_UDPTABLE 结构主要用于 IPv4 环境。对于 IPv6 环境,可以使用 GetExtendedUdpTable 函数和相应的结构来获取 UDP 表信息。

GetOwnerModuleFromUdpEntry&GetTcpTable2:用于获取与 UDP 和 TCP 相关的网络信息

#pragma region Desktop Family or OneCore Family or Games Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)IPHLPAPI_DLL_LINKAGE
DWORD
WINAPI
GetOwnerModuleFromUdpEntry(_In_                      PMIB_UDPROW_OWNER_MODULE      pUdpEntry,_In_                      TCPIP_OWNER_MODULE_INFO_CLASS Class,_Out_writes_bytes_(*pdwSize)    PVOID                         pBuffer,_Inout_                   PDWORD                        pdwSize);#if (NTDDI_VERSION >= NTDDI_VISTA)
IPHLPAPI_DLL_LINKAGE
ULONG
WINAPI
GetTcpTable2(_Out_writes_bytes_opt_(*SizePointer)   PMIB_TCPTABLE2 TcpTable,_Inout_                          PULONG         SizePointer,_In_                             BOOL           Order);
#endif // (NTDDI_VERSION >= NTDDI_VISTA)#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */
#pragma endregion

这段代码展示了两个 Windows API 函数的声明,它们用于获取与 UDP 和 TCP 相关的网络信息。这些函数被包裹在条件编译块中,这意味着它们只在指定的 Windows API 家族中可用,包括桌面(Desktop)、OneCore 和游戏(Games)家族。

  1. GetOwnerModuleFromUdpEntry 函数:

    • 功能:获取与特定 UDP 条目关联的模块的所有者信息。
    • 参数:
      • pUdpEntry:指向 MIB_UDPROW_OWNER_MODULE 结构的指针,该结构包含了要查询的 UDP 条目的信息。
      • Class:指定要检索的模块信息的类别,例如 TCPIP_OWNER_MODULE_INFO_BASIC
      • pBuffer:指向一个缓冲区,该缓冲区将接收模块的所有者信息。
      • pdwSize:指向一个 DWORD 类型的变量,该变量在输入时指定 pBuffer 可以接收的字节数,在输出时返回实际写入 pBuffer 的字节数。
    • 返回值:返回 NO_ERROR(0)表示成功,否则返回错误代码。
  2. GetTcpTable2 函数(仅在 Windows Vista 及更高版本中可用):

    • 功能:获取本地计算机上的 IPv4 TCP 连接、侦听器和绑定的端点的扩展表。
    • 参数:
      • TcpTable:指向 MIB_TCPTABLE2 结构的指针,该结构将接收 TCP 表信息。
      • SizePointer:指向一个 ULONG 类型的变量,该变量在输入时指定 TcpTable 可以接收的字节数,在输出时返回实际写入 TcpTable 的字节数。
      • Order:一个布尔值,指示是否按本地端口号排序返回的表。
    • 返回值:返回 NO_ERROR(0)表示成功,否则返回错误代码。

这些函数提供了对网络连接和侦听器的详细信息,包括模块所有者信息,这对于网络诊断和安全分析非常有用。例如,GetOwnerModuleFromUdpEntry 函数可以帮助确定哪个应用程序或模块拥有特定的 UDP 端口,而 GetTcpTable2 函数可以提供关于 TCP 连接状态的详细信息,包括连接的本地和远程端点、状态和拥塞窗口等。

MIB_UDPROW_OWNER_MODULE 结构都包含什么信息?

MIB_UDPROW_OWNER_MODULE 结构包含以下信息:

  1. dwLocalAddr:本地计算机上的 UDP 终结点的 IPv4 地址,以网络字节序存储。如果值为零,则表示 UDP 侦听器愿意接受与本地计算机关联的任何 IP 接口的数据报。

  2. dwLocalPort:本地计算机上的 UDP 终结点的端口号,也以网络字节序存储。

  3. dwOwningPid:对 UDP 终结点的绑定函数发出调用的进程的进程 ID (PID)。如果 PID 不可用,此成员设置为 0。

  4. liCreateTimestamp:一个 LARGE_INTEGER 类型的变量,表示何时调用 UDP 终结点的绑定函数,以 FILETIME 格式存储。

  5. SpecificPortBind:一个标志,指示是否在上一个绑定操作中为该终结点指定了特定端口。

  6. dwFlags:一组标志,当前未使用此成员。

  7. OwningModuleInfo:一个 ULONGLONG 类型的数组,包含所有权信息的不透明数据。这个数组的大小由 TCPIP_OWNING_MODULE_SIZE 定义。

这些信息可以通过调用 GetExtendedUdpTable 函数获得,其中 TableClass 参数设置为 UDP_TABLE_OWNER_MODULEulAf 参数设置为 AF_INET

MIB_TCPTABLE2 结构的指针都包含什么信息?

MIB_TCPTABLE2 结构包含以下信息:

  1. dwNumEntries:一个 DWORD 类型的变量,表示 MIB_TCPTABLE2 结构中 MIB_TCPROW2 元素的数量。这个值指示了表中有多少个 TCP 连接。

  2. table:一个数组,其中的每个元素都是 MIB_TCPROW2 结构。每个 MIB_TCPROW2 结构包含以下信息:

    • dwState:TCP 连接的状态,可以是 MIB_TCP_STATE 枚举中的值之一,例如 MIB_TCP_STATE_LISTENMIB_TCP_STATE_ESTAB 等。
    • dwLocalAddr:本地计算机上的 TCP 连接的 IPv4 地址,以网络字节序存储。如果值为零,则表示侦听器可以接受任何接口上的连接。
    • dwLocalPort:本地计算机上的 TCP 连接的端口号,以网络字节序存储。
    • dwRemoteAddr:远程计算机上的 TCP 连接的 IPv4 地址。如果连接状态是 MIB_TCP_STATE_LISTEN,则此值没有意义。
    • dwRemotePort:远程计算机上的 TCP 连接的端口号。如果连接状态是 MIB_TCP_STATE_LISTEN,则此成员没有意义。
    • dwOwningPid:拥有该 TCP 连接的进程的进程 ID (PID)。
    • dwOffloadState:TCP 连接的卸载状态,指示该连接是否被卸载到网络接口卡或其他硬件以提高性能。

MIB_TCPTABLE2 结构通常由 GetTcpTable2 函数填充,该函数检索本地计算机上的 IPv4 TCP 连接表,并返回这些信息。这个结构提供了一种方式来枚举和检查系统上当前的 TCP 连接状态。

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

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

相关文章

MySQL-08.DDL-表结构操作-创建-案例

一.MySQL创建表的方式 1.首先根据需求文档定义出原型字段,即从需求文档中可以直接设计出来的字段 2.再在原型字段的基础上加上一些基础字段,构成整个表结构的设计 我们采用基于图形化界面的方式来创建表结构 二.案例 原型字段 各字段设计如下&…

深入理解线性表--顺序表

目录 顺序表- Seqlist -> sequence 顺序 list 表 顺序表的概念 问题与解答 顺序表的分类 静态顺序表 动态顺序表 问题与解答(递进式) 动态顺序表的实现 尾插 头插 尾删 头删 指定位置插入 指定位置删除 销毁 总结 前言:线性表是具有相同特性的一类数据结构…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测,每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象:PHP的排名再次下滑,创下了历史新低。这种变化对于PHP开发者和整个技术社区来说,意味着什么呢? P…

现代数字信号处理I-P3 MVUE学习笔记

目录 1. 参数估计问题的提出与本质 2. 估计的性质 2.1 Ancillary(多余估计) 例1,Ancillary估计量 2. Uniformly Optimal 3. Sufficiency充分性 3.1 统计量充分性定义 例2:利用充分统计量定义获取伯努利分布的充分统计量 …

Anaroute - 理论学习(一)

一、贡献: 框架能够在考虑特定约束的同时,高效地完成复杂AMS设计的布线,并实现签署质量的性能。 提出了一种对称性约束的分配算法,根据引脚位置分配合适的网络匹配要求新的引脚聚类策略,以实现规律性的布线模式&…

微知-Bluefield DPU使用flint烧录固件报错MFE_NO_FLASH_DETECTED是什么?MFE是什么?

文章目录 背景一些报错场景MFE是什么?有哪些MFE 背景 在DPU的fw操作flint的时候,很多命令都会报这个错误:MFE_NO_FLASH_DETECTED,早期很疑惑并且猜测MFE是Mellanox Firmware Engine。实际并不是,具体还得走到mellanox…

2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序

2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子,桌面呈圆形,桌腿随着铰链的活动可以平摊成一张平板(如图1-2所示)。桌腿由若干根木条组成,分成两组,每组各用一根钢筋将木条连接…

2024 第一次周赛

A: 题目大意 骑士每连续 i 天每天会得到 i 个金币,(i 1, 2, 3 , …),那么展开看每一天可以得到的金币数:1 2 2 3 3 3 4 4 4 5 5 5 5 5 … 可以发现就是1个1 ,2个2, 3个3…,那么我…

php 生成随机数

记录:随机数抽奖 要求:每次生成3个 1 - 10 之间可重复(或不可重复)的随机数,10次为一轮,每轮要求数字5出现6次、数字4出现3次、…。 提炼需求: 1,可设置最小数、最大数、每次抽奖生成随机数的个数、是否允许重复 2,可设置每轮指定数字的出现次数 3,可设置每轮的抽奖…

一维数组的引用

#define SIZE 5 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 for (i 0;i < SIZE;i) { printf("请输入你的第%d个值&#xff1a;",i1); scanf_s(&…

Spark常用RDD算子:transformation转换算子以及action触发算子

文章目录 1. 算子&#xff08;方法&#xff09;介绍2. 常用transformation算子2.1 map 2.2 flatMap2.3 filter2.4 distinct2.6 groupBy2.7 sortBy()2.8 k-v数据[(k,v),(k1,v1)] 3. 常用action算子 1. 算子&#xff08;方法&#xff09;介绍 rdd中封装了各种算子方便进行计算&a…

【Linux网络编程】网络基础 | Socket 编程基础

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

【动手学深度学习】6.3 填充与步幅(个人向笔记)

卷积的输出形状取决于输入形状和卷积核的形状在应用连续的卷积后&#xff0c;我们最终得到的输出大小远小于输入大小&#xff0c;这是由于卷积核的宽度和高度通常大于1导致的比如&#xff0c;一个 240 240 240240 240240像素的图像&#xff0c;经过10层 5 5 55 55的卷积后&am…

自然语言处理问答系统:技术进展、应用与挑战

自然语言处理&#xff08;NLP&#xff09;问答系统是人工智能领域的一个重要分支&#xff0c;它通过理解和分析用户的提问&#xff0c;从大量的文本数据中提取相关信息&#xff0c;并以自然语言的形式回答用户的问题。随着深度学习技术的发展&#xff0c;尤其是预训练语言模型&…

MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】

灰狼优化算法(Grey Wolf Optimizer, GWO)是一种基于灰狼社会行为的元启发式算法,主要模拟灰狼群体的捕猎行为(包括围攻、追捕、搜寻猎物等过程)。多旅行商问题(Multi-Traveling Salesman Problem, mTSP)是旅行商问题(TSP)的扩展,它涉及多个旅行商(车辆)从一个起点城…

深度学习:循环神经网络—RNN的原理

传统神经网络存在的问题&#xff1f; 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。 RNN神经网络 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09;是一种专门用于处理序列数据的神经网络。在处理序列输入时具有记忆性…

动态规划的优化与高级应用

姊妹篇&#xff1a; 动态规划基础与经典问题-CSDN博客 贪心算法&#xff1a;原理、应用与优化_最优解-CSDN博客​​​​​​贪心算法&#xff1a;原理、应用与优化_最优解-CSDN博客 一、动态规划的优化策 动态规划在提高时间效率的同时&#xff0c;往往会占用较多的空间。因…

【汇编语言】寄存器(CPU工作原理)(七)—— 查看CPU和内存,用机器指令和汇编指令编程

文章目录 前言1. 预备知识&#xff1a;Debug的使用1.1 什么是Debug&#xff1f;1.2 我们用到的Debug功能1.3 进入Debug1.3.1 对于16位或者32位机器的进入方式1.3.2 对于64位机器的进入方式 1.4 R命令1.5 D命令1.6 E命令1.7 U命令1.8 T命令1.9 A命令 2. 总结3. 实操练习结语 前言…

grpc的python使用

RPC 什么是 RPC &#xff1f; RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;是一种计算机通信协议&#xff0c;允许一个程序&#xff08;客户端&#xff09;通过网络向另一个程序&#xff08;服务器&#xff09;请求服务&#xff0c;而无需了解…

笔试算法总结

文章目录 题目1题目2题目3题目4 题目1 使用 StringBuilder 模拟栈的行为&#xff0c;通过判断相邻2个字符是否相同&#xff0c;如果相同就进行删除 public class Main {public static String fun(String s) {if (s null || s.length() < 1) return s;StringBuilder builde…