深入理解计算机网络分层结构
一、 为什么要分层?
计算机网络分层的主要目的是将复杂的网络通信过程分解为多个相互独立的层次,每个层次负责特定的功能。这样做有以下几个好处:
-
模块化设计:每个层次都有清晰定义的功能和接口,使得网络系统更易于设计、理解和维护。
-
标准化协议:分层结构促进了协议的标准化和统一,不同厂商和组织之间的设备和软件可以更好地互操作。
-
故障隔离:分层结构使得故障定位和排除更加容易,因为每个层次都相对独立,故障往往局限在特定的层次。
二、OSI参考模型(不需要关注)
OSI(Open Systems Interconnection,开放系统互联)参考模型是最经典的网络分层模型之一,它将计算机网络分为七个层次:
-
物理层(Physical Layer):负责传输原始比特流,主要关注物理介质、电压规范、数据传输速率等。
-
数据链路层(Data Link Layer):负责将比特流转换为数据帧,进行错误检测和纠正,并管理物理介质的访问。
-
网络层(Network Layer):负责数据包的路由和转发,实现不同网络之间的通信。
-
传输层(Transport Layer):提供端到端的可靠数据传输,负责数据的分段和重组,同时处理传输中的错误和拥塞控制。
-
会话层(Session Layer):管理会话的建立、维护和终止,提供数据传输的同步和控制功能。
-
表示层(Presentation Layer):负责数据的格式转换、加密解密、数据压缩和编码等,以确保不同系统之间的数据交换的可靠性和兼容性。
-
应用层(Application Layer):提供网络服务和应用程序的接口,包括电子邮件、文件传输、远程登录等。
但是现在基本是存在教科书,实际情况使用很少的。
三. TCP/IP模型
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)模型是另一种常用的网络分层模型。
标准定义的TCP/IP模型为四层模型,没有对网络接口层进行明确的细分。
但是我们在使用TCP/IP模型时,一般会网络接口层分为链路层物理层来使用
3.1 四层分层
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)模型是另一种常用的网络分层模型,它将网络分为四个层次:
-
网络接口层(Network Interface Layer):负责将数据帧转换为比特流,并管理物理介质的访问。
-
网络层(Internet Layer):负责数据包的路由和转发,实现不同网络之间的通信。
-
传输层(Transport Layer):提供端到端的可靠数据传输,负责数据的分段和重组,同时处理传输中的错误和拥塞控制。
-
应用层(Application Layer):提供网络服务和应用程序的接口,包括HTTP、FTP、SMTP等。
3.2 五层分层
尽管TCP/IP模型在理论上包含四个层次,但在实际应用中通常会将网络接口层和网络层合并为一个层次,形成了五层模型。这种五层模型更符合实际网络系统的设计和管理需求。
TCP/IP模型将网络分为五个层次:
-
物理层(Physical Layer):负责传输原始比特流,主要关注物理介质、电压规范、数据传输速率等。
-
数据链路层(Data Link Layer):负责将比特流转换为数据帧,进行错误检测和纠正,并管理物理介质的访问。
-
网络层(Network Layer):负责数据包的路由和转发,实现不同网络之间的通信。
-
传输层(Transport Layer):提供端到端的可靠数据传输,负责数据的分段和重组,同时处理传输中的错误和拥塞控制。
-
应用层(Application Layer):提供网络服务和应用程序的接口,包括电子邮件、文件传输、远程登录等。
四 应用层
应用层是TCP/IP模型中的最顶层,也是用户与网络之间直接交互的层次。它负责处理特定应用程序的通信细节,为用户提供各种网络服务和应用。以下是应用层的一些重要特点和功能:
-
提供应用服务:应用层提供了各种不同类型的网络应用服务,例如电子邮件、文件传输、远程登录、网页浏览等。每种服务都使用特定的应用层协议来实现。
-
定义应用层协议:应用层协议规定了通信双方在数据交换过程中所采用的语法、语义和规则。常见的应用层协议包括HTTP、FTP、SMTP、POP3、IMAP、DNS等。
-
数据格式转换:应用层负责将用户数据转换为适合在网络上传输的格式,并在接收端将其转换回原始格式。例如,Web浏览器将HTML、CSS和JavaScript等文件转换为可在Internet上传输的数据包。
-
用户界面:应用层为用户提供了与网络应用程序交互的用户界面,如图形用户界面(GUI)或命令行界面(CLI),使用户能够方便地使用各种网络服务。
-
身份认证和授权:一些应用层协议包括身份认证和授权机制,以确保通信双方的身份合法性,并限制对网络资源的访问权限。例如,在电子邮件服务中,用户需要通过用户名和密码进行身份验证才能发送和接收邮件。
总的来说,应用层为用户提供了各种网络服务和应用,并在用户和网络之间建立了桥梁,使得用户能够方便地访问和利用网络资源。
4.1 应用层协议
应用层协议规定了通信双方在数据交换过程中所采用的语法、语义和规则。常见的应用层协议包括HTTP、FTP、SMTP、POP3、IMAP、DNS等。
4.1.1 DNS (Domain Name System,域名系统)
DNS(Domain Name System,域名系统)位于TCP/IP模型中的应用层,负责将域名(如example.com)转换为相应的IP地址(如192.0.2.1)。
虽然DNS提供了一种机制来解析域名和IP地址之间的映射关系,但它更加适合归类为应用层,而不是传输层或网络层。这是因为DNS协议是基于UDP或TCP协议的。UDP和TCP协议都是传输层的一部分,它们负责在网络中传输数据,而DNS协议则是在这些传输层协议之上实现的。
换句话说,DNS协议利用了UDP或TCP协议来在网络中传输数据,但DNS本身更关注的是提供域名解析服务,而不是直接参与数据的传输。因此,DNS更适合被归类为应用层,因为它主要为特定应用程序(如Web浏览器、电子邮件客户端等)提供服务,而不是直接在网络中传输数据。
DNS的主要功能包括:
-
域名解析:DNS负责将用户提供的域名转换为对应的IP地址。当用户在浏览器中输入一个域名时,浏览器会向DNS服务器发送查询请求,以获取该域名对应的IP地址,从而建立连接并访问相应的网站或服务器。
-
分布式数据库:DNS采用分布式数据库的方式来存储域名和IP地址之间的映射关系,这使得DNS系统具有高可靠性和可扩展性。DNS数据库分布在全球各地的DNS服务器上,并通过层级结构进行管理和查询。
-
域名解析缓存:为了提高解析效率和减轻DNS服务器的负载,DNS客户端和服务器通常会缓存最近解析的域名和IP地址映射关系。这样,当再次查询相同域名时,可以直接从缓存中获取结果,而无需再次向DNS服务器发送查询请求。
总的来说,DNS作为域名解析系统,提供了一种方便的机制来管理和解析域名与IP地址之间的映射关系,从而帮助用户访问互联网上的各种网络资源。由于其功能和特性,DNS通常被归类为应用层。
4.1.2 HTTP(Hypertext Transfer Protocol,超文本传输协议)
HTTP(Hypertext Transfer Protocol,超文本传输协议)用于在客户端和服务器之间传输超文本数据,如HTML页面、图片、视频等。
- HTTP是一种无状态的协议,即每个请求与响应之间都是独立的,服务器不会保存客户端的状态信息。
- HTTP使用TCP协议作为其传输层协议,默认端口是80。
- HTTP的通信过程是客户端向服务器发送请求,服务器接收并处理请求后返回响应给客户端。
- HTTP的请求方法包括GET、POST、PUT、DELETE等,其中GET用于获取资源,POST用于提交数据等。
- HTTP的请求和响应消息格式是纯文本,由请求行、请求头、空行和消息体组成。
4.1.3 HTTPS(Hypertext Transfer Protocol Secure,安全超文本传输协议)
HTTPS(Hypertext Transfer Protocol Secure,安全超文本传输协议),用于在客户端和服务器之间传输超文本数据,如HTML页面、图片、视频等。
- HTTPS是HTTP的安全版本,它通过在HTTP和TCP之间添加SSL/TLS协议层来提供加密通信和身份验证。
- HTTPS使用了公钥加密算法和数字证书,通过在通信过程中对数据进行加密和验证来保护数据的安全性和完整性。
- HTTPS的默认端口是443。
- HTTPS在性能上稍逊于HTTP,因为加密和解密过程会增加额外的计算开销和网络延迟。
- HTTPS协议可以防止中间人攻击(Man-in-the-middle attack)和窃听攻击,保护了用户的隐私和数据安全。
总的来说,HTTP和HTTPS都是应用层协议,用于在客户端和服务器之间传输超文本数据,但HTTPS在安全性方面更加强大,适用于对数据安全性要求较高的场景,如网上银行、电子商务等。
4.1.4 FTP(File Transfer Protocol,文件传输协议)
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络中传输文件的标准网络协议。它允许用户在网络上共享文件,并提供了一种可靠的、可扩展的方法来上传和下载文件。
以下是FTP协议的主要特点和工作原理:
-
客户端-服务器模型:
- FTP采用了客户端-服务器模型。客户端是请求文件传输的用户端,服务器是存放文件的主机端。
- 客户端通过FTP客户端软件(如FileZilla、WinSCP等)连接到FTP服务器,并发送FTP命令来请求文件的传输。
-
传输模式:
- FTP支持两种传输模式:ASCII模式和二进制模式(也称为二进制模式)。
- ASCII模式适用于文本文件的传输,它会将文本文件中的行尾字符进行转换,以适应不同操作系统的格式。
- 二进制模式适用于非文本文件(如图像、音频、视频等)的传输,它直接将文件的二进制数据传输到目标系统。
-
连接方式:
- FTP可以使用两种不同的连接方式:主动模式和被动模式。
- 主动模式下,客户端在随机端口上向服务器的标准端口(通常是21)发送连接请求,然后服务器通过一个随机端口向客户端回送数据。
- 被动模式下,客户端在随机端口上向服务器的标准端口(通常是21)发送连接请求,然后服务器也在一个随机端口上回送数据,客户端再连接到该端口上获取数据。
-
安全性:
- FTP协议本身不提供数据加密,所有的数据传输都是明文的,包括用户的登录信息和文件内容。
- 为了增强安全性,可以使用FTPS(FTP Secure)或SFTP(SSH File Transfer Protocol)等安全的FTP协议替代原始的FTP协议。FTPS添加了SSL/TLS加密层,而SFTP使用SSH协议进行安全传输。
总的来说,FTP协议是一种常用的文件传输协议,它提供了可靠的文件传输服务,但在安全性方面存在一些缺陷,可以通过使用加密和身份验证等措施来加强安全性。
4.1.5 POP3(Post Office Protocol version 3,邮局协议第3版)
POP3(Post Office Protocol version 3,邮局协议第3版)是一种用于电子邮件服务的协议,它是最常用的接收邮件协议之一。POP3允许用户通过电子邮件客户端软件(如Outlook、Thunderbird等)从邮件服务器上下载邮件到本地计算机上。
以下是POP3协议的主要特点和工作原理:
-
客户端-服务器模型:
- POP3采用了客户端-服务器模型。邮件客户端通过POP3协议连接到邮件服务器,并发送命令来管理和获取邮件。
-
邮件下载:
- 用户使用邮件客户端软件通过POP3协议连接到邮件服务器上的收件箱(Inbox),然后可以使用命令来获取邮件。
- POP3协议通常会将服务器上的邮件下载到用户的本地计算机上,并从服务器上删除已下载的邮件,但也可以选择不删除邮件而只是将其标记为已读。
-
邮件删除:
- 默认情况下,POP3会从服务器上删除已下载的邮件,因此邮件只存在于本地计算机上。
- 可以通过设置邮件客户端来保留邮件的备份副本或者延迟删除邮件,以便在多个设备上访问邮件。
-
连接和认证:
- 客户端通过TCP连接到邮件服务器的标准端口(通常是110),然后发送用户凭据进行身份验证。
- 一旦认证成功,客户端可以使用一系列命令来管理邮箱,如获取邮件、删除邮件、获取邮件数量等。
-
安全性:
- POP3协议本身是不加密的,所有的通信都是明文的,包括用户的登录信息和邮件内容。
- 为了增强安全性,可以使用POP3S(POP3 Secure)协议,它在POP3协议上添加了SSL/TLS加密层,保护了用户的隐私和数据安全。
总的来说,POP3协议是一种用于接收邮件的协议,它允许用户通过电子邮件客户端软件从邮件服务器上下载邮件到本地计算机上,并提供了简单的邮件管理功能。
五、传输层
传输层协议是计算机网络体系结构中的一个关键组成部分,负责在网络中的不同节点之间提供可靠的数据传输服务。传输层协议主要有两个经典的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。
以下是对TCP和UDP的简要解释以及它们的主要特点:
-
TCP(传输控制协议):
- TCP是一种面向连接的、可靠的传输层协议,它确保数据的可靠传输,以及数据的顺序传输。
- TCP通过三次握手建立连接,确保数据传输的可靠性。在数据传输过程中,如果数据丢失或损坏,TCP会重新传输数据,直到接收方确认正确接收。
- TCP提供流量控制和拥塞控制机制,以避免网络拥塞和数据丢失。
- TCP适用于需要高可靠性和顺序传输的应用,如网页浏览、文件传输、电子邮件等。
-
UDP(用户数据报协议):
- UDP是一种无连接的、不可靠的传输层协议,它不保证数据的可靠传输和顺序传输。
- UDP通过数据报的方式发送数据,不需要建立连接,因此传输效率较高。
- UDP不提供流量控制和拥塞控制机制,因此在网络拥塞或丢包情况下可能会丢失数据。
- UDP适用于实时应用,如视频流、音频流、在线游戏等,对传输延迟和带宽要求较高的场景。
除了TCP和UDP之外,还有一些其他的传输层协议,如SCTP(Stream Control Transmission Protocol,流控制传输协议)、DCCP(Datagram Congestion Control Protocol,数据报拥塞控制协议)等,它们提供了不同的特性和应用场景,用于满足不同类型的通信需求。传输层协议在计算机网络中扮演着至关重要的角色,它们为上层应用提供了可靠的数据传输服务,支撑着互联网的正常运行。
六、 网络层
网络层是计算机网络体系结构中的一个重要组成部分,位于数据链路层和传输层之间,负责实现主机之间的数据传输和路由选择。它主要解决了数据如何在网络中传输的问题,并提供了一种在不同网络之间传输数据的机制。
以下是网络层的主要功能和特点:
-
数据传输服务:网络层负责将数据从源主机传输到目的主机,它通过使用一系列网络协议和算法来实现数据的可靠传输。
-
路径选择和转发:网络层通过路由选择算法来确定数据包的传输路径,选择最佳的路径是根据不同的标准,例如最短路径、最小拥塞等。
-
地址分配和转换:网络层使用 IP 地址来唯一标识网络中的每个设备,它负责为每个设备分配唯一的 IP 地址,并且在数据包传输过程中负责将逻辑地址转换为物理地址。
-
分段和重组:在传输大数据时,网络层将数据分段成较小的数据包进行传输,并在目的主机上重组这些数据包,以提高传输效率和可靠性。
-
流量控制和拥塞控制:网络层通过流量控制和拥塞控制算法来管理网络中的数据流量,以确保网络的稳定运行和高效利用。
网络层的主要协议是 IP 协议(Internet Protocol),它是互联网中最常用的网络层协议,负责在全球范围内传输数据。除了 IP 协议之外,还有一些其他的网络层协议,例如 ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,它们在网络中起着不同的作用,共同构成了网络层的功能和特点。
6.1 IP(Internet Protocol)协议
IP(Internet Protocol)协议是网络层中最重要的协议之一,它是互联网中数据通信的基础。IP 协议定义了在网络中传输数据的格式、规则和流程,它为每个设备分配一个唯一的 IP 地址,并负责将数据包从源主机传输到目的主机。
下面详细介绍 IP 协议的主要特点和功能:
-
面向无连接:IP 协议是一种无连接的协议,每个数据包都是独立的,不需要在发送之前建立连接。这意味着每个数据包都必须携带完整的目的地地址信息,路由器根据目的地地址来转发数据包。
-
分组交换:IP 协议使用分组交换的方式传输数据。数据被分割成称为数据包(或者 IP 数据报)的小块,并通过网络中的路由器逐跳传输。这种方式相比于电路交换和消息交换更加高效,能够更好地利用网络资源。
-
无状态:IP 协议是无状态的,每个数据包都是独立处理的,路由器不会保留任何关于前一数据包的信息。这种设计简化了路由器的设计和实现,并且提高了网络的可扩展性。
-
提供最佳传输路径:IP 协议通过路由选择算法来确定数据包的传输路径,选择最佳路径是根据不同的标准,例如最短路径、最小拥塞等。这样可以确保数据包能够以最快的速度到达目的地。
-
IP 地址:IP 协议使用 IP 地址来唯一标识网络中的每个设备。IPv4 地址是一个 32 位的二进制数,通常用点分十进制表示,例如 192.168.1.1。IPv6 地址则是一个 128 位的二进制数,通常用冒号分隔的十六进制表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。IP 地址分为网络部分和主机部分,网络部分用于识别网络,主机部分用于识别主机。
-
错误检测:IP 协议在数据包头部添加了一些用于错误检测和纠正的字段,例如校验和字段,用于检测数据包在传输过程中是否出现了错误。
-
片段和重组:当数据包太大无法一次传输时,IP 协议会将数据包分割成较小的片段进行传输,并在目的主机上重组这些片段。这样可以提高数据传输的效率和可靠性。
IP 协议是互联网中最基础的协议之一,它为各种应用层协议提供了底层的数据传输服务,是构建互联网的重要基石
七、数据链路层
数据链路层是计算机网络体系结构中的第二层,位于物理层之上、网络层之下,主要负责在直接相连的两个节点之间传输数据。它的功能包括数据的帧封装、物理地址的寻址、数据的传输和错误检测等。
下面详细介绍数据链路层的主要特点和功能:
-
数据帧封装:数据链路层将网络层传递下来的数据封装成数据帧(Frame),添加帧头和帧尾等控制信息。帧头包含了目标地址和源地址等信息,帧尾通常包含了错误检测和纠正的校验码。
-
物理地址寻址:数据链路层使用物理地址(MAC 地址)来唯一标识网络中的每个设备。MAC 地址是一个 48 位的二进制数,通常用 12 个十六进制数字表示,例如 00:1A:2B:3C:4D:5E。在数据链路层中,通常通过 MAC 地址来确定数据帧的目标设备,并将数据帧发送到目标设备的物理地址。
-
数据传输:数据链路层负责将数据帧从一个节点传输到另一个节点。它通过物理层提供的传输介质(例如以太网、Wi-Fi 等)来实现数据的物理传输。
-
错误检测:数据链路层通过在数据帧中添加校验码等字段来检测数据传输过程中是否发生了错误。常用的校验方法包括 CRC(Cyclic Redundancy Check)等。
-
流量控制:数据链路层通过流量控制来管理数据的传输速率,以防止发送方发送数据速度过快而导致接收方无法处理。常见的流量控制方法包括停止-等待协议、滑动窗口协议等。
-
访问控制:数据链路层负责控制多个设备共享同一物理传输介质的访问。在共享介质的网络中,通常会使用一些访问控制协议(如 CSMA/CD、CSMA/CA 等)来协调各个设备的传输行为,以避免冲突和碰撞。
常见的数据链路层协议包括以太网(Ethernet)、无线局域网(Wi-Fi)、PPP(Point-to-Point Protocol)等。这些协议通常针对不同的网络环境和需求设计,但它们都遵循了数据链路层的基本功能和特点,为网络通信提供了可靠的基础支持。
八、物理层
物理层是计算机网络体系结构中的最底层,负责传输原始比特流(bits)并管理物理连接的层级。物理层的主要任务是实现数据在传输介质上的传输,以及确保设备之间的物理连接能够正常进行。
以下是物理层的主要特点和功能:
-
传输介质:
- 物理层管理传输介质,包括双绞线、光纤、无线电波等不同类型的物理媒介。它定义了在这些介质上传输数据比特流的方式和规范。
-
数据编码:
- 物理层负责将数字数据转换为适合于传输介质的模拟信号或数字信号。这涉及到数据的编码、调制和解调过程,以确保数据能够在传输介质上传输并正确解释。
-
物理连接:
- 物理层管理设备之间的物理连接,包括连接器、电缆、接口等。它定义了连接的标准和规范,以确保设备之间能够正确连接并进行通信。
-
数据传输速率:
- 物理层定义了数据传输的速率,通常以比特率(bits per second,bps)来衡量。传输速率取决于传输介质的特性和设备的能力。
-
信道复用:
- 物理层负责信道的复用,即多个设备共享同一传输介质的过程。常见的信道复用技术包括时分复用(Time Division Multiplexing,TDM)和频分复用(Frequency Division Multiplexing,FDM)等。
-
物理拓扑:
- 物理层定义了网络的物理拓扑结构,即设备之间的物理连接方式。常见的物理拓扑包括星型、总线型、环型、树型等。
物理层的工作直接影响着整个计算机网络的性能和可靠性。它提供了数据传输的基础,为上层协议(如数据链路层、网络层、传输层和应用层)提供了可靠的数据传输服务。
相关文章:

深入理解计算机网络分层结构
一、 为什么要分层? 计算机网络分层的主要目的是将复杂的网络通信过程分解为多个相互独立的层次,每个层次负责特定的功能。这样做有以下几个好处: 模块化设计:每个层次都有清晰定义的功能和接口,使得网络系统更易于设…...

亚马逊云科技CTO带你学习云计算降本增效秘诀
2023亚马逊云科技一年一度的重磅春晚--Re:invent上有诸多不同话题的主题Keynote,这次小李哥带大家复盘来自亚马逊CTO: Wener博士的主题演讲: 云架构节俭之道1️⃣节俭对于云计算为什么重要? ▶️企业基础设施投入大,利用好降本策略可以减少巨…...

快速上手Vue
目录 概念 创建实例 插值表达式 Vue响应式特性 概念 Vue是一个用于 构建用户界面 的 渐进式 框架 构建用户界面:基于数据渲染出用户看到的页面 渐进式:Vue相关生态:声明式渲染<组件系统<客户端路由<大规模状态管理<构建工具 V…...
java 目录整理
Java知识相关目录主要参考黑马程序员 风清扬老师的视屏,参考链接为 Java_黑马刘意(风清扬)2019最新版_Java入门视频_Java入门_Java编程_Java入门教程_黑马教程_黑马程序员_idea版_哔哩哔哩_bilibili 1、java 基础 java基本认识?java跨平台原理?jdk、jre、jvm的联系? 链接:…...

使用Python的Pillow库进行图像处理书法参赛作品
介绍: 在计算机视觉和图像处理领域,Python是一种强大而流行的编程语言。它提供了许多优秀的库和工具,使得图像处理任务变得轻松和高效。本文将介绍如何使用Python的wxPython和Pillow库来选择JPEG图像文件,并对选中的图像进行调整和…...
docker 容器指定utf-8编码
在运行 Docker 容器的时候,如果容器内应用需要使用 UTF-8 编码来正常处理中文,你可以通过设置环境变量来指定编码。 可以使用 -e 或者 --env 标志来设置环境变量。比如,设置 LANG 和 LC_ALL 环境变量为 C.UTF-8 或者 en_US.UTF-8:…...

单例模式以及常见的两种实现模式
单例模式是校招中最常考的设计模式之一. 设计模式其实就是类似于“规章制度”,按照这个套路来进行操作。 单例模式能保证某个类在程序中只存在唯一 一份实例。而不会创建出多个实例,如果创建出了多个实例,就会编译报错。而不会创建出多个实…...
Java hashCode() 和 equals()的若干问题解答
Java hashCode() 和 equals()的若干问题解答 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equals() 之间有什么联系? …...
高级IO——React服务器简单实现
3.4Reactor服务器实现 1.connect封装 每一个连接都要有一个文件描述符和输入输出缓冲区,还有读、写、异常处理的回调方法; 还包括指向服务器的回指指针; class connection; class tcpserver;using func_t std::function<void(s…...

Qt使用插件QPluginLoader 机制开发
简介: 插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。 Qt 提供了2种APIs来创建插件: 一种高级API,用于为Qt本身编写插件:自定义数据库驱动程序,图像格…...

双子座 Gemini1.5和谷歌的本质
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

二百三十、MySQL——MySQL表的索引
1 目的 梳理一下目前MySQL维度表的索引情况,当然网上也有其他博客专门讲MySQL索引的,我这边只是梳理一下目前的索引状况而已 2单列索引 2.1 索引截图 2.2 建表语句 3 联合索引 3.1 索引截图 3.2 建表语句 4 参考的优秀博客 http://t.csdnimg.cn/ZF7…...

并发编程之ThreadLocal使用及原理
ThreadLocal主要是为了解决线程安全性问题的 非线程安全举例 public class ThreadLocalDemo {// 非线程安全的private static final SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static Date parse(String strDate) throws ParseExc…...

软件测试 测试开发丨Pytest结合数据驱动-yaml,熬夜整理蚂蚁金服软件测试高级笔试题
编程语言 languages: PHPJavaPython book: Python入门: # 书籍名称 price: 55.5 author: Lily available: True repertory: 20 date: 2018-02-17 Java入门: price: 60 author: Lily available: False repertory: Null date: 2018-05-11 yaml 文件使用 查看 yaml 文件 pych…...

软考数据库---2.SQL语言
主要记忆:表、索引、视图操作语句;数据操作;通配符、转义符;授权;存储过程;触发器 这部分等等整理一下: “”" 1、 数据定义语言。 SQL DDL提供定义关系模式和视图、 删除关系和视图、 修改关系模式的…...

基于顺序表实现通讯录
上篇我们讲了顺序表是什么,和如何实现顺序表。这篇文章我们将基于顺序表来实现通讯录。 文章目录 前言一、基于顺序表是如何实现的二、通讯录的头文件和实现文件三、通讯录的实现3.1 定义通讯录结构3.2 初始化通讯录3.3 销毁通讯录3.4 通讯录添加数据3.5 查找联系人…...

咸鱼之王_手游_开服搭建架设_内购修复无bug运营版
视频演示 咸鱼之王_手游_开服 游戏管理后台界面 源码获取在文章末尾 源码获取在文章末尾 源码获取在文章末尾 或者直接下面 https://githubs.xyz/y28.html 1.安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &…...

【JSON2WEB】14 基于Amis的CRUD开发30分钟速成
【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…...

Java入门教程||Java 变量
Java 变量 Java教程 - Java变量 变量由标识符,类型和可选的初始化程序定义。变量还具有范围(可见性/生存期)。 Java变量类型 在Java中,必须先声明所有变量,然后才能使用它们。变量声明的基本形式如下所示࿱…...

基于Java的校园快递一站式服务系统 (源码+文档+包运行)
一.系统概述 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园快递一站式服务系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...