当前位置: 首页 > news >正文

UDP协议栈之整体架构处理

在之前的章节中,笔者就UDP、ICMP、IP、ARP、MAC层的报文格式,以及组帧解帧、CRC校验、分片处理等操作进行了具体介绍以及详细代码实现,并且通过了仿真测试。但之前的仿真测试都是对单层报文的组帧解帧进行的,这些模块仍处于“孤立”状态,缺乏协同工作的能力。在本章节中,笔者将上述实现的各个模块,进行总线互联,实现一个UDP协议栈的整体架构,用户通过顶层接口,可以实现数据的发送、接收、ARP请求包、IP、MAC、PORT设置等关键操作。架构文字示意如下,其中PHY层物理接口,在之后的还章节会进行介绍
±--------------------+
| 用户接口层 | ← 配置MAC/IP/端口,发送/接收数据
±--------------------+
| UDP传输层 | ← 封装/解封装UDP头,端口校验
±--------------------+
| IP网络层 | ← IP头处理、分片与重组、ICMP响应
±--------------------+
| ARP & MAC链路层 | ← ARP表维护、MAC帧组帧/解帧、CRC校验
±--------------------+
| 物理接口(PHY) | ← RMII/GMII等硬件接口
±--------------------+
流程示意框图如下所示
在这里插入图片描述
接下来进行代码的整体组合,最终用户可操作的接口如下所示

	/*MAC IP PORTp配置*/input   [31:0]      i_port_info     ,input               i_port_valid    ,input   [63:0]      i_ip_info       ,input               i_ip_valid      ,input   [79:0]      i_macip_info    ,input               i_info_valid    ,input   [47:0]      i_mac_sinfo     ,input               i_mac_svalid    ,/*ARP请求包配置*/input   [15:0]      i_op_code       ,input               i_op_valid      ,input   [31:0]      i_request_ip    ,input               i_request_valid ,/*输入数据总线*/input   [15:0]      i_user_len      ,input   [7 :0]      i_user_data     ,input               i_user_valid    ,input               i_user_last     ,output              o_trans_ready   ,/*输出接收数据总线*/output  [15:0]      o_user_len      ,output  [7 :0]      o_user_data     ,output              o_user_valid    ,output              o_user_last     ,

接下来进行代码仿真测试
仿真测试条件如下,两个UDP相互发送指令

  • 首先,两台UDP协议栈向对方发送ARP请求包,请求MAC地址
  • 之后,两台UDP协议栈向对方发送数据,单包1024字节,发送三帧
  • 观察交互信息流
    标号为1的UDP协议栈,信息如下
    MAC地址:8’h11,8’h22,8’h33,8’h44,8’h55,8’h66
    IP地址:192.168.1.10
    PORT:16‘h8080
    标号为2的UDP协议栈,信息如下
    MAC地址:8’ha5,8’hd5,8’hff,8’hff,8’hff,8’he5
    IP地址:192.168.1.20
    PORT:16‘h8081
    首先观察ARP测试
    观察第一副图,ARP_T接收到用户的ARP请求操作码一级请求IP地址,并进行了ARP报文的输出。
    接口功能如下
	/*ARP操作码及请求IP地址*/input   [15:0]      i_op_code       ,input               i_op_valid      ,input   [31:0]      i_request_ip    ,input               i_request_valid ,/*输出给MAC层的报文端口*/output  [15:0]      o_mac_len       ,output  [7 :0]      o_mac_data      ,output              o_mac_valid     ,output              o_mac_last       

在这里插入图片描述
接下来观察ARP_RX模块仿真图,是否接收到UDP站点2的ARP响应。

在这里插入图片描述
观察红框中的有效数据,c0a80114其IP地址即为192.168.1.20,而mac地址为8’ha5,8’hd5,8’hff,8’hff,8’hff,8’he5,检验出,站点2接收到站点1的ARP请求,正确进行了ARP响应,站点1成功收到MAC地址。

接下来观察ARP_LIST模块仿真图,当输入进缓存的IP、MAC地址,是否进行了正确的地址查询,确定不存在后进行缓存

在这里插入图片描述
可以观察图中红框处的RAM使能读写以及数据地址控制信号,由于协议栈运行初始,RAM中不会缓存MAC、IP信息,所以有效搜索范围只有地址0,当检测到当前MAC、IP在ARP缓存表中不存在后,将该MAC、IP信息进行缓存。
可以看出ARP_LISRT模块正常进行了工作

接下来查看单包信息的传递情况,需知道MAC层使用的目的AMC地址,是在ARP缓存表中进行读取的,在数据报文到达IP层时,向ARP缓存表进行读取,寻找目的IP的MAC地址是否存在于ARP缓存表中,将寻找到的MAC地址发送给MAC层,所以在仿真中进行检验,是否使用了正确的MAC地址

观察下图,为ARP_LIST接收到搜寻IP对应MAC地址命令,并进行响应的时序波形

在这里插入图片描述
观察红框处,可以看出ARP缓存表正确输出了MAC地址

观察下图,为MAC层的发送仿真图

在这里插入图片描述
观察红框处,可以看出MAC_TX正确接收到MAC地址,并在发送报文时,进行了使用。

关于各层之间的处理,因为之前在各个章节已经仿真过,便不再赘述,直接观察UDP_RX的输出,是否正确接收到1024字节的数据包即可,UDP_RX的输出如下图所示

在这里插入图片描述
可以看出,UDP_RX正确输出三帧1024的字节包。

至此,UDP协议栈的仿真告一段落,本章节中涉及到的许多知识,在之前的章节都有讲述,对哪部分有疑问的小伙伴可以查找对应章节,进行学习。接下来,笔者将其应用层协议进行讲解,初步打算是讲解IEEE1588V2协议,并在仿真中进行时间同步测验,觉得本文章写的不错,并且对之后的更新内容感兴趣的小伙伴,可以点个关注,不迷路,感谢你的阅读,谢谢!

相关文章:

UDP协议栈之整体架构处理

在之前的章节中,笔者就UDP、ICMP、IP、ARP、MAC层的报文格式,以及组帧解帧、CRC校验、分片处理等操作进行了具体介绍以及详细代码实现,并且通过了仿真测试。但之前的仿真测试都是对单层报文的组帧解帧进行的,这些模块仍处于“孤立…...

健康医疗:动态代理 IP 保障医疗数据安全,提升远程医疗服务质量!

在数字化浪潮的推动下,远程医疗服务以其便捷性和高效性受到了广泛的关注。然而,随之而来的是数据安全问题,尤其是医疗数据的安全性,成为了制约远程医疗服务发展的关键因素。幸运的是,动态代理IP技术的出现,…...

Navicat SqlServer 设置自增主键

Navicat是一款优秀的数据库管理工具&#xff0c;可以连接很多类型的数据库。使用它可以极大的提高工作效率。 Navicat 不能设置SqlServer自增字段&#xff0c;只能通过sql语句来实现 建表时设置 create table <表名> ( <字段1-主键> int identity (1,1) primar…...

实验8 搜索技术

实验8 搜索技术 一、实验目的 &#xff08;1&#xff09;掌握搜索技术的相关理论&#xff0c;能根据实际情况选取合适的搜索方法&#xff1b; &#xff08;2&#xff09;进一步熟悉盲目搜索技术&#xff0c;掌握其在搜索过程中的优缺点&#xff1b; &#xff08;3&#xff09;…...

IMA+DeepSeekR1+本地知识库撰写NOIP2008普及组T3【传球游戏】题解

目录 一、提问词 二、DeepSeekR1回复 题目描述 解题思路 实现代码 代码说明 三、说明 【IMADeepSeekR1本地知识库】撰写NOIP2008普及组复赛题解系列 1、IMADeepSeekR1本地知识库撰写NOIP2008普及组T1【ISBN 号码】题解-CSDN博客 2、IMADeepSeekR1本地知识库撰写NOIP200…...

查找特定的值(信息学奥赛一本通-1110)

【题目描述】 在一个序列(下标从1开始)中查找一个给定的值&#xff0c;输出第一次出现的位置。 【输入】 第一行包含一个正整数n&#xff0c;表示序列中元素个数。1 <n< 10000。 第二行包含n个整数&#xff0c;依次给出序列的每个元素&#xff0c;相邻两个整数之间用单个…...

Qt项目中集成第三方模块的.pri文件

对于功能模块较多的Qt项目&#xff0c;使用pri文件管理模块文件&#xff0c;降低工程复杂度&#xff0c;提高软件模块的封装性和重用性。 一、.pro与.pri 对于模块化编程&#xff0c;Qt提供了pro和pri&#xff0c;pro管理项目&#xff0c;pri管理模块。 .pro 文件是Qt项目的…...

200多种算法应用于二维和三维无线传感器网络(WSN)覆盖场景

2.1 二元感知模型 在当前无线传感器网络&#xff08;WSN&#xff09;覆盖场景中&#xff0c;最常见且理想的感知模型是二元感知模型[27]。如图2所示&#xff0c; Q 1 Q_1 Q1​和 Q 2 Q_2 Q2​代表平面区域内的两个随机点。 Q 1 Q_1 Q1​位于传感器的检测区域内&#xff0c;其感…...

【QT】文件系统相关 -- QFile

一、Qt 文件概述 &#x1f525; 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类&#xff0c;通过这些类能够对文件系统进行操作&#xff0c;如文件读写、文件信息获取、文件制或重命名等 二、输…...

transformer bert 多头自注意力

输入的&#xff08;a1,a2,a3,a4&#xff09;是最终嵌入&#xff0c;是一个(512,768)的矩阵&#xff1b;而a1是一个token&#xff0c;尺寸是768 a1通过Wq权重矩阵&#xff0c;经过全连接变换得到查询向量q1&#xff1b;a2通过Wk权重矩阵得到键向量k2&#xff1b;q和k点乘就是值…...

人工智能之数学基础:线性变换的象空间和零空间

本文重点 前面的课程中,我们学习了线性变换,由此而引申出线性变换的象空间和零空间,这两个空间在机器学习领域会被经常用到,本文对此进行学习。 直观理解 总的来说象空间就是经过线性变换得到的空间,零空间就是经过线性变换是零的元素构成的空间。 从几何角度来看,象空…...

数据的存储---整型、浮点型

目录 一、整型在内存中的存储 1. 原码、反码、补码 2. 大端与小端 二、浮点数在内存中的存储 1.浮点数的存 2. 浮点数的取 3. 题目解析 一个变量的创建需要在内存中开辟空间&#xff0c;而开辟的空间大小是由数据类型决定的。下面我们就来讨论一下整型、浮点型在内存中的…...

鲸鱼算法WOA对风电场风电机组一次二次调频参数进行全局最优辨识,二次调频参数辩识matlab/simulink,也可进一步修改成一次调频参数辩识

模型为二次调频模型&#xff0c;也可修改为一次调频模型参数辩识 随着风电在电力系统中占比提高,其调频特性对电力系统频率稳定性的影响增大&#xff0c;例如&#xff0c;随着风电渗透水平不断提升&#xff0c;系统惯量不断增加&#xff0c;电力系统频率不断下降&#xff0c;在…...

Spring 中 SmartInitializingSingleton 的作用和示例

一、 接口定义 SmartInitializingSingleton 是 Spring 框架提供的一个 单例 Bean 全局初始化回调接口&#xff0c;用于在 所有非延迟单例 Bean 初始化完成后 执行自定义逻辑。 核心方法&#xff1a; public interface SmartInitializingSingleton {void afterSingletonsInsta…...

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...

Unity AI 技术浅析(三):智能代理(Agents)

Unity AI的智能代理(Agents)技术是实现游戏和虚拟现实应用中非玩家角色(NPC)、敌人、盟友等智能行为的核心。通过智能代理,开发者可以为虚拟角色赋予感知、决策和行动的能力,使其能够与环境和其他角色进行复杂的交互。 一、智能代理的基本原理 智能代理是能够在特定环境…...

加油站~~

求最少加油次数就是一个贪心问题&#xff0c;这里也不需要证明&#xff0c;根据我们的常识也知道就是走到油不够的时候就加油就好了&#xff0c;这里的no solution这有在两个加油站之间的距离大于了加满油后的行驶距离才会存在&#xff0c;其他情况都是可以计算的。代码有很多细…...

【商城实战(24)】商城性能大揭秘:压力测试与性能监控实战

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

Linly-Talker:开源数字人框架的技术解析与影响

一、引言&#xff1a;AI 数字人的发展趋势 近年来&#xff0c;数字人&#xff08;Digital Human&#xff09; 技术迅速发展&#xff0c;从最早的 2D 虚拟主播&#xff0c;到如今能够进行实时交互的 3D 智能助手&#xff0c;AI 在多模态交互领域的应用愈发广泛。各大互联网公司…...

【Nexus】Maven 私服搭建以及上传自己的Jar包

Nexus 安装 docker run -d -uroot --name nexus3 --restartalways -p 8081:8081 -v /data/nexus-data/blobs:/nexus-data/blobs -v /etc/localtime:/etc/localtime sonatype/nexus3这里也提供一下docker-composer的方法 .env 文件 VERSIONlatest CONTAINER_NAMECONTAINER_N…...

wlwrap 与 rlwrap 的区别对比:图形显示协议的演变

在 Linux 系统中&#xff0c;许多工具和程序依赖于命令行界面&#xff08;CLI&#xff09;来进行交互&#xff0c;尤其是对于那些没有图形用户界面的应用程序。在这种情况下&#xff0c;命令行编辑、历史记录和自动补全等功能是提升工作效率和用户体验的关键。rlwrap 和 wlwrap…...

矩阵交换行(信息学奥赛一本通-1119)

【题目描述】 给定一个55的矩阵(数学上&#xff0c;一个rc的矩阵是一个由r行c列元素排列成的矩形阵列)&#xff0c;将第n行和第m行交换&#xff0c;输出交换后的结果。 【输入】 输入共6行&#xff0c;前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。 第6行包含两个整…...

CP210x 驱动秘籍:打通 Windows 11 端口的任督二脉

前言 江湖上&#xff0c;众多电脑侠客在安装 Windows 11 时&#xff0c;遭遇“端口失踪案”。原来&#xff0c;这是缺少 CP210x 驱动的“内功心法”。今日&#xff0c;贫道便传授一套独门秘籍&#xff0c;助你打通端口“任督二脉”&#xff0c;让数据流畅如江湖中轻功高手。 …...

IDEA集成git,项目的克隆,远程仓库中文件的添加删除

目录 一、克隆项目 二、使用IDEA完成文件的上传和删除 1.配置git 2.上传 3.删除&#xff08;通过git bash&#xff09; 一、克隆项目 点击克隆&#xff0c;复制url &#xff0c;如下 打开你想要克隆到哪里&#xff0c;右击&#xff0c;选择 open Git Bash here 这一步之后…...

分治构造格雷码

题目描述 格雷码是一种二进制编码方式&#xff0c;其特性是任意两个相邻的码只有一位二进制位不同。给定一个整数 n&#xff0c;表示格雷码的位数&#xff0c;请生成所有 n 位格雷码&#xff0c;并按照格雷码的标准顺序输出。 输入格式 输出样例输入包含一个整数 n&#xff0c…...

区跨链知识和概念

1、以太坊 Geth 源码解析 Geth&#xff08;Go Ethereum&#xff09;是以太坊官方提供的 Go 语言实现的客户端&#xff0c;广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑&#xff0c;如区块同步、EVM 执行、P2P 交互等。 2、…...

C# net deepseek RAG AI开发 全流程 介绍

deepseek本地部署教程及net开发对接 步骤详解&#xff1a;安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG&#xff0c;全称是 Retrieval-Augmented Generation&#xff08;检索增强生成&#xff09;&#xff0c;是一种结合外部知识库检索与大模型生成能力的技术架构。其…...

REST 请求返回 Invalid Credentials

REST 请求返回 “Invalid Credentials”&#xff08;无效凭据&#xff09;&#xff0c;通常表示身份验证失败。可能的原因和解决方案如下&#xff1a; 可能的原因 & 解决方案 用户名或密码错误 确保使用正确的用户名和密码。如果 API 需要 Base64 编码的 Authorization 头…...

方案推介:206页WORD版ERP系统软件投标书整体解决方案

&#xff08;推介资料包含于绑定资源内&#xff09; 该文档是一份 ERP 系统软件投标书&#xff0c;围绕ERP 系统展开&#xff0c;全面阐述了其为机械加工企业提供的整体解决方案、应用价值、行业成功案例及标准功能&#xff0c;旨在助力企业实现信息化管理升级 。 ERP 软件系统…...

WebSocket生命周期和vue中使用

ing。。。晚点更新 进入页面&#xff0c;生命周期挂载后&#xff0c;window监听ws连接online 正常情况&#xff0c;心跳包检测避免断开 非正常情况&#xff0c;ws.onclose断开&#xff0c; 判断1000状态吗&#xff0c;触发重连函数。 定时器&#xff0c;重连&#xff0c;判断…...

RabbitMQ消息持久化与Lazy模式对比分析

RabbitMQ消息持久化与Lazy模式对比分析 在RabbitMQ中&#xff0c;消息持久化与Lazy模式是两种不同的机制&#xff0c;分别针对消息可靠性、存储优化等不同维度设计。以下从六个层面进行深度对比&#xff1a; 一、核心目标与作用对象差异 维度消息持久化&#xff08;delivery_…...

Springboot中的异常处理

ControllerAdvice虽然只是在处理Controller注解的类&#xff0c;在Service层抛出的异常如果没有在Service层被处理的话&#xff0c;会向上抛出到到Controller层&#xff0c;再被异常处理器捕获 1. 全局异常处理 ControllerAdvice&#xff1a;全局处理器&#xff0c;处理有Con…...

深入解析Go语言Channel:源码剖析与并发读写机制

文章目录 Channel的内部结构Channel的创建过程有缓冲Channel的并发读写机制同时读写的可能性发送操作的实现接收操作的实现 并发读写的核心机制解析互斥锁保护环形缓冲区等待队列直接传递优化Goroutine调度 实例分析&#xff1a;有缓冲Channel的并发读写性能优化与最佳实践缓冲…...

C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?

C中虚析构函数的作用是什么&#xff1f;为什么基类需要虚析构函数&#xff1f; 在C中&#xff0c;虚析构函数&#xff08;virtual destructor&#xff09;的作用是确保在通过基类指针或引用删除派生类对象时&#xff0c;能够正确调用派生类的析构函数&#xff0c;从而避免资源…...

ClickHouse合并任务与查询延迟专项测试

ClickHouse合并任务与查询延迟专项测试 1. 测试目的 验证周期性高延迟&#xff08;~900ms&#xff09;是否由后台合并任务&#xff08;Merge&#xff09;引起。 2. 测试环境 组件配置ClickHouse版本24.8.3.13服务器硬件8核CPU / 32GB内存 / NVMe SSD测试表log_test 3. 测试…...

3.14学习总结

今天完成了几道关于二叉树的算法题 关于二叉树的最小最大深度和数据流中的第k大元素&#xff0c;用到优先队列&#xff0c;学习了有关java的基础知识&#xff0c;学习了双指针法。...

OpenHarmony自定义子系统、部件与模块

如图所示&#xff0c;OpenHarmony系统源码中&#xff0c;大体上按照不同种类的功能分成多个子系统&#xff0c;然后一个子系统内部进一步在同类功能上的差异性划分成一个或多个部件&#xff0c;也就是说一个部件表示一个具体功能的源码集合。最后一个部件的源码再划分成一个或多…...

PPT 相关资料介绍

文章目录 一、iSlide 工具二、免费 PPT 模板下载三、Kimi 一键生成 PPT 一、iSlide 工具 iSlide 官网 二、免费 PPT 模板下载 7个完全免费的PPT模板下载网站 优品PPT 第一PPT 三、Kimi 一键生成 PPT ☆...

C# 发送邮件 报错:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。

C# 发送邮件 报错&#xff1a;此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。 报错信息分析 当你遇到如下报错时&#xff1a; 此请求已被阻止&#xff0c;因为当用在 GET 请求中时&#xff0c;会将敏感信息透漏给第三方网站。…...

大数据-spark3.5安装部署之standalone模式

真实工作中还是要将应用提交到集群中去执行&#xff0c;Standalone模式就是使用Spark自身节点运行的集群模式&#xff0c;体现了经典的master-slave模式。集群共三台机器&#xff0c;具体如下 u22server4spark&#xff1a; master worker u22server4spark2&#xff1a; worke…...

接口自动化入门 —— Jmeter实现在接口工具中关联接口处理方案

1. JMeter 接口关联处理的核心概念 接口关联是指在多个接口请求之间共享数据&#xff0c;例如将一个接口的返回值作为另一个接口的输入参数。常见的场景包括&#xff1a; 使用登录接口返回的 Token 作为后续接口的认证信息。 将一个接口返回的 ID 作为另一个接口的请求参数。…...

WebForms HTML:深入理解与高效运用

WebForms HTML&#xff1a;深入理解与高效运用 引言 随着互联网技术的飞速发展&#xff0c;WebForms HTML作为Web开发中的一种重要技术&#xff0c;已经成为了许多开发者日常工作中不可或缺的一部分。本文将深入探讨WebForms HTML的原理、应用场景以及高效运用技巧&#xff0…...

VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、VScode下载及安装二、安装 MinGW-w64 工具链三、Windows环境变量配置四、检查 M…...

【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解

​问题描述&#xff1a; 我在看内核锁调试的信息时&#xff0c;看到了一些内核编译参数相关的设置&#xff0c;开启这些信息可以帮助我们在测试环境中调试锁的竞争情况&#xff0c;可以详细的打印出来一些线程持有锁&#xff0c;一些线程争抢锁的信息。 以下是我的配置&#…...

LinuX---Shell---变量

系统预定义变量 常用系统变量 PATH、HOME、PWD、SHELL、USER等 获取变量的值 语法&#xff1a;$变量名 $和变量名之间不能有空格。 案例实操 查看系统变量的值 fengubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u…...

深入理解Spring MVC:构建灵活的Web应用

大家好&#xff01;今天我们来聊聊Spring框架中的一个重要模块——Spring MVC。Spring MVC是一个基于MVC&#xff08;Model-View-Controller&#xff09;架构的Web框架&#xff0c;它提供了强大的功能来处理HTTP请求、生成动态内容以及管理Web应用程序的流程。无论是构建RESTfu…...

详解SQL数据查询功能

数据查询 一、 单表查询1. 选择表中的若干列2. 选择表中的若干元组3. ORDER BY 子句4. 聚合函数5. GROUP BY 子句6. LIMIT 子句综合示例&#xff1a; 二、 多表查询1. 等值连接查询 (Equi-Join)2. 非等值连接查询 (Non-Equi Join)3. 自然连接查询 (Natural Join)4. 复合条件连接…...

ArcGIS Pro 车牌分区数据处理与地图制作全攻略

在大数据时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术在各个领域都有着广泛的应用&#xff0c;而 ArcGIS Pro 作为一款功能强大的 GIS 软件&#xff0c;为数据处理和地图制作提供了丰富的工具和便捷的操作流程。 车牌数据作为一种重要的地理空间数据&#xf…...

Git 本地常见快捷操作

Git 本地常见快捷操作 &#x1f4cc; 1. 基本操作 操作命令初始化 Git 仓库git init查看 Git 状态git status添加所有文件到暂存区git add .添加指定文件git add <file>提交更改git commit -m "提交信息"修改最后一次提交信息git commit --amend -m "新…...

大视频背景暗黑风格的wordpress企业主题免费下载

整体风格是黑色的&#xff0c;首页首屏大视频背景&#xff0c;动态效果非常好。向下滚动时&#xff0c;滚动的特效也不错。 原文 https://www.bixugao.com/wp/26.html...