InfiniBand可靠连接(RC)模式:设计原理、核心机制与应用实践

引言

InfiniBand作为一种高性能网络互连技术,广泛应用于超算集群、分布式存储和金融交易系统等领域。其可靠连接(Reliable Connection, RC)模式以硬件级的有序性、可靠性和低延迟特性成为关键场景的首选。本文结合技术原理、机制对比和实际应用,深入解析InfiniBand RC模式的核心设计。


一、有序性与可靠性保障机制

1. 严格按序交付
  • 链路层有序传输:InfiniBand的RC模式在链路层直接保证数据包按发送顺序传输,无需传输层额外排序。

  • 端到端连接管理:每个RC连接对应独立的队列对(QP),数据仅在固定QP间传输,避免多路径导致的乱序。

2. 序列号(PSN)与重传
  • 包序列号(PSN):每个数据包携带唯一PSN,接收端按PSN顺序验证数据完整性。

  • NACK触发选择性重传:若检测到PSN不连续(如收到PSN=5但期望PSN=3),接收端丢弃乱序包并发送NACK,要求仅重传缺失的PSN包(如PSN=3)。

  • 硬件加速重传:重传逻辑由网卡硬件(HCA)直接处理,延迟低至微秒级,无需CPU参与。

3. 与TCP的对比
特性InfiniBand RC模式TCP
乱序包处理丢弃乱序包,触发NACK重传缺失包缓存乱序包,等待重组
重传粒度仅重传NACK指定的缺失PSN包可能重传整个窗口(如快速重传)
延迟微秒级(硬件加速)毫秒级(依赖软件协议栈)
适用场景低乱序率的高性能网络高乱序率的复杂网络

二、信用机制(Credit-Based Flow Control)

1. 核心目标
  • 零丢包传输:通过预分配接收端缓冲区(信用槽位),避免发送速率超过接收能力。

  • 高效带宽利用:动态匹配发送端与接收端的处理能力,最大化吞吐量。

2. 工作原理
  • 信用初始化:连接建立时,接收端告知发送端初始信用值(即接收队列深度)。

  • 信用消耗与返还

    • 发送端每发送一个数据包消耗一个信用,信用耗尽时暂停发送。

    • 接收端每处理完一个包返还一个信用,通过硬件自动发送信用更新包。

  • 硬件级实现:信用管理完全由网卡硬件完成,无CPU开销。

3. 性能调优
  • 接收队列深度(RQD):增大RQD可提升信用上限,但需权衡内存消耗。

  • 信用更新策略:高频更新减少发送阻塞,但增加控制包开销。


三、NACK机制与乱序处理

1. 乱序数据包处理逻辑
  • 丢弃策略:接收端直接丢弃所有超出当前期望PSN窗口的乱序包,不进行缓存。

  • NACK触发重传:接收端发送NACK指明缺失的PSN范围,发送端仅重传指定数据包。

2. 设计优势
  • 低内存开销:无需维护乱序缓冲区,适合大规模数据传输。

  • 低延迟:硬件加速的NACK/重传机制显著降低恢复时间。

3. 局限性
  • 依赖网络质量:假设链路层乱序率极低,若网络环境恶劣,频繁重传可能降低有效吞吐量。

  • 不适用公网场景:适用于专用高性能网络(如HPC集群),而非复杂公网环境。


四、实际应用与驱动改造

1. IPoIB驱动改造实践
  • 目标:移除TCP/IP和以太网依赖,仅保留RC模式通信。

  • 关键步骤

    • 剥离协议栈:删除IP封包/解包逻辑,直接操作InfiniBand QP。

    • 重构网络接口:将net_device替换为RDMA CM接口,绕过Linux网络协议栈。

    • 性能验证:使用ibv_rc_pingpongperftest工具测试吞吐量与延迟。

2. 挑战与解决方案
  • 应用兼容性:需基于RDMA Verbs API重构应用程序,放弃标准Socket接口。

  • 硬件依赖:确保网卡固件和驱动支持纯RC模式,避免隐含的TCP/IP依赖。


五、适用场景与性能表现

1. 典型应用场景
  • 高性能计算(HPC):MPI通信、大规模并行计算。

  • 分布式存储:NVMe over Fabrics(NVMe-oF)、分布式文件系统。

  • 金融交易系统:微秒级延迟的订单匹配与风控。

2. 性能指标
  • 延迟:RC模式在小消息场景下可达到1微秒以下的端到端延迟。

  • 吞吐量:单端口100Gbps InfiniBand可实现**90%+**的线速吞吐。


六、总结

InfiniBand RC模式通过硬件级的有序性保障信用流量控制NACK重传机制,在专用高性能网络中实现了接近理论极限的可靠传输效率。其设计哲学是牺牲部分容错性以换取极致性能,与TCP的“适应复杂环境”形成鲜明对比。对于需要确定性与低延迟的场景(如超算、金融交易),RC模式是无可替代的选择;而在公网或高乱序环境中,仍需依赖TCP等自适应协议。未来,随着RDMA技术的普及,RC模式有望在更多领域展现其价值。

在TCP协议中,按顺序发送的数据包最终会被接收方按顺序接收,但这一过程可能涉及复杂的网络传输和协议处理机制。以下是详细解释:


1. TCP的可靠性与顺序性保证

TCP是面向连接的可靠传输协议,通过以下机制确保数据顺序性:

  • 序列号(Sequence Number):每个数据包都带有唯一的序列号,接收方根据序列号重组数据。

  • 接收缓冲区(Receive Buffer):接收方会缓存乱序到达的包,等待缺失的包到达后,再按顺序提交给应用层。

  • 重传机制:若检测到丢包(如超时或收到重复ACK),发送方会重传丢失的包,确保所有数据最终被接收。


2. 网络传输中的乱序现象

虽然TCP保证顺序性,但数据包在网络中可能以乱序到达接收方,原因包括:

  • 多路径路由:不同数据包可能通过不同路径传输,导致后发先至。

  • 网络拥塞或故障:部分路径的延迟或丢包可能打乱传输顺序。

示例

  • 发送方发送包1、包2、包3。

  • 网络导致包2先到达,包1延迟,包3随后到达。

  • TCP接收方会将包2和包3暂存,直到包1到达后,按1→2→3的顺序提交给应用层。


3. 例外情况与性能影响

  • 极端网络问题:若网络严重不稳定(如大量丢包或延迟),TCP仍会保证顺序,但应用层可能感受到延迟(需等待重传和重组)。

  • 吞吐量下降:乱序和重传会降低有效传输速率,但顺序性不受影响。


4. 总结

  • 按顺序发送的包会按顺序交付给应用层,这是TCP的核心特性。

  • 乱序发生在传输过程中,但由TCP协议在接收端修正,对应用透明。

结论:TCP通过序列号、缓冲区管理和重传机制,确保了数据按发送顺序被应用层接收,尽管网络传输可能存在乱序。

在 InfiniBand 的 可靠连接(Reliable Connection, RC)模式 下,按顺序发送的数据包会严格按顺序被接收,这是由其协议设计保证的核心特性之一。以下是具体分析:


1. RC 模式的基本特性

RC 模式是 InfiniBand 中一种面向连接的可靠传输模式,其核心特点包括:

  • 可靠性与顺序性:所有数据包按发送顺序交付,确保无丢失、无重复,且经过校验17。

  • 流控制机制:基于信用的流量控制(Credit-Based Flow Control),发送方仅在接收方有足够缓冲区时发送数据,避免因接收端资源不足导致丢包或乱序78。

  • 硬件级实现:InfiniBand 的传输层功能(如序列号管理、重传)由硬件直接处理,显著降低延迟和 CPU 开销17。


2. 有序交付的机制保障

RC 模式通过以下机制确保数据包顺序性:

  • 链路层有序传输:InfiniBand 的链路层(Link Layer)直接提供有序数据包交付,传输层无需额外排序,仅需验证序列完整性78。

  • 端到端连接管理:每个 RC 连接对应一个独立的队列对(QP),数据包仅在两个固定 QP 之间传输,避免了多路径导致的乱序17。

  • 重传机制:若检测到丢包或错误,发送方自动重传,确保接收方最终按序收到所有数据18。


3. 与 UC/UD 模式的对比

  • 不可靠连接(UC):虽然也是面向连接,但不保证数据包的交付和顺序性,适用于容错性强的场景(如实时流媒体)1。

  • 不可靠数据报(UD):无连接且不保证顺序,类似 UDP,适用于低开销的单播或多播场景18。

  • RC 的优势:相比 UC 和 UD,RC 通过硬件级可靠性和顺序性保障,成为高性能计算(HPC)和分布式存储等对数据一致性要求严格场景的首选17。


4. 性能影响与适用场景

  • 低延迟与高吞吐量:RC 模式在保证顺序性的同时,仍能通过 RDMA(远程直接内存访问)实现零拷贝传输,显著降低延迟(如测试中 RC 模式在小消息场景下的延迟可低至微秒级)18。

  • 适用场景:适用于需要严格顺序和可靠性的场景,如数据库事务、分布式锁服务、金融交易系统等17。


5. 例外情况与限制

尽管 RC 模式设计上保证顺序性,但以下极端情况可能影响实际表现:

  • 硬件故障:如 InfiniBand 适配器或交换机故障可能导致连接中断,需依赖上层协议或冗余设计恢复7。

  • 配置错误:错误的子网管理器(Subnet Manager)配置或缓冲区分配不当可能引发性能下降,但不会破坏顺序性67。


总结

在 InfiniBand 的 RC 模式 下,数据包按序发送后必然按序接收,这是其协议层和硬件机制共同保障的核心特性。与 TCP 的按序交付类似,但通过硬件加速和 RDMA 技术实现了更低的延迟和更高的吞吐量178。

在修改 IPoIB 驱动源码以适配 InfiniBand 可靠连接(RC)模式并移除所有 TCP/IP 和以太网相关部分时,需要深入分析驱动架构、核心模块依赖关系以及协议栈的交互逻辑。以下是具体分析和实施步骤:


一、可行性分析

1. IPoIB 驱动与 RC 模式的关系
  • IPoIB 的本质:IPoIB 是将 IP 协议运行在 InfiniBand 网络上的技术,其默认支持 Datagram 模式(不可靠) 和 Connected 模式(可靠,类似 RC 模式)13。Connected 模式通过 InfiniBand 的队列对(QP)和连接管理(CM)机制实现可靠传输,与 RC 模式的核心特性(有序性、可靠性)高度一致36。

  • TCP/IP 与以太网依赖:IPoIB 的默认实现依赖 Linux 网络协议栈(如 net_device 结构体、IP 封包/解包逻辑),但其底层数据传输可通过 InfiniBand 原生接口(如 ib_post_send/ib_post_recv)直接操作,理论上可以绕过 TCP/IP 和以太网封装36。

2. 技术难点
  • 协议栈剥离:需移除所有与 IP 封包(如 IPv4/IPv6 头)、以太网帧(如 MAC 地址处理)相关的逻辑,包括数据发送/接收路径中的封装/解封装代码36。

  • 网络设备抽象重构:IPoIB 驱动依赖 net_device 结构体注册为网络接口,若完全剥离 TCP/IP,需重新设计设备接口,直接对接 InfiniBand 的 RC 通信原语16。

  • 用户空间兼容性:标准应用程序(如 pingssh)依赖 Socket API,若完全去除 TCP/IP,需提供替代通信接口(如 RDMA Verbs API)5。


二、修改步骤与关键代码调整

1. 配置与编译选项
  • Kconfig 调整:在 drivers/infiniband/ulp/ipoib/Kconfig 中,移除对 TCP/IP 协议栈的依赖选项(如 CONFIG_INET),确保驱动仅编译 RC 模式相关代码2。

  • Makefile 精简:排除与以太网(如 ethool 支持)和 IP 协议(如 ipv6 模块)相关的源文件2。

2. 核心代码修改
  • 移除 IP 封包逻辑

    • 在数据发送路径(如 ipoib_start_xmit 函数)中,删除对 IP 头的封装代码,直接传递原始数据到 InfiniBand QP6。

    • 在接收路径(如 ipoib_ib_handle_rx 函数)中,跳过 IP 包解析,直接将 InfiniBand 数据提交给上层应用6。

  • 禁用以太网特性

    • 在设备初始化时(如 ipoib_dev_init),移除对以太网特性(如 NETIF_F_IP_CSUMNETIF_F_SG)的设置3。

    • 修改 ipoib_set_mode_rss 函数,强制锁定为 Connected 模式,禁用 Datagram 模式切换3。

  • 重构网络设备接口

    • 将 net_device 替换为自定义结构体,避免依赖 Linux 网络协议栈。例如,使用 RDMA CM(Connection Manager)直接管理 RC 连接65。

    • 移除与 ifconfigip 命令交互的 Netlink 接口代码(如 ipoib_netlink.c),改为通过 IB Verbs 或 sysfs 进行配置15。

3. 关键函数示例
  • 发送路径改造(以 ipoib_start_xmit 为例):

    // 原始代码(含 IP 封装)
    skb_push(skb, IPOIB_ENCAP_LEN); // 添加 IPoIB 封装头
    // 修改后(直接发送原始数据)
    ib_post_send(priv->qp, &wr, &bad_wr); // 通过 InfiniBand QP 发送
  • 接收路径改造(以 ipoib_ib_handle_rx 为例):

    // 原始代码(解析 IP 头)
    skb_pull(skb, IPOIB_ENCAP_LEN); // 剥离 IPoIB 封装头
    netif_receive_skb(skb); // 提交给网络协议栈
    // 修改后(直接提交数据)
    user_buffer_copy(skb->data, skb->len); // 用户空间直接访问

三、验证与测试

1. 功能验证
  • 连接建立:使用 ibv_rc_pingpong 工具测试 RC 模式的端到端通信,确认数据可按序可靠传输5。

  • 性能测试:通过 perftest 工具测量吞吐量和延迟,对比修改前后的性能差异6。

2. 兼容性检查
  • 协议栈依赖:使用 strace 跟踪系统调用,确认驱动不再触发 TCP/IP 相关操作(如 socketbind)5。

  • 内核日志分析:通过 dmesg 检查是否有 IP 或以太网相关的错误日志(如 WARN_ON(netif_running(dev)))3。


四、限制与注意事项

  1. 应用层适配:去除 TCP/IP 后,需基于 RDMA Verbs 或自定义 API 重写应用程序,无法直接使用标准 Socket 接口5。

  2. 硬件兼容性:需确保 InfiniBand 适配器支持纯 RC 模式,且固件/驱动无隐含的 TCP/IP 依赖6。

  3. 维护成本:此类修改会导致与上游内核版本脱节,需定期同步关键补丁(如安全修复)2。


五、总结

可以修改 IPoIB 驱动源码以仅支持 RC 模式并移除 TCP/IP 和以太网部分,但需彻底重构数据路径、网络设备接口及用户空间交互逻辑。此方案适用于需要极致性能(如 HPC 集群)且能接受应用层改造的场景。若需保留部分 IP 兼容性,可考虑折中方案(如保留轻量级 IP 头封装但禁用 TCP 校验和)36。

在InfiniBand的可靠连接(Reliable Connection, RC)模式中,信用机制(Credit-Based Flow Control) 是确保数据传输可靠性和高效性的核心机制之一。它通过硬件级的流量控制,避免接收端缓冲区溢出,同时最大化链路利用率。以下是其详细工作原理和意义:


一、信用机制的核心目标

  1. 防止接收端溢出:确保发送方不会发送超过接收端缓冲区容量的数据。

  2. 零丢包与低延迟:通过预分配的信用(缓冲区资源)实现无阻塞传输,避免因丢包触发的重传。

  3. 高效带宽利用:动态调整发送速率,匹配接收端处理能力。


二、信用机制的工作原理

1. 信用的定义
  • 信用(Credit) 代表接收端缓冲区中可用的**空闲槽位(Buffer Slot)**数量。

  • 每个槽位对应一个**数据包(Packet)消息分段(Message Segment)**的存储空间。

  • 信用由接收端主动通知发送端,通过硬件自动管理的**流量控制数据包(Flow Control Packet)**传递。

2. 初始化阶段
  • 连接建立时:接收端通过连接管理器(CM)告知发送端其初始信用值(即接收队列深度)。

  • 发送端限制:发送端仅能在当前可用信用范围内发送数据。

3. 数据传输过程
  • 发送端行为

    • 每发送一个数据包,消耗一个信用。

    • 当信用降为0时,暂停发送,等待接收端的新信用。

  • 接收端行为

    • 每处理完一个数据包(提交给应用层或释放缓冲区),释放一个信用槽位。

    • 定期或按需通过流量控制数据包将更新后的信用值反馈给发送端。

4. 信用更新方式
  • 显式更新:接收端主动发送信用更新包(如RC模式中的ACK包携带信用信息)。

  • 隐式更新:某些场景下,发送端通过接收端的ACK/NACK推断信用状态(较少见,多用于优化场景)。


三、信用机制的实现细节

1. 硬件加速
  • InfiniBand的信用管理完全由**网卡硬件(HCA, Host Channel Adapter)**实现,无需CPU参与。

  • 信用状态存储在HCA的队列对(QP)上下文中,通过**发送队列(SQ)接收队列(RQ)**协同工作。

2. 信用与窗口大小
  • 窗口大小(Window Size):发送端在等待信用更新前可发送的最大数据量,等于初始信用值。

  • 动态调整:高性能场景下,可通过扩大接收队列深度(增加信用)提升吞吐量,但需权衡内存开销。

3. 与重传机制的协同
  • 丢包处理:若数据包丢失或损坏,接收端发送NACK触发重传,但信用机制确保重传不会因缓冲区不足而失败。

  • 顺序性保障:信用机制与序列号(PSN, Packet Sequence Number)结合,确保重传后数据仍按序提交。


四、信用机制 vs. TCP流控

特性InfiniBand RC信用机制TCP滑动窗口
实现层级硬件(HCA网卡)软件(内核协议栈)
延迟微秒级(无CPU参与)毫秒级(需上下文切换)
开销零拷贝、无中断需内存拷贝、中断处理
动态调整固定信用(初始化时配置)动态窗口(根据拥塞控制算法调整)
适用场景高吞吐、低延迟(HPC、存储)通用网络

五、性能调优与配置建议

  1. 接收队列深度(RQD)

    • 增大队列深度可提升信用上限,减少发送端阻塞,但需更多内存。

    • 经验值:通常设置为发送端突发数据量的1.5~2倍。

  2. 信用更新频率

    • 高频更新减少发送端等待,但增加控制包开销。

    • 可通过InfiniBand子网管理器(SM)调整更新策略。

  3. 硬件配置

    • 启用HCA的自动信用返还功能(如Mellanox的Adaptive Routing)。

    • 使用RDMA技术绕过操作系统协议栈,进一步降低延迟。


六、总结

InfiniBand RC模式的信用机制通过硬件级流量控制实现了零丢包、按序交付和高吞吐量,其核心是通过动态管理接收端缓冲区信用,确保发送速率与接收能力严格匹配。这一机制是InfiniBand在超算、分布式存储等场景中性能卓越的关键设计之一。

在InfiniBand的可靠连接(RC)模式中,对乱序数据包的处理机制与TCP存在显著差异,其核心设计目标是低延迟和高吞吐量,同时确保严格的数据顺序性。以下是详细分析:


一、InfiniBand RC模式对乱序数据包的处理

  1. 基本机制

    • 序列号(PSN, Packet Sequence Number):每个数据包携带唯一的PSN,接收方按PSN顺序验证数据包。

    • 期望窗口(Expected Window):接收方维护一个连续的PSN窗口,仅接受当前期望的PSN及其后续连续包。

  2. 接收端行为

    • 乱序包的处理

      • 若接收方检测到PSN不连续(例如收到PSN=5,但期望PSN=3),则判定PSN=3的包丢失或延迟。

      • 丢弃乱序包:InfiniBand 不会缓存或重组乱序包,而是直接丢弃所有超出当前期望窗口的数据包。

    • 触发NACK

      • 接收方立即发送NACK(Negative Acknowledgment),指明缺失的PSN范围(如PSN=3)。

      • 发送方收到NACK后,仅重传缺失的PSN对应的数据包(而非所有未确认的包)。

  3. 示例场景

    • 发送方发送PSN=3、4、5、6。

    • 接收方收到PSN=5(乱序),立即丢弃PSN=5,并发送NACK要求重传PSN=3。

    • 发送方重传PSN=3后,接收方按顺序处理PSN=3→4→5→6。


二、与TCP的对比

特性InfiniBand RC模式TCP
乱序包处理丢弃乱序包,触发NACK重传缺失包缓存乱序包,等待缺失包到达后重组
重传范围仅重传NACK指定的缺失PSN包可能重传丢失包及后续未确认包(如快速重传)
缓冲区管理无需维护乱序缓冲区,降低内存开销需要接收缓冲区暂存乱序包
延迟影响低延迟(硬件加速NACK/重传)较高延迟(依赖软件协议栈重组)
适用场景高性能计算、低延迟网络(假设低乱序率)通用网络(容忍较高乱序和延迟)

三、设计原理与性能权衡

  1. 为何不缓存乱序包?

    • 硬件优化:InfiniBand的NACK/重传机制完全由**网卡硬件(HCA)**处理,重传延迟极低(微秒级),因此无需缓存乱序包。

    • 简化设计:避免维护复杂的乱序缓冲区,减少资源消耗,适合大规模并行场景。

    • 假设低乱序率:InfiniBand通常部署在高品质网络(如专用HPC集群),链路层乱序概率极低,丢弃乱序包的代价可控。

  2. 与TCP的本质区别

    • TCP的适应性:针对公网高乱序、高丢包环境,TCP通过滑动窗口和重组机制最大化吞吐量。

    • InfiniBand的严格性:为追求极致性能,牺牲部分容错性,依赖底层网络质量保证有序交付。


四、例外情况与优化

  1. 选择性重传(Selective Retransmission)

    • 某些InfiniBand实现支持选择性NACK,仅要求重传特定PSN,而非整个窗口。

    • 例如:若PSN=3丢失,但PSN=4-6到达,接收方可仅NACK PSN=3,发送方仅重传PSN=3。

  2. 端到端超时机制

    • 若NACK丢失,发送方依赖超时检测丢包(类似TCP的RTO),但超时阈值远低于TCP(通常为微秒级)。


五、总结

  • InfiniBand RC模式对乱序包的处理:直接丢弃乱序数据包并发送NACK触发重传,不在接收端重组数据

  • 与TCP的差异:TCP通过缓存和重组乱序包适应复杂网络,而InfiniBand依赖硬件加速和低乱序率的假设,优先保障低延迟与高吞吐量。

  • 适用性:InfiniBand的策略在高质量网络(如HPC集群)中高效,而TCP更适合不可预测的公网环境。

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

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

相关文章

【网络】Caddy 服务器如何提供 TLS(Transport Layer Security)(传输层安全协议)

这张图片介绍了 Caddy 服务器如何提供 TLS(传输层安全协议) 支持,确保通信的安全性。以下是对图片内容的详细分析 1. Caddy 是什么? Caddy 是一个现代化的 Web 服务器,以其简单易用和自动化的 HTTPS 支持而闻名。它内…

GHCTF web方向题解

upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…

《Python实战进阶》No21:数据存储:Redis 与 MongoDB 的使用场景

第21集:数据存储:Redis 与 MongoDB 的使用场景 摘要 在现代应用开发中,数据存储的选择直接影响系统的性能、扩展性和成本。Redis 和 MongoDB 是两种极具代表性的数据库技术,它们分别擅长解决不同场景下的问题。本文将深入探讨 Re…

【Agent】OpenManus-Prompt组件详细分析

1. 提示词架构概述 OpenManus 的提示词组件采用了模块化设计,为不同类型的智能体提供专门的提示词模板。每个提示词模块通常包含两种核心提示词:系统提示词(System Prompt)和下一步提示词(Next Step Prompt&#xff0…

蓝桥杯刷题周计划(第三周)

目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目代码题解分析 题目九题目代码题解分析 题目十题目代码题解分析 前言 大家好&#…

mysql学习-常用sql语句

1、安装mysql参考网上链接,进入mysql数据库 mysql -u root -p 2、数据库操作 2.1、创建数据库 create database 数据库名 default character set utf8; 2.2、显示所有数据库 show databases; 2.3、选择数据库 use elementInfo; 2.4、删除数据库 drop database…

(全)2024下半年真题 系统架构设计师 综合知识 答案解析01

系统架构设计师第二版教程VIP课程https://edu.csdn.net/course/detail/40283 操作系统 下列选项中不能作为预防死锁措施的是 。 A. 破坏“循环等待"条件 B. 破坏“不可抢占”条件 C. 破坏“互斥”条件 D. 破坏“请求和保持”条件 答案:C 解析&…

Java泛型程序设计使用方法

Java泛型程序设计是Java语言中一项强大的特性&#xff0c;它允许你编写更加通用和类型安全的代码。以下是Java泛型程序设计的使用方法和技巧&#xff1a; 1. 基本概念 泛型类&#xff1a;可以定义一个类&#xff0c;其中的某些类型是参数化的。 public class Box<T> {pr…

LeetCode算法心得——零数组变换IV(0-1背包)

大家好&#xff0c;我是晴天学长&#xff0c;很久很久没有写算法题解了&#xff0c;今天开始转python了。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1&#xff09;统计打字方案数 给你一个长度为 n 的整数数组 nums 和一个二维数组 queries &#xff0c;其中 queries[i] [li, …

superset部署记录

具备网络条件的&#xff0c;完全可以一键部署&#xff0c;不需要折腾。网络条件不具备时&#xff0c;部署记录留存备查。 1、正常模式 详细介绍参考&#xff1a;【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台-腾讯云开发者社区-腾讯云 (tencent.c…

AI大模型完全指南:从核心原理到行业落地实践

目录 大模型技术演进脉络核心原理解析与数学基础主流大模型架构对比开发环境搭建与模型部署Prompt Engineering高阶技巧垂直领域应用场景实战伦理与安全风险防控前沿发展方向与学习资源 一、大模型技术演进脉络 1.1 发展历程里程碑 2017&#xff1a;Transformer架构诞生&…

HTB 学习笔记 【中/英】《前端 vs. 后端》P3

&#x1f4cc; 这篇文章讲了什么&#xff1f; 介绍了 前端&#xff08;客户端&#xff09; 和 后端&#xff08;服务器端&#xff09; 的区别。解释了 全栈开发&#xff08;Full Stack Development&#xff09;&#xff0c;即前端后端开发。介绍了 前端和后端常用的技术。讨论…

golang中的结构体

1.简介 go也支持面向对象编程(OOP)&#xff0c;但是和传统的面向对象编程有区别&#xff0c;并不是纯粹的面向对象语言。所以说go支持面向对象编程特性是比较准确的。go没有类(class)&#xff0c;go语言的结构体(struct)和其它编程语言的类(class)有同等的地位&#xff0c;你可…

Day 64 卡玛笔记

这是基于代码随想录的每日打卡 参加科学大会&#xff08;第六期模拟笔试&#xff09; 题目描述 ​ 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。 ​ 小明的起点是第一个车站&#xff0c;终点是最后一个车站。然…

《C语言中\0:字符串的神秘“终结者”》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 引言一、字符串的定义与存储二、\0&#xff1a;字符串的终结标志三、\0在字符串操作中的作用四、\0的陷阱与注意事项五、\0与字符串的动态分配六、总结 引言…

九、Prometheus 监控windows(外部)主机

一、监控 Windows 主机的方法 方式 1:使用 Windows Exporter Windows Exporter(wmi_exporter) 是 Prometheus 官方推荐的 Windows 监控工具,它可以采集 CPU、内存、磁盘、网络、进程、服务状态等 指标。 方式 2:使用 Node Exporter for Windows node_exporter 主要用于…

TCP/IP协议中三次握手(Three-way Handshake)与四次挥手(Four-way Wave)

TCP/IP协议中三次握手&#xff08;Three-way Handshake&#xff09;与四次挥手&#xff08;Four-way Wave&#xff09; 一、TCP三次握手&#xff08;Three-way Handshake&#xff09;二、TCP四次挥手&#xff08;Four-way Wave&#xff09;三、常见问题解答总结为什么三次握手不…

Java集成WebSocket实现消息推送,详细步骤以及出现的问题如何解决

Java集成WebSocket实现消息推送 WebSocket是一种在单个TCP连接上进行全双工通信的协议,非常适合实现实时消息推送功能。与传统的HTTP请求-响应模式不同,WebSocket建立连接后可以保持长连接状态,服务器可以主动向客户端推送数据,这使得它成为实现聊天应用、通知系统和实时数…

如何在Linux中切换用户?

Linux切换用户 在Linux系统中&#xff0c;切换用户可以通过使用su命令和sudo命令实现 1、su命令 su是switch user的缩写&#xff0c;用于切换到另一个用户。su命令的语法如下&#xff1a; su [选项] [用户名]以下是一些示例&#xff1a; # 切换到root用户 su - # 切换到指定…

网页制作16-Javascipt时间特效の设置D-DAY倒计时

01、效果图 02、应用 new Date()//返回今天日期 new Date("April 1,2025")//返回目标日期 document.write()//文档显示 getTime()返回当日毫秒数 Math.floor(amadays / (1000 * 60 * 60 * 24)//把毫秒换算天 03、代码 <!doctype html> <html> &…