TCP/IP、UDP、HTTP、HTTPS、WebSocket 一文讲解
在当今互联网世界中,数据通信是所有应用运行的基础。无论是打开网页、发送消息还是视频通话,背后都依赖于各种网络协议的协同工作。其中,TCP/IP、UDP、HTTP、HTTPS 和 WebSocket 是最为核心的几种协议。本文将围绕它们的概念、特性和适用场景,进行一次系统而通俗的讲解。
一、TCP/IP:互联网的基础通信协议
1.1 什么是 TCP/IP?
TCP/IP 是“Transmission Control Protocol/Internet Protocol”的缩写,中文翻译为“传输控制协议/网际协议”。它不仅仅是两个协议,而是一个协议族(Protocol Suite),由一系列用于计算机之间通信的协议构成。
我们可以将 TCP/IP 理解为“互联网的语言”,它定义了数据如何从一台计算机传输到另一台计算机,是现代互联网通信的基础架构。
1.2 TCP/IP 的四层模型
TCP/IP 协议族采用的是一种四层模型(不同于 OSI 七层模型),每一层都承担不同的通信职责:
TCP/IP 层次 | 对应 OSI 层 | 功能简介 |
---|---|---|
应用层 | 应用层、表示层、会话层 | 提供网络服务接口(如 HTTP、FTP、DNS) |
传输层 | 传输层 | 提供端到端的数据传输(如 TCP、UDP) |
网络层 | 网络层 | 实现寻址与路由(如 IP、ICMP) |
网络接口层 | 数据链路层、物理层 | 管理物理网络接口(如 Ethernet、Wi-Fi) |
1.3 各层协议详解
1.3.1 应用层
-
功能:与用户直接交互,提供应用服务。
-
常见协议:
-
HTTP/HTTPS:浏览网页
-
FTP:文件传输
-
SMTP/POP3/IMAP:电子邮件
-
DNS:域名解析
-
1.3.2 传输层
-
功能:实现不同主机之间的数据传输控制,确保完整性。
-
代表协议:
-
TCP(传输控制协议):面向连接、可靠传输、有序、校验等特性
-
UDP(用户数据报协议):无连接、快速、不可靠但效率高
-
1.3.3 网络层
-
功能:确定数据从源地址到目标地址的路径。
-
代表协议:
-
IP(网际协议):提供逻辑地址(如 IPv4、IPv6)
-
ICMP:用于错误检测和网络诊断(如 ping 命令)
-
1.3.4 网络接口层
-
功能:处理物理网络硬件和信号传输细节。
-
协议/技术:Ethernet、Wi-Fi、光纤、PPP 等
1.4 TCP/IP 的核心协议机制
(1)IP:定位和传输
IP(Internet Protocol)是互联网协议的缩写,是网络中用于标识设备地址的协议。就像每个人有身份证,每台联网的设备都有一个唯一的 IP 地址。
-
作用:为每台设备分配一个唯一地址(如 192.168.0.1),负责寻找最优路径,将数据包从源地址传输到目标地址。
-
特点:不保证数据可靠性、不保证顺序,需配合传输层使用。
🌐IPv4 与 IPv6 (IP地址的两种格式)
项目 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32 位 | 128 位 |
表示方式 | 点分十进制(如 192.168.1.1) | 十六进制冒号分隔(如 2001:0db8::1) |
地址数量 | 约 42 亿(2³²) | 几乎无限(2¹²⁸) |
是否枯竭 | ✅ 已经枯竭 | ❌ 尚未枯竭 |
是否需要 NAT | 需要(私网转公网) | 不需要(每台设备都有全球地址) |
安全性 | 较弱,需要额外协议(如 IPsec) | 内置 IPsec,安全性更强 |
速度 | 一般 | 理论上更快(依赖网络设施支持) |
(2)TCP:可靠传输的基石
2.1连接建立:三次握手(Three-way Handshake)
重点:为啥需要三次握手?目的是客户端和服务端需要确保对方的接收和发送能力都正常。
✅ 第一次握手(Client → Server)
-
客户端 A 向服务器 B 发送一个 SYN 报文(序列号 seq = x),表示请求建立连接。
✅ 第二次握手(Server → Client)
-
服务器 B 收到后,向客户端 A 返回一个 SYN + ACK 报文(序列号 seq = y,确认号 ack = x + 1),表示“我收到你的请求,并同意建立连接”。
✅ 第三次握手(Client → Server)
-
客户端 A 收到确认后,再发送一个 ACK 报文(确认号 ack = y + 1),表示“我也确认建立连接”,至此连接建立完成。
2.2连接断开:四次挥手(Four-way Handshake)
✅ 第一次挥手(Client → Server)
-
客户端发送 FIN 报文,表示自己不再发送数据了,进入 FIN_WAIT_1 状态。
-
表示:我这边要关闭连接了,不再发送数据。(仍然可以接收消息)
✅ 第二次挥手(Server → Client)
-
服务器收到后发送 ACK 确认,进入 CLOSE_WAIT 状态,客户端此时进入 FIN_WAIT_2。
-
表示:我知道了,但我还有数据没发完。
✅ 第三次挥手(Server → Client)
-
服务器数据发完后,发送 FIN 报文,进入 LAST_ACK 状态。
-
表示:我这边也要断开连接了。
✅ 第四次挥手(Client → Server)
-
客户端收到 FIN 后,发送 ACK 确认,进入 TIME_WAIT 状态,等待一段时间后完全关闭。
-
表示:我知道了,咱俩断了!
🔚 最后服务器收到 ACK 后,进入 CLOSED 状态,连接彻底关闭。
2.3核心功能:
-
重传机制:数据包丢失时自动重发
-
有序传输:接收端按顺序组装数据
-
流量控制:防止接收方处理不过来
-
拥塞控制:避免网络阻塞
1.5 TCP/IP 的现实意义与作用
-
构建互联网通信基础:所有 Web、邮件、FTP 等网络应用都基于 TCP/IP 协议运行。
-
跨平台通信协议:不同操作系统、不同硬件设备只要遵守 TCP/IP 协议,就能互联互通。
-
可扩展、可演化:随着 IPv6、QUIC 等新技术发展,TCP/IP 协议体系也在不断演进。
二、UDP:轻量级通信的利器
UDP(User Datagram Protocol)用户数据报协议
它是 TCP/IP 协议族中的一员,和 TCP 并列,都是传输层协议。
2.1 无连接
-
发送数据前不需要建立连接
-
只管发,像寄快递不用打电话确认你在不在家
2.2 头部开销小
-
UDP 报文头部只有 8 个字节, 对比 TCP 的 20 字节,整整轻了 60%
-
UDP 报文结构:
源端口号(2字节)
目的端口号(2字节)
长度(2字节)
校验和(2字节)
2.3 不保证可靠
-
不重传、不排序、不校验顺序,收不收得到看运气
-
简洁快速,但可靠性需上层协议自己处理
2.4 更快更实时
-
没有三次握手和挥手,发就完了
-
适合对实时性要求高的应用(如语音、视频、直播、在线游戏)
🔧 UDP 的利器用途(应用场景)
应用场景 | 原因 |
---|---|
🎮 在线游戏 | 快速响应、低延迟比可靠性更重要 |
📞 VoIP电话 | 一点点丢包可以容忍,不能容忍延迟 |
📺 视频直播 | 流畅 > 完整,允许偶尔丢帧 |
🔁 DNS 解析 | 请求短小(UDP 512字节足够),失败再发一遍就行 |
📶 局域网广播 | 可同时向多个设备发送数据,UDP 支持广播和多播 |
📤 自定义协议 | 一些系统(如 QUIC)底层使用 UDP,自建可靠机制 |
📌 UDP vs TCP 对比总结:
特性 | TCP | UDP |
---|---|---|
是否连接 | ✅ 面向连接(需要三次握手) | ❌ 无连接 |
是否可靠 | ✅ 保证顺序/无重传/无丢包 | ❌ 不保证,可能丢包/乱序 |
开销大小 | ❌ 头部大(20 字节) | ✅ 头部小(8 字节) |
传输速度 | 慢(有确认、拥塞控制) | 快(无确认、无控制) |
实时性 | ❌ 比较差 | ✅ 非常好 |
应用场景 | 文件传输、网页浏览等 | 视频、语音、游戏、DNS等 |
🧠 补充:UDP 不可靠,那怎么用?
UDP 本身是不可靠,但你可以自己“加料”,比如:
-
加序号字段,自己排序;
-
加 ACK 字段,自己确认;
-
加超时重传逻辑;
-
这就是很多协议(如 RTP、QUIC)采用的策略。
总结一句话,UDP是“不可靠的快递”,快得起飞,用好了就是搞实时通信的神奇!
三、HTTP:网页通信的核心协议
HTTP(HyperText Transfer Protocol),超文本传输协议,是浏览器和服务器之间进行数据通信的规则。
它基于客户端-服务器(C/S)模型,是 Web 世界中最基础的协议,几乎所有网页请求(HTML、图片、视频、接口)都依赖它。
3.1 请求和响应报文格式
HTTP 请求报文的格式如下:
请求行 (请求方法、URL、协议版本)
请求头 (多个字段,键值对格式,描述客户端信息)
空行
请求体 (仅在POST、PUT等请求方法中有,包含实际提交的数据)
✅ 示例:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27username=admin&password=123
HTTP 响应报文的格式如下:
状态行 (协议版本、状态码、状态描述)
响应头 (多个字段,键值对格式,描述服务端信息和相应内容)
空行
响应体 (HTML、JSON、文件等)
✅ 示例:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 137<html><head><title>Example</title></head><body><h1>Hello, world!</h1></body>
</html>
3.2 常见的HTTP方法
方法 | 作用 |
---|---|
GET | 获取资源(最常用) |
POST | 提交数据(如表单) |
PUT | 更新资源 |
DELETE | 删除资源 |
HEAD | 获取响应头,不返回正文 |
OPTIONS | 查询服务器支持哪些方法 |
PATCH | 局部更新(比 PUT 灵活) |
3.3 常见状态码
状态码 | 含义 |
---|---|
200 | OK,请求成功 |
301 | 永久重定向 |
302 | 临时重定向 |
400 | 请求错误(客户端问题) |
401 | 未授权(需登录) |
403 | 禁止访问 |
404 | 找不到资源 |
500 | 服务器内部错误 |
503 | 服务不可用(服务器超载等) |
3.4 HTTP的特点
-
无状态:每次请求独立不记录身份,需要 Cookie / Session 补充身份识别
-
明文传输:数据裸奔,容易被窃听(用 HTTPS 加密解决)
-
基于 TCP:通信底层依赖 TCP 三次握手
3.5 HTTP版本演进
版本 | 特点 |
---|---|
HTTP/1.0 | 每个请求一个连接,头信息不支持持久连接 |
HTTP/1.1 | 支持长连接、管道化、分块传输 |
HTTP/2 | 二进制格式、多路复用、首部压缩,更高性能 |
HTTP/3 | 基于 QUIC 协议,UDP 支持,抗丢包延迟更低 |
👉 现在主流已是 HTTP/2 和 HTTP/3,但服务器和浏览器需同时支持。
四、HTTPS:更安全的 HTTP
HTTPS(HyperText Transfer Protocol Secure) 是 HTTP + SSL/TLS 的组合。
简单来说:
HTTPS = 用 SSL/TLS 加密的 HTTP
4.1 HTTP的三大问题(安全隐患)
问题 | 风险举例 |
---|---|
明文传输 | 密码、隐私数据容易被窃听 |
无法校验身份 | 容易遭受中间人攻击(MITM) |
无完整性保护 | 数据可被篡改 |
4.2 HTTPS握手流程
4.3 HTTPS 的核心技术组成
1. 对称加密
-
双方使用相同密钥
-
加解密速度快
-
用于实际数据传输
2. 非对称加密(公钥/私钥)
-
用公钥加密,用私钥解密(或反过来)
-
安全但效率低
-
用于传递对称密钥
3. 数字证书
-
证明服务器身份的“身份证”
-
由权威机构(CA)颁发
4.4 HTTPS 与 HTTP 的区别总结
对比项 | HTTP | HTTPS |
---|---|---|
安全性 | ❌ 明文传输 | ✅ 加密传输、防篡改 |
端口 | 默认 80 | 默认 443 |
协议 | 基于 TCP | 基于 TLS + TCP |
性能 | 快(无加密) | 稍慢(握手 & 加解密) |
证书 | 不需要 | 需要 SSL 数字证书 |
浏览器标志 | 普通,易受攻击 | 🔒 小锁图标,安全连接 |
HTTPS 是 HTTP 的加密安全版,通过加密通信、身份认证和数据完整性保护,让你的网络传输更安全、更可信!
五、WebSocket:实时双向通信的新标准
WebSocket 是 HTML5 提出的网络通信协议,它建立在 TCP 协议之上,可以在客户端和服务器之间建立长连接,并支持全双工通信(双向同时收发)。
5.1 WebSocket 通信流程
1️⃣ 初始握手(仍是 HTTP 请求)
客户端发起连接:
GET /chat HTTP/1.1
Host: server.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xxxxxxxxxx==
Sec-WebSocket-Version: 13
服务器响应(同意升级协议):
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: yyyyyyyyyy==
握手成功后,协议升级,正式进入 WebSocket 通信阶段!
2️⃣ 建立连接后,通信如下:
双向实时数据流(不再重复握手)
客户端 <================================> 服务器
5.2 WebSocket 数据帧格式
WebSocket 不再传输完整 HTTP 报文,而是按帧发送,格式更紧凑。
-
数据帧类型(Opcode):
-
0x1
: 文本 -
0x2
: 二进制 -
0x8
: 关闭连接 -
0x9
: Ping(心跳) -
0xA
: Pong(回应心跳)
-
-
WebSocket 内建心跳机制,可自动维持连接活性。
5.3 HTTP vs WebSocket 的核心区别
对比项 | HTTP | WebSocket |
---|---|---|
连接方式 | 请求-响应,短连接 | 单次握手,后续保持连接 |
通信方向 | 单向(客户端请求,服务器响应) | 双向(客户端和服务器随时通信) |
建立过程 | 每次通信都重新连接 | 一次连接后持续保持 |
实时性 | 差 | 很好 |
协议端口 | 80 / 443 | 默认也是 80(ws)或 443(wss) |
协议名称 | http / https | ws / wss(加密) |
5.4 WebSocket 常见应用场景
场景 | 描述 |
---|---|
聊天室 | 多人实时消息推送 |
实时通知系统 | 用户登录、支付提醒等 |
在线游戏 | 快速同步玩家状态 |
股票/币价推送 | 实时数据流展示 |
协同编辑 | Google Docs 等实时文档协作 |
在线客服 | 人机聊天 |
WebSocket 是一种轻量、高效的实时通信协议,适用于需要快速响应和持续连接的现代 Web 应用场景,是 HTTP 的有力补充!
相关文章:
TCP/IP、UDP、HTTP、HTTPS、WebSocket 一文讲解
在当今互联网世界中,数据通信是所有应用运行的基础。无论是打开网页、发送消息还是视频通话,背后都依赖于各种网络协议的协同工作。其中,TCP/IP、UDP、HTTP、HTTPS 和 WebSocket 是最为核心的几种协议。本文将围绕它们的概念、特性和适用场景…...
[密码学基础]密码学发展简史:从古典艺术到量子安全的演进
密码学发展简史:从古典艺术到量子安全的演进 密码学作为信息安全的基石,其发展贯穿人类文明史,从最初的文字游戏到量子时代的数学博弈,每一次变革都深刻影响着政治、军事、科技乃至日常生活。本文将以技术演进为主线,…...
包含物体obj与相机camera的 代数几何代码解释
反余弦函数的值域在 [0, pi] 斜体样式 cam_pose self._cameras[hand_realsense].camera.get_model_matrix() # cam2world# 物体到相机的向量 obj_tcp_vec cam_pose[:3, 3] - self.obj_pose.p dist np.linalg.norm(obj_tcp_vec) # 物体位姿的旋转矩阵 obj_rot_mat self.ob…...
【C++算法】65.栈_删除字符中的所有相邻重复项
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 1047. 删除字符串中的所有相邻重复项 题目描述: 解法 利用string模拟栈 元素依次进栈,当进栈元素和栈顶元素一样的时候,就弹出栈顶字符…...
【java实现+4种变体完整例子】排序算法中【插入排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是插入排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、插入排序基础实现 原理 将元素逐个插入到已排序序列的合适位置,逐步构建有序序列。 代码示例 public class InsertionSort {void…...
神经网络的数学之旅:从输入到反向传播
目录 神经网络简介神经元激活函数神经网络 神经网络的工作过程前向传播(forward)反向传播(backward)训练神经网络 神经网络简介 神经元 在深度学习中,必须要说的就是神经⽹络,或者说是⼈⼯神经⽹络&#…...
软件测试的页面交互标准:怎样有效提高易用性
当用户遇到"反人类"设计时 "这个按钮怎么点不了?"、"错误提示完全看不懂"、"我输入的内容去哪了?"——这些用户抱怨背后,都指向同一个问题:页面交互的易用性缺陷。作为软件测试工程师&a…...
Linux419 三次握手四次挥手抓包 wireshark
还是Notfound 没连接 可能我在/home 准备配置静态IP vim ctrlr 撤销 u撤销 配置成功 准备关闭防火墙 准备配置 YUM源 df -h 未看到sr0文件 准备排查 准备挂载 还是没连接 计划重启 有了 不重启了 挂载准备 修改配置文件准备 准备清理缓存 ok 重新修改配…...
玩转Docker | 使用Docker部署tududi任务管理工具
玩转Docker | 使用Docker部署tududi任务管理工具 前言一、tududi介绍Tududi简介核心功能特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署tududi服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问tududi服务访问tududi首页登录tu…...
ueditorplus编辑器已增加AI智能
之前功能请参考:https://www.geh3408.top/blog/76 下载:https://gitee.com/mo3408/ueditorplus 注意:key值需要单独获取,默认为DeepSeek,默认key有限制,请更换为自己的。 演示地址:https://www.geh3408.top/ueditorplus/dist 更多体验:ueditorplus编辑器已增加AI智…...
深度学习数据预处理:Dataset类的全面解析与实战指南
前言 在深度学习项目中,数据预处理是模型训练前至关重要的一环。一个高效、灵活的数据预处理流程不仅能提升模型性能,还能大大加快开发效率。本文将深入探讨PyTorch中的Dataset类,介绍数据预处理的常见技巧,并通过实战示例展示如何…...
【机器学习-周总结】-第4周
以下是本周学习内容的整理总结,从技术学习、实战应用到科研辅助技能三个方面归纳: 文章目录 📘 一、技术学习模块:TCN 基础知识与结构理解🔹 博客1:【时序预测05】– TCN(Temporal Convolutiona…...
高可靠 ZIP 压缩方案兼容 Office、PDF、TXT 和图片的二阶段回退机制
一、引言 在企业级应用中,经常需要将多种类型的文件(如 Office 文档、PDF、纯文本、图片等)打包成 ZIP 并提供给用户下载。但由于文件路径过长、特殊字符或权限等问题,Go 标准库的 archive/zip 有时会出现“压缩成功却实际未写入…...
【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?
目录 1 HDFS冗余机制设计哲学 1.1 多副本存储策略的工程权衡 1.2 机架感知的智能拓扑算法 2 容错机制实现原理 2.1 故障检测的三重保障 2.2 数据恢复的智能调度 3 关键场景容错分析 3.1 数据中心级故障应对 3.2 数据损坏的校验机制 4 进阶优化方案 4.1 纠删码技术实…...
06-libVLC的视频播放器:推流RTMP
创建媒体对象 libvlc_media_t* m = libvlc_media_new_path(m_pInstance, inputPath.toStdString().c_str()); if (!m) return -1; // 创建失败返回错误 libvlc_media_new_path:根据文件路径创建媒体对象。注意:toStdString().c_str() 在Qt中可能存在临时字符串析构问题,建议…...
【DT】USB通讯失败记录
项目场景: DT小板 USB通讯失败 问题描述 V1.1 板子含有降压电路、电容充电电路、姿态传感电路,语音电路、电弧电路、TF卡电路 焊接完成:功能正常 V1.2 为方便数传模块拔插,把座子缩小并做在了背面,下载口反向方便狭…...
【笔记】网路安全管理-实操
一、系统安全防护-Windows 开始-》管理工具-》本地安全策略-》账户策略-》密码策略-》 1.密码必须符合复杂性要求。双击打开-》勾选已启用-》单击:应用-》单击:确定 2.密码长度最小值。双击打开-》设置密码长度最小值为:?个字符 3.密码最短使用期限。双击打开-》设置密码…...
FFMPEG-视频解码-支持rtsp|rtmp|音视频文件(低延迟)
本人亲测解码显示对比延迟达到7到20毫秒之间浮动兼容播放音视频文件、拉流RTSP、RTMP等网络流 基于 Qt 和 FFmpeg 的视频解码播放器类,继承自 QThread,实现了视频流的解码、播放控制、帧同步和错误恢复等功能 工作流程初始化阶段: 用户设置URL和显示尺寸 调用play()启动线程解…...
LDR、MOV和STR指令详解
文章目录 前言 一、LDR指令详解 1.基本语法 2.寻址方式 3.伪指令形式 二、MOV指令详解 1.基本语法 2.常见用法 3.特殊变体 三、STR指令详解 1.基本语法 2.寻址方式 四、三者区别与联系 1.基本语法 2.操作效率 3.大数值处理 总结 前言 ARM汇编中的LDR、MOV和STR是三个最基础也最…...
MATLAB 控制系统设计与仿真 - 41
鲁棒控制的其他函数 - 回路成型函数 loopsyn 灵敏度问题由鲁棒控制工具箱中的loopsyn就可以直接求解,该函数采用H无穷回路成型算法设计控制器,函数的调用格式为: [K,CL,gamma,info] loopsyn(G,Gd) % G为受控对象模型% Gd为期望的回路传递函…...
Scade 语言词法介绍
Scade 6 是一种具备形式化语法与形式化语义的领域特定语言(注1)。自2008年发布(注5)起,在 Scade Suite 产品系列中语言定义方面到目前未产生重要的改变(注2)。在下面的内容中将介绍Scade 语言的词法(注3)。 注1&#x…...
Replicate Python client
本文翻译整理自:https://github.com/replicate/replicate-python 文章目录 一、关于 Replicate Python 客户端相关链接资源关键功能特性 二、1.0.0 版本的重大变更三、安装与配置1、系统要求2、安装3、认证配置 四、核心功能1、运行模型2、异步IO支持3、流式输出模型…...
LLM做逻辑推理题 - 如何找出不标准的球?
题目: 有80个外观一致的小球,其中一个和其它的重量不同,(不知道更轻还是更重)。现在给你一个天平,允许你称四次,把重量不同的球找出来,怎么称? 1. 答案 第1次称量:天平…...
[密码学基础]国密算法深度解析:中国密码标准的自主化之路
国密算法深度解析:中国密码标准的自主化之路 国密算法(SM系列算法)是中国自主研发的密码技术标准体系,旨在打破国际密码技术垄断,保障国家信息安全。本文将从技术原理、应用场景和生态发展三个维度,全面解…...
【计算机视觉】三维视觉项目 - Colmap二维图像重建三维场景
COLMAP 3D重建 项目概述项目功能项目运行方式1. 环境准备2. 编译 COLMAP3. 数据准备4. 运行 COLMAP 常见问题及解决方法1. **编译问题**2. **运行问题**3. **数据问题** 项目实战建议项目参考文献 项目概述 COLMAP 是一个开源的三维重建软件,专注于 Structure-from…...
基于Fabric.js的选座布局系统开发笔记
项目概述 最近开发了一个简单的选座布局系统,主要用于会议、活动或餐厅等场景的座位和桌子布局设计。系统基于HTML5 Canvas和Fabric.js库实现,支持添加座位、桌子,并能保存布局数据。 技术栈 • HTML5 Canvas:作为绘图的基础 •…...
PHP怎样连接MySQL数据库?
方法一:使用 mysqli 扩展 mysqli 是 MySQL 的改进版扩展,提供了面向对象和过程化的接口。 面向对象风格 <?php$servername "localhost"; $username "your_username"; $password "your_password"; $dbname &quo…...
将飞帆制作的网页作为 Vue 2 组件引入到自己网页中使用
飞帆平台有一个功能:不仅所有的网页都是通过控件搭建而成,而且生成的网页又是一个大控件,可以导入到你自己的网页使用。 这篇文章,我们要讲的就是如何将飞帆生成的网页作为控件(组件)导入到自己的网页中。…...
Python制作简易PDF查看工具PDFViewerV1.0显示优化
原文说明 为不破坏原文结构,因此功能优化不在原文中维护了。关于这款工具原文请通过下面链接访问。Python制作简易PDF查看工具PDFViewerV1.0 这款小工具基本功能已经可以作为一款文档浏览器使用,但还有一些美中不足的地方,本文将介绍对文本查找功能的优化调整。 优化效果 …...
YOLOv11改进有效涨点专栏:从理论到实战的深度优化指南
## YOLOv11的进化之路 在目标检测领域,YOLO系列算法始终保持着革命性的创新步伐。YOLOv11作为该系列的最新演进版本,在保持实时检测优势的同时,通过架构层面的深度优化实现了精度与速度的平衡。本文将从**七大核心模块**出发,系统性地解析针对YOLOv11的有效改进方案,涵盖从…...
【EDA软件】【设计约束和分析操作方法】
1. 设计约束 设计约束主要分为物理约束和时序约束。 物理约束主要包括I/O接口约束(如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束。 时序约束是FPGA内部的各种逻辑或走线的延时,反应系统的频率和速度的约束…...
JVM基础认知:JVM到底是什么?为什么它如此重要?
随着 Java 语言在企业级应用、互联网服务、嵌入式系统等领域的广泛采用,JVM(Java Virtual Machine,Java虚拟机)成为了支撑整个生态的核心基础。初学者往往会把注意力集中在 Java 代码本身,却忽视了背后那台“看不见的机…...
javassist
使用javassist获取参数名 1,添加依赖 需要在pom.xml文件中添加下面的依赖: <dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.28.0-GA</version> </depende…...
【C++算法】66.栈_比较含退格的字符串
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 844. 比较含退格的字符串 题目描述: 解法 用字符串来模拟栈。 C 算法代码: class Solution { public:bool backspaceCompare(string s, string t…...
游戏引擎学习第235天:在 Windows 上初始化 OpenGL
奇怪有问题 之前没注意到 这个问题是Count 0 GlobalConstants_Renderer_UsedDebugCamer 打开的话会有Bug Count是零的话就不让排序了 game.h: 查阅 TODO 列表 大家好,欢迎来到 game Hero,这是一档我们在直播中一起编写完整游戏的节目。不幸的是&a…...
FPGA系列之DDS信号发生器设计(DE2-115开发板)
一、IP核 IP(Intellectual Property)原指知识产权、著作权等,在IC设计领域通常被理解为实现某种功能的设计。IP模块则是完成某种比较复杂算法或功能(如FIR滤波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且参数可修改的电路模块,…...
修改Theme SHELL美化panel
安装 使用 使用Tweaks进行设置 需要创建.themes文件夹,在当前目录下 mkdir ~/.themes从官网下载文件 https://www.gnome-look.org/p/1013030 将打包压缩文件移动到~/themes,并解压 tar -xvf 01-Flat-Remix-Light-20250413.tar.xz然后使用 按 Alt F2…...
Sentinel源码—5.FlowSlot借鉴Guava的限流算法二
大纲 1.Guava提供的RateLimiter限流使用示例 2.Guava提供的RateLimiter简介与设计 3.继承RateLimiter的SmoothBursty源码 4.继承RateLimiter的SmoothWarmingUp源码 3.继承RateLimiter的SmoothBursty源码 (1)SmoothBursty的初始化流程 (2)SmoothBursty的初始化完成后的变量…...
自由学习记录(56)
从贴图空间(texture space)将值还原到切线空间(tangent space)向量 tangentNormal.xy (packedNormal.xy * 2 - 1) * _BumpScale; 背后的知识点:法线贴图中的 RGB 是在 0~1 范围内编码的向量 所以贴图法线是怎么“压…...
计算机网络八股——HTTP协议与HTTPS协议
前言: 到时候我想要写一篇文章就是:在浏览器中输入URL并按下回车会发生什么? 然后将几篇文章全部串联到一起,现在几天的任务就是将这里的每个小部分进行一个详细的介绍 HTTP1.1简述与特性 Web 上的通信都是建⽴在 HTTP 协议上的…...
JAVAEE(网络原理—UDP报头结构)
我们本篇文章要讲的是UDP的报头结构以及注意事项。 下面呢,我先说一下UDP是什么? 1.UDP是什么? UDP是一种网络协议。网络协议是计算机网络中,为了使不同设备之间能够准确、高效地进行数据交换和通信,而预先制定的一…...
Redis-分布式锁
Redis-分布式锁 文章目录 Redis-分布式锁1.基本原理和不同方式实现方式对比2.Redis分布式锁的基本实现思路3.分布式锁误删问题一4.分布式锁误删问题二5.Redission1.功能介绍2.快速入门3.可重入锁原理4.锁重试和WatchDog机制1.锁重试2. WatchDog 机制(锁自动续期&…...
如何优雅地为 Axios 配置失败重试与最大尝试次数
在 Vue 3 中,除了使用自定义的 useRequest 钩子函数外,还可以通过 axios 的拦截器 或 axios-retry 插件实现接口请求失败后的重试逻辑。以下是两种具体方案的实现方式: 方案一:使用 axios 拦截器实现重试 实现步骤: 通…...
Windows使用SonarQube时启动脚本自动关闭
一、解决的问题 Windows使用SonarQube时启动脚本自动关闭,并发生报错: ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…...
MYSQL初阶(暂为自用草稿)
目录 基本操作 database操作 table操作 数据类型 INT类型 bit类型 FLOAT类型 CHAR类型 DATE类型 SEL类型 表的约束 列约束 NULL DEFAULT PRIMARY KEY UNIQUE KEY 表约束 PRIMARY KEY FOREIGN KEY 其他补充 AUTO_INCREMENT COMMENT ZEROFILL 表的CRUD …...
交换排序——快速排序
交换排序的基本思路:把序列中的两个元素进行比较,根据需求对两个元素进行交换。特点是较大的元素向序列的尾部移动,较小的元素向序列的前部移动。 hoare法 在序列中任取一个元素作为基准值,一趟排序完成之后,以基准值为…...
资源-又在网上淘到金了
前言: 本期再分享网上冲浪发现的特效/动画/视频资源网站。 一、基本介绍: mantissa.xyz,about作者介绍为:Midge “Mantissa” Sinnaeve (米奇辛纳夫)是一位屡获殊荣的艺术家和导演,提供动画、…...
CSS中的`transform-style`属性:3D变换的秘密武器
在CSS中,当我们尝试创建复杂的3D场景时,transform-style属性变得尤为重要。它决定了子元素是在3D空间中呈现还是被展平到2D平面中。本文将深入探讨transform-style的用法,并通过具体的代码示例来展示如何利用这个属性来增强你的网页设计。 什…...
Step文件无法编辑怎么办?
Step文件无法编辑怎么办? 这里介绍两种方法, 1、 直接导入 准备step文件,solidworks导入后是这样,不能在上面直接编辑 图 1 点击右键,选择解除特征(不同版本的可能不太一样,这里是solidworks2…...
从 LabelImg 到 Label Studio!AI 数据标注神器升级,Web 版真香
视频讲解: 从 LabelImg 到 Label Studio!AI 数据标注神器升级,Web 版真香 Label Studio 支持图像、文本、音频、视频、时间序列等多类型数据标注,覆盖计算机视觉(目标检测、语义分割)、自然语言处理&#x…...