Linux 计算机网络基础概念
目录
0.前言
1.计算机网络背景
1.1 独立模式
1.2 网络互联
1.3 局域网(Local Area Network,LAN)
1.4 广域网(Wide Area Network,WAN)
2.协议
2.1什么是协议
2.2协议分层和软件分层
2.3 OSI七层网络模型
2.3.1 OSI七层模型的分层结构
2.3.2每一层的职责与特点
2.3.3 OSI模型的优势
2.4 TCP/IP协议五层/四层模型
2.4.1五层模型结构
2.4.2四层模型结构
2.4.3各层功能详解
2.4.4 TCP/IP模型的特点与优势
2.5 TCP/IP协议与操作系统的关系
2.5.1操作系统中的TCP/IP协议栈
2.5.2 TCP/IP协议栈的实现与操作系统功能
3.网络传输基本流程
3.1局域网通信原理(以“以太网”为例)
3.1.1MAC地址
3.1.2数据包封装和分用
3.2跨网络传输
3.2.1 IP地址
3.2.2 IP地址和MAC地址的区别
4.小结
(图像由AI生成)
0.前言
在Linux专栏的前几篇博客中,我们讨论了Linux系统的基础知识,如文件系统、权限管理和进程控制等内容。本篇将聚焦于Linux环境下的计算机网络基础知识。网络是现代计算不可或缺的一部分,深入理解网络原理与协议有助于更好地掌握Linux网络工具与服务。
1.计算机网络背景
计算机网络的发展经历了从单机独立运行到全球互联的漫长过程,每个阶段都体现了技术进步和需求驱动。以下是其主要发展阶段的介绍:
1.1 独立模式
在计算机刚出现的早期,计算机以单机模式运行,所有的计算任务和数据处理都在一台机器上完成。这种模式下,数据传输主要依靠物理介质(如磁带、软盘)在设备之间进行,效率低且不方便。
特点:
- 无需网络连接。
- 仅能进行本地运算和存储。
- 数据交换需要依赖外部存储介质。
1.2 网络互联
随着计算机数量的增加,用户对设备之间数据共享和通信的需求变得强烈。点对点连接成为可能,通过简单的连接线缆让两台计算机直接进行数据通信,这是网络互联的雏形。
特点:
- 实现了点对点的简单数据传输。
- 通信范围受限,仅适用于少量计算机。
1.3 局域网(Local Area Network,LAN)
局域网的出现是计算机网络发展的里程碑。通过交换机、集线器等网络设备,局域网可以将多个设备连接在同一网络中,实现资源共享和高效通信。局域网通常覆盖有限的地理范围,如一个办公室或校园。
特点:
- 通信范围通常在一个建筑或校园内。
- 数据传输速度快(以太网早期速度为10 Mbps,现在可达Gbps)。
- 支持多台设备的高效连接。
1.4 广域网(Wide Area Network,WAN)
当局域网的范围进一步扩展时,通过路由器连接多个局域网形成的广域网成为可能。广域网覆盖范围可以非常广泛,从一个城市到整个国家,甚至全球。互联网就是最大的广域网。
特点:
- 通信范围广泛,可覆盖全球。
- 使用路由器和多种协议(如IP)实现不同网络之间的互联。
- 支持跨地域的大规模通信。
总而言之,计算机网络的背景发展从独立模式到网络互联,再到局域网和广域网,体现了技术和需求的不断演进。如今,网络已经从最初的简单连接发展为复杂的全球互联网,成为现代社会的基础设施之一。这为Linux等操作系统在网络服务领域的应用奠定了重要基础。
2.协议
网络协议是计算机网络正常运行的核心,其存在确保了设备之间的数据传输能够准确无误地完成。在本节中,我们将介绍协议的基本概念及其分层设计理念。
2.1什么是协议
网络协议(Protocol)是指通信双方为完成数据交换所共同遵守的一套规则和约定。这些规则包括数据的格式、传输方式、错误处理以及断开连接等内容。
简单来说,协议就像人与人之间的语言规则。例如,当两个人通过相同的语言交流时,信息才能准确传递;同样,计算机网络中的协议确保了不同设备能够理解和处理数据。
网络协议的核心作用包括:
- 标准化:使不同厂商的设备能够互联互通。
- 规范性:定义了数据在传输过程中的行为。
- 可靠性:通过校验和重传机制,确保数据正确传输。
举例:
- HTTP协议:定义了网页浏览器与服务器之间的通信规则。
- TCP协议:确保数据在传输中无错误且按顺序到达。
2.2协议分层和软件分层
网络通信是一个复杂的过程,为了降低设计难度并提高效率,网络协议通常采用分层设计的理念。分层设计将复杂的通信任务划分为若干独立的功能模块,每个模块专注于特定任务。
协议分层的特点:
-
模块化设计
每一层完成特定功能,互不干扰。例如,传输层关注数据的可靠传输,而物理层则负责信号的传递。 -
接口标准化
各层之间通过接口传递数据和信息,无需了解其他层的具体实现。例如,应用层无需关注底层硬件如何工作。 -
便于开发与维护
协议的分层设计使得开发者可以专注于某一层的优化,而不影响其他层。
协议分层 vs. 软件分层
协议分层与操作系统的软件分层理念相似。例如,在Linux系统中:
- 操作系统的分层包括内核层、硬件抽象层和用户层。
- 协议的分层则对应了从物理传输到应用服务的不同阶段。
二者的共同点在于通过分层实现复杂任务的简化和模块化。例如:
- 协议分层:物理层负责电信号传输,传输层确保数据可靠到达。
- 软件分层:驱动程序负责硬件控制,用户应用只需调用接口。
通过分层设计,网络协议不仅实现了多厂商设备的互通,还为Linux等操作系统提供了结构化的网络通信支持。
2.3 OSI七层网络模型
OSI(Open Systems Interconnection)模型是国际标准化组织(ISO)提出的网络通信框架,是一种理论上的参考模型,用于定义网络通信的结构和分层。
OSI模型将网络通信划分为七个层次,从硬件传输到应用服务,层与层之间通过标准接口交互。其核心目的是规范和简化不同设备、协议之间的通信,促进互联互通。
2.3.1 OSI七层模型的分层结构
OSI模型的七层自下而上分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
层次 | 主要功能 | 示例协议/设备 |
---|---|---|
应用层 | 面向用户,提供网络服务接口,如文件传输、邮件、远程登录等。 | HTTP、FTP、SMTP |
表示层 | 数据格式的转换、加密、解密和压缩,确保不同设备之间的数据表示一致。 | JPEG、GIF、TLS |
会话层 | 管理会话建立、维持和断开,如数据同步和传输控制。 | NetBIOS、RPC |
传输层 | 提供端到端的可靠数据传输和错误检测,确保数据完整到达目标端。 | TCP、UDP |
网络层 | 负责路由和逻辑地址(IP)的分配,确保数据能跨网络到达目标设备。 | IP、ICMP、IGRP |
数据链路层 | 负责数据帧的组装、传输与错误检测,在局域网中完成数据的正确传输。 | Ethernet、PPP、Wi-Fi |
物理层 | 负责比特流的传输,定义物理介质(如光纤、电缆)和信号规范(如电压、频率)。 | 光纤、网线、无线信号 |
2.3.2每一层的职责与特点
-
物理层
- 传输比特流,通过信号在物理介质上传递数据。
- 定义设备接口、信号电压、传输速率等硬件标准。
-
数据链路层
- 将数据封装成帧,进行物理地址(MAC地址)识别。
- 提供数据链路的错误检测和恢复功能。
-
网络层
- 负责逻辑寻址(如IP地址)和路由选择。
- 支持数据包在多个网络之间的转发。
-
传输层
- 提供端到端的通信服务,确保数据完整性和可靠性。
- 实现流量控制和错误校验。
-
会话层
- 管理应用程序之间的会话,控制会话的建立、维护和终止。
- 支持数据同步与断点续传。
-
表示层
- 负责数据的语法和语义表示转换,解决设备间的兼容性问题。
- 提供加密与解密、数据压缩功能。
-
应用层
- 面向用户提供网络服务,如浏览网页、发送邮件、文件下载等。
- 是用户与网络交互的接口。
2.3.3 OSI模型的优势
-
标准化
OSI模型为网络设备的设计和通信协议的开发提供了统一的标准。 -
模块化
每层功能独立,便于开发和维护。例如,物理层的改进不会影响传输层的功能。 -
互通性
不同厂商的设备只需遵循OSI标准即可互联互通。
2.4 TCP/IP协议五层/四层模型
TCP/IP模型是现代计算机网络中最广泛使用的协议参考模型,其设计基于OSI模型,但更加实际和简化。TCP/IP模型定义了网络中通信协议的分层方式,帮助实现不同设备之间的互联互通。
2.4.1五层模型结构
TCP/IP协议模型在实际中通常被描述为五层模型,其从上到下分别为:应用层、传输层、网络层、数据链路层、物理层。
层次 | 主要功能 | 示例协议/设备 |
---|---|---|
应用层 | 面向用户提供网络服务,如文件传输、邮件、远程登录等。 | HTTP、FTP、SMTP |
传输层 | 提供端到端的可靠数据传输和错误检测,确保数据完整到达目标端。 | TCP、UDP |
网络层 | 负责路由和逻辑地址(IP)的分配,确保数据能跨网络到达目标设备。 | IP、ICMP、ARP |
数据链路层 | 管理数据帧的传输,包括错误检测和纠正,确保局域网内数据的正确传输。 | Ethernet、PPP、Wi-Fi |
物理层 | 定义物理介质、信号传输方式和接口规范,将比特流通过网络介质传输。 | 网线、光纤、无线信号 |
2.4.2四层模型结构
在某些场景下,TCP/IP模型也被描述为四层模型,主要合并了物理层与数据链路层,称为网络接口层:
层次 | 主要功能 | 示例协议/设备 |
---|---|---|
应用层 | 提供用户直接使用的网络服务接口。 | HTTP、FTP、DNS |
传输层 | 提供端到端通信的可靠性和流量控制。 | TCP、UDP |
网络层 | 负责数据包的寻址和路由。 | IP、ICMP |
网络接口层 | 包含数据链路层和物理层的功能,处理数据帧的传输与硬件接口。 | Ethernet、Wi-Fi |
2.4.3各层功能详解
-
应用层
- 面向用户的最高层,提供文件传输、电子邮件、网页浏览等功能。
- 典型协议包括:HTTP(网页浏览)、FTP(文件传输)、DNS(域名解析)。
-
传输层
- 负责端到端的数据传输,提供可靠的传输保障(TCP)或无连接服务(UDP)。
- TCP协议:确保数据按顺序到达且无丢失。
- UDP协议:提供快速但不保证可靠性的传输。
-
网络层
- 负责跨网络的数据传输,提供逻辑地址(IP地址)和路由选择功能。
- 典型协议包括:IP(数据包传输)、ICMP(网络诊断)。
-
数据链路层(或网络接口层)
- 负责局域网内数据帧的传输和物理地址(MAC地址)的管理。
- 典型协议包括:以太网协议(Ethernet)。
-
物理层
- 处理数据比特流的实际传输,包括电缆、光纤和无线信号的介质规范。
- 定义接口标准和信号类型,如网线的RJ45接口。
2.4.4 TCP/IP模型的特点与优势
-
简化设计
与OSI模型相比,TCP/IP模型更简洁,四层或五层的划分更适合实际应用。 -
广泛应用
TCP/IP是互联网的核心协议,几乎所有网络设备和系统都支持。 -
实用性强
TCP/IP模型基于现实需求设计,直接面向网络通信的具体问题,如IP寻址、端到端可靠传输。
2.5 TCP/IP协议与操作系统的关系
TCP/IP协议与操作系统的关系紧密,现代操作系统(如Linux、Windows、macOS)都内置了对TCP/IP协议栈的支持。操作系统通过实现协议栈,为应用程序提供网络通信的底层支持,使开发者无需关心具体的网络实现细节。
2.5.1操作系统中的TCP/IP协议栈
TCP/IP协议栈是操作系统中处理网络通信的核心部分,它实现了TCP/IP协议模型的各个层次功能:
-
用户空间与内核空间
- 应用层(用户空间):提供诸如HTTP、FTP、DNS等协议支持,供用户直接调用。
- 传输层及以下(内核空间):内核负责实现TCP/IP协议的传输层、网络层和数据链路层功能,如TCP的可靠传输、IP寻址和路由等。
-
网络接口
操作系统通过网络接口(如Socket API)向应用程序暴露通信接口,使开发者可以调用这些接口实现网络通信。例如,在Linux中,开发者通过socket()
函数创建套接字进行通信。 -
驱动程序支持
数据链路层和物理层功能需要硬件设备(如网卡)的支持,操作系统通过网卡驱动程序控制这些硬件设备,完成比特流的实际传输。
2.5.2 TCP/IP协议栈的实现与操作系统功能
-
数据封装与解封装
操作系统根据TCP/IP协议对数据进行封装(从应用层到物理层)和解封装(从物理层到应用层),实现数据在网络中的发送与接收。 -
多任务与网络通信
操作系统支持多任务环境,可以同时为多个应用程序提供网络服务,利用TCP和UDP端口区分不同任务的数据。 -
安全性与防护
操作系统通过防火墙(如Linux的iptables)和加密协议(如TLS/SSL)保护网络通信的安全性。
Linux系统对TCP/IP协议的支持非常全面,其内核中集成了完整的协议栈,广泛应用于服务器、路由器和嵌入式设备中。Linux内核中的netfilter
框架还支持网络包过滤和流量控制,使其成为网络管理的强大工具。
3.网络传输基本流程
计算机网络的传输过程可以看作是数据在协议栈中经过逐层处理,从发送方的应用层到达接收方的应用层。这个过程分为两种主要场景:局域网通信和跨网络通信。
3.1局域网通信原理(以“以太网”为例)
局域网(Local Area Network, LAN)是网络的基础单元,用于在一个受限范围内连接多个设备。以太网是局域网中最常用的通信技术,其核心是通过MAC地址标识设备并实现数据帧的传输。
以太网通信的基本原理包括以下几个步骤:
-
设备标识(MAC地址)
每台设备都有唯一的MAC地址,用于区分局域网中的各个节点。 -
数据封装和分用
数据在发送前需要被封装为以太网帧,包含发送方和接收方的MAC地址,接收方根据这些信息解析数据。 -
广播与单播
- 广播:当发送方不知道接收方的MAC地址时,会发送广播帧,所有设备都会接收到,但只有目标设备响应。
- 单播:一旦目标设备的MAC地址被确定,通信转为单播形式。
3.1.1MAC地址
MAC地址(Media Access Control Address)是局域网中唯一标识每台设备的硬件地址,嵌入在网卡中,由网卡制造商分配,长度为48位(6字节),通常表示为十六进制格式(如00:1A:2B:3C:4D:5E
)。
MAC地址的特点:
- 唯一性:全球范围内唯一,确保每台设备都能被独立标识。
- 局域网作用:用于局域网内的数据帧传输,类似于快递的收件人地址。
- 静态性:通常不会随设备的网络环境变化而改变,但可以通过软件手段伪装或修改。
作用机制:
在以太网通信中,发送方通过MAC地址标识目标设备。如果发送方不知道目标设备的MAC地址,会使用ARP协议(地址解析协议)进行查询,将IP地址解析为对应的MAC地址。
3.1.2数据包封装和分用
数据在局域网中的传输以“数据帧”为单位,封装与分用是关键过程。
数据封装
发送方的应用程序生成的原始数据需要逐层封装,直至变为适合传输的以太网帧。以太网帧的结构包括:
- 帧前导码(Preamble):用于同步通信。
- 目标MAC地址:指明接收设备。
- 源MAC地址:指明发送设备。
- 类型字段:标明上层协议(如IPv4或IPv6)。
- 数据字段:实际传输的数据。
- 帧校验序列(FCS):用于检测传输错误。
完整的封装流程:
- 应用层数据 → 传输层(加TCP/UDP头部)
- 传输层数据 → 网络层(加IP头部)
- 网络层数据 → 数据链路层(加以太网头部,封装成帧)
- 数据链路层数据 → 物理层(转换为电信号/无线信号传输)。
(图片来自网络传输基本流程 数据包的封装分用_四层网络如何封包-CSDN博客,侵删)
数据分用
接收方接收到以太网帧后,按相反顺序逐层解析数据:
- 物理层:将电信号还原为帧。
- 数据链路层:解析以太网帧,确认目标MAC地址与自身匹配。
- 网络层:提取IP包,解析目标IP地址。
- 传输层:提取TCP/UDP数据,确认端口号匹配。
- 应用层:最终交付给对应的应用程序。
封装与分用的关系
- 封装:发送数据时,逐层增加协议头部,类似打包快递。
- 分用:接收数据时,逐层解析协议头部,类似拆开快递。
3.2跨网络传输
局域网内的通信主要依赖于MAC地址,而当数据需要从一个网络传输到另一个网络时(例如跨越不同的子网或路由器),就需要依靠IP地址完成跨网络的寻址和数据传递。
跨网络传输的关键是路由机制:在数据传输过程中,每个网络设备(如路由器)根据目标IP地址选择数据包的下一跳,直到数据到达最终的目标设备。
3.2.1 IP地址
IP地址(Internet Protocol Address)是逻辑地址,用于在网络层标识网络中的设备。IP地址不同于MAC地址,它可以动态分配,并与网络位置相关。IP地址是实现跨网络通信的核心。
IP地址的格式
IP地址分为两种版本:
- IPv4:由32位二进制组成,通常表示为四段十进制格式,如
192.168.1.1
。 - IPv6:由128位二进制组成,通常表示为八段十六进制格式,如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
。
IP地址的分类
- 私有地址:用于局域网内部通信(如
192.168.0.0/16
、10.0.0.0/8
)。 - 公有地址:用于互联网通信,由互联网服务提供商(ISP)分配。
- 子网划分:通过子网掩码区分网络部分和主机部分,例如
192.168.1.0/24
表示子网的前24位用于网络标识。
IP地址的功能
- 唯一性:确保每个设备在网络层都有唯一的标识。
- 路由寻址:用于路由器决定数据包的转发路径。
- 动态分配:通过DHCP协议自动分配IP地址,简化网络管理。
IP地址的工作原理
- 数据发送前,设备会通过ARP协议解析目标IP地址对应的MAC地址。
- 如果目标设备不在同一局域网内,路由器会根据目标IP地址选择最佳路径,将数据包转发到下一跳设备。
- 数据包最终到达目标设备后,目标设备通过IP头部确认数据是为其而来。
3.2.2 IP地址和MAC地址的区别
IP地址和MAC地址在网络通信中有不同的作用和特性,二者的区别如下:
属性 | MAC地址 | IP地址 |
---|---|---|
定义 | 硬件地址,用于标识网络设备的物理接口(网卡)。 | 逻辑地址,用于标识网络中的设备,随网络位置动态变化。 |
层级 | 数据链路层(Layer 2) | 网络层(Layer 3) |
作用范围 | 局域网内部通信,设备通过MAC地址直接通信。 | 跨网络通信,通过路由器转发数据包。 |
分配方式 | 制造商在设备生产时分配,全球唯一(如00:1A:2B:3C:4D:5E )。 | 动态分配(DHCP)或静态配置(如192.168.1.1 )。 |
固定性 | 通常固定于网卡,可以通过软件伪装修改。 | 与网络位置相关,可随时变更。 |
格式 | 48位,十六进制表示。 | IPv4(32位)或IPv6(128位),十进制/十六进制表示。 |
使用场景 | 局域网内的设备寻址与通信。 | 跨网络的设备寻址与路由。 |
协同工作
- 在局域网通信中,设备通过MAC地址直接相互通信。
- 在跨网络通信中,IP地址用于定位目标网络中的设备,MAC地址用于设备之间的实际数据传递。
- ARP协议:当设备知道目标IP地址但不知道对应的MAC地址时,会使用ARP协议完成IP到MAC地址的解析。
4.小结
本篇博客围绕Linux计算机网络基础,从计算机网络的发展背景,到协议分层模型的基本概念,再到局域网和跨网络的通信原理进行了系统讲解。我们从MAC地址和IP地址的作用入手,分析了数据封装与分用的过程,阐明了局域网内通信和跨网络传输的关键机制。通过这些内容,不仅能理解网络通信的底层原理,还能为Linux系统的网络管理和开发奠定扎实的理论基础。
相关文章:

Linux 计算机网络基础概念
目录 0.前言 1.计算机网络背景 1.1 独立模式 1.2 网络互联 1.3 局域网(Local Area Network,LAN) 1.4 广域网(Wide Area Network,WAN) 2.协议 2.1什么是协议 2.2协议分层和软件分层 2.3 OSI七层网络模型 2.3…...

qt QGraphicsEllipseItem详解
1、概述 QGraphicsEllipseItem是Qt框架中QGraphicsItem的一个子类,它提供了一个可以添加到QGraphicsScene中的椭圆项。QGraphicsEllipseItem表示一个带有填充和轮廓的椭圆,也可以用于表示椭圆段(通过startAngle()和spanAngle()方法ÿ…...
Python websocket
router.websocket(/chat/{flow_id}) 接口代码,并了解其工作流程、涉及的组件以及如何基于此实现你的新 WebSocket 接口。以下内容将分为几个部分进行讲解: 接口整体概述代码逐行解析关键组件和依赖关系如何基于此实现新功能示例:创建一个新的…...

【MySQL-5】MySQL的内置函数
目录 1. 整体学习的思维导图 2. 日期函数 编辑 2.1 current_date() 2.2 current_time() 2.3 current_timestamp() 2.4 date(datetime) 2.5 now() 2.6 date_add() 2.7 date_sub() 2.8 datediff() 2.9 案例 2.9.1 创建一个出生日期登记簿 2.9.2 创建一个留言版 3…...

深度学习笔记之BERT(三)RoBERTa
深度学习笔记之RoBERTa 引言回顾:BERT的预训练策略RoBERTa训练过程分析静态掩码与动态掩码的比较模型输入模式与下一句预测使用大批量进行训练使用Byte-pair Encoding作为子词词元化算法更大的数据集和更多的训练步骤 RoBERTa配置 引言 本节将介绍一种基于 BERT \t…...
C++知识点总结(59):背包型动态规划
背包型动态规划 一、背包 dp1. 01 背包(限量)2. 完全背包(不限量)3. 口诀 二、例题1. 和是质数的子集数2. 黄金的太阳3. 负数子集和4. NASA的⻝物计划 一、背包 dp 1. 01 背包(限量) 假如有这几个物品&am…...

C++:反向迭代器的实现
反向迭代器的实现与 stack 、queue 相似,是通过适配器模式实现的。通过传入不同类型的迭代器来实现其反向迭代器。 正向迭代器中,begin() 指向第一个位置,end() 指向最后一个位置的下一个位置。 代码实现: template<class I…...
webGL入门教程_04vec3、vec4 和齐次坐标总结
vec3、vec4 和齐次坐标总结 1. vec3 和 vec4 1.1 什么是 vec3 和 vec4? vec3: GLSL 中的三维向量类型,包含 3 个浮点数:(x, y, z)。常用于表示三维坐标、RGB 颜色、法线、方向等。 vec4: GLSL 中的四维向量类型&…...

uniapp中父组件数组更新后与页面渲染数组不一致实战记录
简单描述一下业务场景方便理解: 商品设置功能,支持添加多组商品(点击添加按钮进行增加).可以对任意商品进行删除(点击减少按钮对选中的商品设置进行删除). 问题: 正常添加操作后,对已添加的任意商品删除后,控制台打印数组正常.但是与页面显示不一致.已上图为例,选中尾…...
优化 Conda 下载速度:详细的代理配置和网络管理策略
优化 Conda 下载速度:详细的代理配置和网络管理策略 为了彻底解决使用 Conda 下载 PyTorch 时遇到的速度问题,并确保下载过程稳定可靠,这需要一个详细、综合的技术方案。让我们更深入地分析问题原因,然后详尽地解释采取的解决策略…...

服务器遭受DDoS攻击后如何恢复运行?
当服务器遭受 DDoS(分布式拒绝服务)攻击 后,恢复运行需要快速采取应急措施来缓解攻击影响,并在恢复后加强防护以减少未来攻击的风险。以下是详细的分步指南: 一、应急处理步骤 1. 确认服务器是否正在遭受 DDoS 攻击 …...

MFC音视频播放器-支持电子放大等功能
前言 本播放器在VS2019下开发,使用ffmpegD3D实现视频播放渲染功能。同时本播放器支持录像功能、截图功能、音视频播放功能、码流信息显示、电子放大功能等。D3D的渲染同时支持surface和texture两种方式,电子放大功能是在D3D Texture方式下进行实现。以下…...
c语言编程1.17蓝桥杯历届试题-回文数字
题目描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求: 该数字的各个数位之…...
el-table 纵向 横向 多级表头
<el-table :data"tableData" class"diaTable":span-method"handleSpanMethod"border:header-cell-style"{background:#292929,color:#fff}"><!-- 纵向表头 --><el-table-column label"纵向表头" width"…...

uniapp开发微信小程序笔记8-uniapp使用vant框架
前言:其实用uni-app开发微信小程序的首选不应该是vant,因为vant没有专门给uni-app设置专栏,可以看到目前Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。 但是vant的优…...
分布式项目使用Redis实现数据库对象自增主键ID
hello。大家好,我是灰小猿,一个超会写bug的程序猿! 在分布式项目中,数据表的主键ID一般可能存在于UUID或自增ID这两种形式,UUID好理解而且实现起来也最容易,但是缺点就是数据表中的主键ID是32位的字符串&a…...
npm-运行项目报错:A complete log of this run can be found .......npm-cache_logs\
1.问题 没有找到对应的某种依赖,node_modules出现问题。 2.解决 (1)查看对应依赖是否引入或者是由于合并分支错误 引入js或依赖不存在。谨慎删除依赖包 (2)查找对应引入依赖进行安装最后解决方法-删除依赖包清除缓存 npm cache clean --force (2)重新向同事引入…...

SolarCube: 高分辨率太阳辐照预测基准数据集
太阳能作为清洁能源在减缓气候变化中的作用日益凸显,其稳定的供应对电网管理至关重要。然而,太阳辐照受云层和天气变化的影响波动较大,给光伏电力的管理带来挑战,尤其是在调度、储能和备用系统管理方面。因此,精确的太…...

华为小米苹果三星移动设备访问windows共享文件夹windows11
如果移动设备和windows电脑都在同一个局域网内,可以用移动设备访问windows11的共享文件夹 1、设置共享文件夹 2、添加everyone用户即可 3、查看ip地址 4、在华为手机上点击文件管理,里面有个网上邻居 5、正常情况下,华为手机会扫描到同一局域…...
网络安全三防指南:只防病毒不安全
5月17日,瑞星全球反病毒监测网截获一个恶性病毒,由于该病毒的破坏能力和当年著名的CIH病毒几乎完全一样,因此瑞星将该病毒命名为“新CIH”病毒。被“新CIH”感染的电脑,主板和硬盘数据将被破坏,致使电脑无法启动&#…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

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

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...