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

数据中台建设之数据汇聚与数据交换

目录

一、数据汇聚

1.1 概述

1.2 汇聚数据类型

1.2.1 结构化数据

1.2.2 半结构化数据

1.2.3 非结构化数据

1.3 汇聚数据模式

1.3.1 概述

1.3.2 离线

1.3.3 实时

1.4 汇聚数据方法

1.4.1 概述

1.4.2 ETL

1.4.3 ELT

1.5 汇聚数据工具

1.5.1 概述

1.5.2 Flink CDC

1.5.3 Canal

1.5.4 Sqoop

1.5.5 DataX

1.6 数据汇聚产品

1.6.2 产品建设内容分析

1.6.2.1 数据源

1.6.2.2 抽取与加载程序

1.6.2.3 同步模式

1.6.2.4 同步范围

1.6.2.5 其他产品特性

1.6.2.5.1 前置稽核

1.6.2.5.2 数据转换

1.6.2.5.3 传输加密

1.6.2.5.4 流量控制

1.6.3 总结

二、数据交换


一、数据汇聚

1.1 概述

数据汇聚不同于数据采集,数据采集有一定的数据生产的性质,其能力是将终端的对象业务过程信息用特定的方法记录后,通过中间系统的流转写入目标存储系统中。而数据汇聚则是通过一定的手段将已存在的数据从一个数据源搬运到另一个数据源的数据同步过程,也常被称为“数据集成”。企业可以根据汇聚数据类型、汇聚数据模式等维度筛选适合自身的数据汇聚工具。

1.2 汇聚数据类型

1.2.1 结构化数据

规则、完整、能够通过二维逻辑表现的数据,严格遵循数据格式与长度规范,常见的有数据库表、Excel工作表等二维表。

1.2.2 半结构化数据

数据规则、完整,同样严格遵循数据格式与长度规范,但无法通过二维逻辑来表现,常见的有用JSON、XML等形式表达的复杂结构。

1.2.3 非结构化数据

数据结构不规则或不完整,不方便用二维逻辑来表现,需要经过复杂的逻辑处理才能提取其中的信息内容,如办公文档、图片、图像和音视频等。

1.3 汇聚数据模式

1.3.1 概述

应用哪种模式进行数据汇聚,主要依据业务应用的需要。汇聚数据模式主要分为以下两种。

1.3.2 离线

主要用于大批量数据的周期性迁移。这种模式对时效性的要求不高,一般采用分布式批量数据同步的方式通过连接读取数据。读取数据有全量、增量两种方式,将数据经过统一处理后写入目标存储系统。

1.3.3 实时

主要面向低时延的数据应用场景,一般通过增量日志或通知消息的方式实现,如通过读取数据库的操作日志(redo log、binlog)来实现相应的实时数据处理。业界常见的Flink CDC、Canal、MaxWell、StreamSets、NiFi等框架和组件都有较多的实际应用。

1.4 汇聚数据方法

1.4.1 概述

基于不同数据汇聚需求、硬件成本及网络带宽要求,可以选择不同的汇聚数据方法。这里的汇集方法主要有ETL、ELT两种。

1.4.2 ETL

Extract-Transform-Load的缩写,指抽取—转换—存储这一过程,即在数据抽取过程中进行数据的加工转换,然后加载至存储系统中。ETL模式在清洗过程中只抽取有价值的信息进行存储,而是否有价值是基于当前对数据的认知来判断的。由于数据价值会随着我们对数据的认知以及数据智能相关技术的发展而不断被挖掘,因此ETL模式很容易出现一些有价值的数据被清洗掉,导致当某一天需要用这些数据时又需要重新处理,甚至数据丢失无法找回。相比存储的成本,重新处理数据或者数据丢失的代价可能会更大。

1.4.3 ELT

与ETL的缩写内容一致,只是顺序变为抽取—存储—转换。这种方法更适合大规模数据场景,它将数据抽取后直接加载到存储系统中,再通过大数据和人工智能相关技术对数据进行清洗与处理。在数据存储成本越来越低廉、数据量越来越庞大的今天,ELT是更好的选择。

1.5 汇聚数据工具

1.5.1 概述

在数据能力建设过程中,很多企业结合自身的场景和最佳实践开源了一些优秀的汇聚工具,如Flink CDC、Canal、Sqoop、DataX等,这些工具的适用场景不同,也各有优缺点。

1.5.2 Flink CDC

Flink CDC于2020年发布,使用CDC(变化数据捕捉)技术,通过源数据库日志更新的订阅及消费捕获源数据库数据的变化,并将数据同步到目的数据库,而且在同步过程中可以对数据进行一定的处理。

受惠于丰富的生态以及良好的场景兼容性,Flink CDC已经成为主流数据同步工具。由于对有界数据流和无界数据流都有完善的兼容性,因此它可以同时应用在离线、实时以及混合的数据同步场景中,令从业人员的学习成本、部署维护成本大幅降低。

Flink CDC的机制决定了它无法支持非结构化数据的同步,因此使用数据湖技术的企业还需选择非结构化数据同步工具。

1.5.3 Canal

Canal Server模拟MySQL Slave的交互协议,将自己伪装为MySQLSlave向Master发送dump协议,Master收到请求后开始推送binlog,Canal解析字节流产出解析后的增量数据。

Canal的主要优点是流程架构非常清晰,部署和配置等相对简单,同时可以额外做一些配置管理、开发改造的工作。它的主要缺点是Server中的Instance和Client之间是一对一消费的,不太适用于多消费和数据分发的场景。

1.5.4 Sqoop

Sqoop是目前市面上相对通用的一种解决方案,是在结构化数据和HDFS之间进行批量数据迁移的工具。其整体框架以Hadoop为核心,底层使用MapReduce程序实现,MapReduce天生的特性保证了并行化和高容错率,任务运行在Hadoop集群上,减少了服务器资源的使用情况。

其主要优势是,在特定场景下,数据交换过程会有很大的性能提升。主要缺点是,处理过程定制程度较高,目前主要通过在命令行中配置参数来调整数据同步操作行为,在用户的一些自定义逻辑和数据同步链路监控方面比较薄弱。除此之外,任务运行完全依赖于MapReduce,功能扩展性方面受到比较明显的约束和限制。

1.5.5 DataX

DataX是阿里巴巴开源的一套插件式离线数据同步工具,以实现各种异构数据源之间的高效数据同步为目标而设计,提供数据同步作业全链路的流量监控,将作业本身的状态、数据流量、数据速度、执行进度等信息进行展示,提供脏数据探测功能,支持在传输过程中对传输报错(如类型转换错误)进行策略化处理。由于它是基于进程内读写直连的方式,因此在高并发数据同步场景下它对机器内存要求比较高。

与Flink CDC相同,DataX也不支持非结构化数据本身的同步,但它目前支持非结构化数据源。使用非结构化数据源时,在同步路径中需要存储一张逻辑意义上的二维表(如CSV格式的文本信息)供DataX读取,其本质还是将表格内的结构化数据同步到目的端。

1.6 数据汇聚产品

1.6.1 背景

从上文的介绍中可以了解到,各式各样的工具都无法独立满足企业复杂的数据汇聚场景。从数据类型来看,有结构化数据和非结构化数据;从作业实效性来看,有离线数据同步和实时数据同步。另外,数据汇聚是后续数据处理、加工作业的起点,因此,相应的同步、汇聚任务调度及状态要能够有效地与上下游形成依赖,借助统一调度的能力构建数据作业流。

数据汇聚产品首先要考虑的是屏蔽底层工具的复杂性,以可视化配置的方式提供给企业用户;其次需要考虑,为了解决数据孤岛问题,应满足异构存储、异构数据类型的同步需求;最后,还要考虑不同时效要求下的数据互通。因此,数据汇聚产品需要屏蔽系统底层协议、传输安全、特性组件等信息,让开发人员在数据接入过程中无须关注数据格式转换、数据路由、数据丢失等,而只需要关注与业务本身相关的数据同步、汇聚部分。

在构建数据同步、汇聚链路的实践过程中,基于异构数据源、异构厂商集群、数据应用时效性和相关技术栈等因素考虑,需要采取不同的同步策略:离线数据同步和实时数据同步。但是在产品形态上,两种同步服务可以采用相同的可视化同步配置策略,以降低用户操作成本。

1.6.2 产品建设内容分析

1.6.2.1 数据源

数据汇聚是将数据从一个存储点搬运到另一个存储点的动作,在搬运之前,需要让系统知晓数据原来在哪,搬运目的地在哪,以及如何连接,这样才能顺利进行数据同步与汇聚。这就需要对数据库连接方式进行配置、记录,即数据源管理。

数据源可以是已有系统存储业务数据的地方,作为数据中台的数据来源,也可以是数据应用场景,为应用场景提供结果数据存储的地方。

根据业务系统及数据应用场景的不同,数据源也有不同的选择。例如,广告场景对时效性要求很高,相应地,对数据源读性能的要求就会很高,有些场景对于大批量数据的多维分析有需求,因此数据源需要具备对大批量数据进行多维分析的能力。针对这些场景,涉及的数据源会有很多种,大致可以分成以下几类。

  • ❑关系型数据库:如Oracle、MySQL、SQL Server、PostgreSQL、DB2、King-Base、达梦、ClickHouse、TiDB等。
  • ❑NoSQL:如Redis、MongoDB、Elasticsearch、OTS、Neo4J等。
  • ❑MPP型数据库:如Greenplum、AnalyticDB for PostgreSQL、GaussDB、GBase等。
  • ❑网络及MQ:如Kafka、Pulsar等。
  • ❑文件系统:如HDFS、FTP、OSS等。
  • ❑大数据相关:如Hive、Impala、Presto、Kudu、MaxCompute、LibrA、ELK等。
1.6.2.2 抽取与加载程序

数据汇聚、同步需要从源头数据源读取数据,并写入目标数据源。在实现上,抽象为从源头数据源读取数据的读取插件,以及向目标端写入数据的写入插件,理论上可以支持任意类型数据源的数据同步工作。

结构化数据和非结构化数据都可以通过扩展插件的方式进行同步。对于结构化数据,主要场景是将原始数据库中的数据复制到目标表,在源头数据端通常采用数据查询或者捕捉日志变化的方式获取数据,根据不同的需求设计开发适配插件。

非结构化数据则有更多汇聚同步方法,常规的场景主要是以文件或数据块的方式进行同步,因此只需要适配源或目标存储系统的相应插件及数据处理的机制。例如文件传输,将数据块保存为特定格式的文件,即可满足相应的需求。一些非结构化数据由于规模比较大,并且全部搬运的意义不大(比如某个区域的监控录像),那么通常在传输过程中直接对视频流内容进行识别,并提取关键信息,最后写入目标端结构化存储系统中以降低存储成本。这类场景对读取和写入插件的适配要求没有变化,但在同步过程中增加了计算环节,需要数据处理模块发挥作用。主要有一下数据处理模块:

  • ❑读取插件:数据采集模块,负责采集数据源的数据,将数据发送给数据同步核心模块。
  • ❑写入插件:数据写入模块,不断从数据同步核心模块取数据,并将数据写入目标端。
  • ❑数据同步核心模块:用于连接读取插件和写入插件,作为两者的数据传输通道,并处理缓冲、流控、并发、数据转换等核心技术问题。
1.6.2.3 同步模式

离线数据同步与实时数据同步是数据汇聚、同步的两种同步模式。

针对数据时效要求低、吞吐量大的场景,主要采用离线模式。在过去网络带宽紧张、业务数据库性能瓶颈很低时,主要使用该模式。当时,大部分企业将数据同步任务放在夜间执行,以降低对业务的影响,并在完成同步后处理数据、加工业务指标、生成报表,以供业务人员次日查阅。这种方式需要在任务执行前进行开发、测试、验证和发布,并由系统代理在次日启动程序进行同步。

而对于时效要求高、需要频繁实时获取最新数据的业务场景,就需要采用实时模式。实时同步支持将关系型数据库、消息队列中间件等多种数据源作为数据源端,通过读取数据库日志或者订阅消费的方式持续读取数据,将新增数据或者变更数据写入目标存储系统。实时同步可以在任务发布后立即开始同步,并且能够在网络抖动等造成同步中断后断点续传。

随着硬件性能的提升以及软件方案的成熟,流(实时)与批(离线)的界限越来越模糊,流批逐渐一体化。在过去,相同的数据同步内容需要单独开发任务,流批一体化后只需要开发一次同步任务,在执行时再根据资源、业务需求、数据存储要求自动或手动切换同步模式就能响应业务要求,从而大幅降低研发和维护成本。

1.6.2.4 同步范围

数据是具备生命周期属性的要素,大部分数据的价值会伴随时间的推移而减弱,但不会完全消失。企业在数据汇聚时,要充分考虑目标数据对当下业务的重要程度、存储与计算成本、过去业务变化的价值影响等因素,选择汇聚全部数据(全量同步)还是只汇聚最近产生的数据(增量同步)。

  • ❑全量同步:全量数据同步分为表全量同步和库全量同步(整库同步)两种方式。表全量同步每次读取表中全量数据并写入;库全量同步是把库中所有表进行数据同步,要求源端和目标端的表名称、结构相同,允许目标表不存在,不存在时自动创建目标表。
  • ❑增量同步:增量同步分为新增、覆盖和更新三种策略。新增策略主要通过在目标端创建新分区或者直接追加写数据实现。覆盖和更新策略在同步配置时选择唯一键,根据唯一键对比同步中的数据和目标端数据,结合增量策略来判断数据是应覆盖还是更新。

数据汇聚产品中,既可以单独进行全量数据同步和增量数据同步,也可以将二者结合使用,先进行全量同步,然后自动进行增量同步,从而大幅降低技术人员的操作成本,无须重复设置。

1.6.2.5 其他产品特性

数据汇聚与同步除了对数据传输有要求,对传输数据内容的规范性和安全性及传输过程的稳定性都有一定要求。

1.6.2.5.1 前置稽核

在开始源端数据同步前,可以进行数据质量规则校验,根据配置规则的阻塞、告警等策略控制数据同步是否运行。

1.6.2.5.2 数据转换

数据转换是指将各类非标准数据转换成标准数据格式,并且将转换后的数据推送到大数据平台指定的位置或库表。在数据同步、传输过程中,存在用户对于数据传输进行定制化的场景,包括字段截取、替换、编码转换等操作,可以借助ETL的T(Transform,转换)过程实现。在配置数据同步作业的字段映射关系时,可以对每个字段定义转换函数,例如字符串截取函数dx_substr、字符串替换函数dx_replace、字符串过滤函数dx_filter,还支持用户用Groovy自定义转换逻辑。

1.6.2.5.3 传输加密

数据中台通常建设在本地环境,与外网隔离,在数据传输过程中相对安全,不容易发生数据泄露,但也存在混合云、公有云部署的模式,为了防止数据泄露,在传输过程中会采取SASL认证等机制保证数据安全。也可以采用先在源端加密再传输到目标端的方式进行解密,但对计算资源的开销较高,除非是涉密数据、隐私数据,其他类型数据使用这种方式传输的性价比并不高。

1.6.2.5.4 流量控制

数据存储、数据计算、网络资源都影响着数据传输的快慢,数据汇聚、同步任务也因业务的优先级、源系统的并发限制等需要调整资源占用比例。在产品中,可以调整内存的分配、运行的优先级别、传输速率等多项指标,以满足不同场景下的数据汇聚需求,同时充分利用硬件资源。

1.6.3 总结

数据与数据之间天然存在着显性的和隐性的关系,大数据的极致魅力就在于通过对这些关系的识别和挖掘,创造前所未有的应用场景,带来意想不到的巨大价值。而要实现这一切,首先需要将数据进行物理层面的汇聚,让有价值的数据自动、快速地整合到统一的存储空间,为后面的数据开发、机器学习、数据分析打好坚实的基础。

数据汇聚是数据中台建设的第一个环节,其主要目的是打破企业数据的物理孤岛,形成统一的数据中心,为后续数据资产的价值挖掘提供原始材料。企业的每一个业务端都是一个数据触点,会产生大量的数据,这些数据的生产和采集过程需要符合数据安全、隐私保护的相关要求。同时,异构的数据源所采用的汇聚方法也有一定的差异,这里介绍了常见的数据汇聚的方法和工具,以及企业在使用这些方法和工具的过程中,如何将它们包装成一个简单易用的工具,以便于快速满足数据汇聚的需求。

二、数据交换

在数字化转型过程中,企业会因为自身数据不足无法快速开展业务,而希望从企业外部获取数据或数据能力以增强企业数据的完整性和丰富度,此时就出现了数据在组织之间的供需关系。通常使用数据交换来满足数据供需两端的各类场景诉求。

对于数据需求方,数据交换可以算作一种数据共享与获取的方法,需求方只需要与供给方约定好数据格式、传输协议、计算方式、结算逻辑、交换时间等就可以获取到数据,对于数据源存储的位置、形态、结构都不需要关注,这也是它在数据传输时与数据汇聚最大的区别。

根据业务需求与数据安全要求的不同,数据交换的场景五花八门。例如集团与子公司之间数据的定时报送,通常采用未加密数据的交换传输,更多在传输协议层面进行加密,因为在内网环境交换,数据泄露风险较低;再如企业的业务需求是让预测模型更准确,那么不需要直接获取真实数据,只要通过联邦学习的方式与数据供应方联合计算获取模型即可,虽然没有获取数据,但达到了获取数据的目的。

数据交换是数据中台的能力补充,通过数据交换,数据中台的数据以及数据能力能够逐步提升,也能够基于数据交换构建新的业态(数据交易)。当企业与企业之间的数据中台通过数据交换连接时,就实现了更广泛意义上的数据中台。

好了,本次内容就分享到这,欢迎大家关注《数据中台》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

相关文章:

数据中台建设之数据汇聚与数据交换

目录 一、数据汇聚 1.1 概述 1.2 汇聚数据类型 1.2.1 结构化数据 1.2.2 半结构化数据 1.2.3 非结构化数据 1.3 汇聚数据模式 1.3.1 概述 1.3.2 离线 1.3.3 实时 1.4 汇聚数据方法 1.4.1 概述 1.4.2 ETL 1.4.3 ELT 1.5 汇聚数据工具 1.5.1 概述 1.5.2 Flink CDC…...

树莓派5进行YOLOv8部署的4种不同部署方式检测速度对比:pytorch、onnx、ncnn、tflite

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

深入理解Java集合框架

目录 数组与集合 集合框架结构 泛型在集合中的应用 常用数据结构 二叉树 二叉树的特点 二叉查找树 (Binary Search Tree) 二叉查找树的特点 深入理解Java集合框架 Java集合框架提供了一套用于存储和操作数据的接口和类。这些集合类提供了一种更为灵活和高效的数据管理方…...

鸿蒙应用开发 DevEcoStudio 汉化

步骤 DevEcoStudio 是默认支持中文的,只是默认是关闭的,需要在已安装的插件中搜索 Chinese 关键字,然后启用并重启即可(注意:是在已安装的插件中搜索)。 1. 2. 3. 重启就行...

SpringSecurity入门

SpringSecurity 1、简介 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&…...

DFS之迭代加深+双向DFS+IDA*

迭代加深: 搜索范围一层一层扩大,可以快速某些分支比较深,但是答案比较浅的问题。 https://www.acwing.com/problem/content/172/ 通过观察可以发现: 1.搜索时最坏情况可能搜到100层,比较深,但是答案应…...

[CR]厚云填补_SEGDNet

Structure-transferring edge-enhanced grid dehazing network Abstract 在过去的二十年里,图像去雾问题在计算机视觉界受到了极大的关注。在雾霾条件下,由于空气中水汽和粉尘颗粒的散射,图像的清晰度严重降低,使得许多计算机视觉…...

siRNA药物药效预测(二)(Datawhale AI 夏令营)

一、task2解析 # 读取文件 df_original pd.read_csv("data/train_data.csv") # print(df_original) # 获取原始训练数据的行数 n_original df_original.shape[0] # 读取数据 df_submit pd.read_csv("data/sample_submission.csv")# 合并两个数据集 # a…...

electron-updater实现electron全量更新和增量更新——主进程部分

同学们可以私信我加入学习群! 正文开始 前言更新功能所有文章汇总一、更新插件选择二、在main.js中引入我们的更新模块三、更新模块UpdateController.js暴露的方法checkUpdate四、更新模块UpdateController.js中的监听4.1监听是否有新版本需要更新?4.2 监…...

【WRF安装第四期(Ubuntu)】搭建WRF编译所需系统-WRF和WPS模型的安装

WRF安装第四期:搭建WRF编译所需系统-WRF和WPS模型的安装 1 WRF的编译安装(Building WRF)1.1 进入Build_WRF文件夹1.2 下载WRFV4.01.3 解压WRF安装包1.4 安装WRF选择#1:32选择#2:33选择#3:34 1.5 检查WRF是否…...

Golang | Leetcode Golang题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; func removeDuplicateLetters(s string) string {left : [26]int{}for _, ch : range s {left[ch-a]}stack : []byte{}inStack : [26]bool{}for i : range s {ch : s[i]if !inStack[ch-a] {for len(stack) > 0 && ch < stack…...

猫头虎分享:从零开始掌握ChatGPT的实用技巧与多样应用

猫头虎分享&#xff1a;从零开始掌握ChatGPT的实用技巧与多样应用 ChatGPT使用方法与应用场景分享 大家好&#xff0c;我是猫头虎 &#x1f42f;&#xff0c;欢迎大家来到这次的分享课程。在这里&#xff0c;我们将深入了解ChatGPT的使用方法和应用场景。本文旨在帮助大家从零…...

使用 systemd 服务运行go程序(适用于 Linux 系统)

使用 systemd 服务运行go程序&#xff08;适用于 Linux 系统&#xff09; 1. 编写 Go 程序2.创建 systemd 服务单元文件3.重新加载 systemd 配置4.启动并启用服务5.查看服务状态6.管理服务6.查看日志 1. 编写 Go 程序 假设你已经有一个 Go 程序&#xff0c;比如 my_program.go…...

使用 Ansible Blocks 进行错误处理

注&#xff1a;机翻&#xff0c;未校。 How to Use Ansible Blocks Make your Playbooks more readable and maintainable using Blocks feature in Ansible. 使用 Ansible 中的块功能使 Playbook 更具可读性和可维护性。 Jul 15, 2024 — LHB Community How to Use Ansible…...

vue3 二次组件封装【透传】

vue3 二次组件封装透传 文章目录 vue3 二次组件封装透传属性及事件的透传插槽的透传ref 的透传 背景&#xff1a;工作中&#xff0c;一些 ui 库的功能对我们业务中想要的功能并不满足&#xff0c;要进行定制化二次的封装&#xff0c;但是封装的过程中我们只想要改动的定制的地方…...

专题十_哈希表

目录 题型总结 1. 两数之和 解析 题解 面试题 01.02. 判定是否互为字符重排 解析 题解 217. 存在重复元素 解析 题解 219. 存在重复元素 II 解析 题解 49. 字母异位词分组 解析 题解 题型总结 1. 两数之和 1. 两数之和 解析 题解 class Solution { public:ve…...

C++ 重要特性探究

shared_from_this 使用分析 场景 类的成员函数需要获取指向自身的shared_ptr的时候类成员函数传递shared_ptr给其他函数或者对象的时候&#xff0c;目的是为了管理对象生命周期使用方法 首先类必须继承 std::enable_shared_from_this<T>必须使用 shared_from_this 获取指…...

深度学习项目 -7-使用 Python 的手写数字识别

一、前言 该文章仅作为个人学习使用 二、正文 项目源代码&#xff1a;深度学习项目 - 使用 Python 进行手写数字识别 - DataFlair (data-flair.training) 数据集&#xff1a;​​​​​​​https://drive.google.com/open?id1hJiOlxctFH3uL2yTqXU_1f6c0zLr8V_K Python 深…...

【ROS学习】ROS中 use_sim_time 参数的含义与作用

文章目录 写在前面一、背景描述二、 use_sim_time 参数的含义与作用三、举例说明1. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **.bag 2. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **…...

【LeetCode】45.跳跃游戏II

1. 题目 2. 分析 很久没有写贪心的题了&#xff0c;在这题上卡了很久时间&#xff0c;我这个还是不会贪心。 核心思想就一句话&#xff1a;维护在到达本次最远位置之前能达到的最远位置。每到边界时就更新步数&#xff0c;便得到正确答案。 3. 代码 class Solution:def jum…...

【单片机毕业设计选题24098】-校园智能绿植浇灌系统

系统功能: 1. 手机通过蓝牙模块显示系统信息 2. OLED模块显示系统信息 3. DHT11采集温湿度 4. 继电器模块控制水泵 5. 按键调节湿度设定阈值 6. 土壤湿度传感器模块采集土壤湿度 7. 光照传感器采集光照值 系统分为手动和自动模式&#xff0c;上电默认为自动模式&#x…...

内网安全:多种横向移动方式

1.MMC20.Application远程执行命令 2.ShellWindows远程执行命令 3.ShellBrowserWindow远程执行命令 4.WinRM远程执行命令横向移动 5.使用系统漏洞ms17010横向移动 DCOM&#xff1a; DCOM&#xff08;分布式组件对象模型&#xff09;是微软的一系列概念和程序接口。它支持不同…...

C++ 最小生成树 洛谷

介绍&#xff1a; 最小生成树是个啥&#xff1f;其实就像杨志一行人押送生辰纲。抛开最后生辰纲被抢的结局不谈&#xff0c;杨志他们需要到好几个地方&#xff0c;每个地方都需要花点过路费给梁山好汉们打点。比如下面就是一张城市地图&#xff1a; 其中每两个图之间的路径长就…...

Jenkins未授权访问漏洞

Jenkins未授权访问漏洞 默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令&#xff0c;攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务&#xff0c;通过脚本执行界面从而获取服务器权限。 漏洞复现 步骤一:使用以下fofa语法进行产品…...

C#和S7-1200PLC S7.NET通信

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…...

世媒讯带您了解什么是媒体邀约

什么是媒体邀约&#xff1f;其实媒体邀约是一种公关策略&#xff0c;旨在通过邀请媒体记者和编辑参加特定的活动、发布会或其他重要事件&#xff0c;以确保这些活动能够得到广泛的报道和关注。通过这种方式&#xff0c;企业和组织希望能够传达重要信息&#xff0c;提高品牌知名…...

《python语言程序设计》2018第6章第29题 财务应用程序:信用卡号的合法性 16位可以识别,不识别15位

1111 我没有按这个题里所要求的顺序和名称&#xff0c; 不是说题里写的不对&#xff0c;我觉得应该是按自己的想法来进行 题里说的是每个奇数进行相互乘然后结果相加便成了37 然后所有的偶数直接相加38 可是《python语言程序设计》在第7章和第8章以后才开始涉及到我们的列…...

MySQL 执行计划详解

文章目录 一. 概念二. 语法三. 详解各字段1. id2. select_type3. table4. partitions5. type6. possible_keys与key7. key_len8. ref9. rows10. filtered11. Extra 一. 概念 有了慢查询后&#xff0c;需要对慢查询语句进行分析。一条查询语句经过MySQL查询优化器后&#xff0c…...

机器人主板维修|ABB机械手主板元器件故障

【ABB机器人电路板故障原因诊断】 针对上述故障现象&#xff0c;我们需要对ABB机器人IO板进行详细的故障诊断。以下是一些可能的故障原因&#xff1a; 1. 元器件老化或损坏&#xff1a;ABB机械手安全面板上的元器件在长期使用过程中可能出现老化、损坏或接触不良等问题&#xf…...

Genie:开创性的生成型交互环境

人工智能咨询培训老师叶梓 转载标明出处 在生成式人工智能&#xff08;Generative AI&#xff09;的浪潮中&#xff0c;一种全新的模型——Genie&#xff0c;由Google DeepMind的研究团队提出。Genie是一个从无标签的互联网视频数据中以无监督方式训练出来的生成型交互环境模型…...

Postman 接口测试工具简易使用指南

一、Postman是什么? 我通过kimi问了这样一个问题&#xff0c;它给我的回答是这样的: 它的回答也算比较中规中矩&#xff0c;简单的说postman实际上就是一款接口测试工具&#xff0c;同时它还可以编写对应的测试脚本以及自动生成对应的API文档&#xff0c;结合我的习惯来说&am…...

DevOps 相关知识点总结

1. 请简要解释 DevOps 的概念和核心原则。 - DevOps 是一种将软件开发&#xff08;Dev&#xff09;和 IT 运维&#xff08;Ops&#xff09;相结合的理念和方法&#xff0c;旨在缩短开发周期、提高软件交付质量和效率&#xff0c;促进开发、运维和其他相关部门之间的沟通、协作…...

Java过滤HTML标签,即提取HTML中的纯文本,不使用正则表达式【jsoup方式,超级简单】,附富文本方式

服务器端提取方案&#xff08;Jsoup方式&#xff09; 如果你想从带HTML标签的字符串中提取纯文本的话&#xff0c;可以使用jsoup工具包&#xff0c;非常简单 应用场景&#xff0c;比如你的网站有个富文本编辑器&#xff0c;富文本编辑器中带有很多html标签&#xff0c;比如p标…...

.NET周刊【7月第4期 2024-07-28】

国内文章 .NET 高性能缓冲队列实现 BufferQueue https://mp.weixin.qq.com/s/fUhJpyPqwcmb3whuV3CDyg BufferQueue 是一个用 .NET 编写的高性能的缓冲队列实现&#xff0c;支持多线程并发操作。 项目地址&#xff1a;https://github.com/eventhorizon-cli/BufferQueue 项目…...

可视化目标检测算法推理部署(一)Gradio的UI设计

引言 在先前RT-DETR模型的学习过程中&#xff0c;博主自己使用Flask框架搭建了一个用于模型推理的小案例&#xff1a; FlaskRT-DETR模型推理 在这个过程中&#xff0c;博主需要学习Flask、HTML等相关内容&#xff0c;并且博主做出的页面还很丑&#xff0c;那么&#xff0c;是…...

计算机毕业设计选题推荐-校园服务系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

ElementUl

1. Node.js是什么 1.1 Node.js是一个基于Chrome V8引擎的[JavaScript运行环境]。 Node.js使用了一个事件驱动、非阻塞式I/O 的模型。 1.2 Node.js是一个让JavaScript运行在服务端的开发平台&#xff0c;它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的…...

MySQL·事务

目录 事务是用来做什么的&#xff1f; 什么是事务&#xff1f; 为什么会出现事务 事务提交方式 事务操作前提了解 事务常见操作方式 读未提交(RU) 读提交(RC) 可重复读(RR) 串行化 一致性(Consistency) 事务是用来做什么的&#xff1f; CURD不加控制&#xff0c;会…...

Springcloud物流配送后台-计算机毕业设计源码69809

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 物流配送后台系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2 数据修改流程 2.2.3 数据…...

JavaEE 第2节 线程安全知识铺垫1

目录 一、通过jconsole.exe查看线程状态的方法 二、Thread类的几种常见属性 三、线程状态 一、通过jconsole.exe查看线程状态的方法 通过jconsole查看线程状态非常实用的方式 只要你安装了jdk&#xff0c;大致按照这个目录就可以找到这个可执行程序&#xff1a; 然后双击这…...

【Linux详解】基础IO:软硬连接 | 动静态库管理

目录 软硬链接 1. 介绍 2.理解 2.1 如何理解硬链接&#xff1f; 2.2 如何理解软连接&#xff1f; 动静态库 1.介绍 1.1 使用 1.2 什么是库&#xff1f; 2.生成 2.1 静态库 2.2 动态库&#xff1a; 软硬链接 1. 介绍 1.1 软连接 是一个独立文件&#xff0c;具有独…...

PTA题目|求逆序的三位数(回文数)

题目要求 程序每次读入一个正3位数&#xff0c;然后输出按位逆序的数字。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如输入700&#xff0c;输出应该是7。 输入格式&#xff1a; 每个测试是一个3位的正整数。 输出格式&#xff1a; 输…...

Leetcode 3143. 正方形中的最多点数(二分、数组字符串、位运算集合)

方法一&#xff1a;二分答案&#xff08; 位运算集合&#xff09; class Solution { public:// 二分答案 顶多O(NlogN),logn去找最后的答案, n用来确定本次找的答案是否正确int maxPointsInsideSquare(vector<vector<int>>& points, string s) {int res 0;au…...

Golang面试-开放型问题

1. 用golang写一个线程安全的单例(Singleton)类 package main import ("fmt""sync" )type Singleton struct {data string }var instance *Singleton var one sync.Once// 返回单例实例 func GetInstance() *Singleton {one.Do(func() {instance &Si…...

基于YOLOv8的垃圾检测系统

基于YOLOv8的垃圾检测系统 (价格85) 包含 [硬纸板&#xff0c;玻璃&#xff0c;金属&#xff0c;有机废物&#xff0c;纸&#xff0c;塑料] 6个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以…...

探索哈希表:C++中的实现与操作详解【Map、Set、数据结构】

探索哈希表&#xff1a;C中的实现与操作详解 介绍 哈希表&#xff08;Hash Table&#xff09;是一种常见的数据结构&#xff0c;它提供了一种高效的键值对存储方式&#xff0c;能够快速进行插入、删除和查找操作。在这篇博客中&#xff0c;我们将详细介绍哈希表的概念、在C中的…...

【C语言】分支与循环(分支篇)

前言 C语言是一种结构化的计算机语言&#xff0c;这里指的通常是顺序结构、选择结构、循环结构&#xff0c;掌握这三种结构之后我们就可以解决大多数问题。 分支结构可以使用if、switch来实现&#xff0c;而循环可以使用for、while、do while来实现。 1. if语句 1.1 if if…...

AIGC重塑设施农业:让农事操作更智能,生产效率更高

设施农业是现代农业的重要组成部分,随着人工智能等前沿技术的快速发展,这个领域迎来了新的变革机遇。尤其是大语言模型(Large Language Model,LLM)技术的崛起,其强大的语言理解和知识汇聚能力,为设施农业智能化发展带来了新的想象空间。本文将深入探讨大模型技术在设施农业生产…...

【uniapp离线打包】(基于Android studio)

文章目录 uniapp打包官方教程入口一、准备工作(工具三大件)Android Studio版本推荐 二、准备工作&#xff08;Android壳和uniapp包&#xff09;导入Android壳生成uniapp包将uniapp包导入android壳降低jdk版本 三、准备工作&#xff08;证书&#xff09;准备Android平台离线签名…...

CPU与Load

1、CPU和LOAD分别是什么load就是负载吗&#xff0c;跟CPU啥关系&#xff0c;啥区别 CPU和Load&#xff08;负载&#xff09;是衡量计算机系统性能的两个重要指标&#xff0c;但它们关注的侧重点和意义不同。理解这两个指标及它们之间的关系对于系统优化和性能监控非常重要。 CP…...