计算机网络全栈精讲:从 TCP/UDP 原理到 Socket 编程与 HTTP 协议实战(含代码实现)
计算机网络作为现代信息技术的基石,支撑着互联网、物联网、云计算等众多领域的发展。无论是前端开发者、后端工程师,还是运维人员,深入理解计算机网络原理都至关重要。本文将从网络分层模型出发,逐步深入讲解 TCP/UDP 协议、Socket 编程以及 HTTP 协议,并结合代码示例帮助读者掌握关键技术点。
一、网络分层模型:理解数据传输的架构
1.1 OSI 七层模型 vs TCP/IP 四层模型
- OSI 七层模型(自底向上):物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层
- TCP/IP 四层模型(更实用):网络接口层 → 网络层 → 传输层 → 应用层
对比分析:
- OSI 模型理论完善但复杂,TCP/IP 模型更贴近实际实现
- 两者核心思想一致:分层解耦、模块化设计
1.2 分层设计的核心优势
# 伪代码示例:分层通信模型
class PhysicalLayer:def send_bits(self, bits):print(f"物理层发送原始比特流: {bits}")class DataLinkLayer:def __init__(self, physical):self.physical = physicaldef send_frame(self, frame):# 添加MAC地址等链路层信息enhanced_frame = f"MAC:00-11-22-33-44-55 | {frame}"self.physical.send_bits(enhanced_frame)# 使用示例
phy = PhysicalLayer()
dll = DataLinkLayer(phy)
dll.send_frame("Hello Network")
分层优势:
- 降低系统复杂度
- 模块化开发与维护
- 标准化接口促进互操作性
二、传输层核心协议:TCP 与 UDP 的较量
2.1 TCP 协议详解
关键特性:
- 面向连接(三次握手)
- 可靠传输(确认重传机制)
- 流量控制(滑动窗口)
- 拥塞控制(慢启动、拥塞避免等)
TCP 三次握手代码模拟(Python):
import socket
import threadingdef handle_client(client_socket):# 模拟TCP三次握手后的数据传输request = client_socket.recv(1024)print(f"收到客户端数据: {request.decode()}")client_socket.send(b"HTTP/1.1 200 OK\r\n\r\nHello TCP Client")client_socket.close()def tcp_server():server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(('0.0.0.0', 8080))server.listen(5)print("TCP服务器启动,监听8080端口...")while True:client_sock, addr = server.accept()print(f"收到来自{addr}的连接")client_handler = threading.Thread(target=handle_client, args=(client_sock,))client_handler.start()if __name__ == "__main__":tcp_server()
2.2 UDP 协议解析
典型应用场景:
- 实时音视频传输(如 WebRTC)
- DNS 查询
- 物联网设备通信
UDP 客户端代码示例(Python):
import socketdef udp_client():client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)message = "Hello UDP Server"try:# 发送数据(不需要建立连接)client.sendto(message.encode(), ('127.0.0.1', 9090))print("UDP数据包已发送")# 接收响应(可选)data, addr = client.recvfrom(1024)print(f"收到服务器响应: {data.decode()}")finally:client.close()if __name__ == "__main__":udp_client()
2.3 TCP 与 UDP 的选择依据
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 高(确认重传) | 低(尽最大努力交付) |
速度 | 较慢(握手+确认) | 更快(无额外开销) |
典型应用 | Web、文件传输 | 视频直播、DNS |
三、Socket 编程实战:构建基础网络应用
3.1 Socket 编程基础
核心概念:
- IP 地址:标识网络中的设备
- 端口号:标识设备上的进程
- 套接字:通信端点抽象
TCP Socket 通信完整示例:
# TCP服务器端
import socketdef start_tcp_server():server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)server.bind(('0.0.0.0', 8888))server.listen(5)print("TCP服务器启动,等待连接...")while True:conn, addr = server.accept()print(f"收到来自{addr}的连接")try:while True:data = conn.recv(1024)if not data:breakprint(f"收到数据: {data.decode()}")conn.sendall(f"ECHO: {data.decode()}".encode())finally:conn.close()# TCP客户端
def start_tcp_client():client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(('127.0.0.1', 8888))try:while True:msg = input("请输入要发送的消息(输入quit退出): ")if msg.lower() == 'quit':breakclient.sendall(msg.encode())response = client.recv(1024)print(f"服务器响应: {response.decode()}")finally:client.close()if __name__ == "__main__":import threading# 启动服务器线程server_thread = threading.Thread(target=start_tcp_server)server_thread.daemon = Trueserver_thread.start()# 启动客户端start_tcp_client()
3.2 Socket 编程进阶技巧
1. 非阻塞 IO:
import socket
import selectdef non_blocking_server():server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.setblocking(False)server.bind(('0.0.0.0', 9999))server.listen(5)inputs = [server]outputs = []while inputs:readable, writable, exceptional = select.select(inputs, outputs, inputs)for s in readable:if s is server:conn, addr = s.accept()conn.setblocking(False)inputs.append(conn)else:data = s.recv(1024)if data:print(f"收到数据: {data.decode()}")s.send(b"ACK")else:if s in outputs:outputs.remove(s)inputs.remove(s)s.close()
2. 超时设置:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5.0) # 设置5秒超时
try:sock.connect(('example.com', 80))
except socket.timeout:print("连接超时")
四、HTTP 协议剖析:从请求响应到实战开发
4.1 HTTP 协议基础
请求报文结构:
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
响应报文结构:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 138<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
4.2 使用 Python 构建 HTTP 服务器
from http.server import BaseHTTPRequestHandler, HTTPServer
import urllib.parseclass SimpleHTTPRequestHandler(BaseHTTPRequestHandler):def do_GET(self):# 解析请求路径和查询参数parsed_path = urllib.parse.urlparse(self.path)query_params = urllib.parse.parse_qs(parsed_path.query)# 构建响应self.send_response(200)self.send_header('Content-type', 'text/html')self.end_headers()response_content = f"""<html><head><title>简易HTTP服务器</title></head><body><h1>欢迎访问</h1><p>请求路径: {parsed_path.path}</p><p>查询参数: {query_params}</p></body></html>"""self.wfile.write(response_content.encode('utf-8'))def run_server(port=8000):server_address = ('', port)httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)print(f"HTTP服务器启动,访问地址: http://localhost:{port}")httpd.serve_forever()if __name__ == "__main__":run_server()
4.3 HTTP/2 特性与 Python 实现
HTTP/2 核心改进:
- 多路复用(解决队头阻塞)
- 二进制分帧
- 头部压缩(HPACK 算法)
- 服务器推送
使用 Python 的 hyper-h2 库实现 HTTP/2 服务器:
import h2.connection
import h2.events
import socket
import ssldef h2_server():context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)context.load_cert_chain(certfile='server.crt', keyfile='server.key')sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)sock.bind(('0.0.0.0', 8443))sock.listen(5)conn = h2.connection.H2Connection()while True:client, addr = sock.accept()client = context.wrap_socket(client, server_side=True)print(f"收到HTTP/2连接: {addr}")conn.initiate_connection()client.sendall(conn.data_to_send())while True:data = client.recv(65535)if not data:breakevents = conn.receive_data(data)for event in events:if isinstance(event, h2.events.RequestReceived):stream_id = event.stream_idconn.send_headers(stream_id,[(':status', '200'),('content-type', 'text/plain'),],end_stream=False)conn.send_data(stream_id, b"Hello HTTP/2!", end_stream=True)client.sendall(conn.data_to_send())client.close()if __name__ == "__main__":h2_server()
五、网络性能优化与故障排查
5.1 常见性能问题与解决方案
1. TCP 慢启动优化:
- 调整初始拥塞窗口(RFC6928 建议提高到 10 个 MSS)
- 使用 TCP Fast Open(TFO)减少握手延迟
2. 长连接复用:
# 使用requests库的Session对象复用连接
import requestssession = requests.Session()
session.get('https://example.com/api/v1/data') # 第一次连接
session.get('https://example.com/api/v1/data') # 复用连接
3. DNS 缓存策略:
- 操作系统级缓存(Linux 的 nscd)
- 应用层缓存(如 Python 的 dnspython 库)
5.2 实用网络诊断工具
1. Wireshark 抓包分析:
# 捕获80端口的HTTP流量
sudo wireshark -k -Y "tcp.port == 80"
2. tcpdump 命令行工具:
# 捕获主机间的通信
sudo tcpdump -i eth0 host 192.168.1.100 and port 443 -w capture.pcap
3. Python网络诊断脚本:
import socket
import subprocess
import timedef network_diagnostics(host="example.com"):print(f"=== 网络诊断报告: {host} ===")# 1. DNS解析测试print("\n[DNS解析测试]")try:ip = socket.gethostbyname(host)print(f"解析结果: {host} -> {ip}")except socket.gaierror as e:print(f"DNS解析失败: {e}")# 2. Ping测试print("\n[Ping测试]")try:response = subprocess.run(["ping", "-c", "4", host],capture_output=True,text=True)print(response.stdout)except FileNotFoundError:print("ping命令不可用,尝试Windows风格")response = subprocess.run(["ping", "-n", "4", host],capture_output=True,text=True)print(response.stdout)# 3. 端口连通性测试print("\n[端口连通性测试]")common_ports = [80, 443, 22, 3306]for port in common_ports:with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.settimeout(2)try:s.connect((host, port))print(f"端口 {port}/tcp 开放")except (socket.timeout, ConnectionRefusedError):print(f"端口 {port}/tcp 关闭或不可达")if __name__ == "__main__":network_diagnostics()
六、未来网络技术展望
- QUIC 协议:
- 基于 UDP 的可靠传输协议
- 减少握手延迟(0-RTT)
- 内置连接迁移支持
- HTTP/3:
- 完全基于 QUIC 的 HTTP 版本
- 改善移动网络下的性能
- Service Mesh:
- 如 Istio、Linkerd 等实现微服务间通信治理
- 提供流量管理、安全性、可观测性等能力
相关文章:
计算机网络全栈精讲:从 TCP/UDP 原理到 Socket 编程与 HTTP 协议实战(含代码实现)
计算机网络作为现代信息技术的基石,支撑着互联网、物联网、云计算等众多领域的发展。无论是前端开发者、后端工程师,还是运维人员,深入理解计算机网络原理都至关重要。本文将从网络分层模型出发,逐步深入讲解 TCP/UDP 协议、Socke…...
IP地址如何切换到国内别的省份?一步步指导
使用换IP工具的主要目的是通过更换设备的公网IP地址来满足特定需求,例如绕过限制、保护隐私或完成特定任务。以下是常见的应用场景和原因: 一、ip应用场景 1. 绕过IP限制 访问地域限制内容:某些网站或服务(如游戏、社交平台 &am…...
c++流对象
核心概念回顾: C 的流库 (<iostream>, <fstream>, <sstream>) 提供了一种统一的方式来处理输入和输出,无论数据是来自键盘、文件还是内存中的字符串。它们都基于 std::istream (输入流基类) 和 std::ostream (输出流基类),…...
华为IP(5)
交换机的堆叠与集群 堆叠和集群指的是同一件事 前言: 随着企业的发展,企业网络的规模越来越大,这对企业网络提出了更高的要求:更高的可靠性、更低的故障恢复时间、设备更加易于管理等。 传统的园区网高可靠性技术出现故障时很难做到毫秒级…...
零信任架构下的等保 2.0 与密评密改双合规
随着《网络安全等级保护2.0》和《商用密码应用安全性评估》的深入实施,企业面临双重合规压力:既要满足等保2.0对“主动防御”和“动态防护”的要求,又要通过密评密改强化密码技术的合规性。传统安全架构依赖边界防护和静态密码策略࿰…...
华为 MRAG:多模态检索增强生成技术论文阅读
GitHub项目链接:https://github.com/PanguIR/MRAGSurvey 总览 多模态检索增强生成(MRAG)通过将文本、图像、视频等多模态数据整合到检索与生成过程中,显著提升了多模态大语言模型(MLLM)的性能。传统检索增…...
文字光影扫过动效
列子1 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>光影扫过文字动效</title><styl…...
SpringBoot配置RestTemplate并理解单例模式详解
在日常开发中,RestTemplate 是一个非常常用的工具,用来发起HTTP请求。今天我们通过一个小例子,不仅学习如何在SpringBoot中配置RestTemplate,还会深入理解单例模式在Spring中的实际应用。 1. 示例代码 我们首先来看一个基础的配置…...
计算机网络应用层(5)-- P2P文件分发视频流和内容分发网
💓个人主页:mooridy 💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第五、六节知识梳理 关注我&…...
C++ TCP通信原理与实现
C 中 TCP 通信的原理基于 TCP/IP 协议栈的实现,以下是核心原理和关键步骤的详细说明: 一、TCP 通信核心原理 面向连接 通信双方需通过 三次握手 建立可靠连接,确保通信通道稳定。通过 四次挥手 断开连接,保证数据完整性。 可靠传…...
计算机网络-运输层(1)
计算机网络-运输层(1) 文章目录 计算机网络-运输层(1)5.1 运输层概述5.2 运输层端口号、复用与分用端口号基本概念端口号特性端口号分类重要说明 5.3 UDP与TCP协议对比关键区别说明 5.1 运输层概述 计算机网络体系结构中的物理层、数据链路层以及网络层共同解决了主机通过异构…...
学习spark-streaming收获
1.流处理的核心概念 •实时 vs微批处理:理解了 Spark Streaming 的微批处理(Micro-Batch)模型,将流数据切分为小批次(如1秒间隔)进行处理,与真正的流处理(如Flink)的区…...
蓝桥杯 14. 奇怪的数列
奇怪的数列 原题目链接 题目描述 从 X 星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 ⋯⋯YY 博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行 “读出…...
前端高频面试题day2
如何在vue3中使用defineAsyncComponent实现异步组件加载 在 Vue 3 中,使用 defineAsyncComponent 实现异步组件加载的步骤如下: 引入方法:从 Vue 中导入 defineAsyncComponent。定义异步组件:通过 defineAsyncComponent 包装一个…...
Linux系统之设置开机启动运行桌面环境
Linux 开机运行级别介绍与 Ubuntu 桌面环境配置指南 一、Linux 开机运行级别(Runlevel) 在传统的 Linux 系统(如 SysV init 初始化系统)中,运行级别定义了系统启动时加载的服务和资源。常见的运行级别如下: 运行级别模式用途0Halt(停机模式)关闭系统1Single User Mode…...
Python PyAutoGUI库【GUI 自动化库】深度解析与实战指南
一、核心工作原理 底层驱动机制: 通过操作系统原生API模拟输入使用ctypes库调用Windows API/Mac Cocoa/Xlib屏幕操作依赖Pillow库进行图像处理 事件模拟流程: #mermaid-svg-1CGDRNzFNEffhvSa {font-family:"trebuchet ms",verdana,arial,sans…...
【MobaXterm】win10下载v25.1安装流程
【下载地址】 官网: https://mobaxterm.mobatek.net/ 下载安装版,解压使用更快一些 【v20.0中文安装包】 夸克网盘:https://pan.quark.cn/s/2ad5b59e6d8e#/list/share 对应的指导教程: MobaXterm中文版安装使用教程-附安装包…...
2025.4.22 JavaScript 常用事件学习笔记
一、事件概述 JavaScript 事件是指在用户与网页交互或网页状态发生变化时所触发的操作。通过使用事件,可以为网页添加丰富的动态功能,实现用户与页面之间的互动,让网页不再只是静态的展示内容。 二、常见鼠标事件 click 事件 简介 …...
Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现
Android 13.0 MTK Camera2 设置默认拍照尺寸功能实现 文章目录 需求:参考资料架构图了解Camera相关专栏零散知识了解部分相机源码参考,学习API使用,梳理流程,偏应用层Camera2 系统相关 修改文件-修改方案修改文件:修改…...
Linux:基础IO 文件系统
Linux:基础IO && 文件系统 一、系统IO(一)系统文件操作接口1、open2、write3、read (二)文件描述符1、概念2、标准输入、标准输出、标准错误 (三)dup系统调用(重定向原理) 二…...
近期有哪些断链危机?如何提升供应链风险管理能力?
全球供应链格局正经历深刻变革,其网络架构愈发复杂,涉及多国企业主体且涵盖多个节点与复杂环节,管理难度显著增大。从原材料采购到终端交付,运输、仓储、加工等任一环节均存在潜在风险,单一环节效率滞后易引发系统性连…...
知识科普|褪黑素的发展历程及应用研究进展
睡眠作为维持人体健康的重要生理机制,其节律性受到精密调控。在昼夜节律系统的调控下,人类普遍遵循周期性单次睡眠模式,这一过程涉及复杂的神经-体液调控网络。其中神经元活动、神经递质传导、激素分泌及遗传调控机制共同作用于睡眠觉醒系统&…...
企业如何构建一个全面的Web安全防护体系
企业如何构建一个全面的Web安全防护体系 企业构建全面的Web安全防护体系需融合战略规划、技术防御、持续运营和风险治理四大维度,以下是基于行业最佳实践的系统化方案: 一、顶层设计:治理架构与安全战略 战略规划与合规驱动 制定网络安全愿…...
T8332FN凯钰LED驱动芯片多拓扑车规级AEC-Q100
T8332FN是一款支持多拓扑结构的恒流LED驱动控制芯片,适用于汽车照明及高功率LED应用,具备宽电压输入、高精度调光及多重保护功能。 核心特性 - 输入与拓扑:支持5-60V宽电压输入,适配Boost、Buck、Buck-Boost、SEPIC四种拓扑结构&…...
Redis一些小记录
Redis一些小记录 SpringData Redis:RedisTemplate配置与数据操作 操作String类型数据 String是Redis中最基本的数据类型,可以存储字符串、整数或浮点数。RedisTemplate提供了ValueOperations接口来操作String类型的数据,支持设置值、获取值、…...
Win10安装 P104-100 驱动
安装完之后总结一下, 之前做了不少功课, 在网上搜了很多教程, 视频的文字的, 但是很多已经比较陈旧了. 最后发现的这个 GitHub 项目 NVIDIA-patcher 是最有用的, 因为这是现在这些魔改驱动的来源. NVIDIA-patcher 仓库地址: https://github.com/dartraiden/NVIDIA-patcher 安…...
Android开机动画资源包制作(测试使用)
开机动画资源包需要采用仅存储的方式进行压缩,不能使用压缩软件直接压缩生成。 如果是系统开发人员,可以在源码目录中,采用bootanim程序提供的制作方式进行,下面可供测试人员自行制作。 制作流程 1)基于设备中已有开…...
PWN基础-利用格式化字符串漏洞泄露canary结合栈溢出getshell
测试源码: #include<stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[0x20];read(0, str, 0x50);printf(str);read(0, str, 0x50); } int main() {func();return 0; } 编译,开启 canary 保护,关闭 p…...
Kafka HA集群配置搭建与SpringBoot使用示例总结
Kafka HA集群配置搭建与SpringBoot使用示例总结 一、Kafka高可用(HA)集群搭建 1. 环境准备 至少3台服务器(推荐奇数台,如3、5、7)已安装Java环境(JDK 1.8)下载Kafka二进制包(如kafka_2.13-3.2.1.tgz&…...
MSO-Player:基于vlc的Unity直播流播放器,支持主流RTSP、RTMP、HTTP等常见格式
MSO-Player 基于libVLC的Unity视频播放解决方案 支持2D视频和360度全景视频播放的Unity插件 📑 目录 🎥 MSO-Player 📋 功能概述🚀 快速入门📚 关键组件📝 使用案例🔌 依赖项📋 注意…...
97A6-ASEMI无人机专用功率器件97A6
编辑:ll 97A6-ASEMI无人机专用功率器件97A6 型号:97A6 品牌:ASEMI 封装:SOT-23 批号:最新 引脚数量:3 特性:双向可控硅 工作温度:-40℃~150℃ 97A6双向可控硅:…...
body Param Query 三个 不同的入参 分别是什么意思 在前端 要怎么传 这三种不同的参数
在 NestJS 中,Body()、Param() 和 Query() 用于处理不同类型的请求参数。以下是它们的含义及前端传递方式: Body():请求体参数 • 含义:用于获取请求体中的数据(如 POST/PUT 请求中提交的 JSON、表单数据等)…...
生成式人工智能认证(GAI认证)含金量怎么样?
当生成式人工智能(Generative AI)的浪潮以摧枯拉朽之势重塑职业版图时,一个尖锐的问题正悬在无数人的心头:在技术迭代比眨眼更快的时代,如何证明自己具备驾驭AI的核心能力? 这场认知革命的背后,一张认证证书的价值早已超越了纸面——它既是个人能力的“信用背书”,也是…...
环境DNA宏条形码技术,鱼类检测引物如何选择?
环境DNA(eDNA)宏条形码技术在鱼类多样性调查研究中的优势明显,相比于传统调查方式,eDNA宏条形码技术灵敏度更高,能够更好地揭示鱼类的丰富度,并且具有高时效性。然而,在使用这个技术的过程中&am…...
Scala集合操作与WordCount案例实战总结
集合计算简单函数 1、说明 (1)求和 (2)求乘积 (3)最大值 (4)最小值 (5)排序 2、案例实操 object demo29{ def main(args: Array[String]): Unit { val…...
Spark-Streaming核心编程(四)总结
有状态转化操作 - UpdateStateByKey 功能描述 UpdateStateByKey原语用于在DStream中跨批次维护状态,例如流计算中的累加wordcount。 它允许对一个状态变量进行访问和更新,适用于键值对形式的DStream。 工作原理 给定一个由(键,事…...
关系型数据库PostgreSQL for Mac 保姆级使用教程
第一部分:安装PostgreSQL 方法一:使用Postgres.app(最简单) 访问 Postgres.app官网 下载最新版本,将 Postgres.app 移动到 “Applications” 文件夹。 双击Postgres.app打开应用,点击"Initialize&q…...
新增 29 个专业,科技成为关键赛道!
近日,教育部正式发布《普通高等学校本科专业目录(2025年)》,新增 29 个本科专业,包括区域国别学、碳中和科学与工程、海洋科学与技术、健康与医疗保障、智能分子工程、医疗器械与装备工程、时空信息工程、国际邮轮管理…...
云计算市场的重新分类研究
云计算市场传统分类方式,比如按服务类型分为IaaS、PaaS、SaaS,或者按部署模式分为公有云、私有云、混合云。主要提供计算资源、存储和网络等基础设施。 但随着AI大模型的出现,云计算市场可以分为计算云和智算云,智算云主要是AI模…...
大模型时代的具身智能:从虚拟到现实的智能体进化革命
一、具身智能:重新定义 AI 与物理世界的交互范式 (一)概念解析:从 "离身" 到 "具身" 的认知革命 具身智能(Embodied AI)是融合大模型决策能力与物理实体执行能力的新型智能系统&…...
鸿蒙NEXT开发正则工具类(ArkTs)
import { FormatUtil } from ./FormatUtil;/*** 正则工具类* author CSDN-鸿蒙布道师* since 2025/04/27*/ export class RegexUtil {/*** 英文字母、数字和下划线*/static readonly REG_GENERAL "^\\w$";/*** 数字*/static readonly REG_NUMBERS "^\\d$"…...
Flink维表深度解析
一、维表的概念与作用 维表(Dimension Table) 是数据仓库中的核心概念,通常用于存储静态或缓慢变化的业务实体信息(如用户资料、商品信息、地理位置等)。在实时流处理场景中,维表的作用是为主数据流&#…...
基于ArcGIS的洪水灾害普查、风险评估及淹没制图技术研究
一、洪水普查技术规范解读 1.1 全国水旱灾害风险普查实施方案解读 1.2 洪水风险区划及防治区划编制技术要求解读 1.3 山丘区中小河流洪水淹没图编制技术要求解读 二、ArcGIS介绍及数据管理 2.1 ArcGIS界面及数据加载 2.2 ArcGIS常见数据格式 2.3基于Geodatabase的洪水灾…...
初识数据结构——二叉树从基础概念到实践应用
数据结构专栏 ⬅(click) 初识二叉树:从基础概念到实践应用🌳 一、树型结构基础 1.1 树的基本概念 树是一种非线性的数据结构,由n(n>0)个有限节点组成一个具有层次关系的集合。它看起来像一棵倒挂的树,根朝上而叶朝下。 关键特…...
手搓传染病模型(SEIR)
先看模型 在本模型中,人群有四种自然史状态:易感者(S),暴露者(E),感染者(I)以及康复者(R) 2.模型假设人群分布是同质均匀的,未考虑人群出生、死亡、迁入迁出对疾病传播的影响 3.康复者永久免疫:康复者永久免…...
企业数据赋能 | 应用模板分享:汽车销售仪表板
实时监控销售数据,比较车型、地区业绩~ 今天,小编向大家分享 Tableau 应用分析模板:由 Imran Shaikh 搭建的汽车销售仪表板。借助此仪表板,企业可以实时跟踪销售情况,了解市场趋势,并比较不同车型、地区和销…...
C++?动态内存管理!!!
一、引言 之前我们一起讨论了类和对象的相关知识,接下来我们将继续完善我们的知识体系,为以后继续深入学习C知识添砖加瓦,在本期我们将一起学习C中关于动态内存管理的相关知识,在学习之前将要先回顾C语言中是如何进行动态内存管理…...
MCP协议:AI生态的统一标准
MCP(Model Context Protocol,模型上下文协议)是人工智能领域的革命性协议标准,被广泛类比为“AI世界的USB-C接口”。它通过统一模型、算力和数据的交互方式,解决了AI生态中的碎片化问题,重构了智能协作的技术范式。以下是其核心解析与技术哲学: 一、MCP协议的核心定位与…...
在 UniApp 中实现 App 与 H5 页面的跳转及通信
在移动应用开发中,内嵌 H5 页面或与外部网页交互是常见需求。UniApp 作为跨平台框架,提供了灵活的方式实现 App 与 H5 的跳转和双向通信。本文将详细讲解实现方法,并提供可直接复用的代码示例。 文章目录 一、 App 内嵌 H5 页面(使…...
目标跟踪最新文章阅读列表
AAAI2025 TrackFormer: Multi-Object Tracking with Transformers 论文:https://arxiv.org/abs/2101.02702 代码:https://github.com/timmeinhardt/trackformer AAAI2025 SUTrack 单目标跟踪 论文:https://pan.baidu.com/s/10cR4tQt3lSH5V2RNf7-3gg?pwd=pks2 代码:htt…...