了解lwip

lwIP是一个小型的开源的TCP/IP协议栈(精简版的TCP/IP协议),博客借用了其他博客的内容在此声明。

TCP/IP协议栈结构

应用层:HTTP,MQTT,NTP、FTP.......

传输层:TCP协议(用于不可靠设备可靠传输),UTP协议(用于可靠设备的不可靠传输)

网络层:IP、ARP、ICMP······

链路层:数据链路层(由单片机的MAC内核完成)

                物理层(PHY芯片完成)

总结:应用层传输层网络层由lwip完成链路层由MAC内核和PHY芯片完成

TCP/IP协议栈的数据封装与解封装

发送封装

        用户数据->应用层首部+用户数据->TCP/UDP首部+应用层首部+用户数据->IP首部+TCP/UDP首部+应用层首部+用户数据->MAC首部+IP首部+TCP/UDP首部+应用层首部+用户数据+MAC尾部

接收解包(与发送反向)

总结:封装:数据添加各层协议的首部;解封装:在各层间除去自层的首部

lwIP结构

业务逻辑:        用户逻辑实现,例如怎么发

lwIP API:             HTTP、MQTT······

                          netconn 、RAW 、Socket(套接字)

lwIP CORE:           TCP        UDP

                            ip4.c

                          IP        ARP    ·······   ICMP

                         ethernet netif  sys_arch

HardwareDriver   MAC内核

                           RMII        MII

                              PHY

名词解释:

HTTP:

HTTP(超文本传输协议)是一种用于在网络上传输超文本的应用层协议。它定义了客户端(如浏览器)和服务器之间的通信规则,支持请求和响应模型,以便传输网页、图片、视频等多种资源。HTTP是Web的基础,允许用户通过URL访问内容。

MQTT:

MQTT(消息队列遥测传输)是一种轻量级的消息传输协议,特别适用于物联网(IoT)环境。它基于发布/订阅模式,使设备能够高效地交换数据。

主要特点:

  1. 轻量级:MQTT协议设计简单,数据包小,适合带宽有限或资源受限的环境。

  2. 发布/订阅模式:客户端可以发布消息到主题,其他订阅了该主题的客户端会接收到消息。这种模式解耦了消息的发送者和接收者。

  3. QoS级别:MQTT支持三种服务质量(Quality of Service)级别,确保消息传递的可靠性:

    • QoS 0:最多一次(不保证送达)

    • QoS 1:至少一次(保证送达,但可能重复)

    • QoS 2:仅一次(确保消息准确送达且不重复)

  4. 持久会话:支持客户端持久会话,即使客户端断开连接,消息仍会被保留,直到客户端重新连接。

  5. 轻松的连接管理:使用心跳机制(keep-alive)管理连接状态,适合移动设备和不稳定网络环境。

netconn

netconn是LWIP(轻量级IP协议栈)中的一个API,提供了一个简单的接口来处理TCP和UDP网络连接。它基于事件驱动模型,适合资源受限的嵌入式系统。

主要特点:

  1. 简化的接口:netconn提供了一组相对简单的函数来创建、绑定、监听和接受连接,便于开发。

  2. 支持TCP和UDP:通过相同的API,可以轻松处理这两种协议,降低了学习和开发的复杂性。

  3. 多线程支持:netconn可以在多线程环境中使用,适合需要并发处理的应用。

  4. 异步操作:支持异步操作,使得可以在不阻塞主循环的情况下进行网络通信。

使用步骤:

  1. 创建一个netconn实例。

  2. 绑定到特定端口。

  3. 监听连接(对于TCP)。

  4. 接受连接并进行数据收发。

RAW

在网络编程中,"RAW"通常指的是原始套接字(Raw Socket),这是一种允许用户直接访问网络协议栈的接口。原始套接字常用于网络协议的开发、网络监控和安全分析等领域。

主要特点:

  1. 底层访问:RAW套接字允许开发者直接构造和发送网络层(如IP)及其以上层的协议数据包。

  2. 灵活性:开发者可以自定义协议和数据包格式,适用于特殊需求的网络应用。

  3. 多协议支持:可以用于多种协议的实现,包括TCP、UDP和ICMP等。

  4. 网络监控:RAW套接字常用于抓包工具,可以用于监听和分析网络流量。

使用场景:

  • 网络测试和调试:开发和测试新的网络协议。

  • 安全分析:用于网络入侵检测系统(NIDS)和其他安全工具。

  • 流量监控:分析和监控网络流量的工具。

Socket

Socket是一种用于实现网络通信的接口,它允许程序通过网络传输数据。通过Socket,开发者可以创建客户端和服务器应用程序,支持多种传输协议,如TCP和UDP。

主要特点:

  1. 双向通信:Socket支持双向数据传输,允许客户端和服务器相互发送和接收消息。

  2. 多种协议支持:常用的协议包括TCP(流式传输,可靠性高)和UDP(数据报传输,速度快但不保证可靠性)。

  3. 异步操作:Socket可以在阻塞或非阻塞模式下工作,适用于不同的应用场景。

  4. 跨平台:大多数操作系统都支持Socket编程,使得开发的应用能够在不同平台间运行。

使用步骤:

  1. 创建Socket实例。

  2. 绑定到特定IP地址和端口(服务器端)。

  3. 监听连接(TCP)或直接发送数据(UDP)。

  4. 接受连接(TCP)或接收数据。

  5. 进行数据传输。

  6. 关闭Socket。

 TCP 

TCP(传输控制协议)是一种面向连接的协议,确保数据在网络中的可靠传输。它广泛用于各种应用程序,如网页浏览、电子邮件和文件传输。

主要特点:

  1. 可靠性:TCP通过确认应答和重传机制,确保数据包准确到达接收端。

  2. 顺序传输:数据包按发送顺序到达,避免了乱序问题。

  3. 流量控制:TCP使用滑动窗口机制控制数据流,防止接收端溢出。

  4. 拥塞控制:通过算法动态调整数据发送速率,以应对网络拥堵。

工作流程:

  1. 建立连接:通过三次握手(SYN, SYN-ACK, ACK)建立连接。

  2. 数据传输:双方可以双向发送数据。

  3. 断开连接:通过四次挥手(FIN, FIN-ACK, ACK)安全关闭连接。

UDP

UDP(用户数据报协议)是一种无连接的传输协议,提供快速的数据传输,但不保证数据的可靠性和顺序。它适用于实时应用,如视频会议、在线游戏和语音通话。

主要特点:

  1. 无连接:UDP不需要在传输前建立连接,减少了延迟。

  2. 数据报模式:每个数据包(数据报)独立发送,可能会丢失或乱序。

  3. 低开销:相较于TCP,UDP的头部开销较小,效率高。

  4. 简单性:UDP实现简单,适合需要快速传输的应用。

使用场景:

  • 实时应用:视频流、语音通话等对延迟敏感的场景。

  • 广播和多播:用于向多个接收者发送数据。

  • 简单查询响应:如DNS请求。

 ip4.c               

ip4.c 通常是用于处理 IPv4 网络协议的 C 语言源文件。下面是一个简单的示例代码,展示了如何创建一个基础的 IPv4 Socket 客户端和服务器。            

IP       

ARP   

ARP(Address Resolution Protocol)是一个网络协议,用于在局域网内通过 IP 地址查找相应的 MAC 地址。ARP 主要用于 IPv4 网络,下面是一些 ARP 的基本概念和工作原理。

ARP 的工作原理

  1. ARP 请求:当一个设备(如计算机)需要发送数据到同一局域网内的另一个设备时,它首先会检查自己的 ARP 缓存中是否已经存在目标设备的 MAC 地址。如果没有,它会发送一个 ARP 请求广播到网络上,请求目标 IP 地址对应的 MAC 地址。

  2. ARP 响应:网络中的所有设备都会接收到这个 ARP 请求,只有目标 IP 地址的设备会响应。该设备会发送一个 ARP 响应,包含自己的 MAC 地址。

  3. 更新 ARP 缓存:发送请求的设备会接收该响应,并将目标 IP 地址与其 MAC 地址存储在自己的 ARP 缓存中,以便下次直接使用。

ARP 消息格式

ARP 消息包括以下几个字段:

  • 硬件类型:表示网络类型(如以太网)。

  • 协议类型:通常为 IPv4。

  • 硬件地址长度:MAC 地址的字节数(通常为 6)。

  • 协议地址长度:IP 地址的字节数(通常为 4)。

  • 操作:指示是 ARP 请求(1)还是 ARP 响应(2)。

  • 发送者硬件地址:发送请求或响应的设备的 MAC 地址。

  • 发送者协议地址:发送请求或响应的设备的 IP 地址。

  • 目标硬件地址:目标设备的 MAC 地址(在请求中通常为 0)。

  • 目标协议地址:目标设备的 IP 地址。

ARP 的作用

  • 动态映射:ARP 允许设备动态地解析 IP 地址到 MAC 地址,适应网络中设备的变化。

  • 局域网通信:在局域网中,ARP 是确保数据包能够正确送达目标设备的重要协议。

ARP 缓存

操作系统会维护一个 ARP 缓存,以减少频繁的 ARP 请求。缓存中的条目会在一段时间后过期,防止信息过时。

ICMP

ICMP(Internet Control Message Protocol)是一种网络层协议,用于在网络设备之间发送控制消息和错误报告。它是 TCP/IP 协议族的重要组成部分,主要用于诊断和管理网络问题。以下是 ICMP 的一些关键点:

主要功能

  1. 错误报告:当数据包在网络中无法送达目标时,ICMP 会生成错误消息。例如,网络不可达、主机不可达或超时等。

  2. 诊断工具:ICMP 被广泛用于网络诊断工具,如 pingtracerouteping 通过发送 ICMP 回显请求(Echo Request)来测试与目标的连通性,目标设备回应 ICMP 回显应答(Echo Reply)。

  3. 流量控制:ICMP 还可以用于网络拥塞控制,发送源主机有关拥塞的通知。

ICMP 消息类型

ICMP 消息主要有两种类型:

  • 错误消息:如目标不可达、时间超时、参数问题等。

  • 查询消息:如回显请求和应答,时间戳请求和应答等。

ICMP 的重要性

ICMP 是维护和管理网络的关键工具,能够提供重要的反馈信息,有助于网络管理员诊断和解决连接问题。由于其功能的重要性,ICMP 在许多网络安全策略中受到关注,防火墙通常会对 ICMP 流量进行过滤。

 ethernet

以太网(Ethernet)是一种广泛使用的局域网技术,最初由施乐公司(Xerox)在 1970 年代开发,并成为了局域网通信的标准。以下是以太网的一些关键特性和概念:

基本概念

  1. 工作原理:以太网使用帧(Frame)进行数据传输。数据在网络中以帧的形式发送,每个帧包含目标和源地址、数据负载及错误检测信息。

  2. 地址:每个以太网设备都有一个唯一的 MAC 地址(媒体访问控制地址),用于在同一局域网内识别设备。

  3. 拓扑结构:以太网支持多种网络拓扑,包括星型、总线型和环型。现代以太网通常使用星型拓扑,中心节点为交换机。

传输介质

以太网可以通过多种介质传输,包括:

  • 双绞线(Twisted Pair):常见的以太网电缆类型,适用于家庭和小型办公室。

  • 光纤(Fiber Optic):用于高带宽和长距离传输,通常在企业和数据中心使用。

  • 无线(Wireless):虽然传统以太网是有线的,但 Wi-Fi 技术也被广泛应用于网络连接。

以太网标准

以太网经历了多个发展阶段,常见的标准包括:

  • 10BASE-T:传输速率为 10 Mbps 的以太网。

  • 100BASE-TX(快速以太网):传输速率为 100 Mbps。

  • 1000BASE-T(千兆以太网):传输速率为 1 Gbps。

  • 10GBASE-T(10千兆以太网):传输速率为 10 Gbps。

  • 更高速度标准:包括 25G、40G、100G 和更高速率的以太网标准。

以太网协议

以太网协议定义了数据帧的格式和传输方式,常用的以太网协议包括 IEEE 802.3 和 IEEE 802.1Q(用于虚拟局域网,VLAN)。

以太网的优势

  • 简单易用:以太网技术相对简单,易于安装和维护。

  • 成本效益:以太网设备(如交换机和电缆)通常价格合理,适合各种规模的网络。

  • 可扩展性:可以轻松增加新的设备,而不会影响网络性能。

netif 

“Netif”通常指的是网络接口(Network Interface),它是计算机或网络设备中用于连接网络的组件。以下是一些关于网络接口的基本概念:

基本概念

  1. 定义:网络接口是设备与网络之间的交互点,负责发送和接收数据包。每个网络接口都有一个唯一的标识符,如 MAC 地址。

  2. 类型:

    • 有线接口:如以太网接口,通过网线连接到网络。

    • 无线接口:如 Wi-Fi 接口,使用无线信号连接到网络。

    • 虚拟接口:用于虚拟化环境中的虚拟机,可以通过软件创建,通常用于网络隔离或虚拟局域网(VLAN)。

  3. 协议:网络接口通常支持多种网络协议,如 TCP/IP、UDP 等,用于数据的封装和传输。

功能

  • 数据封装:网络接口负责将数据封装成网络帧,以便在网络中传输。

  • 地址处理:处理源和目标地址,以确保数据包能够正确发送到目标设备。

  • 错误检测:通过校验和等机制检测数据在传输过程中是否发生错误。

网络接口的管理

  • 配置:网络接口的配置包括设置 IP 地址、子网掩码、网关等参数。

  • 状态监控:监控网络接口的状态和流量,以确保网络连接的健康和性能。

sys_arch

“sys_arch”通常与操作系统的架构相关,尤其是在嵌入式系统或实时操作系统(RTOS)中。它涉及系统架构层,主要负责底层硬件和上层应用之间的接口。以下是一些关键点:

基本概念

  1. 定义:sys_arch 是一种抽象层,提供操作系统与硬件之间的接口,帮助管理任务调度、内存管理和同步机制。

  2. 任务管理:处理任务的创建、删除和调度,使得不同任务可以在系统中并发执行。

  3. 同步机制:提供信号量、互斥锁等同步工具,帮助不同任务之间协调共享资源。

  4. 底层接口:与特定硬件平台交互,管理中断、时钟和其他硬件资源。

 MAC内核

MAC内核(Microkernel Architecture)是一种操作系统内核设计理念,其目标是将核心功能最小化,提供基本的系统服务,而将其他服务(如设备驱动、文件系统和网络协议等)移至用户空间。以下是一些关键概念和特点:

关键概念

  1. 微内核架构:MAC内核将内核功能最小化,通常只包含进程管理、内存管理和基本的设备管理。

  2. 用户空间服务:除了基本的内核功能外,其他系统服务在用户空间中运行。这种设计使得系统更灵活,便于扩展和维护。

  3. 消息传递机制:微内核通常依赖于高效的消息传递机制来实现内核和用户空间服务之间的通信。

特点

  1. 模块化:服务可以独立开发和维护,降低了系统的复杂性。

  2. 安全性和稳定性:由于大部分服务在用户空间中运行,系统崩溃的风险降低,增加了整体的稳定性。

  3. 可移植性:微内核设计通常与特定硬件解耦,易于移植到不同的平台。

例子

一些著名的微内核操作系统包括:

  • MINIX:教育和研究用的微内核操作系统。

  • QNX:用于嵌入式系统和实时应用的微内核操作系统。

  • L4:一个微内核架构的系列,广泛用于研究和实际应用。

 RMII       

RMII(Reduced Media-Independent Interface)是一种用于以太网控制器和物理层设备之间的接口标准。它旨在简化连接,并减少所需的引脚数量。以下是一些关于RMII的关键点:

主要特点

  1. 引脚减少:与MII(Media-Independent Interface)相比,RMII减少了引脚数量,通常使用只有两对信号线(传输和接收),以及时钟和控制信号。

  2. 传输速率:RMII支持10 Mbps和100 Mbps的以太网速度,适用于大多数中小型网络应用。

  3. 时钟信号:RMII使用一个25 MHz的时钟信号来同步数据传输,而MII则使用两个不同频率的时钟。

  4. 灵活性:RMII设计可以与多种以太网物理层设备兼容,提供了较好的灵活性。

  5. 发送位宽2位

MII

MII(Media-Independent Interface)是一种用于以太网控制器和物理层设备(如以太网芯片)之间的接口标准。以下是一些关于MII的关键点:

主要特点

  1. 数据传输:MII支持10 Mbps和100 Mbps的以太网速度,允许全双工和半双工操作。

  2. 引脚配置:MII通常使用16根引脚,包括数据传输、接收信号、时钟信号和控制信号。

  3. 灵活性:它可以与多种不同类型的物理层设备(PHY)兼容,适用于各种网络应用。

  4. 同步:数据传输通过时钟信号进行同步,使得接收和发送的数据能够准确匹配。

  5. MII发送位宽为4位

 PHY

PHY(Physical Layer Device)是指网络通信中物理层的硬件组件,负责将数据从物理信号转换为数字信号,反之亦然。它是实现网络连接的关键部分,通常与MAC(媒体接入控制)层配合工作。

主要功能

  1. 信号转换:PHY将数字信号转换为模拟信号,适合在物理媒介(如电缆、光纤)中传输。

  2. 编码和解码:进行必要的编码和解码,以保证信号在传输过程中的可靠性。

  3. 速率支持:支持不同的传输速率,如10 Mbps、100 Mbps(以太网)、1 Gbps等。

  4. 错误检测:某些PHY设计中包含错误检测和纠正功能,增强数据传输的可靠性。

  5. 接口:PHY通常通过MII、RMII或其他接口与MAC层进行连接。

MAC简介

STM32自带有10Mbit/100Mbit/s的以太网MAC内核

特性

传输速率:支持外部PHY接口实现10/100Mbit速率传输

协议:符合IEEE802.3/3的MII和RMII接口与快速以太网PHY通讯

工作模式:支持半双工和全双工操作。

站管理接口:支持通过MDIO接口配置和管理PHY设备

ST的ETH框架

 以太网DMA数据包以DMA方式发送和接收,发送和接收最大1500字节,所以STM32以太网收发缓冲FIFO为2KB是足够的

PHY交互接口

        数据通道:介质接口RMII/MII

        管理通道:SMI站管理接口,MOC,MDIO

SMI站管理接口

允许应用程序通过时钟线和数据线访问任意PHY寄存器,最多可访问32个PHY

 MDC:时钟周期引脚(最大频率为:2.5MHZ)

MDIO:数据输入/输出比特流

SMI帧格式

在《STM32F4XX中文参考手册》中给出的SMI帧格式如下:

SMI帧包括8个字段:
(1)前导码(Preamble):每次读写或写入PHY设备均需要先发送前导码,报头字段对应于MDIO线上32个连续的逻辑“1”位以及MDC上的32个周期。该字段用于和PHY设备建立同步。
(2)帧起始(ST):帧起始共2bit,值为01b。用于验证线路从默认逻辑“1”状态变为逻辑“0”状态,然后再从逻辑“0”状态变为逻辑“1”状态。
(3)操作(OP):定义正在进行的事件(读取或写入)的类型。01b表示写入,10b表示读取。
(4)PHY地址(PADDR):PHY地址一共有5位,因此可以寻址最多32个PHY设备。最先发送和接收地址的MSB位。
(5)寄存器地址(RADDR):寄存器地址一共有5位,因此可以最多对所选PHY设备的32个不同寄存器进行寻址。最先发送和接收地址的MSB位。
(6)周转(TA):周转字段一共有2位,它被定义在RADDR和DATA字段之间,避免在读取事件出现竞争现象。读取PHY设备时,主机将TA的2个位驱动为MDIO线上的高阻态。PHY设备必须将TA的第一位驱动为高阻态,将TA的第二位驱动为逻辑“0”。
写入PHY设备时,主机必须将TA字段设置为10b,PHY设备必须将TA的2个字段驱动为高阻态。
(7)数据(DATA):数据字段为16位。发送和接收的均是寄存器的MSB位。
(8)空闲:MDIO被驱动为高阻态。三态驱动器必须被禁止,PHY的上拉电阻使线路保持逻辑“1”状态。
最后,可以用以下2个图片表示SMI的写入和读取PHY设备寄存器报文格式:
写入报文:

读取报文:

介质接口MII和RMII(重要)

用于MAC与外接的PHY设备互联,支持10M/100Mbit数据传输,以太网帧转发到PHY设备中

数据传输过程:数据进入缓冲区以太网DMA传输到TXFIOF,再传输到MAC内核(以太网帧)通过MII或RMII将数据传输到PHY,PHY将数据以以光电信号发送到以太网中。接收过程与传输过程相反。

MII与RMII比较

相同特性:

        1、支持外部PHY接口实现10/100Mbit/s的传输速率

        2、符合IEEE802.3协议标准

不同特性:

        1:引脚数量:MII 17个(8个数据线,两个时钟线),RMII 9个

        2:参考时钟:MII介质接口的TX_CLK和RX_CLK由PHY芯片提供,让MAC内核以这个时钟采集收发数据。RMII介质接口的REF_CLK,MACK内核以这个时钟采集收发数据

        3、发送位宽:MII 4位,RMII 2位,虽然传输位宽不同但是RMII传输速度是MII的两倍,因此他们传输数据速率是相同的。

注意:RX_ER和RX_DV是用来检测以太网帧是否有效性,而CRS和COL以及CRS_DV在全双工模式下无效

MII参考时钟来源有两个 :MCO输出25MHz以及外部晶振输出25MHz

注意:MII接口中的TX_CLK和RX_CLK时钟是根据数据传输速率挂钩的,10Mbit/s:2.5MHz;100Mbit/s:25MHz.

RMII

RMII的参考时钟来源有两个:MOC经过倍频PLL输出50MHz以及外部晶振输出50MHz(必须同时提供PHY和MAC)

从时钟频率可以看出RMII时钟是MII的两倍

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot+微信小程序的房产交易租赁服务平台设计与实现 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…

《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署redis 6.2.14容器版哨兵集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统&…

【计算机网络 - 基础问题】每日 3 题(五十九)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

Dolphins 简介——一种新颖的多模态语言模型

背景问题 现在的自动驾驶系统在处理复杂的多变的现实驾驶场景时,往往缺乏人类驾驶员的全面理解,及时学习和适应能力以及错误纠正能力,为了实现能够像人类一样理解和响应复杂现实世界场景的完全自主车辆(AV)一直是一个重要目标。Dolphins 是一…

LabVIEW汽车状态监测系统

LabVIEW汽车状态监测系统通过模拟车辆运行状态,有效地辅助工程师进行故障预测和维护计划优化,从而提高汽车的可靠性和安全性。 项目背景: 现代汽车工业面临着日益增长的安全要求和客户对于车辆性能的高期望。汽车状态监测系统旨在实时监控汽…

面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums) …

FPGA时序分析和约束学习笔记(3、Timequest时序路径详解和优化)

FPGA时序分析和约束学习笔记(3、Timequest时序路径详解和优化) Timequest中Data Path分析 Data Arrival Path clock path:时钟信号到达源寄存器时钟端口的时间 data path:数据从源寄存器Q端口出发到达目标寄存器D端口的时间 D…

浮动+flex布局

一.浮动 1.介绍 2.效果 <style> .one{ width: 100px; height: 100px; background-color: red; float: left; } .two{ width: 200px; height: 200px; background-color: blue; float: right; } </style> </head> <body> <div class"one&quo…

yandex企业邮箱:烽火域名邮箱有哪些优势?

yandex企业邮箱申请教程&#xff1f;如何用yandex免费域名邮箱&#xff1f; yandex企业邮箱作为一款备受推崇的企业邮箱服务&#xff0c;凭借其独特的优势&#xff0c;成为了众多企业的首选。烽火将深入探讨yandex企业邮箱的优势&#xff0c;特别是与烽火域名邮箱相比&#xf…

Python CGI编程-上传和下载文件file

文件上传&#xff1a;form表单需要设置enctype属性为 multipart/form-data&#xff0c;请求的网址是&#xff1a;http://localhost/post.html点击上传&#xff0c;页面跳转到&#xff1a;http://localhost/cgi-bin/hello.py上传的文件存在了/temp路径下文件下载&#xff0c;文件…

NVR小程序接入平台/设备EasyNVR多个NVR同时管理视频监控新选择

在数字化转型的浪潮中&#xff0c;视频监控作为安防领域的核心组成部分&#xff0c;正经历着前所未有的技术革新。随着技术的不断进步和应用场景的不断拓展&#xff0c;视频监控系统的兼容性、稳定性以及安全性成为了用户关注的焦点。NVR小程序接入平台/设备EasyNVR&#xff0c…

优质网站建设公司哪家好?2024网站建设公司推荐

选择一个好的优质网站建设公司可以从以下几点考虑—— 1、价位 选择网站建设公司首先是看网站建设公司的报价预算&#xff0c;就像你买衣服一样&#xff0c;虽然都是一模一样的&#xff0c;但是质量还是会有一定的差距的毕竟一分钱一分货。不过根据不同的公司肯定会有不一样的…

C++初阶(七)--类和对象(4)

目录 ​编辑 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 二、类型转换 1.隐式类型转换 2.explicit关键字 3.类类型之间的对象隐式转换 三、static成员函数 1.概念 2.特性 3.面试题&#xff1a; 四、友元函数 1.基本介绍 2.回顾&#xff1a; 3.友元类&am…

【机器学习】音乐与AI的交响:机器学习在音乐产业中的应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习在音乐创作中的革新&#x1f341;AI作曲家的诞生与作品展示&#x1f342;机器学习在音乐…

基于安卓Android的健康饮食系统APP(源码+文档+部署+讲解)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 会持续一直更新下去 有问必答 一键收藏关注不迷路 源码获取&#xff1a;https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwdjf1d 提取码: jf1d &#…

docker基础篇(尚硅谷)

学习链接 docker1️⃣基础篇&#xff08;零基小白&#xff09; - 语雀文档 (即本篇) Docker与微服务实战&#xff08;基础篇&#xff09; Docker与微服务实战&#xff08;高级篇&#xff09;- 【上】 Docker与微服务实战&#xff08;高级篇&#xff09;- 【下】 文章目录 学习…

iQOO手机怎样将屏幕投射到MacBook?可以同步音频吗?

众所周知&#xff0c;苹果品牌的设备自己有AirPlay的投屏功能&#xff0c;iPhone要投屏到MacBook只要连接同一网络&#xff0c;然后开启AirPlay就可以投屏。但其他品牌的手机没有AirPlay&#xff0c;怎么将手机屏幕投射到MacBook呢&#xff1f; 安卓系统的手机可以使用无线投屏…

【C++】踏上C++学习之旅(四):细说“内联函数“的那些事

文章目录 前言1. "内联函数"被创造出来的意义2. 内联函数的概念2.1 内联函数在代码中的体现2.2 普通函数和内联函数的汇编代码 3. 内联函数的特性&#xff08;重点&#xff09;4. 总结 前言 本章来聊一聊C的创作者"本贾尼"大佬&#xff0c;为什么要创作出…

未上架APP开通微信商户支付服务的步骤指南

在移动互联网时代&#xff0c;APP作为连接用户与服务的桥梁&#xff0c;其支付功能的完善与否直接关系到用户体验和商家的收益。对于尚未上架的APP而言&#xff0c;提前开通微信商户支付服务&#xff0c;能够为其后续的推广和运营打下坚实基础。本文将详细介绍如何为未上架的AP…

【分布式知识】分布式对象存储组件-Minio

文章目录 什么是minio核心特点&#xff1a;使用场景&#xff1a;开发者工具&#xff1a;社区和支持&#xff1a; 核心概念什么是对象存储&#xff1f;MinIO 如何确定对对象的访问权限&#xff1f;我可以在存储桶内按文件夹结构组织对象吗&#xff1f;如何备份和恢复 MinIO 上的…