网络中常用协议
一, TCP协议
TCP(Transmission Control Protocol,传输控制协议)是互联网核心协议之一,位于传输层,为应用层提供可靠的、面向连接的数据传输服务。
1. TCP的核心特点
| 特性 | 说明 |
|---|---|
| 面向连接 | 通信前需通过三次握手建立连接,结束后通过四次挥手释放连接。 |
| 可靠传输 | 通过确认应答(ACK)、超时重传、序列号机制保证数据不丢失、不重复、按序到达。 |
| 流量控制 | 通过滑动窗口机制动态调整发送速率,避免接收方缓冲区溢出。 |
| 拥塞控制 | 根据网络状况(如丢包)动态调整发送窗口(慢启动、拥塞避免、快重传等算法)。 |
| 全双工通信 | 同一连接中双方可同时发送和接收数据。 |
| 字节流服务 | 数据被看作无结构的字节流,应用层需自行定义消息边界(如HTTP的\r\n)。 |
2. TCP报文结构
TCP头部通常为20字节(可选项扩展至60字节),关键字段如下:
0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 源端口(16位) | 目的端口(16位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 序列号(32位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 确认号(32位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 数据偏移 | 保留 | 控制标志(URG/ACK/PSH/RST/SYN/FIN)| 窗口大小 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 校验和(16位) | 紧急指针(16位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 可选项(可选) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
关键字段说明:
-
源/目的端口:标识应用层服务(如HTTP=80,SSH=22)。
-
序列号(SEQ):数据字节流的编号,解决乱序问题。
-
确认号(ACK):期望收到的下一个字节序号(表示之前数据已确认接收)。
-
控制标志:
-
SYN:发起连接。 -
ACK:确认应答。 -
FIN:关闭连接。 -
RST:强制重置连接。
-
-
窗口大小:接收方可用的缓冲区空间(流量控制)。
-
3. TCP连接管理
(1) 三次握手(建立连接)
plaintext
客户端(Client) 服务端(Server)| ||------------------ SYN=1, SEQ=x ------------>|| ||<--------- SYN=1, ACK=1, SEQ=y, ACK=x+1 ----|| ||------------------ ACK=1, SEQ=x+1, ACK=y+1 ->|| |
-
步骤解析:
-
第一次握手(SYN)
-
客户端发送
SYN=1(请求建立连接)和随机初始序列号seq=x。 -
作用:客户端告诉服务端“我想建立连接,我的初始序列号是
x”。
-
-
第二次握手(SYN+ACK)
-
服务端收到
SYN后,回复SYN=1(同意建立连接)和ACK=1(确认收到客户端的x),并发送自己的初始序列号seq=y。 -
作用:服务端告诉客户端“我收到你的请求了,同意建立连接,我的初始序列号是
y”。
-
-
第三次握手(ACK)
-
客户端收到
SYN+ACK后,回复ACK=1(确认收到服务端的y),并发送ack=y+1。 -
作用:客户端告诉服务端“我收到你的确认了,可以开始通信了”。
-
-
-
为什么是三次?
-
防止历史重复连接请求(旧SYN包)干扰
如果只有两次握手,服务端收到SYN就直接建立连接,但网络可能有延迟的旧SYN包,导致服务端误认为客户端又发起了新连接,浪费资源。
第三次握手让客户端确认服务端的响应,确保连接是当前有效的。 -
同步双方的初始序列号(seq)
双方需要交换初始seq,用于后续数据排序和去重。三次握手确保双方都确认了对方的seq。
(2) 四次挥手(释放连接)
TCP 是全双工通信(双方可同时收发数据),关闭连接时需要分别关闭两个方向的数据流。
客户端(Client) 服务端(Server)| ||------------------ FIN=1, SEQ=u ------------>|| ||<------------- ACK=1, ACK=u+1 --------------|| ||<------------- FIN=1, SEQ=v, ACK=u+1 -------|| ||------------------ ACK=1, ACK=v+1 ---------->|| |
为什么是四次挥手?
-
第一次挥手(FIN)
-
客户端发送
FIN=1(请求关闭连接)和seq=u(当前数据流的最后一个字节序号)。 -
作用:客户端告诉服务端“我这边数据发完了,准备关闭”。
-
-
第二次挥手(ACK)
-
服务端收到
FIN后,回复ACK=1(确认收到FIN),并发送ack=u+1。 -
作用:服务端告诉客户端“我收到你的关闭请求了,但我可能还有数据要发”。
-
-
TCP是全双工的,需要分别关闭两个方向
-
客户端可以主动关闭发送方向(第一次挥手),但服务端可能仍有数据要发送(第二次挥手只是确认)。
-
服务端处理完数据后,再关闭自己的发送方向(第三次挥手)。
-
客户端最后确认(第四次挥手)。
-
-
如果合并第二次和第三次挥手?
如果服务端没有剩余数据要发送,可以合并ACK和FIN(变成三次挥手),但一般情况下,TCP 实现会分开处理,确保数据完整传输。-
第三次挥手(FIN)
-
服务端处理完剩余数据后,发送
FIN=1(请求关闭连接)和seq=v。 -
作用:服务端告诉客户端“我这边也发完了,可以关闭了”。
-
-
第四次挥手(ACK)
-
客户端收到
FIN后,回复ACK=1(确认收到FIN),并发送ack=v+1。 -
作用:客户端告诉服务端“我收到你的关闭请求了,可以彻底关闭了”。
-
-
二, TCP-IP协议通信模型
1. 概述
1. TCP/IP四层模型
| 层级 | 功能 | 核心协议 | 典型设备 |
|---|---|---|---|
| 应用层 | 提供用户接口,处理应用程序逻辑(如HTTP网页、FTP文件传输)。 | HTTP、FTP、DNS、SMTP、SSH | 应用服务器、PC |
| 传输层 | 提供端到端的数据传输服务(可靠TCP或高效UDP)。 | TCP、UDP | 防火墙、负载均衡器 |
| 网络层 | 负责寻址、路由选择,实现跨网络通信(如IP寻址、路由器跳转)。 | IP、ICMP、ARP、BGP | 路由器、三层交换机 |
| 网络接口层 | 管理物理介质访问(如以太网、Wi-Fi),负责数据帧的封装和传输。 | Ethernet、Wi-Fi、PPP、HDLC | 交换机、网卡、光纤 |
注:
TCP/IP模型将OSI的应用层、表示层、会话层合并为应用层。
网络接口层对应OSI的数据链路层+物理层。

2. 各层核心功能与协议
(1) 应用层(Application Layer)
-
功能:直接面向用户,提供网络服务(如浏览器访问网页、邮件发送)。
-
关键协议:
-
HTTP/HTTPS:网页传输(80/443端口)。
-
FTP:文件传输(21控制端口+20数据端口)。
-
DNS:域名解析(53端口)。
-
SMTP/POP3:邮件发送与接收(25/110端口)。
-
SSH:加密远程登录(22端口)。
-
(2) 传输层(Transport Layer)
-
功能:确保数据可靠或高效地传输到目标应用(通过端口号区分服务)。
-
关键协议:
-
TCP(Transmission Control Protocol):
-
面向连接,可靠传输(确认、重传、排序)。
-
适用场景:网页(HTTP)、文件传输(FTP)、邮件(SMTP)。
-
-
UDP(User Datagram Protocol):
-
无连接,高效但不可靠(无确认、可能丢包)。
-
适用场景:视频流(RTP)、DNS查询、在线游戏。
-
-
(3) 网络层(Internet Layer)
-
功能:通过IP地址实现跨网络通信,选择最优路径(路由)。
-
关键协议:
-
IP(Internet Protocol):
-
无连接、不可靠,仅负责寻址和分组转发(IPv4/IPv6)。
-
-
ICMP(Internet Control Message Protocol):
-
传递网络状态信息(如
ping命令使用ICMP Echo Request/Reply)。
-
-
ARP(Address Resolution Protocol):
-
将IP地址解析为MAC地址(如局域网内通信)。
-
-
BGP/OSPF:
-
路由协议,决定数据包如何跨网络传输。
-
-
(4) 网络接口层(Network Interface Layer)
-
功能:管理物理网络介质(电缆、光纤、无线电波),封装数据帧。
-
关键协议与技术:
-
Ethernet(以太网):
-
使用MAC地址标识设备(如
00:1A:2B:3C:4D:5E)。
-
-
Wi-Fi(IEEE 802.11):
-
无线局域网通信(2.4GHz/5GHz频段)。
-
-
PPP(Point-to-Point Protocol):
-
拨号上网或点对点直连(如家庭宽带PPPoE)。
-
-
3. 数据封装与解封装流程
发送方(封装)
-
应用层:生成原始数据(如HTTP请求)。
-
传输层:添加TCP/UDP头部(包含源/目的端口号)。
-
网络层:添加IP头部(源/目的IP地址)。
-
网络接口层:添加帧头(MAC地址)和帧尾(FCS校验),转换为比特流通过物理介质传输。
接收方(解封装)
-
网络接口层:校验帧完整性,剥离MAC头部。
-
网络层:检查IP地址,决定是否接收或转发。
-
传输层:根据端口号交给对应应用程序(如80→HTTP服务)。
-
应用层:处理数据(如渲染网页)。
三, UDP协议
1. UDP的核心特点
| 特性 | 说明 |
|---|---|
| 无连接 | 通信前无需握手,直接发送数据,节省延迟。 |
| 不可靠传输 | 不保证数据到达、不排序、不重传,可能丢包或重复。 |
| 头部开销小 | 固定8字节头部(TCP至少20字节),传输效率高。 |
| 支持广播/多播 | 可向多个目标发送数据(如视频流、在线会议)。 |
| 无拥塞控制 | 发送速率由应用层控制,适合实时应用(如游戏、直播)。 |
2. UDP报文结构
UDP头部仅8字节,结构如下:
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| 源端口(16位) | 目的端口(16位) |
+--------+--------+--------+--------+
| 数据报长度(16位) | 校验和(16位) |
+--------+--------+--------+--------+
| 数据(可变长度) |
+-----------------------------------+ -
关键字段:
-
源端口/目的端口:标识发送方和接收方的应用(如DNS=53,QUIC=443)。
-
数据报长度:包括头部和数据的总长度(最大65535字节)。
-
校验和(可选):检测数据是否损坏(IPv6强制要求)。
-
注:UDP的“不可靠”指协议本身不提供重传和排序,但应用层可自行实现可靠性(如QUIC协议)。
3. UDP工作流程
(1) 发送数据
-
应用层将数据交给UDP。
-
UDP添加头部(源/目的端口、长度、校验和)。
-
直接发送给网络层(IP),不建立连接,无需等待确认。
(2) 接收数据
-
网络层(IP)将数据包传递给UDP。
-
UDP检查目的端口,将数据交给对应应用。
-
无确认机制:接收方不发送ACK,发送方不知数据是否到达。
4. UDP的典型应用场景
(1) 实时多媒体传输
-
视频/音频流:如Zoom、WebRTC(容忍少量丢包,延迟敏感)。
-
在线游戏:如MOBA、FPS(低延迟优先于数据完整)。
(2) 简单查询/响应协议
-
DNS查询:域名解析(请求-响应模式,一次交互完成)。
-
DHCP:动态分配IP地址(基于UDP广播)。
(3) 广播/多播通信
-
网络时间协议(NTP):同步时钟。
-
IoT设备发现:如SSDP(Simple Service Discovery Protocol)。
(4) 自定义可靠协议
-
QUIC(HTTP/3底层协议):在UDP上实现可靠传输,减少TCP握手延迟。
-
TFTP(简单文件传输):基于UDP的轻量级文件传输。
5. UDP的优缺点
优点
-
低延迟:无需握手和确认,适合实时应用。
-
低开销:头部小,适合高频小数据包(如传感器数据)。
-
灵活性:应用层可自定义可靠性或拥塞控制(如QUIC)。
缺点
-
不可靠:需应用层处理丢包、乱序(如视频会议用前向纠错FEC)。
-
无流量控制:可能淹没接收方(需应用层限速)。
-
易受攻击:UDP洪水攻击(DDoS常见手段)
四,TCP协议和UDP协议的区别
TCP(传输控制协议)和UDP(用户数据报协议)是传输层的两大核心协议,它们在设计目标、特性和适用场景上存在显著差异。以下是两者的详细对比:
1. 核心特性对比
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(需三次握手建立连接) | 无连接(直接发送数据) |
| 可靠性 | 可靠传输(确认、重传、排序) | 不可靠(可能丢包、乱序、重复) |
| 数据顺序 | 保证数据按序到达 | 不保证顺序 |
| 流量控制 | 通过滑动窗口动态调整发送速率 | 无流量控制 |
| 拥塞控制 | 拥塞避免、慢启动、快重传等算法 | 无拥塞控制,发送速率由应用层决定 |
| 头部开销 | 至少20字节(含选项可达60字节) | 固定8字节 |
| 传输效率 | 低(延迟高、协议开销大) | 高(延迟低、开销小) |
| 通信模式 | 仅支持单播(一对一) | 支持单播、广播、多播(一对多) |
| 适用场景 | 网页(HTTP)、文件传输(FTP)、邮件(SMTP) | 视频流、在线游戏、DNS、IoT传感器数据 |
2. 关键机制差异
(1) 连接管理
-
TCP:
-
通信前需通过三次握手建立连接(SYN、SYN-ACK、ACK)。
-
通信结束需通过四次挥手释放连接(FIN、ACK、FIN、ACK)。
-
确保双方收发能力正常,避免资源浪费。
-
-
UDP:
-
直接发送数据,无需握手或连接维护。
-
适合高频、短时交互(如DNS查询)。
-
(2) 可靠性保障
-
TCP:
-
确认应答(ACK):接收方每收到数据包会发送确认。
-
超时重传:未收到ACK时重发数据。
-
序列号(SEQ):标识数据顺序,解决乱序问题。
-
-
UDP:
-
无ACK、无重传、无序列号,完全依赖应用层处理可靠性。
-
(3) 流量与拥塞控制
-
TCP:
-
滑动窗口:根据接收方缓冲区大小动态调整发送窗口。
-
拥塞控制:通过慢启动、拥塞避免等算法避免网络过载。
-
-
UDP:
-
无内置控制机制,可能因发送过快导致网络拥塞或接收方丢包。
-
3. 典型应用场景
TCP适用场景
-
需要可靠传输:
-
网页浏览(HTTP/HTTPS)。
-
文件传输(FTP、SFTP)。
-
电子邮件(SMTP、IMAP)。
-
数据库访问(MySQL、PostgreSQL)。
-
-
长连接交互:
-
SSH远程登录。
-
金融交易(如银行系统)。
-
UDP适用场景
-
实时性优先:
-
视频会议(Zoom、WebRTC)。
-
在线游戏(王者荣耀、绝地求生)。
-
语音通话(VoIP)。
-
-
简单查询/响应:
-
DNS域名解析。
-
DHCP动态IP分配。
-
4. 如何选择TCP或UDP?
-
选择TCP:
-
数据必须完整到达(如文件下载)。
-
需要自动处理乱序和重传(如网页加载)。
-
通信双方需长期稳定连接(如数据库查询)。
-
-
选择UDP:
-
低延迟比可靠性更重要(如实时游戏)。
-
数据量小且交互简单(如DNS查询)。
-
应用层已实现可靠性(如QUIC协议)。
-
相关文章:
网络中常用协议
一, TCP协议 TCP(Transmission Control Protocol,传输控制协议)是互联网核心协议之一,位于传输层,为应用层提供可靠的、面向连接的数据传输服务。 1. TCP的核心特点 特性说明面向连接通信前需通过三次握手建立连接&a…...
自动驾驶04:点云预处理03
点云组帧 感知算法人员在完成点云的运动畸变补偿后,会发现一个问题:激光雷达发送的点云数据包中的点云数量其实非常少,完全无法用来进行后续感知和定位层面的处理工作。 此时,感知算法人员就需要对这些数据包进行点云组帧的处理…...
Linux内核软中断分析
一、软中断类型 在Linux内核中,中断处理分为上半部(硬中断)和下半部。上半部负责快速响应硬件事件,而下半部用于处理耗时任务,避免阻塞系统。下半部有三种机制:软中断(Softirq)、小任…...
Linux修改默认shell为zsh
一、修改模型shell为zsh 1、检查当前使用的shell echo $SHELL 2、检查当前系统支持的shell cat /etc/shells# 输出结果显示如下: """ /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/csh /bin/tcsh /usr/bin/csh /usr/bin/tcsh /usr/bin/zsh…...
k8s scheduler几种扩展方式的关系及区别
网上关于scheduler扩展介绍的文章很多,但都是东说一句西说一嘴,完全没有逻辑性,对于逻辑建构者看着很痛苦,这篇文章不会深入教你怎么扩展,而是教你几种扩展方式的关系和逻辑结构: 目前Kubernetes支持五种方…...
react 封装无缝滚动组件
记录,以防忘记 SeamlessScroll.tsx import React, { useEffect, useRef, useState } from react;interface SeamlessScrollProps {children: React.ReactNode;speed?: number; // 滚动速度,单位:像素/秒minItems?: number; // 最小项目数…...
[ComfyUI] 如何升级自定义节点(Custom Nodes)
ComfyUI 提供了灵活的 自定义节点(Custom Nodes) 功能,允许用户扩展其能力。随着插件的更新,保持 Custom Nodes 处于最新状态是确保兼容性和功能完整性的关键。 1. 手动升级(Git Pull 方式) 如果你的 自定义节点 是通过 Git 克隆的,可以使用 Git 命令来升级: 步骤: …...
软件项目管理课程之第4讲:软件需求管理
讲授内容 项目案例 软件需求管理的基本概念 软件需求开发 软件需求管理 项目案例 案例背景:小王作为软件项目负责人,带领团队开展需求调查工作,但在需求分析和后续开发过程中出现了一系列问题。 问题表现: 项目规模庞大&…...
深入理解 dispatchEvent:前端事件触发的艺术
dispatchEvent 是 DOM 元素的一个方法,用于手动触发/派发一个事件。这个方法允许开发者以编程方式触发事件,而不是等待用户交互或浏览器自动触发。 1.基本概念 ★ 基础 作用:dispatchEvent 用于在指定的 DOM 节点上触发一个事件 使用场景&a…...
linux和windows是采用何种机制保存密码的?
传统Linux的不足: 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权划分不够细 在linux系统里,对于文件的操作,只有「所有者」…...
matlab打开两个工程
1、问题描述 写代码时,需要实时参考别人的代码,需要同时打开2个模型,当模型在同一个工程内时,这是可以直接打开的,如图所示 2、解决方案 再打开一个MATLAB主窗口 这个时候就可以同时打开多个模型了 3、正确的打开方…...
Unity中的MaterialPropertyBlock的作用和 Material 的区别
MaterialPropertyBlock 是 Unity 提供的一个用于动态修改材质属性的轻量级工具,核心作用是避免材质实例化(Material Instantiation),从而优化性能。以下是它的关键特性和使用方法: 1. 核心作用 避免材质实例化 直接修改…...
Python与文件——保存文件
1.以下关于Python二维数据的描述中,错误的是()。 A、CSV文件的每一行是一维数据,可以用列表、元组表示。 B、从CSV文件获得数据内容后,可以用replace()来去掉每行最后的换行符。 C、若一个列表变量里的元素都是字符串类型,则可以用join()合成字符串。 D、列表中保存的二维数据,…...
HarmonyOS主题管理工具封装:动态切换、持久化存储与常见问题解析
注:适用版本(Harmony OS NEXT / 5.0 / API 12 ) 一、效果展示 二、技术栈 HarmonyOS ArkUI框架 使用AppStorage实现跨组件状态管理,PersistentStorage持久化存储用户偏好。 系统配置常量 ConfigurationConstant.Color…...
60V单通道高精度线性恒流LED驱动器防60V反接SOD123封装
产品描述: PC561A 系列产品是用于产生单通道、高精度恒流源( Constant Current Regulator, CCR) 的LED 驱动芯片,为各类 LED 照明应用提供高性价比恒流方案。PC561A 采用晶体管自偏置技术,可在超宽工作电压范围内维持…...
学习threejs,使用Sprite精灵、SpriteMaterial精灵材质
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Sprite1.1.1 ☘️代码…...
网络相关的知识总结1
1.设备可以通过以太网电缆(如双绞线)连接到交换机的端口,交换机也通过以太网电缆连接到路由器。但是如果距离过远,比如跨国路由器如何连接? 1.专用通信线路(如 MPLS、光纤专线):租用…...
Cent OS7+Docker+Dify
由于我之前安装了Dify v1.0.0,出现了一些问题:无法删除,包括:知识库中的文件、应用、智能体、工作流,都无法删除。现在把服务器初始化,一步步重新安装,从0到有。 目录 1、服务器重装系统和配置…...
本地AI大模型部署革命:Ollama部署和API调试教程
Ollama:你的私人AI助手 还在为云端AI服务的高昂费用和隐私问题而烦恼吗?Ollama横空出世,它是一款专为本地环境打造的大模型部署神器,让你轻松在自己的设备上运行各种强大的AI模型。无论你是开发者还是普通用户,Ollama…...
centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件
问题现象:VMware虚拟机新添加的网卡,能看到网卡,但是看不到网卡的配置文件 解决方案: nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件,这里con…...
SRT协议
SRT(Secure Reliable Transport)是一种开源的视频传输协议,专为高丢包、高延迟网络环境设计,结合了UDP的低延迟和TCP的可靠性,广泛应用于直播、远程制作、视频会议等场景。 定位:SRT协议的官方C/C实现库&am…...
K8S学习之基础五十一:k8s部署jenkins
k8s部署jenkins 创建nfs共享目录, mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv创建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…...
在 Mermaid 流程图里“驯服”quot;的魔法指南!!!
🐉 在 Mermaid 流程图里“驯服”"的魔法指南 在使用 Mermaid 画流程图时,是不是经常遇到想秀一波 " 却被它“反杀”的情况?🎯 今天就来教大家如何在这头代码野兽的嘴里,抢回我们的双引号实体编码&#…...
GitHub美化个人主页3D图表显示配置操作
这个功能主要是用的这个开源仓库:https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话,我的个人主页:https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可,…...
欧几里得距离(Euclidean Distance)公式
欧几里得距离公式 欧几里得距离(Euclidean Distance)是计算两点之间直线距离的一种方法。它是最常见的距离度量方式之一,广泛应用于数学、物理、机器学习、计算机视觉等领域。 公式定义 1. 二维空间 在二维平面上,假设有两个点…...
HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+
核心API ohos.data.relationalStore API 9 数据库 数据库是存储和管理数据的系统 数据库(Database)是一个以特定方式组织、存储和管理数据的集合,通常用于支持各种应用程序和系统的运行。它不仅是存放数据的仓库,还通过一定的…...
【JavaScript】JavaScript Promises实践指南
【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗?这是一个很多人一开始就放弃的主题,但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么? “Promise”是异步编程中的一个基本概念,特别是在J…...
【软件工程】习题及答案
目录 第一章 习题第一章 习题答案第二章 习题第二章 习题答案第三章 习题第三章 习题答案第四章 习题第四章 习题答案第五章 习题第五章 习题答案第六章 习题第六章 习题答案第七章 习题第七章 习题答案 第一章 习题 一、选择题 1.关于引起软件危机的原因ÿ…...
git push的时候出现无法访问的解决
fatal: 无法访问 https://github.com/...:gnutls_handshake() failed: Error in the pull function. push的时候没有输入自己的github账号密码,为了解决每次push都要登录github这个问题,采用ssh密钥的方式认证,可以免去每次都输入…...
《深度剖析Android 12 SystemUI锁屏通知布局亮屏流程:从源码到实现》
优化后文章结构: 1. 前言 强调锁屏通知布局的重要性及分析目的,引出后续源码分析的必要性。 2. 核心类解析 KeyguardViewMediator:锁屏核心逻辑控制,处理亮屏/息屏事件分发。 PhoneWindowManager:系统输入事件&…...

