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

上位机知识篇---DDSSDK


文章目录

  • 前言
  • 第一部分:DDS
    • 核心特性
      • 1.以数据为中心
      • 2.发布-订阅模型
      • 3.质量服务
      • 4.多语言支持
    • 关键概念
      • 1.主题
      • 2.发布者
      • 3.订阅者
      • 4. 数据写入者
      • 5.数据读取者
      • 6.域参与者
      • 7.域
    • DDS的优势
      • 1.可伸缩性
      • 2.实时性
      • 3.可靠性
      • 4.容错性
    • DDS的应用场景
      • 1.军事通信系统
      • 2.航空航天
      • 3.工业自动化
      • 4.智能交通系统
  • SDK
    • SDK的目的
      • 1.简化开发流程
      • 2.加速原型设计
      • 3.提高开发效率
      • 4.确保兼容性
    • SDK的主要组成部分
      • 1.库文件
      • 2.API
      • 3.文档和教程
      • 4.示例代码
      • 5.开发工具
      • 6.框架
      • 7.支持资源
    • SDK的类型
      • 1.平台SDK
      • 2.框架SDK
      • 3.服务SDK
      • 4.硬件SDK
    • SDK的使用流程
      • 1.获取SDK
      • 2.了解文档
      • 3.集成SDK
      • 4.开发应用
      • 5.测试和调试
      • 6.发布应用
  • 总结


前言

本文简单介绍了DDS(数据分发服务)、SDK(软件开发工具包)。


第一部分:DDS

DDS,即数据分发服务(Data Distribution Service),是一种以数据为中心的中间件协议和API,用于实时系统中的高性能、低延迟的数据分发。它是由对象管理集团(Object Management Group, OMG)定义的网络数据通信协议和接口规范。DDS主要应用于分布式系统,尤其是在航空航天、国防、工业自动化、机器人(ROS)、物联网(IoT)等领域。

以下是DDS的一些关键特点:

核心特性

1.以数据为中心

以数据为中心:DDS采用以数据为中心发布-订阅模型,使得数据的发布者和订阅者不必直接建立连接,而是通过**数据主题(Topics)**进行通信。

2.发布-订阅模型

发布-订阅模型:发布者发布数据到主题订阅者订阅感兴趣的主题以接收数据。这种模型降低了系统组件之间的耦合性

3.质量服务

质量服务(QoS):DDS定义了一系列服务质量策略,允许应用程序根据需求调整数据传输的可靠性、实时性、持久性等

4.多语言支持

多语言支持:DDS规范支持多种编程语言,如C/C++、Java、C#等。

关键概念

1.主题

主题(Topic):定义了数据的类型和结构,是发布者和订阅者通信的通道。

2.发布者

发布者(Publisher):创建数据并将其发送到DDS主题

3.订阅者

订阅者(Subscriber):从DDS主题接收数据

4. 数据写入者

数据写入者(DataWriter):发布者用来写入数据的实体

5.数据读取者

数据读取者(DataReader):订阅者用来读取数据的实体

6.域参与者

域参与者(DomainParticipant):是DDS域中的一个实体负责创建和管理主题、发布者和订阅者。

7.域

域(Domain):是一个通信边界,只有处于同一域的发布者和订阅者才能交换信息。

DDS的优势

1.可伸缩性

可伸缩性:DDS支持大量节点和复杂网络拓扑的系统。

2.实时性

实时性:DDS提供了极低的数据传输延迟,适合实时系统

3.可靠性

可靠性:通过QoS策略,DDS可以保证数据的可靠传输

4.容错性

容错性:DDS支持节点和网络的故障恢复

DDS的应用场景

1.军事通信系统

军事通信系统:用于战场管理、指挥控制、无人系统通信等。

2.航空航天

航空航天:用于飞行器间的数据交换、地面控制通信等。

3.工业自动化

工业自动化:用于工厂自动化控制、机器人协调等。

4.智能交通系统

智能交通系统:用于车辆间通信、交通管理控制等。
DDS作为一个高效的数据分发解决方案,在需要高可靠性和实时性的分布式系统中发挥着重要作用。随着技术的发展,DDS也在不断地更新和扩展,以适应更加多样化的应用需求。

SDK

SDK,即软件开发工具包(Software Development Kit),是一套为**特定软件包、软件框架、硬件平台、操作系统等提供的开发工具集合。**它通常包括用于开发应用程序所需的库、文档、代码示例、工具和教程。SDK旨在帮助开发者简化开发过程,加速应用程序的创建和部署。

以下是SDK的一些详细信息和组成部分:

SDK的目的

1.简化开发流程

简化开发流程:提供预先编写的代码和工具,减少开发者从头开始编写代码的工作量。

2.加速原型设计

加速原型设计:通过提供现成的模块和功能,开发者可以快速构建出产品原型。

3.提高开发效率

提高开发效率:开发者可以利用SDK提供的资源,专注于核心业务逻辑的实现,而不是底层技术细节。

4.确保兼容性

确保兼容性:SDK通常包含针对特定平台的兼容性测试和优化,确保应用程序能够在目标环境中稳定运行。

SDK的主要组成部分

1.库文件

库文件(Libraries):预编译的代码模块,提供特定功能,如用户界面组件、网络通信、数据处理等。

2.API

API(应用程序编程接口):定义了如何与SDK提供的库进行交互的规则和协议。API是开发者与SDK交互的主要方式。

3.文档和教程

文档和教程:提供SDK的使用说明、API参考、开发指南和最佳实践。

4.示例代码

示例代码:演示如何使用SDK的示例应用程序或代码片段,帮助开发者理解如何实现特定功能。

5.开发工具

开发工具:可能包括编译器、调试器、代码编辑器、模拟器等,用于应用程序的开发和测试

6.框架

框架(Frameworks):提供应用程序的基本结构,帮助开发者遵循特定的设计模式。

7.支持资源

支持资源:如论坛、社区、技术支持等,帮助开发者解决开发过程中遇到的问题。

SDK的类型

1.平台SDK

平台SDK:针对特定操作系统(如Android SDK、iOS SDK)硬件平台(如Arduino SDK)开发工具包

2.框架SDK

框架SDK:针对特定**软件框架(如TensorFlow SDK、React Native SDK)**的开发工具包。

3.服务SDK

服务SDK:为使用特定**在线服务(如Google Maps SDK、Facebook SDK)**提供的开发工具包。

4.硬件SDK

硬件SDK:为与特定硬件设备(如各种物联网设备SDK)交互而提供的开发工具包。

SDK的使用流程

1.获取SDK

获取SDK:通常从官方渠道下载或通过包管理器安装。

2.了解文档

了解文档:阅读SDK提供的文档,了解如何使用SDK及其功能。

3.集成SDK

集成SDK:将SDK集成到开发项目中,配置必要的设置。

4.开发应用

开发应用:使用SDK提供的API和工具开发应用程序。

5.测试和调试

测试和调试:利用SDK提供的工具进行应用程序的测试和调试

6.发布应用

发布应用:完成开发后,将应用程序发布到目标平台。
SDK是现代软件开发的重要组成部分,它们极大地提高了开发效率,促进了技术的快速发展和创新。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了DDS(数据分发服务)、SDK(软件开发工具包)。

相关文章:

上位机知识篇---DDSSDK

文章目录 前言第一部分:DDS核心特性1.以数据为中心2.发布-订阅模型3.质量服务4.多语言支持 关键概念1.主题2.发布者3.订阅者4. 数据写入者5.数据读取者6.域参与者7.域 DDS的优势1.可伸缩性2.实时性3.可靠性4.容错性 DDS的应用场景1.军事通信系统2.航空航天3.工业自动…...

基于DeepSeek在藏语学习推广和藏语信息化方面可以做哪些工作?

基于DeepSeek对藏语的技术优势,您可在以下三大方向开展创新性工作,以下是20具体落地方案: 一、藏语智能教育工具开发 《三十颂》AI语法教练 开发虚拟助教自动解析藏文句子结构(标注格助词/时态变化)错误检测系统&…...

如何把obsidian的md文档导出成图片,并加上文档属性

上篇关于这个插件PKMer_Obsidian 插件:Export Image plugin 一键将笔记转换为图片分享的文章 如何把obsidian的md文档导出成图片,并加上水印-CSDN博客 如何导出图片的时候让文档属性也显示出来,啊啊,这个功能找了一晚上&#xf…...

AUTOSAR从入门到精通-车身控制系统BCM(三)

目录 前言 算法原理 什么是车身控制模块BCM 1. BCM ECU的工作原理 a. 硬件架构 b. 控制逻辑 BCM带来的好处 车身控制模块(BCM)的功用 车身控制模块(BCM)能够控制的车身功能系统 BCM的各项功能 1.1内外部灯光控制 1.2 雨刮系统 1.3 车身防盗报警系统 1.4 车锁…...

删除全表数据sql

-- 删除 employees 表中的所有数据 DELETE FROM employees;-- 清空 employees 表中的所有数据 TRUNCATE TABLE employees;TRUNCATE 操作不记录每一行的删除操作,而是直接释放数据页,所以执行速度通常比 DELETE 快。不过它不能和 WHERE 子句一起使用&…...

Winform如何取消叉号,减号和放大(两种)

方法一: 找到窗体属性 MaximizeBoxFalse; MinimizeBoxFalse; ControlBoxFALSE; 方法二: 点击Form 在From里面找到Form-Closing 这个事件 写入 if(e.CloseReasonCloseReason.UserClosing) { MessageBox.Show("对不起,你不能关闭") e.Cancel true; }...

Couchbase UI: Query

Couchbase 的 Query 页面在 UI 中是一个核心功能模块,支持 N1QL 查询的编写、调试和优化。同时,它也扩展了与查询相关的功能,比如 Workbench、Monitor 和 UDF 管理。这些功能让开发者和管理员能够更加高效地管理数据查询和性能优化。 以下是…...

Word 中实现方框内点击自动打 √ ☑

注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…...

Go优雅实现redis分布式锁

前言 系统为了保证高可用,通常会部署多实例,并且会存在同时对共享资源并发读写,这时候为了保证读写的安全,常规手段是会引入分布式锁,本文将介绍如何使用redis设计一个优雅的Go分布式锁。 设计 redis分布式锁是借助…...

A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战

服务容器化构建的环境配置构建前需要解决什么下面我们带着问题分析构建的过程:1. 如何解决jenkins执行环境与shell脚本执行环境不一致问题?2. 构建之前动态修改项目的环境变量3. 在通过容器打包时避免不了会产生比较多的不可用的镜像资源,这些资源要是不及时删除掉时会导致服…...

Controller 层优化四步曲

Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...

自动化运维在云环境中的完整实践指南

随着云计算的普及,越来越多的企业将业务迁移到云上。云环境的高动态性和复杂性使得传统的手动运维方式难以应对,自动化运维成为提升效率、降低成本、保障系统稳定性的关键。本文将详细介绍如何在云环境中实施自动化运维,涵盖工具选择、实施步骤和最佳实践。 © ivwdcwso…...

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 三、项目结构 四、配置启动项 五、补充:ts转js别名问题 一、初始化package.json 我的:这里的"main"没太大影响,看后面的步骤。 {"name": "xloda-cloud-ui-pc"…...

DiffuEraser: 一种基于扩散模型的视频修复技术

视频修复算法结合了基于流的像素传播与基于Transformer的生成方法,利用光流信息和相邻帧的信息来恢复纹理和对象,同时通过视觉Transformer完成被遮挡区域的修复。然而,这些方法在处理大范围遮挡时常常会遇到模糊和时序不一致的问题&#xff0…...

《Operating System Concepts》阅读笔记:p1-p1

《Operating System Concepts》学习第 1 天,p1-p1 总结,总计 1 页。 一、技术总结 无。 二、英语总结(生词:1) 1.intermediary (1)intermediary: inter-(“between, among”) medius(“middle”) c.intermediary originally referred …...

9.8 实战:使用 GPT Builder 开发定制化 ChatGPT 应用

实战:使用 GPT Builder 开发定制化 ChatGPT 应用 引言:打造属于你的智能助手 定制化 ChatGPT 应用正在成为解决具体问题和提升生产力的关键工具。GPT Builder 提供了一个灵活、直观的平台,让开发者和非技术用户都能快速创建满足特定需求的智能助手。本文将通过一个实战案例…...

团体程序设计天梯赛-练习集——L1-024 后天

前言 首先祝大家新年快乐,然后博主今点炮让炮崩了一下,水一天 这道题5分非常简单,有不少的做法 L1-024 后天 如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期…...

基于STM32的智能语音控制灯光系统设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 语音识别模块灯光控制模块模式切换与场景管理模块用户交互与显示模块远程控制与数据上传模块 控制算法 语音识别与命令解析算法灯光强度与颜色调节算法数据记录与远程反馈算法 代码实现 语音识别与灯光控制代码场景模式与定时…...

Redis部署方式全解析:优缺点大对比

Redis部署方式全解析:优缺点大对比 一、引言 Redis作为一款高性能的内存数据库,在分布式系统、缓存、消息队列等众多场景中都有着广泛的应用。选择合适的Redis部署方式,对于系统的性能、可用性、可扩展性以及成本等方面都有着至关重要的影响…...

Java实现FIFO缓存策略实战

实现FIFO模型选择FIFO模型实现过程FIFO模型完整代码下面看一下先进先出的示例过程总结FIFO(First In First Out,先进先出)策略是一种基本的数据处理和存储管理方法,在Java中,这种策略通常用于管理那些需要按照顺序处理的数据项,比如任务的队列、数据的传输缓冲区等。在Ja…...

把markdown转换为pdf的方法

将 Markdown 文件转换为 PDF 有多种方法,以下是几种常见的方式: 1. 使用 VS Code 和 Markdown 插件 VS Code 是一款流行的代码编辑器,支持通过插件将 Markdown 转换为 PDF。 步骤: 安装 VS Code: 下载地址&#xff…...

Java Web 开发基础介绍

Java学习资料 Java学习资料 Java学习资料 一、引言 在当今数字化时代,Web 应用无处不在。Java 凭借其强大的功能、良好的跨平台性和丰富的开发框架,成为 Web 开发领域的热门选择之一。Java Web 开发允许开发者构建动态、交互式的 Web 应用程序&#x…...

自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

在本文中,我们将展示如何使用 NumPy 创建自定义数据集,利用 PyTorch 实现一个简单的逻辑回归模型,并在训练完成后保存该模型,最后加载模型并用它进行预测。 1. 创建自定义数据集 首先,我们使用 NumPy 创建一个简单的…...

LangChain概述

文章目录 为什么需要LangChainLLM应用开发的最后1公里LangChain的2个关键词LangChain的3个场景LangChain的6大模块 为什么需要LangChain 首先想象一个开发者在构建一个LLM应用时的常见场景。当你开始构建一个新项目时,你可能会遇到许多API接口、数据格式和工具。对于…...

Ubuntu 16.04安装Lua

个人博客地址:Ubuntu 16.04安装Lua | 一张假钞的真实世界 在Linux系统上使用以下命令编译安装Lua: curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz tar zxf lua-5.3.3.tar.gz cd lua-5.3.3 make linux test 安装make 编译过程如果提示以下信息…...

独立开发者产品日刊:将 Figma 设计转化为全栈应用、对话 PDF生成思维导图、视频转 AI 笔记、AI问答引擎、Mac 应用启动器切换器

独立开发者产品日刊,每日汇集 ProductHunt 热榜产品介绍,用一个 Slogan 帮你概括产品内容,期望能够让你快速浏览get最新产品创意,激发在产品上的灵感。 Lovable Builder.io Slogan:将 Figma 设计转化为全栈应用 类别…...

【算法】经典博弈论问题——威佐夫博弈 python

目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子,数量任意,可以不同,游戏开始由两个人轮流取石子 游戏规定,每次有两种不同的取法 1)在任意的一堆中取走任意多的石子 2)可以在两堆中同时取走相同数量…...

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具,旨在通过自然语言交互和强大的算法能力,帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户,使数据分析变得简单高效。 核心功能 自然语言交互&#x…...

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…...

1.23学习记录

web XYNU2024信安杯 哎~想她了 源代码找到提示,访问页面第一层数组绕过,第二层发现ls /可以执行,接着用less代替tac和cat less /fl[a-z]g exp: URL/?fj1[]1&fj2[]2&cmdless /fl[a-z]gmisc [SWPU 2020]套娃 下载附件…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective(三) 文章概括 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…...

NeetCode刷题第17天(2025.1.27)

文章目录 086 Course Schedule II 课程安排二087 Graph Valid Tree 图有效树088 Number of Connected Components in an Undirected Graph 无向图中的连接组件数量 086 Course Schedule II 课程安排二 您将获得一个数组 prerequisites ,其中 prerequisites[i] [a,…...

Seed Edge- AGI(人工智能通用智能)长期研究计划

Seed Edge 是字节跳动豆包大模型团队推出的 AGI(人工智能通用智能)长期研究计划12。以下是对它的具体介绍1: 名称含义 “Seed” 即豆包大模型团队名称,“Edge” 代表最前沿的 AGI 探索,整体意味着该项目将在 AGI 领域…...

企业知识管理推动企业整体效能提升与创新能力发展的路径探索

内容概要 企业知识管理是指通过对组织内外部知识的识别、获取、整合与应用,提升企业整体运营效能与竞争力的一系列管理活动。其重要性在于,知识作为一种无形资产,能够显著影响企业的决策质量和创新能力。在当今快速发展的市场环境中&#xf…...

【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么

刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后,逐渐搞懂了这…...

ZZNUOJ(C/C++)基础练习1000——1010(详解版)

目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…...

volatile之四类内存屏障指令 内存屏障 面试重点 底层源码

目录 volatile 两大特性 可见性 有序性 总结 什么是内存屏障 四个 CPU 指令 四大屏障 重排 重排的类型 为什么会有重排? 线程中的重排和可见性问题 如何防止重排引发的问题? 总结 happens-before 和 volatile 变量规则 内存屏障指令 写操作…...

【deepseek】deepseek-r1本地部署-第二步:huggingface.co替换为hf-mirror.com国内镜像

一、背景 由于国际镜像国内无法直接访问,会导致搜索模型时加载失败,如下: 因此需将国际地址替换为国内镜像地址。 二、操作 1、使用vscode打开下载路径 2、全局地址替换 关键字 huggingface.co 替换为 hf-mirror.com 注意:务…...

Lesson 121 The man in a hat

Lesson 121 The man in a hat 词汇 customer n. 顾客,回头客 相关:Customs 注意大写 n. 海关,关税    custom n. 1. 风俗习惯【通常是复数】    例句:这些是中国人的习俗。       These are Chinese customs.    …...

Excel中LOOKUP函数的使用

文章目录 VLOOKUP(垂直查找):HLOOKUP(水平查找):LOOKUP(基础查找):XLOOKUP(高级查找,较新版本Excel提供): 在Excel中&…...

【Convex Optimization Stanford】Lec3 Function

【Convex Optimization Stanford】Lec3 Function 前言凸函数的定义对凸函数在一条线上的限制增值扩充? 一阶条件二阶条件一些一阶/二阶条件的例子象集和sublevel set关于函数凸性的扩展(Jesen Inequality)保持函数凸性的操作非负加权和 & 仿射函数的…...

香港维尔利健康科技集团重金投资,内地多地体验中心同步启动

香港维尔利健康科技集团近期宣布,将投资数亿港元在内地多个城市建立全新的健康科技体验中心。这一战略举措旨在进一步拓展集团在内地市场的布局,推动创新医疗技术的普及和应用。 多地布局,覆盖主要城市 据悉,维尔利健康科技集团将…...

2025春晚临时直播源接口

临时接口 https://lualist.kooldns.cn/d/%E6%96%87%E4%BB%B6/%E4%B8%B4%E6%97%B6.txt?signCuMCVC5Q0Sb4wA8OQVdNep55oKtaiSxT1du4-DgWeOo:0 备用接口 https://vip.123pan.cn/1833444709/q/%E4%B8%B4%E6%97%B6.txt...

二叉树的层序遍历||力扣--107

目录 题目 思路 代码 题目 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 输入:root [3,9,20,null,null,15,7] 输出…...

DeepSeek LLM解读

背景: 量化巨头幻方探索AGI(通用人工智能)新组织“深度求索”在成立半年后,发布的第一代大模型DeepSeek试用地址:DeepSeek ,免费商用,完全开源。作为一家隐形的AI巨头,幻方拥有1万枚…...

如何写美赛(MCM/ICM)论文中的Summary部分

美赛(MCM/ICM)作为一个数学建模竞赛,要求参赛者在有限的时间内解决一个复杂的实际问题,并通过数学建模、数据分析和计算机模拟等手段给出有效的解决方案。在美赛的论文中,Summary部分(通常也称为摘要)是非常关键的,它是整个论文的缩影,能让评审快速了解你解决问题的思…...

C++ 拷贝构造

拷贝构造函数会在以下几种场景中被调用: 1. 用一个对象显式初始化另一个对象。 2. 对象按值传递给函数。 3. 函数按值返回对象。 4. 将对象插入到容器中。 5. 明确调用拷贝构造函数。 1. 当用一个对象显式初始化另一个对象时 MyClass obj1("Hello"); MyClass obj2…...

kotlin内联函数——runCatching

1.runCatching作用 代替try{}catch{}异常处理,用于捕获异常。 2.runCatching函数介绍 参数:上下文引用对象为参数返回值:lamda表达式结果 调用runCatching函数,如果调用成功则返回其封装的结果,并可回调onSuccess函…...

代码随想录算法训练营第三十八天-动态规划-完全背包-322. 零钱兑换

太难了 但听了前面再听这道题感觉递推公式也不是不难理解 动规五部曲 dp[j]代表装满容量为j(也就是目标值)的背包最少物品数量递推公式:dp[j] std::min(dp[j], dp[j - coins[i]] 1)当使用coins[i]这张纸币时,要向前找到容量为…...

跨域问题及解决方案

跨域问题不仅影响开发效率,还可能导致项目进度延误。因此,理解和掌握跨域问题的原理及其解决方案对于前端开发者和后端开发者来说都至关重要。本文将详细介绍什么是跨域、跨域产生的原因,以及常见的后端跨域解决方案。 文章目录 一、什么是跨…...