当前位置: 首页 > news >正文

探秘网络通信:UDP与TCP/IP的奥秘

**> 🎏:你只管努力,剩下的交给时间

🏠 :小破站

探秘网络通信:UDP与TCP/IP的奥秘

    • 前言
    • 第一:UDP
      • 基础概念
        • UDP的基础概念:
        • UDP的特点和优势
        • UDP与TCP/IP的关系
      • 工作原理
        • 1. 无连接性和面向数据报的特征:
        • 2. UDP头部结构解析:
        • 3. 数据传输的简单流程:
        • 简单示例:
      • UDP在不同应用场景的应用:
        • 1. 实时性要求高的应用:
        • 2. 视频流传输:
        • 3. 游戏开发中的应用:
        • 4. 其他实时性要求高的应用:
      • 注意事项:
    • 第二:TCP/IP(传输控制协议/互联网协议)
      • 概述
        • TCP和IP的关系
        • TCP/IP协议族的结构
          • 1. 链路层(Link Layer)
          • 2. 网络层(Network Layer)
          • 3. 传输层(Transport Layer)
          • 4. 应用层(Application Layer)
        • 协议之间的关系:
      • 2.2 连接管理:
        • 三次握手与四次挥手
        • 数据传输的流程
        • 拥塞控制机制
      • 2.3 应用场景:
        • 1. 可靠性要求高的应用:
        • 2. 网页浏览:
        • 3. 邮件传输:
        • 4. 其他应用场景:
    • 第三:对比选择
      • 3.1 何时选择UDP:
        • 1. 快速传输需求
        • 2. 实时性要求高
        • 3. 简单的数据交换场景
        • 注意事项
      • 3.2 何时选择TCP/IP
        • 1. 数据可靠性要求高
        • 2. 长连接场景
        • 3. 文件传输等大规模数据场景
        • 4. 需要流控制的场景
        • 注意事项
    • 第四: 安全性考虑
      • UDP与TCP/IP的安全性对比
      • 常见攻击与防范措施
    • 结语:

前言

当我们在浏览网页、发送消息或进行在线游戏时,背后默默发挥作用的是网络通信的核心——UDP和TCP/IP协议。本文将引领读者进入网络传输的神秘世界,揭示这两个协议是如何协同工作的,以及它们在不同场景中的应用。让我们一同探索网络的深层,了解这些技术背后的故事。

第一:UDP

基础概念

UDP的基础概念:

UDP(User Datagram Protocol)是一种面向无连接的传输层协议,与TCP(Transmission Control Protocol)一样,属于传输层的协议。UDP提供了一种简单的、无连接的通信服务,主要用于那些对数据完整性要求较低,但要求传输速度较快的应用场景。

UDP的特点和优势
  1. 无连接性: UDP是无连接的协议,不需要在传输数据前建立连接,因此减少了建立和断开连接的开销,提高了传输效率。

  2. 简单轻量: 相对于TCP,UDP的头部开销较小,不需要维护连接状态和序列号,使得它更加简单轻量。

  3. 快速: 由于没有连接的建立和维护,以及较小的头部开销,UDP通常比TCP更快,适用于实时性要求较高的应用,如音视频传输、在线游戏等。

  4. 无可靠性保证: UDP不提供数据的可靠性保证,数据包的发送和接收没有任何的确认机制,也不会重传丢失的数据包,适用于那些可以容忍一定丢包率的应用。

  5. 适用于广播和多播: UDP支持广播和多播,能够向多个主机发送相同的数据,适用于一对多或多对多的通信场景。

UDP与TCP/IP的关系
  1. 同属传输层: UDP和TCP/IP协议栈中的TCP都属于传输层的协议,负责在网络上可靠地传输数据。

  2. 差异: 主要区别在于连接的建立和维护。TCP提供面向连接的服务,具有可靠性、有序性和流量控制等特性,适用于对数据可靠性要求较高的场景;而UDP是无连接的,不保证数据的可靠性,但具有简单和高效的特点,适用于对实时性要求较高、可以容忍一定丢包率的场景。

  3. 选择依据: 在选择UDP还是TCP时,取决于应用的需求。如果应用对数据的可靠性要求较高,且可以承受一些延迟,通常选择TCP;如果对实时性要求高,可以容忍一定数据丢失,并追求简单和高效,通常选择UDP。

总体而言,UDP和TCP是网络通信中两种不同的传输方式,各自适用于不同的应用场景,根据实际需求选择合适的协议是很重要的。

工作原理

1. 无连接性和面向数据报的特征:
  • 无连接性: UDP是一种无连接的协议,通信双方不需要在传输数据之前建立连接。每个UDP数据包(数据报)都是独立的,不受前后数据包的影响。

  • 面向数据报: UDP是面向数据报的,每个UDP数据包都是独立的消息,具有自己的标识。这与TCP不同,TCP提供的是面向流的连接,数据在传输时是连续的流。

2. UDP头部结构解析:

UDP数据包的头部结构相对简单,包含以下字段:

  • 源端口(Source Port): 16比特,表示发送方的端口号。

  • 目标端口(Destination Port): 16比特,表示接收方的端口号。

  • 长度(Length): 16比特,表示UDP数据包的长度,包括头部和数据部分。

  • 校验和(Checksum): 16比特,提供简单的差错检测,用于验证UDP数据包的完整性。

3. 数据传输的简单流程:
  1. 数据封装: 发送方将要传输的数据封装成UDP数据包,包括源端口、目标端口、数据长度和校验和等信息。

  2. 数据传输: UDP数据包通过网络传输到接收方。由于UDP的无连接性,每个数据包独立传输,不保证顺序和可靠性。

  3. 数据解封装: 接收方根据UDP头部的信息将数据从数据包中解封装出来。

  4. 数据处理: 接收方对解封装后的数据进行处理,根据应用需求进行相应的操作。

简单示例:

假设有两台计算机 A 和 B,A 想向 B 发送一个UDP数据包:

  • A选择一个未被占用的源端口号,比如 12345。

  • B事先告知 A 它期望接收数据的端口号,比如 54321。

  • A创建一个UDP数据包,将数据封装其中,设置源端口为 12345,目标端口为 54321,然后通过网络将数据包发送给 B。

  • B接收到UDP数据包后,根据头部信息解封装出数据,然后进行相应的处理。

这个过程是无连接的,A 和 B 不需要在传输数据之前建立连接,每个UDP数据包都是独立的。由于UDP的简单性和快速性,适用于实时性要求高、对数据完整性要求相对较低的应用场景,如语音通话、视频传输等。

UDP在不同应用场景的应用:

1. 实时性要求高的应用:
  • 实时通信: UDP常用于实时通信应用,如语音通话和视频通话。由于UDP的无连接性和简单性,能够提供低延迟的实时性通信,适用于即时通讯软件和视频会议等应用。

  • 在线直播: 在直播场景中,为了保持低延迟,通常采用UDP传输视频和音频数据。即时性对于观众与主播之间的互动至关重要。

2. 视频流传输:
  • 视频流: UDP在视频流传输中的应用非常广泛,特别是在直播和实时视频传输领域。即便在网络环境不稳定的情况下,UDP也能提供较好的流畅性和实时性。

  • 实时监控系统: 在需要实时监控的系统中,UDP可以用于传输实时的视频流,比如监控摄像头的视频数据,要求尽可能降低传输延迟。

3. 游戏开发中的应用:
  • 在线游戏: 在多人在线游戏中,UDP通常被用于传输游戏中的实时数据,如玩家位置、动作等。UDP的低延迟和高实时性能够确保玩家在游戏中有更好的体验。

  • 游戏视频直播: 游戏直播平台通常使用UDP传输游戏视频流,以确保观众能够及时看到主播的操作,实现高度互动性。

4. 其他实时性要求高的应用:
  • 音频实时传输: 除了语音通话外,UDP也被广泛应用于音频实时传输,如音频会议系统、音乐直播等。

  • 实时数据同步: 在一些实时数据同步的应用中,如金融交易系统、股票行情推送等,UDP能够满足实时性的需求。

注意事项:

  • 虽然UDP在实时性要求高的应用中有很好的表现,但由于其无连接性和不提供可靠性保证,可能会导致数据包丢失或乱序。因此,在选择UDP时,需要根据应用场景的具体要求来权衡实时性和可靠性。

  • 对于一些对数据完整性要求较高、不能容忍数据丢失的应用,如文件传输、远程桌面等,通常会选择使用TCP而非UDP。

第二:TCP/IP(传输控制协议/互联网协议)

概述

TCP和IP的关系
  • TCP(Transmission Control Protocol): TCP是一种面向连接的、可靠的传输层协议。它负责在网络上可靠地传输数据,确保数据的有序性、完整性和不丢失。

  • IP(Internet Protocol): IP是一种网络层协议,负责在网络中进行数据包的路由和寻址。它定义了数据包在网络中的传输规则,保证数据能够正确地从源主机传输到目标主机。

关系: TCP和IP通常一起使用,构成了TCP/IP协议栈。TCP负责数据的可靠传输,而IP负责数据包的路由和寻址。这两个协议协同工作,为网络通信提供了可靠性和灵活性。

TCP/IP协议族的结构

TCP/IP协议族是一个分层的协议结构,由多个层次构成,每个层次都有特定的功能。从低层到高层,主要包括以下四个层次:

1. 链路层(Link Layer)
  • 功能: 负责在物理网络中传输数据帧,处理与硬件设备的通信。

  • 协议: 常见的链路层协议有以太网(Ethernet)、Wi-Fi等。

2. 网络层(Network Layer)
  • 功能: 负责数据包的路由和寻址,将数据包从源主机传输到目标主机。

  • 协议: IP协议是网络层的核心协议,负责定义数据包的格式和传输规则。

3. 传输层(Transport Layer)
  • 功能: 负责端到端的通信,确保数据的可靠传输。

  • 协议: TCP和UDP是传输层的两个主要协议,TCP提供可靠的面向连接的通信,而UDP提供无连接的通信。

4. 应用层(Application Layer)
  • 功能: 提供网络服务和应用程序接口,为用户提供各种应用服务。

  • 协议: 在应用层有各种协议,如HTTP(用于Web)、FTP(用于文件传输)、SMTP(用于电子邮件)等。

协议之间的关系:
  • 每个层次的协议负责自己层次的通信,向上层提供服务,向下层发送数据。

  • 上层协议使用下层协议提供的服务,而不需要了解下层协议的实现细节。

  • 数据在每个层次上传递时,会被封装成不同的协议数据单元,从应用层到链路层逐层封装。

  • 接收端在每个层次上逐层解封装,将数据从链路层传递到应用层。

TCP/IP协议族的分层结构使得各个层次的协议能够相对独立地发展和演化,提高了系统的可维护性和可扩展性。

2.2 连接管理:

在TCP/IP协议中,连接管理是TCP协议的一个重要功能,包括连接的建立、维护和释放。以下是连接管理中的三个关键方面:

三次握手与四次挥手
  1. 三次握手(Connection Establishment):

    • 第一步(SYN): 客户端发送一个带有SYN(同步)标志的TCP数据包给服务器,表示客户端请求建立连接。

    • 第二步(SYN-ACK): 服务器收到请求后,回复一个带有SYN和ACK(确认)标志的TCP数据包,表示同意建立连接。

    • 第三步(ACK): 客户端收到回复后,发送一个带有ACK标志的TCP数据包给服务器,表示连接建立成功。

    这三个步骤完成后,连接就建立起来了,可以进行数据传输。

  2. 四次挥手(Connection Termination):

    • 第一步(FIN): 一方(通常是客户端)发送一个带有FIN(结束)标志的TCP数据包,表示希望关闭连接。

    • 第二步(ACK): 另一方收到FIN后,回复一个带有ACK标志的TCP数据包,表示收到关闭请求。

    • 第三步(FIN): 另一方(通常是服务器)发送一个带有FIN标志的TCP数据包,表示同意关闭连接。

    • 第四步(ACK): 发起关闭请求的一方收到FIN后,回复一个带有ACK标志的TCP数据包,表示关闭连接。

    完成这四个步骤后,连接就被安全地关闭。

数据传输的流程

一旦连接建立,数据传输的流程通常遵循以下步骤:

  1. 数据封装: 应用层的数据被封装到TCP的数据包中,加上TCP头部信息。

  2. 数据传输: TCP数据包通过网络传输到目标主机,保证数据的有序性、完整性和可靠性。

  3. 数据解封装: 目标主机接收到TCP数据包后,根据TCP头部信息将数据从数据包中解封装出来。

  4. 数据处理: 目标主机对解封装后的数据进行处理,传递给上层应用层。

拥塞控制机制

拥塞控制是TCP协议中的一种机制,用于避免网络拥塞和提高网络的稳定性。拥塞控制的主要机制包括:

  1. 慢启动(Slow Start): 初始时,发送方会以较小的窗口大小发送数据,然后随着网络的稳定性逐渐增大窗口大小。

  2. 拥塞避免(Congestion Avoidance): 一旦网络发生拥塞,发送方会减小窗口大小,避免过度发送数据导致拥塞加剧。

  3. 快重传(Fast Retransmit): 当发送方检测到接收方没有收到某个数据包时,可以快速重传该数据包,而不是等到超时再重传。

  4. 快恢复(Fast Recovery): 在快重传后,进入快恢复状态,窗口大小逐渐增大。

这些机制共同作用,使TCP协议能够在网络拥塞时调整传输速率,保证网络的稳定性和吞吐量。

连接管理、数据传输和拥塞控制机制共同确保了TCP协议在网络中可靠地传输数据,并适应不同网络状况下的变化。

2.3 应用场景:

1. 可靠性要求高的应用:
  • 文件传输: 在需要确保文件传输的完整性和可靠性的场景中,TCP被广泛应用。例如,FTP(File Transfer Protocol)协议使用TCP来传输文件,确保文件在传输过程中不会丢失或损坏。

  • 数据库操作: 对于数据库的操作,如数据查询、更新等,通常要求高度的可靠性。数据库连接使用TCP来确保数据的可靠传输,避免数据丢失或错误。

  • 远程登录: 在远程登录的场景中,如SSH(Secure Shell)协议,使用TCP连接可以提供可靠的远程终端操作,确保命令的准确传输和执行。

2. 网页浏览:
  • HTTP协议: 在网页浏览中,使用的是HTTP协议,它基于TCP来传输网页内容。TCP的可靠性确保了网页的各个组件(HTML、CSS、JavaScript等)能够正确、有序地传输,提供了良好的用户体验。

  • HTTPS协议: 对于安全性要求较高的网页浏览,使用了HTTPS协议,它在HTTP基础上加入了安全性的加密机制,同样基于TCP来传输数据。

3. 邮件传输:
  • SMTP协议: 邮件的发送过程中,使用的是SMTP(Simple Mail Transfer Protocol)协议,该协议使用TCP来保证邮件的可靠传输。SMTP确保了邮件从发送端到接收端的完整性和正确性。

  • POP3和IMAP协议: 在邮件的接收端,使用POP3(Post Office Protocol 3)或IMAP(Internet Message Access Protocol)协议来获取邮件,这两个协议也基于TCP,确保了邮件的可靠接收。

4. 其他应用场景:
  • 远程桌面: 在远程桌面操作中,如使用RDP(Remote Desktop Protocol),TCP确保了远程操作的准确传输,使用户能够远程操控桌面应用。

  • 在线支付: 在进行在线支付的过程中,使用HTTPS协议进行加密传输,而HTTPS基于TCP,确保了支付信息的安全和可靠性。

TCP在需要数据传输的可靠性和完整性方面具有明显的优势,因此在许多对数据可靠性要求较高的应用场景中得到广泛应用。

第三:对比选择

3.1 何时选择UDP:

选择使用UDP还是TCP通常取决于应用的具体需求和特点。以下是一些适合选择UDP的场景:

1. 快速传输需求
  • 实时性要求高: 如果应用对实时性要求极高,需要尽可能地减少传输延迟,那么UDP是一个较好的选择。由于UDP的无连接性和简单性,它能够更快地传输数据,适用于对速度要求较高的场景,如在线游戏、实时音视频传输等。

  • 简单的数据交换场景: 在一些简单的数据交换场景中,如果数据丢失不会造成严重后果,可以选择UDP。例如,传感器数据的实时采集、简单的状态广播等。

2. 实时性要求高
  • 实时通信: 对于实时通信应用,如语音通话、视频通话,UDP常常是首选。即便在网络条件较差或有一些数据丢失,实时性仍然能够得到保障。

  • 视频直播: 在视频直播场景中,UDP也经常被用于传输视频流,确保观众能够即时看到主播的操作。

3. 简单的数据交换场景
  • 简单传感器数据: 对于一些传感器产生的简单数据,如温度、湿度等,如果即时性是关键需求而丢失一些数据不会产生严重影响,选择UDP可以简化通信过程。

  • 状态广播: 在一对多的状态广播场景中,如在线游戏中的玩家位置同步,UDP能够更快速地将状态信息广播给多个客户端。

注意事项
  • 无可靠性保证: UDP不提供数据的可靠性保证,数据包可能会丢失、乱序或重复。因此,在选择UDP时,需要确保应用能够容忍一定的数据丢失。

  • 适当处理丢失情况: 在使用UDP时,应考虑采用一些机制来处理数据丢失的情况,如冗余数据、前向纠错等。

  • 不适用于所有场景: 尽管UDP在某些场景下有明显的优势,但并不适用于所有场景。在一些对数据完整性要求较高、不能容忍数据丢失的应用中,如文件传输、远程桌面等,通常选择使用TCP。

3.2 何时选择TCP/IP

选择使用TCP/IP通常取决于应用的需求和特点。以下是一些适合选择TCP/IP的场景:

1. 数据可靠性要求高
  • 文件传输: 在需要确保文件传输的完整性和可靠性的场景中,TCP通常是首选。FTP(File Transfer Protocol)和HTTP(Hypertext Transfer Protocol)等协议都基于TCP,确保文件在传输过程中不会丢失或损坏。

  • 数据库操作: 对于数据库的操作,如数据查询、更新等,通常要求高度的可靠性。数据库连接使用TCP来确保数据的可靠传输,避免数据丢失或错误。

2. 长连接场景
  • Web应用: 在需要保持长时间连接的Web应用中,如在线聊天、社交网络,TCP提供了可靠的连接保持机制,确保双方能够长时间通信而不断开连接。

  • 即时通信: 即时通信应用,如聊天软件,通常使用TCP来保持持久的连接,确保及时传递消息。

3. 文件传输等大规模数据场景
  • 大规模数据传输: 在需要传输大规模数据的场景,如大文件的传输、视频文件的下载,TCP能够提供可靠性和稳定性,确保数据的完整性。

  • 远程桌面: 在远程桌面操作中,如使用RDP(Remote Desktop Protocol),TCP确保了远程操作的准确传输,使用户能够远程操控桌面应用。

4. 需要流控制的场景
  • 流控制: TCP提供了流控制机制,可以调整数据的传输速率,避免数据的过度发送导致网络拥塞。在对网络资源有一定要求的场景中,TCP能够更好地控制数据传输的速率。
注意事项
  • 相对较慢: 相对于UDP,TCP的连接建立和断开的过程较为繁琐,可能会引入一定的延迟。在一些对实时性要求非常高的场景中,需要仔细权衡选择。

  • 不适用于所有场景: 尽管TCP在某些场景下有明显的优势,但并不适用于所有场景。在一些对实时性要求较高、能够容忍一定数据丢失的应用中,如在线游戏、实时音视频传输等,UDP可能更为合适。

第四: 安全性考虑

UDP与TCP/IP的安全性对比

  1. UDP安全性:

    • 无连接性: UDP是无连接的协议,不进行连接的建立和断开,因此在传输数据时缺乏对数据完整性和来源验证的校验。
    • 不提供加密: UDP本身不提供数据加密功能,因此在传输敏感数据时容易受到窃听和篡改的威胁。
  2. TCP/IP安全性:

    • 连接性: TCP是面向连接的协议,具有连接的建立和断开过程,通过三次握手确保连接的可靠性,但也可能受到一些攻击方式的影响。
    • 提供加密: 在TCP/IP协议族中,可以通过使用安全层协议如TLS/SSL来对TCP连接进行加密,确保传输的数据在传输过程中不被窃听或篡改。

常见攻击与防范措施

  1. UDP攻击与防范:

    • DDoS攻击: UDP通常容易受到分布式拒绝服务(DDoS)攻击,攻击者通过大量伪造的UDP请求使服务器过载。防范措施包括流量过滤、限制频率、使用反射攻击防护工具等。
    • UDP泛洪攻击: 攻击者发送大量UDP数据包到目标主机,导致网络拥塞。防范措施包括使用防火墙、入侵检测系统等。
  2. TCP/IP攻击与防范:

    • SYN Flood攻击: 攻击者发送大量伪造的TCP连接请求,使服务器资源被耗尽。防范措施包括使用防火墙、SYN Cookie机制等。
    • 数据包劫持: 拦截TCP数据包并篡改或窃取其中的信息。防范措施包括使用加密传输、数字签名等。
    • 端口扫描: 攻击者通过扫描开放的端口,寻找系统的漏洞。防范措施包括关闭不必要的端口、使用入侵检测系统等。
  3. 安全性增强措施:

    • 加密传输: 对于敏感数据的传输,使用加密传输协议(如TLS/SSL)加密数据,确保数据的机密性。
    • 身份验证: 在连接建立时进行身份验证,确保通信的双方都是合法的。这可以通过使用证书、令牌等机制实现。

安全性是网络通信中至关重要的考虑因素,选择适当的协议和实施相应的安全措施可以有效降低潜在的风险。

结语:

通过深入了解UDP和TCP/IP协议,我们可以更好地选择合适的网络通信方式,优化应用程序的性能,提高用户体验。这两个协议各自有其独特的优势和适用场景,在不同的应用领域中发挥着重要作用。希望本文能够为读者揭示网络通信背后的精妙之处,使其在软件开发中能够做出明智的选择。

相关文章:

探秘网络通信:UDP与TCP/IP的奥秘

**> 🎏:你只管努力,剩下的交给时间 🏠 :小破站 探秘网络通信:UDP与TCP/IP的奥秘 前言第一:UDP基础概念UDP的基础概念:UDP的特点和优势UDP与TCP/IP的关系 工作原理1. 无连接性和面…...

Docker的学习笔记

1.1 docker的介绍 1.2 docker的一次安装 //如果是root用户,不加sudo也行curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -echo deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable…...

解析直播第三方美颜SDK:技术原理与应用

时下,直播平台和主播们纷纷引入美颜技术,以提升视觉效果和用户体验。而在众多美颜技术中,直播第三方美颜SDK成为许多开发者和平台的首选,因其灵活性和高效性而备受推崇。 一、技术原理:美颜算法的精髓 第三方美颜SDK…...

线程基本方法

1。设置线程名 继承Thread类的线程,可以直接使用.setName()方法,设置线程名。也可以使用构造方法,需要注意java默认不继承构造方法,所以需要自己调用下父类的构造方法。 public class Demo {public static void main(String[…...

Linux操作系统 1.初识Linux

一、Linux学习大致内容 二、操作系统概述 操作系统的作用: 常见操作系统: 1、pc(电脑端):windows、Linux、MacOS 2、移动端:Android、ios、鸿蒙系统 总结 1.计算机由哪两个部分组成?、 硬件…...

分布式事务-两阶段提交2PC

2PC协议就是两阶段提交,用来解决分布式事务,分为两个阶段,分别为Prepare和Commit,也是PC由来。 第一阶段Prepare 提交事务请求 如图所示,主要流程有以下三个方面 询问:事务协调者(Manager)向所有的事务参与…...

初识Spring (Spring 核心与设计思想)

文章目录 什么是 Spring什么是容器什么是 IoC理解 Spring IoCDI 概念 什么是 Spring Spring 官网 官方是这样说的: Spring 让每个人都能更快、更轻松、更安全地进行 Java 编程。春天的 专注于速度、简单性和生产力使其成为全球最受欢迎Java 框架。 我们通常所说的 Spring 指的…...

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…...

Bitcoin SV 和 Bitcoin Core 之间首次跨链原子交换

我们已经执行了 Bitcoin SV 和 Bitcoin Core 之间的首次原子交换。 这一成就代表了比特币 SV 的重大进步,以去信任的方式促进了与其他区块链的无缝互操作性。 图片源自Gemini 在上一篇文章中,我们解释了原子交换的高级理论。 我们深入研究了使用哈希时间…...

RT-DETR改进 | 2023 | InnerEIoU、InnerSIoU、InnerWIoU、InnerDIoU等二十余种损失函数

论文地址:官方Inner-IoU论文地址点击即可跳转 官方代码地址:官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址: 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…...

JDBC编程基础

JDBC编程基础 JDBC介绍创建JDBC项目的步骤1.引入依赖2.注册驱动3.获取数据库连接4.获取sql执行对象 JDBC 常用 API 详解sql执行对象PreparedStatement作用 事务管理结果集对象 JDBC项目demo测试 JDBC介绍 每个数据库都会提供一组API来支持程序员实现自己客户端,自己…...

Linux shell命令

Linux shell命令 1、Shell简介 ​ Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 ​ Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…...

Vue 3 面试经验分享

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

Vue简易的车牌输入键盘,可以根据需要修改

效果图如下&#xff1a; 代码如下&#xff1a; <template><div><div class"carNoBoxInput"><div style"padding: 6px;border: 2px solid #fff;border-radius: 6px;margin: 6px 3px 6px 6px;"><input class"inputBox"…...

十分钟搭建VScode C/C++运行环境

一、下载配置vscode 1.下载安装VScode 地址&#xff1a;https://code.visualstudio.com/download 下载后&#xff0c;运行安装程序 (VSCodeUserSetup-{version}.exe)。这只需要一分钟。安装程序会将 Visual Studio Code 添加到环境变量中%&#xff0c;可以使用CMD键入“code”…...

控制台gbk乱码

引用IntelliJ IDEA中 统一设置编码为utf-8或GBK-CSDN博客 特别注意file coding 的文件path和java的编码格式 配置...

Springboot日志-logback

logback-spring.xml的配置项 共有一个父标签、两种属性、三个节点: 一个父标签&#xff1a;configuration 两种属性&#xff1a;contextName和property 三个节点&#xff1a;appender、root、logger 日志级别 日志级别从低到高分为TRACE < DEBUG < INFO < WARN &…...

六、Lua 运算符

文章目录 一、Lua 运算符&#xff08;一&#xff09;算术运算符&#xff08;二&#xff09;关系运算符&#xff08;三&#xff09;逻辑运算符&#xff08;四&#xff09;其他运算符 二、运算符优先级 一、Lua 运算符 运算符是一个特殊的符号&#xff0c;用于告诉解释器执行特定…...

Android frameworks 开发总结十一

1.修改GMS的setup wizard 1.1 找到需要修改的文件 打开vendor/partner_gms/apps/GmsSampleIntegration/res/values/config.xml文件。以Arashi R为例: <resources><string name="wizard_script_uri" translatable="false">android.resource…...

学嵌入式,已经会用stm32做各种小东西了,下一步是什么

学嵌入式&#xff0c;已经会用stm32做各种小东西了&#xff0c;下一步是什么&#xff0c;研究stm32的内部吗&#xff1f; 针对题主这种类型的&#xff0c;首先我想提出几个技术问题。 1&#xff0c;除了那几个常用的外设&#xff0c;stm32上集成的众多外设是否都有实际的使用经…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...