OSI七层模型:网络通信的完整架构解析

OSI(Open Systems Interconnection)七层模型是计算机网络领域最基础、最权威的参考框架。它由国际标准化组织(ISO)于1984年提出,旨在为不同厂商、不同技术的网络设备和系统提供一个标准化的通信蓝图。尽管现代互联网主要基于TCP/IP协议栈,但OSI模型因其清晰的分层逻辑和对网络功能的系统性划分,依然是理解、设计、分析和排错网络系统的核心理论工具。掌握OSI模型,是网络工程师、系统架构师和安全专家的必备知识。

一、OSI模型框架/介绍

OSI模型将复杂的网络通信过程分解为七个逻辑上相互独立又紧密协作的层次。每一层都向上一层提供服务(Service),并利用下一层提供的服务来完成自身的功能。这种分层 (Layering) 设计带来了巨大的优势:模块化、可扩展性、互操作性和易于排错

七层自下而上

  1. 物理层 (Physical Layer):处理原始比特流在物理媒介上的传输。
  2. 数据链路层 (Data Link Layer):在直接相连的节点间建立可靠的数据链路,负责帧的封装、传输和错误检测。
  3. 网络层 (Network Layer):负责数据包(Packet)的路由 (Routing)转发 (Forwarding),实现跨网络的端到端逻辑寻址。
  4. 传输层 (Transport Layer):提供端到端(进程到进程)的可靠或不可靠数据传输服务,是通信质量 (QoS) 的关键保障层。
  5. 会话层 (Session Layer):管理不同主机上应用程序之间的会话 (Session),负责会话的建立、维护和终止。
  6. 表示层 (Presentation Layer):处理数据的语法和语义,负责数据的格式转换、加密/解密和压缩/解压缩。
  7. 应用层 (Application Layer):直接为用户应用程序提供网络服务,是用户与网络交互的接口。

核心思想

  • 服务与协议分离:每一层定义了它向上层提供的服务,而实现这些服务的具体规则是该层的协议
  • 对等通信:只有物理层是真正的物理连接,其他各层的通信都是“虚拟”的。每一层通过协议与对等层(Peer Layer)进行通信,实际的数据流是垂直穿过各层,通过物理层传输。
  • 封装与解封装:数据在发送端从应用层向下传递时,每一层都会添加自己的头部 (Header)(有时还有尾部),这个过程称为封装 (Encapsulation)。在接收端,数据从物理层向上传递时,每一层会移除对应的头部,进行处理,这个过程称为解封装 (Decapsulation)

二、OSI七层模型详解

2.1 物理层 (Physical Layer)

物理层是OSI模型的最底层,负责在物理媒介上透明地传输原始的比特流(0和1)。

详细解释

  • 功能:定义了物理连接的电气、机械、功能和规程特性。包括:
    • 电气特性:电压水平、信号速率、阻抗匹配(如RS-232的±12V)。
    • 机械特性:连接器的形状、尺寸、引脚数量和排列(如RJ-45水晶头、DB-9串口)。
    • 功能特性:每条引脚的用途(如发送、接收、地线)。
    • 规程特性:建立、维持和断开物理连接的时序和过程。
  • 常见技术与媒介
    • 有线:双绞线(Cat5e, Cat6, Cat6a)、同轴电缆、光纤(单模、多模)。
    • 无线:无线电波(Wi-Fi, 蓝牙, 蜂窝网络)、红外线、微波。
  • 常见设备
    • 集线器 (Hub):一种简单的物理层中继器,将一个端口收到的信号广播到所有其他端口。工作在共享带宽的冲突域中。
    • 中继器 (Repeater):放大和再生衰减的信号,以延长传输距离。
    • 调制解调器 (Modem):将数字信号(Digital)调制(Modulate)为模拟信号(Analog)以便在电话线等模拟线路上传输,并在接收端解调(Demodulate)。
  • 协议/标准:虽然物理层本身不处理“协议”意义上的数据包,但有许多定义物理特性的标准:
    • IEEE 802.3 (以太网物理层规范,如10BASE-T, 100BASE-TX, 1000BASE-SX/LX)。
    • ITU-T V.24/V.28 (RS-232标准)。
    • SONET/SDH (光纤传输标准)。
  • 安全技术:物理层的安全主要关注物理安全 (Physical Security)
    • 保护线缆免受窃听(如使用屏蔽双绞线STP、光纤更难窃听)。
    • 保护设备机房的物理访问(门禁、监控)。
    • 防止电磁干扰(EMI)和窃听(TEMPEST)。
  • 实现方式:主要由网络接口卡(NIC)的硬件电路、收发器(Transceiver)和物理媒介本身实现。
  • 常用类库:物理层操作通常由操作系统内核和设备驱动程序处理,高级语言类库很少直接操作物理层。但在嵌入式开发中,可能会用到特定硬件的SDK。
2.2 数据链路层 (Data Link Layer)

数据链路层在物理层提供的比特流服务之上,建立可靠的数据链路,负责将原始的比特流组织成帧 (Frame),并进行传输。

详细解释

  • 功能
    • 成帧 (Framing):将比特流划分为离散的帧,添加帧头(含源/目的MAC地址)和帧尾(含帧校验序列FCS)。
    • 物理寻址:使用MAC地址 (Media Access Control Address) 来标识网络上的唯一设备。MAC地址是48位(6字节)的硬件地址。
    • 错误检测:通过循环冗余校验 (CRC, Cyclic Redundancy Check) 在帧尾添加FCS,接收方计算CRC并与FCS比较,以检测传输错误。注意:数据链路层通常只检测错误,不纠正错误(纠错由上层如传输层负责)
    • 流量控制:协调发送方和接收方的数据速率,防止接收方被淹没(如使用滑动窗口机制)。
    • 介质访问控制 (MAC):决定多个设备如何共享同一物理媒介(如以太网的CSMA/CD,Wi-Fi的CSMA/CA)。
  • 子层
    • 逻辑链路控制 (LLC, Logical Link Control):提供与上层(网络层)的统一接口,处理帧的同步、流量控制和错误控制。
    • 介质访问控制 (MAC, Media Access Control):负责物理寻址、成帧和介质访问控制。
  • 常见技术与标准
    • 以太网 (Ethernet, IEEE 802.3):最主流的局域网技术。
    • Wi-Fi (IEEE 802.11 a/b/g/n/ac/ax):无线局域网技术。
    • PPP (Point-to-Point Protocol):常用于拨号连接和路由器之间的点对点链路。
    • HDLC (High-Level Data Link Control):一种面向比特的同步数据链路协议。
  • 常见设备
    • 交换机 (Switch):工作在数据链路层的核心设备。它学习MAC地址与端口的映射关系,根据帧的目的MAC地址进行精确转发 (Forwarding),只将帧发送到目标端口,从而隔离冲突域,提供独享带宽。
    • 网桥 (Bridge):功能类似交换机,但通常是软件实现或端口较少,用于连接两个相似的网络段。
  • 协议:以太网帧格式、PPP、HDLC、Wi-Fi MAC协议。
  • 安全技术
    • MAC地址过滤:交换机或AP只允许已知MAC地址的设备接入(易被MAC地址欺骗绕过)。
    • 端口安全 (Port Security):限制交换机端口上允许的MAC地址数量或绑定特定MAC地址。
    • 802.1X:基于端口的网络访问控制,结合EAP协议进行身份认证(常与RADIUS服务器配合)。
    • VLAN (Virtual LAN):逻辑上隔离广播域,增强安全性(需配合其他安全措施)。
  • 实现方式:由网络接口卡(NIC)的硬件(MAC控制器)和驱动程序实现。
  • 常用类库:在高级编程中,直接操作数据链路层较少。但在网络分析工具(如Wireshark)或安全工具中,会用到如libpcap (Unix/Linux) 或 WinPcap/Npcap (Windows) 这样的库来捕获和发送原始数据帧。
2.3 网络层 (Network Layer)

网络层负责在不同的网络之间进行数据包的路由 (Routing)转发 (Forwarding),实现逻辑寻址路径选择

详细解释

  • 功能
    • 逻辑寻址:使用IP地址 (Internet Protocol Address) 来唯一标识网络中的主机。IPv4是32位,IPv6是128位。IP地址是分层的(网络部分+主机部分),便于路由。
    • 路由 (Routing):路由器(Router)根据路由表 (Routing Table) 决定数据包从源到目的地的最佳路径。路由表可以通过静态配置或动态路由协议(如RIP, OSPF, BGP)生成。
    • 转发 (Forwarding):路由器接收数据包后,检查其目的IP地址,查询路由表,然后将数据包从正确的接口转发出去。
    • 分片与重组 (Fragmentation and Reassembly):当数据包大小超过下一跳链路的最大传输单元 (MTU) 时,网络层负责将其分片,并在目的地(通常是目的主机)进行重组。
  • 常见技术与标准
    • IP (Internet Protocol):核心协议,包括IPv4和IPv6。
    • ICMP (Internet Control Message Protocol):用于传递控制消息,如ping命令使用的Echo Request/Reply,以及错误报告(如“目标不可达”)。
    • ARP (Address Resolution Protocol):将IP地址解析为对应的MAC地址(在同一个局域网内)。
    • RARP (Reverse ARP) / DHCP (Dynamic Host Configuration Protocol):将MAC地址解析为IP地址(RARP已过时,DHCP是主流)。
  • 常见设备
    • 路由器 (Router):工作在网络层的核心设备。它连接不同的网络(如LAN和WAN),根据IP地址进行路由和转发,是互联网的“交通警察”。
  • 协议:IP, ICMP, ARP, RARP, IGMP (Internet Group Management Protocol)。
  • 安全技术
    • 防火墙 (Firewall):基于IP地址、端口号、协议类型等规则过滤数据包。包过滤防火墙工作在网络层。
    • 访问控制列表 (ACL, Access Control List):路由器或防火墙上配置的规则,允许或拒绝特定IP流量。
    • IPSec (Internet Protocol Security):在IP层提供加密、认证和完整性保护,常用于构建VPN。
    • 网络地址转换 (NAT, Network Address Translation):将私有IP地址转换为公有IP地址,隐藏内部网络结构,提供一定程度的安全性。
  • 实现方式:由路由器、三层交换机的硬件(ASIC)和操作系统(如Cisco IOS)实现。主机操作系统内核的网络协议栈也包含网络层功能。
  • 常用类库:在编程中,网络层功能通常通过套接字 (Socket) API间接使用。直接操作IP包的库有libnet(用于构造和发送自定义IP包)或Scapy(Python库,功能强大,常用于网络测试和安全研究)。
2.4 传输层 (Transport Layer)

传输层提供端到端(End-to-End)的、进程到进程(Process-to-Process)的数据传输服务,是通信可靠性服务质量 (QoS) 的关键保障层。

详细解释

  • 功能
    • 端口寻址 (Port Addressing):使用端口号 (Port Number) 来标识主机上的具体应用程序或服务(如HTTP=80, HTTPS=443)。传输层报文段(Segment)包含源端口和目的端口。
    • 分段与重组 (Segmentation and Reassembly):将上层(应用层)的长消息分割成适合网络层传输的较小报文段,并在接收端重新组装。
    • 连接管理:建立、维护和终止逻辑连接(如TCP的三次握手和四次挥手)。
    • 可靠传输:确保数据无差错、不丢失、不重复、按序到达。主要通过确认 (ACK)重传 (Retransmission)序号 (Sequence Number)流量控制 (Flow Control)(如滑动窗口)机制实现。
    • 流量控制 (Flow Control):防止发送方发送数据过快导致接收方缓冲区溢出。
    • 拥塞控制 (Congestion Control):防止过多的数据注入网络,导致网络性能下降或崩溃(如TCP的慢启动、拥塞避免算法)。
  • 主要协议
    • TCP (Transmission Control Protocol)面向连接 (Connection-Oriented)可靠 (Reliable) 的协议。提供有序、无差错的数据流传输。适用于对可靠性要求高的应用,如Web浏览(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP/POP3/IMAP)。
    • UDP (User Datagram Protocol)无连接 (Connectionless)不可靠 (Unreliable) 的协议。只提供基本的复用/分用和差错检测(校验和)。不保证送达、不保证顺序、不进行重传。适用于对实时性要求高、能容忍少量丢失的应用,如视频流(RTP/RTCP)、语音通话(VoIP)、DNS查询、在线游戏。
  • 常见设备:传输层功能主要在端系统 (End Systems)(如服务器、客户端)的操作系统内核中实现。防火墙和负载均衡器等设备也会深度解析传输层信息。
  • 安全技术
    • 防火墙:深度包检测(DPI)防火墙可以检查TCP/UDP端口和连接状态(如状态检测防火墙)。
    • 端口扫描防护:通过防火墙或主机安全软件阻止未经授权的端口探测。
    • SYN Flood防护:针对TCP三次握手的DoS攻击,可通过SYN Cookie等技术缓解。
  • 实现方式:由操作系统内核的网络协议栈实现(如Linux内核的TCP/IP栈)。
  • 常用类库:这是应用开发中最常接触的层次。几乎所有网络编程都通过套接字 (Socket) API 进行,它抽象了TCP和UDP的复杂性。
    • C/C++: Berkeley Sockets (POSIX标准)。
    • Java: java.net 包(Socket, ServerSocket, DatagramSocket)。
    • Python: socket 模块。
    • .NET: System.Net.Sockets 命名空间。
2.5 会话层 (Session Layer)

会话层管理不同主机上应用程序之间的会话 (Session)对话 (Dialogue)

详细解释

  • 功能
    • 会话建立、维护与终止:负责在通信双方之间建立、管理和释放会话连接。
    • 会话同步 (Synchronization):提供检查点 (Checkpoints) 机制。如果会话中断,可以从最后一个检查点恢复,而不需要从头开始传输大量数据(例如,大文件传输中断后恢复)。
    • 对话控制 (Dialogue Control):管理会话的通信模式,如单工 (Simplex)半双工 (Half-Duplex)全双工 (Full-Duplex) 通信。
  • 常见技术与协议
    • RPC (Remote Procedure Call):允许程序调用另一个地址空间(通常是远程主机)的过程或函数,会话层负责管理RPC调用的上下文。
    • NetBIOS (Network Basic Input/Output System):提供会话服务的API,常用于早期的Windows网络。
    • PPTP (Point-to-Point Tunneling Protocol):一种较早的VPN隧道协议,其控制连接部分涉及会话层功能。
    • AppleTalk Session Protocol (ASP):AppleTalk协议栈的一部分。
  • 常见设备:会话层功能通常由操作系统应用程序本身实现,没有专门的硬件设备。
  • 安全技术:会话层的安全主要体现在会话管理安全上:
    • 会话劫持 (Session Hijacking) 防护:使用安全的会话令牌(Token)、HTTPS加密、会话超时和失效机制。
    • 会话固定 (Session Fixation) 防护:在用户登录成功后生成新的会话ID。
    • RPC安全:通过Kerberos等认证协议保护RPC调用。
  • 实现方式:会话层功能在现代网络中通常由应用层协议或传输层之上的中间件实现,而不是一个独立的、清晰的协议层。例如,TLS/SSL协议(工作在表示层/会话层边界)管理加密会话;数据库连接池管理数据库会话;Web应用框架(如Servlet容器)管理HTTP会话(Session)。
  • 常用类库
    • Java: javax.transaction (JTA, Java Transaction API) 用于分布式事务会话,Servlet API中的HttpSession
    • .NET: System.Transactions 命名空间,ASP.NET中的Session对象。
    • Python: Web框架如Django、Flask中的会话管理模块。
2.6 表示层 (Presentation Layer)

表示层负责处理数据的语法和语义,确保一个系统应用层发出的信息能被另一个系统的应用层正确理解。

详细解释

  • 功能
    • 数据转换/翻译 (Translation):将应用层数据从发送方的内部格式转换为网络标准格式(抽象语法),并在接收方将其转换回内部格式。例如,处理不同的字符编码(ASCII, EBCDIC, Unicode/UTF-8)、数据表示(大端序/小端序)和结构(如C结构体 vs. Pascal记录)。
    • 数据加密/解密 (Encryption/Decryption):提供数据的机密性保护。虽然加密可以在应用层或网络层(IPSec)进行,但表示层是逻辑上处理数据内容加密的合适位置。
    • 数据压缩/解压缩 (Compression/Decompression):减少传输的数据量,提高传输效率。例如,对文本、图像或视频数据进行压缩。
  • 常见技术与协议
    • SSL/TLS (Secure Sockets Layer / Transport Layer Security):虽然SSL/TLS通常被认为工作在会话层和表示层之间,但它完美地体现了表示层的功能——对应用层数据进行加密和解密。它是现代Web安全(HTTPS)的基石。
    • MIME (Multipurpose Internet Mail Extensions):用于在电子邮件中表示非文本数据(如图片、音频、二进制文件),涉及编码转换(如Base64)。
    • XDR (External Data Representation):Sun Microsystems开发的标准,用于在不同系统间交换数据。
    • ASN.1 (Abstract Syntax Notation One):一种标准的数据描述语言,常用于定义复杂的、跨平台的数据结构(如在SNMP、LDAP、X.509证书中)。
  • 常见设备:表示层功能由软件实现,通常集成在操作系统、Web服务器、浏览器或应用程序中。
  • 安全技术
    • SSL/TLS:是表示层安全技术的典范,提供端到端的加密、服务器认证(有时也包括客户端认证)和数据完整性。
    • 应用层加密:如PGP/GPG用于电子邮件加密,也属于表示层范畴。
  • 实现方式:由应用程序、库或中间件实现。例如,Web服务器(如Apache, Nginx)和浏览器内置了SSL/TLS库;邮件客户端处理MIME编码。
  • 常用类库
    • 加密/解密: OpenSSL (C/C++), Java Cryptography Architecture (JCA), Python cryptography 库。
    • 压缩/解压缩: zlib (C/C++), java.util.zip, Python zlib 模块。
    • 编码/解码: Base64 编码库(几乎所有语言标准库都提供)。
    • ASN.1: ASN.1 Compiler 工具和相关库(如pyasn1 for Python)。
2.7 应用层 (Application Layer)

应用层是OSI模型的最高层,直接面向用户和应用程序,提供各种网络服务。

详细解释

  • 功能:为用户应用程序提供访问网络资源的接口。它定义了应用程序使用的协议,这些协议规定了应用程序之间通信的规则、消息格式和语义。
  • 常见技术与协议
    • HTTP/HTTPS (Hypertext Transfer Protocol):万维网(Web)的基础,用于传输超文本。
    • FTP (File Transfer Protocol) / SFTP (SSH File Transfer Protocol):用于文件传输。
    • SMTP (Simple Mail Transfer Protocol) / POP3 (Post Office Protocol v3) / IMAP (Internet Message Access Protocol):用于电子邮件的发送和接收。
    • DNS (Domain Name System):将人类可读的域名(如www.example.com)解析为IP地址。
    • DHCP (Dynamic Host Configuration Protocol):自动为网络设备分配IP地址等配置。
    • SNMP (Simple Network Management Protocol):用于网络设备的监控和管理。
    • Telnet / SSH (Secure Shell):提供远程登录到其他计算机的功能。SSH是Telnet的安全替代品。
    • SMB/CIFS (Server Message Block / Common Internet File System):用于文件共享和打印机共享(Windows网络)。
  • 常见设备:应用层功能由服务器(如Web服务器、邮件服务器、DNS服务器)和客户端(如Web浏览器、邮件客户端)实现。
  • 安全技术
    • 应用层防火墙 (WAF, Web Application Firewall):专门检测和阻止针对Web应用的攻击,如SQL注入、跨站脚本(XSS)、文件包含等。
    • HTTPS (HTTP over TLS):通过TLS加密保护HTTP通信。
    • API安全:使用OAuth、JWT等进行身份认证和授权。
    • 输入验证与输出编码:防止注入攻击和XSS。
    • 安全配置:确保服务器软件(如Apache, Nginx)的安全配置。
  • 实现方式:由具体的应用程序软件实现。
  • 常用类库
    • HTTP: libcurl (C/C++), Apache HttpClient (Java), requests (Python), fetch/XMLHttpRequest (JavaScript)。
    • FTP/SFTP: Apache Commons Net (Java), paramiko (Python for SFTP)。
    • SMTP/POP3/IMAP: JavaMail API, Python smtplib/poplib/imaplib
    • DNS: getaddrinfo (POSIX C), java.net.InetAddress, Python dns.resolver (dnspython库)。
    • SSH: libssh (C/C++), JSch (Java), paramiko (Python)。

三、总结

OSI七层模型核心要素概览

关键要素
提供服务
传输比特流
Hub, Repeater
Switch, Bridge
Router
Firewall, Server, Client
设备
MAC地址
IP地址
端口号
地址
TCP, UDP
IP, ICMP, ARP
Ethernet, PPP
HTTP, DNS, SMTP
协议
SSL/TLS
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
物理媒介

OSI七层模型总结表

层级层名核心功能关键设备核心协议/技术核心地址/标识安全技术重点典型类库/工具
7应用层提供用户服务服务器、客户端HTTP(S), FTP, SMTP, DNS, DHCP无 (URL, 域名)WAF, API安全, 输入验证requests, JavaMail, dnspython
6表示层数据语法/语义处理软件库SSL/TLS, MIME, ASN.1, XDR数据加密/解密, 完整性OpenSSL, cryptography, zlib
5会话层管理会话连接操作系统/应用RPC, NetBIOS, PPTP会话ID会话劫持防护, 会话固定防护HttpSession, System.Transactions
4传输层端到端可靠传输端系统内核TCP, UDP端口号防火墙(状态检测), SYN Flood防护Socket API, java.net, python socket
3网络层路由与逻辑寻址路由器IP, ICMP, ARP, BGP, OSPFIP地址防火墙(包过滤), ACL, IPSec, NATlibnet, Scapy
2数据链路层帧传输与物理寻址交换机、网桥Ethernet, Wi-Fi, PPP, HDLCMAC地址MAC过滤, 端口安全, 802.1X, VLANlibpcap, Npcap
1物理层比特流传输集线器、中继器RS-232, V.35, 100BASE-TX物理安全, 线缆保护(硬件/驱动)

核心要点

  1. 分层是核心:每一层抽象了特定的功能,简化了网络的设计、实现和排错。
  2. 封装是机制:数据从上到下被逐层封装,添加头部(和尾部),在接收端逐层解封装。
  3. 地址体系:各层使用不同的地址进行寻址:应用层(域名/URL)、传输层(端口)、网络层(IP地址)、数据链路层(MAC地址)。
  4. TCP/IP vs OSI:实际的互联网基于TCP/IP模型,它是一个四层(或五层)模型。TCP/IP的应用层大致对应OSI的应用、表示、会话三层;传输层网络层基本对应;网络接口层对应OSI的数据链路层物理层。OSI模型更理论化、更细致。
  5. 安全贯穿各层:安全不是单一层次的问题,而是需要在每一层都考虑(如物理安全、MAC安全、IP安全、传输安全、应用安全)。

架构师洞见:
OSI七层模型的价值远不止于教学。它是一个强大的系统性思维框架,是架构师进行网络系统设计、性能分析和故障诊断的“思维地图”。

设计层面:在设计分布式系统时,架构师必须清晰地思考每一层的责任。例如,决定数据加密是在传输层(TLS)还是应用层(应用内加密)进行,这直接影响安全模型、性能和密钥管理。选择使用TCP还是UDP,决定了应用的可靠性需求和容错策略。

排错层面:当网络出现问题时,OSI模型提供了自底向上的排错路径。先检查物理层(线缆、指示灯),再到数据链路层(MAC地址、交换机端口),再到网络层(IP连通性、路由),再到传输层(端口连通性、TCP连接状态),最后到应用层(服务是否运行、配置是否正确)。这种分层隔离能快速定位问题根源。

演进趋势:虽然OSI模型本身是静态的,但其思想在不断演进。现代网络技术如SDN (Software-Defined Networking) 将控制平面(类似路由决策)与数据平面(转发)分离,这可以看作是对网络层功能的重新抽象。云计算微服务架构中,服务网格(Service Mesh)在应用层之下提供了一层透明的通信、安全和观测性功能,这类似于在OSI模型中插入了一个新的“服务层”。

掌握OSI模型,意味着掌握了网络通信的“语言”和“解剖学”。它让架构师能够超越具体技术的细节,从更高的维度理解和驾驭复杂的网络系统,确保设计的系统不仅功能完备,而且是健壮、安全和可维护的。

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

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

相关文章

一个人开发一个App(OpenApi)

为了少写代码,统一前后端的网络层,我使用了OpenApi设计restful接口。然后用openapi-generator来生成flutter的代码。生成go代码用的是oapi-codegen,它对go更友好一些。 我们直接在api.yml中设计接口,所有的返回值与请求者都提取到components里…

光伏气象监测系统:助力光伏发电的智慧大脑

光伏气象监测系统:助力光伏发电的智慧大脑 柏峰【BF-GFQX】在全球积极推动能源转型、大力倡导 “双碳” 目标的当下,光伏发电凭借其清洁、可再生的显著优势,宛如一颗冉冉升起的新星,在能源领域迅速崭露头角,得以广泛推…

SpringCloud01——项目演变、微服务远程调用三种方式、springcloud介绍、nacos注册中心

目录 一、项目架构演变过程 1、单体应用架构 2、垂直应用架构 3、分布式服务架构 4、流动计算架构(SOA架构) 5、微服务架构 二、如何实现微服务远程调用 1、HttpClient工具类(springboot中) 形式1:调用第三方…

Oracle 和 MySQL 中的日期类型比较

Oracle 和 MySQL 都提供了多种日期和时间数据类型,但它们在实现和功能上有一些差异。以下是两者的主要日期类型对比:Oracle 日期类型DATE存储日期和时间(精确到秒)格式:YYYY-MM-DD HH24:MI:SS示例:TO_DATE(…

基于 Redis 实现共享 Session 登录的多种方法与实践

全文目录:开篇语**前言****1. 什么是共享 Session 登录?****2. 基于 Redis 实现共享 Session 的基本方法****2.1 通过 Redis 存储 Session 数据****2.1.1 基本流程****2.1.2 示例代码(Java Spring Boot Redis)****3. 使用 Redis…

spring cloud + easyRules 零基础搭建智能规则引擎

你是否曾想过在项目中嵌入一套轻量级且高度可扩展的规则引擎,轻松实现动态化的业务决策?在金融、电商、政务等领域,风险控制是业务安全的核心。传统硬编码方式很难应对复杂多变的风控需求,而规则引擎允许我们将这些规则独立出来&a…

AI应用:电路板设计

Diode Computers 公司 Diode Computers是一家专注于利用AI技术进行定制电路板设计和制造的公司,提供从概念到量产的全流程服务。其核心优势在于将电路板设计转化为AI可理解的代码形式,大幅提升设计效率并降低传统EDA工具的使用门槛 0。 核心服务 设计与制…

RocketMQ学习系列之——客户端消息确认机制

一、客户端使用MQ基本代码示例1、添加maven依赖<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>5.3.0</version> </dependency>2、生产者代码示例public class Produc…

[leetcode] 组合总和

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; i class Solution {int aim;vector<vector<int>> ret;vector<int> path; public:vector<vector<int>> combinationSum(vector<int>& nums, int target) {aim target;dfs(nums…

新能源行业B端极简设计:碳中和目标下的交互轻量化实践

新能源行业B端极简设计&#xff1a;碳中和目标下的交互轻量化实践内容摘要在新能源行业&#xff0c;碳中和目标正推动着企业追求更高的运营效率和更低的资源消耗。然而&#xff0c;传统的B端交互设计往往复杂繁琐&#xff0c;不仅增加了用户的操作成本&#xff0c;还可能导致资…

减速机:自动化生产线的“精密传动心脏”

减速机作为自动化生产线的核心传动部件&#xff0c;通过调节转速与扭矩实现设备精准控制&#xff0c;其在自动化生产线中发挥着关键作用。以下是其具体应用方式&#xff1a;输送线驱动在自动化生产线中&#xff0c;输送线用于运输物料、半成品或成品&#xff0c;通过减速机可以…

从0到1学PHP(五):PHP 数组:高效存储与处理数据

目录一、数组的定义与分类1.1 索引数组1.2 关联数组1.3 多维数组二、数组的基本操作2.1 数组元素的添加、删除、修改和访问2.2 数组指针的操作三、数组处理函数3.1 数组排序函数3.2 数组统计函数3.3 数组过滤与转换函数一、数组的定义与分类 在 PHP 中&#xff0c;数组是一种非…

vscode 字体的跟换

打开vscode 左下角输入电脑中已经有的字体&#xff1a;有想要用的可以自己进行安装刷新这样就可改变了

墨者:SQL过滤字符后手工注入漏洞测试(第3题)

1. 墨者学院&#xff1a;SQL过滤字符后手工注入漏洞测试(第3题)&#x1f680; 因为练习过太多的sql注入&#xff0c;废话不多介绍&#xff0c;我会通过围绕手动注入和工具爆破的方式达到靶场目标&#xff0c;开练&#xff01;&#xff01;&#xff01; 2. 手工注入方式&#x1…

【Spring AI实战】实现仿DeepSeek页面对话机器人(支持多模态上传)

一、前言 二、实现效果 三、代码实现 3.1 后端代码 3.2 前端代码 一、前言 Spring AI详解&#xff1a;【Spring AI详解】开启Java生态的智能应用开发新时代(附不同功能的Spring AI实战项目)-CSDN博客 二、实现效果 可上传图片或音频数据给大模型分析 三、代码实现 3.1 后…

Vue 正在热映模块

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目&#xff1a;正在热映模块 目录 正在热映 数据修改 导入axios 配置反向代理 正在热映渲染 赋值数据 渲染列表 显示图片 优化列表 设置列表样式 主演 定义过滤器 使用过滤器 主演过长处理 无主演情况处理 观众评…

阿里云上进行k8s集群的配置

在阿里云容器服务Kubernetes&#xff08;ACK&#xff09;中配置集群的核心步骤可分为以下六大关键环节&#xff0c;涵盖架构设计到运维管理&#xff1a;1. 集群规划与基础配置 集群类型选择 托管版&#xff1a;Master节点由阿里云托管&#xff08;推荐生产环境&#xff09;专有…

页面性能优化

优化点解决方案效果双向绑定数量过多竞对设置单元格内部涉及双向绑定的输入组件过多&#xff0c;线上页面最多有88个该和抽屉中的编辑表格一样的组件&#xff0c;共计930个&#xff08;按每行最少6个来计算的&#xff09;双向绑定的组件&#xff0c;严重拖累页面性能。数据计算…

详细说明零拷贝

详细说明零拷贝【一】零拷贝介绍【1】说明【2】为什么需要零拷贝&#xff1f;—— 传统数据传输的问题【3】零拷贝的核心优化【4】零拷贝的实现方式&#xff08;1&#xff09;mmap&#xff08;内存映射&#xff09;&#xff08;2&#xff09;sendfile&#xff08;Linux 系统调用…

docker部署自己写的c++http服务器教程

我用的是ubuntu 22.04环境下 qt c 写的应用程序&#xff0c;是终端程序&#xff0c;不是界面&#xff0c;然后用linuxdeployqt工具将其打包成了AppImage可执行文件&#xff0c;以上是部署前的准备工作&#xff0c;需要确保AppImage可执行文件在自己的ubuntu上可以运行才能执行以…