常见数据同步工具之实时同步

news2024/11/27 0:18:40

        实时数据同步是现代数据处理中非常重要的一环。在常见的数据同步工具中,Flume、Flink CDC和DataX都是非常受欢迎的选择。它们各自有自己的工作原理、优势和劣势。

        Flume主要用于日志传输,简单易用但对特定数据源可能有限;Flink CDC基于CDC技术实现了实时的数据同步,性能高但在复杂场景下可能需要额外的工作;DataX CDC则是基于CDC技术的实时数据同步工具,具备实时同步、高性能和精确同步的优势,但需要对不同的数据源进行适配,并对数据库性能产生一定影响。选择适合自己场景的工具,能够更好地满足数据同步的需求。

Flume

一、Flume的工作原理和优势

Flume的原理是将数据从源头(source)采集,经过一个或多个中间节点(channel)进行传输,最终发送到目的地(sink)。下面是Flume的工作原理的详细解释:

1、Source(数据源):Source负责从数据源(如日志文件、网络流、消息队列等)采集数据,并将数据发送到Channel。

2、Channel(通道):Channel是数据传输的中间节点,它负责暂存Source采集到的数据。Channel可以是内存、磁盘或者其他存储介质,可以按照事务或批量的方式传输数据。

3、Sink(数据目的地):Sink从Channel中获取数据,并将数据发送到指定的目的地(如HDFS、关系型数据库、消息队列等)进行存储和分析。

4、Agent(代理):Agent是Flume的一个独立运行实例,它由Source、Channel和Sink组成,负责管理整个数据流的采集、传输和存储。

Flume的工作流程如下:

1、Source采集数据,将数据发送到Channel。

2、Channel将数据暂存,并等待Sink的消费。

3、Sink从Channel中获取数据,发送到目的地进行存储和分析。

图片

Flume的可靠性和容错性体现在以下几个方面:

1、消息确认:Channel会对消息进行确认,确保数据在传输过程中不会丢失。

2、事务机制:Flume使用事务机制来确保数据的可靠传输,如果发送失败,会进行回滚和重试操作。

3、失败处理:Flume提供了失败处理机制,可以配置重试策略、错误日志记录等来处理发送失败的情况。

总的来说,Flume通过源头采集数据,经过中间节点传输,最后发送到目的地实现数据的收集和传输。通过可靠的机制和丰富的配置选项,可以保证数据的安全和可靠传输。

优势:

1、可靠性高:Flume 采用了可靠性机制,包括数据重传、事件推送确认机制等,确保数据不会丢失。

2、扩展性强:Flume 可以通过添加多个代理节点实现横向扩展,使其可以处理大规模的数据流。

3、灵活性:Flume 可以根据不同的需求进行配置,支持多种收集器、聚合器和传输器,可以满足不同场景的需求。

4、实时数据传输:Flume 支持实时数据传输,可以以流式方式处理和传输数据,适用于需要实时数据处理和分析的场景。

5、分布式流处理:Flume 支持分布式架构,可以将数据流分发到多个节点上进行并行处理和传输。

劣势:

1、复杂性:Flume 的配置和部署相对复杂,需要一定的技术功底和经验。

2、依赖性:Flume 依赖于其他组件,比如 Hadoop、HBase 等,如果没有这些组件的支持,应用可能会受到限制。

3、部署和维护成本:由于 Flume 的复杂性和依赖性,部署和维护的成本可能较高。

Flume支持的实时采集数据源类型:

数据源类型说明

AvroSource

Flume中使用最多的一种数据源类型,它能够将消息数据在不同节点之间进行安全可靠地传输,可以从另一个AvroSource或AvroSink中接收消息

SpoolingDirectorySource

它会监控特定目录下的新文件,它会将这些新文件中的信息读取出来,然后将其数据转换成消息体,传输到指定的sink。

SyslogTcpSource

专门用于接收syslog方式协议的日志流量,并将其内容转换为消息体进行采集。

JMS source

专门用于接收JMS(Java Messaging Service) 方式协议的消息流量,并将其内容转换为消息体进行采集,用于数据中心之间的数据传输。

Kafka Source

专门用于接收Kafka 协议的消息,并将其内容转换为消息体进行采集,Kafka是一种分布式发布-订阅消息系统,它能够很好地解决大规模消息传输的需求。

Flink CDC

一、Flink CDC的工作原理和优势

Flink CDC通过与数据库进行交互,实时捕获数据库中的变更操作。它的工作原理可以分为以下几个步骤:

1. 数据库连接和监控:首先,Flink CDC需要与目标数据库建立连接,并监控数据库的变更操作。它可以通过监听数据库的事务日志或者使用数据库引擎的内部机制来实现。

2. 变更事件解析:一旦数据库发生变更操作,Flink CDC会解析这些变更事件。它会将变更事件转化为对应的数据结构,例如INSERT、UPDATE或DELETE操作。

3. 数据转换和格式化:解析后的变更事件需要经过数据转换和格式化,以便能够被Flink进行处理。Flink CDC会将变更事件转化为Flink支持的数据格式,例如JSON、Avro等。

4. 事件流生成:经过转换和格式化后,Flink CDC会将变更事件转化为数据流。这个数据流可以被Flink的流处理任务进行消费和处理。

5. 数据同步和传输:生成的数据流可以被传输到不同的目的地,例如Flink的流处理任务、消息队列或者其他外部系统。这样,我们就可以对变更事件进行实时分析和处理。

需要注意的是,Flink CDC并非直接支持所有数据库。它的可用性取决于数据库本身是否提供了事务日志的访问接口。目前,Flink CDC支持的数据库包括MySQL、PostgreSQL、Oracle等。

优势:

1. 实时性:Flink CDC能够实时捕获数据库中的变更操作,并将其转化为实时的数据流。这使得我们能够及时地对数据库中的数据变动进行响应和处理。

2. 精确性:Flink CDC通过解析数据库的事务日志或者内部机制,能够准确地捕获数据库中的变更操作。这保证了数据的准确性和一致性。

3. 可靠性:Flink CDC能够处理数据库中的变更操作,并将其转化为可靠的数据流。它具有容错机制,能够处理故障和数据丢失的情况。

4. 扩展性:Flink CDC支持水平扩展,能够处理大规模的数据变更。它可以与Flink的流处理任务无缝集成,实现高效的数据处理和分析。

劣势:

1.对于非关系型数据库(如MongoDB、HBase等)的支持相对较弱。Flink CDC主要面向关系型数据库,对于非关系型数据库的支持相对有限。

2.对于大规模数据变更的处理可能存在延迟。由于Flink CDC通过读取事务日志来捕获数据变化,如果有大量的数据变更发生,可能会造成读取和处理的延迟。

3.需要访问数据库的主从部署。为了保持数据一致性,Flink CDC需要访问数据库的主库以读取事务日志,这可能会对数据库的性能产生一定影响,尤其是在高并发的情况下。

4.需要数据库的binlog开启。Flink CDC依赖数据库的binlog来捕获数据变化,如果数据库的binlog没有开启,就无法正常使用Flink CDC。

需要注意的是,这些劣势并不是Flink CDC本身的问题,而是基于流式数据捕获的一般限制。如果你的应用场景不适合流式数据捕获,可能需要考虑其他的数据同步方案。

Flink CDC 支持的实时采集数据源类型:

数据源类型说明
MySQL CDC支持动态加表,该功能可以在无需重新读取已有表的基础上,增加需要监控的表,添加的表会自动先同步该表的全量数据再无缝切换到同步增量数据。
MongoDB CDC支持正则表达式过滤集合,该功能可以让用户在作业中指定所需监控的库名和集合名,用户可以用一个作业中监控多个数据库或多个集合。
OceanBase CEOceanBase CDC 的实现机制是全量部分通过 JDBC 读取表中的历史数据,增量部分则是通过 OceanBase 提供 LogProxy Client 获取增量变更数据。
PolarDB-XPolarDB-X 通过适配 MySQL CDC 即可快速接入 Flink CDC
SqlServer CDCSqlServer CDC 连接器支持捕获并记录 SqlServer 数据库服务器中发生的行级变更,其原理是使用 SqlServer 自身提供的 CDC 特性,SqlServer自身提供的 CDC 能力可以将数据库中指定的变更存档到指定的 change tables 中。SqlServer CDC 连接器首先通过 JDBC 读取表中的历史数据,再从 change tables 中或缺增量变更数据,从而实现全增量同步。
TiDB CDCTiDB CDC 的原理是通过直接读取其底层 TiKV 存储中的全量数据和增量数据实现数据捕获,其中全量部分是通过按 key 划分 range 读取,增量部分使用 TiDB 提供的 CDC Client 获取增量变更数据。
Oracle CDCOracle CDC通过解析Oracle数据库的Redo日志来捕获数据变更。Redo日志记录了数据库中发生的所有数据修改操作,包括插入、更新和删除操作。
PostgreSQLPostgreSQL 自身并不提供原生的 CDC 功能,但是你可以通过使用第三方工具或技术来实现 CDC。在前面的回答中,我提到了使用 Apache Flink CDC 来捕获 PostgreSQL 数据库的变更。

DataX CDC

一、DataX CDC的工作原理和优势

        DataX CDC基于DataX框架,为用户提供了一种灵活、高效的数据同步解决方案。它通过监视源数据库的事务日志或数据库增量日志来捕获源数据库中的变更操作,并将这些操作应用于目标数据库,以保持两者之间的数据同步。这种增量方式可以大大减少数据传输的时间和成本,并提供更及时的数据更新。

        DataX CDC 是基于 CDC(Change Data Capture)技术实现的数据同步工具,其工作原理如下:

1、数据源监控:DataX CDC 首先会监控数据源(如 Oracle 数据库)的事务日志。事务日志是数据库记录每个操作(如插入、更新、删除)的日志文件。

2、数据解析:一旦有新的事务日志生成,DataX CDC 会解析事务日志,提取出新增、更新和删除的数据。

3、数据同步:经过解析后,DataX CDC 将提取到的数据进行转换和转发,将其同步到目标数据源(如 HDFS、MySQL 等)。

4、数据应用:目标数据源接收到同步的数据后,可以被应用程序直接使用或者进行进一步的处理和分析。

具体举例来说,DataX CDC 监控 Oracle 事务日志的步骤如下:

1、配置数据库连接:首先,需要在 DataX CDC 中配置 Oracle 数据库的连接信息,包括数据库地址、用户名、密码等。

2、开启 CDC 日志模式:在 Oracle 数据库中,需要将数据库的日志模式设置为 CDC 日志模式。这可以通过在 Oracle 数据库中执行相应的 SQL 命令来完成,例如执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA 命令。

3、配置 Change Data Capture:在 DataX CDC 中,需要配置相应的 Change Data Capture 模块,以便能够捕获 Oracle 数据库中的变更事件。这包括指定表的 CDC 规则、列的映射关系等。

4、监控事务日志:一旦配置完成,DataX CDC 将自动监控 Oracle 数据库的事务日志,捕获其中的数据变更事件。

5、数据同步:捕获到的数据变更事件将会被传递给目标系统或者工具,以完成数据同步操作。

注意,在使用 DataX CDC 监控 Oracle 事务日志时,需要确保数据库的参数正确配置,并且有足够的权限执行相关的 SQL 命令。此外,由于监控事务日志可能会带来额外的性能开销,因此需要根据实际情况进行调整和优化。

优势:

1、实时同步:DataX CDC 可以实时监控和同步数据源的变更,能够及时将数据更新到目标数据源,提供高实时性的数据同步。

2、高性能:DataX CDC 使用 CDC 技术,只同步变更数据,避免了全量数据的传输和处理,能够提供高效的数据同步性能。

3、精确同步:DataX CDC 可以精确捕获和同步数据源的每一次变更操作,保证了数据的一致性和准确性。

4、灵活配置:DataX CDC 提供了灵活的配置选项,可以根据具体需求选择要同步的数据源、目标数据源等,并支持多种数据源类型。

劣势:

1、复杂性:DataX CDC 的配置和使用相对复杂,需要熟悉 CDC 技术和相关的配置知识。

2、依赖数据库事务日志:DataX CDC 的工作原理是基于数据库事务日志的,因此需要确保数据源开启了事务日志功能,并且保证事务日志的稳定性和完整性。

3、对数据库性能有影响:在进行实时同步的过程中,DataX CDC 需要读取和解析数据库的事务日志,可能会对源数据库的性能产生一定影响。

DataX CDC 支持的实时采集数据源类型:

数据源类型说明
Mysql它可以通过 MySQL 数据库的 binlog(二进制日志)来获取增量数据,并将其传递给 DataX 进行个性化处理和同步。
PolarDBDataX CDC 提供了 PolarDB CDC Reader 插件,可以通过监听 PolarDB 的 binlog 来实时获取数据变更信息。配置好相关参数,包括数据库的连接信息、binlog 的起始位置等。
OracleDataX CDC 提供了 Oracle CDC Reader 插件,可以通过监听 Oracle 数据库的归档日志来实时获取数据变更信息。配置好相关参数,包括数据库的连接信息、日志挖掘的起始位置等。
SQL ServerDataX CDC 会定期扫描 SQL Server 的事务日志,将变更数据同步到目标数据库。
Hbase 通过 HBase 的 API 监听 HBase 中指定表的增量数据变动。

Kettle

一、Kettle 的工作原理和优势

Kettle,也被称为Pentaho Data Integration(PDI),是一款开源的ETL工具,用于提取、转换和加载数据。它的工作原理可以简单概括为以下几个步骤:

1、设计和配置:在Kettle的图形化界面中,通过拖拽和连接各个组件,设计数据转换和加载的流程。每个组件代表不同的任务,如数据抽取、数据清洗、数据转换、数据加载等。为每个组件配置相应的参数,定义数据输入输出的连接和转换规则。

2、读取数据:Kettle支持多种数据来源,如关系型数据库、文件、Web服务等。根据配置的数据源和查询条件,Kettle会读取数据源中的数据。

3、数据转换和清洗:通过在转换和清洗组件中定义规则和函数,对读取的数据进行处理和转换。可以进行各种操作,如过滤、排序、合并、聚合、计算等,以满足数据处理的需求。

4、加载数据:将经过转换和清洗的数据加载到目标数据源中。可以是关系型数据库、文件、数据仓库等。Kettle提供了各种输出组件,用于将数据写入到目标数据源中。

5、执行和调度:完成数据处理流程的配置后,可以手动执行该流程。也可以使用Kettle内置的调度器,按照预定的时间和频率自动运行任务。

总的来说,Kettle通过可视化的方式,串联和配置多个数据处理和转换组件,实现数据的提取、转换和加载。它具有强大的扩展性和灵活性,能够满足各种数据集成和处理的需求。

优势:

1、强大的可视化设计和配置:Kettle提供了一个易于使用的图形化界面,使用户可以轻松设计和配置ETL工作流程,而无需编写复杂的代码。

2、多种数据源和目标的支持:Kettle可以与各种数据源(例如数据库、文件、Web服务等)以及数据目标(例如数据库、文件、Data Warehouse等)进行无缝集成,方便数据的抽取和加载。

3、强大的数据转换和清洗功能:Kettle提供了丰富的数据转换和清洗步骤,如字段映射、数据过滤、数据合并、数据拆分、数据排序等,可以灵活地处理和转换数据。

4、插件扩展机制:Kettle支持插件机制,用户可以通过自定义插件扩展Kettle的功能,满足特定需求。

5、支持任务调度和并行处理:Kettle可以根据需求进行任务调度和并行处理,提高ETL工作的效率和可靠性。

劣势:

1、学习曲线较陡峭:尽管Kettle提供了图形化界面,但对于没有经验的用户来说,学习和掌握Kettle的各种功能和操作仍然需要一定的时间和精力。

2、对大规模数据处理的限制:由于Kettle是基于Java开发的,对于大规模数据的处理和性能可能存在一些限制,特别是在并行处理和集群环境下。

3、对于复杂数据处理场景的限制:尽管Kettle提供了丰富的数据转换和清洗步骤,但在处理复杂数据处理场景时,可能需要编写自定义的脚本或插件来实现。

Kettle 支持的实时采集数据源类型:

数据源类型‍‍‍‍说明
消息队列(如Kafka、ActiveMQ等)Kettle可以从消息队列(如Kafka、ActiveMQ等)中实时获取数据
监控指定的文件或目录可以实时监控指定的文件或目录,当有新的数据写入时即时采集
API和Web服务Kettle可以通过调用API和Web服务来获取实时数据
日志文件

Kettle可以通过流数据输入组件来采集实时流数据(如传感器数据、网络数据等)。

关系型数据库Kettle对于关系型数据的实时同步时基于时间戳和触发器等进行数据的抽取同步。

几种常见工具的功能对比和应用场景

Flume是一种可靠、可扩展、分布式的日志收集、聚合和传输系统。它主要用于以下几个应用场景:

1、日志收集:Flume能够从多个源头(例如服务器、应用程序、设备等)收集大量的日志数据,并将其中转到集中式存储系统(如Hadoop HDFS)或消息队列系统(如Kafka)中。这种集中式收集机制可以帮助企业对日志数据进行集中管理和分析。

2、数据聚合:Flume可以将多个源头的数据聚合到一起,并将其传输到统一的目标系统。例如,在分布式计算中,可以使用Flume将不同节点上的数据聚合并传输到计算节点或结果节点。

3、流式数据传输:Flume支持实时的、可靠的数据传输,因此被广泛用于构建数据流水线,以实现流数据的实时处理和分析。

4、网络日志分析:Flume可以用于抓取并分析网络设备、服务器和应用程序产生的日志数据。通过配置适当的源和目标,Flume能够将日志数据从各个设备中收集、存储并进行分析。

DataX CDC(Change Data Capture)的主要应用场景有以下几个:

1、数据同步:将源数据库中的数据变更(增、删、改)实时同步到目标数据库,确保两个数据库中的数据保持一致。

2、数据仓库加载:将源数据库中的增量数据加载到数据仓库或数据湖中,用于数据分析、报表生成等业务需求。

3、数据备份与恢复:通过记录数据变更,实时备份源数据库中的增量数据,以防止数据库故障或数据丢失,同时可以快速恢复到指定的时间点。

4、实时数据分析:将源数据库中的增量数据实时传输给大数据平台,用于实时数据分析、实时监控等业务场景。

5、数据集成和ETL:将多个数据源中的数据变更集成到一个目标数据库中,实现数据的统一管理和分析。

需要注意的是,DataX CDC是一款开源数据同步工具,能够实现增量数据的抽取和传输,但并不负责处理数据转换和清洗的任务。

Flink CDC(Change Data Capture)的主要应用场景有以下几个:

1、实时数据分析:Flink CDC可以将源数据库中的增量数据实时传输到Flink流处理引擎中,使得实时数据分析和实时计算成为可能。通过实时处理增量数据,可以进行实时指标计算、实时报表生成、实时业务监控等。

2、数据协同与集成:Flink CDC可以将多个不同数据源的增量数据集成到一个目标系统中,实现不同数据源之间的数据协同和集成。比如将多个数据库中的数据变更实时同步到数据仓库或数据湖,以实现统一的数据分析和报表生成。

3、数据流转与传输:Flink CDC可以将源数据库中的增量数据转换成数据流,并实时传输到指定的目标位置。这在数据实时传输和数据交换场景中非常有用,比如将数据传输到消息队列、实时推送数据给其他系统等。

4、实时数据湖建设:通过Flink CDC将源数据库中的增量数据实时写入数据湖中,可以建立起一个实时的数据湖,进而支持实时分析、实时机器学习等高价值数据应用。

5、实时数据缓存和缓冲:Flink CDC可以实时捕获和缓冲源数据库中的增量数据,并加快其它系统对数据的访问速度,减少对数据库的直接查询和压力。

Kettle(也称为Pentaho Data Integration)是一个开源的ETL工具,主要用于数据抽取(Extract)、转换(Transform)和加载(Load)操作。下面是Kettle主要的应用场景:

1、数据同步:Kettle可以将不同数据源(如关系型数据库、文件、Web服务等)中的数据进行抽取和同步,实现数据的一致性和更新。

2、数据仓库加载:Kettle可以将数据从各种数据源加载到数据仓库(如数据仓库、数据湖等),并进行数据清洗、转换和映射操作,以支持后续的分析和报告需求。

3、实时数据分析:Kettle可以实时抽取和转换数据,将其加载到实时数据分析平台中,实现实时监控、实时分析和实时决策。

4、数据质量管理:Kettle提供了各种数据清洗和校验的功能,可以帮助用户识别和修复数据质量问题,提高数据的准确性和完整性。

  以下是相关同步工具的功能对比:

图片

总结一下,不同的开源数据同步工具的功能和应用场景不同,有重叠部分,另外付费版本的Oracle Golden gate, informatica等在和开源同步功能的功能对比中不具备特别突出的优势。

更多请见公众号:与数据同行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jQuery ajax读取本地json文件 三级联动下拉框

步骤 1:创建本地JSON文件 {"departments": [{"name": "会计学院","code": "052"},{"name": "金融学院","code": "053"},{"name": "财税学院",&qu…

基于若依的ruoyi-nbcio流程管理系统支持支持定时边界事件和定时捕获事件

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 1、定时边界事件 <template><div class"panel-tab__content"><!--目前只处理定…

【Java系列】详解多线程(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、背景引入二、线程…

解决git提交完代码后切换到自己分支pull拉错远程分支

&#x1f979;MD 我是猪&#xff01;拉代码的时候净想着干饭了&#xff0c;一下给拉错了&#x1f624; &#x1f338;方法一&#xff1a;打印日志&#xff0c;然后回退版本 &#x1f338;方法二&#xff1a; 舍弃本地修改 git checkout .直接把冲突的文件提交到自己的分支&a…

Linux内核上游提交完整流程及示例

参考博客文章&#xff1a; 向linux内核提交代码 - 知乎 一、下载Linux内核源码 通过git下载Linux内核源码&#xff0c;具体命令如下&#xff1a; git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 实际命令及结果如下&#xff1a; penghaoDin…

【华为网络-配置-025】- 同 VLAN 下不同网段通信(启用 Sub 地址)

要求&#xff1a; 1、各接口配置 VLAN 后配置 Sub 地址使 PC1 与 PC3 通信。 一、sub 地址配置 [LSW1]vlan 10 [LSW1]port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/2 [LSW1-port-group]port link-type access [LSW1-port-group]port default vla…

掌握接口测试全流程,让你成为专业接口测试大师!

扫盲内容 1.为什么要做接口测试&#xff1f; 2.怎样做接口测试&#xff1f; 3.接口测测试点是什么&#xff1f; 4.接口测试都要掌握哪些知识&#xff1f; 5.其他相关知识&#xff1f; 一.为什么要做接口测试&#xff1f; ①.越底层发现bug&#xff0c;它的修复成本是越低…

Adobe XD学习攻略:成为设计大师的捷径!

Adobexd是什么软件&#xff1f;Adobexd是一站式UI/UX设计平台&#xff0c;结合设计和建立原型功能。用户可以使用Adobexd进行网页设计、移动应用程序设计和原型图绘制&#xff0c;也可以使用Adobexd软件更高效、更准确地完成静态编译和框架图到交互原型的转换。 然而&#xff…

ubuntu22.04 显卡驱动最简单的安装方法

1.拉取可选择安装的显卡驱动版本 sudo apt-get purge nvidia* #apt 的 update 和 upgrade 的区别 #apt update 命令只会获得系统上所有包的最新信息&#xff0c;并不会下载或者安装任何一个包。 #apt upgrade 命令来把这些包下载和升级到最新版本。 2.sudo apt update 3.安装…

如何批量给文件名加文字?

如何批量给文件名加文字&#xff1f;在我们的日常生活和工作中&#xff0c;经常会面临大量文件需要分类整理&#xff0c;并且可能需要在文件名后面添加一串文字作为备注。如果只是少量文件&#xff0c;我们可以手动逐个添加备注&#xff0c;但如果涉及上千甚至上万个文件&#…

vue项目下npm或yarn下安装echarts多个版本

最近在大屏展示的时候&#xff0c;用到了百度的echarts图表库&#xff0c;看完效果图后&#xff0c;又浏览了一下echarts官网案例&#xff0c;大同小异。但是搬砖过程中发现实际效果和demo相差甚远&#xff0c;一番折腾发现&#xff0c;项目中安装的是echarts4.x版本&#xff0…

重估拼多多,TEMU带给拼多多的不止是市值增量

监制 | 何玺 排版 | 叶媛 谁也没有想到&#xff0c;中国电商的格局改变居然如此之快。 12月29日&#xff0c;拼多多市值超越多年雄踞国内电商头把交椅的阿里巴巴&#xff0c;成为美股市值最大中概股。从此时开始&#xff0c;中国电商开始“拼”时代。 拼多多凭什么能超越阿里…

FFmpeg之将视频转为16:9(横屏)或9:16(竖屏)(三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

3、Linux_系统用户管理

1.Linux 用户管理 1.1概述 Linux系统是一个多用户多任务的操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员申请一个账号&#xff0c;然后以这个账号的身份进入系统。root用户是系统默认创建的管理员账号。 1.2添加用户 语法 useradd […

Kubernetes入门笔记——(2)k8s设计文档

​k8s最初源自谷歌的Brog项目&#xff0c;架构与其类似&#xff0c;主要包括etcd、api server、controller manager、scheduler、kubelet和kube-proxy等组件 etcd&#xff1a;分布式存储&#xff0c;保存k8s集群的状态 api server&#xff1a;资源操作的唯一入口&#xff0c;…

如何用docker在自己服务器上部署springboot项目

一、将springboot项目打包 1、maven clean项目 2、maven package项目 打包成功之后生成jar文件&#xff08;在target目录下&#xff09; 3、为Java创建Dockerfile 引入jdk8的Docker镜像 FROM openjdk:8 为了使运行其余命令时更容易&#xff0c;让我们设置映像的工作目录。这将…

LLM之RAG实战(一):使用Mistral-7b, LangChain, ChromaDB搭建自己的WEB聊天界面

一、RAG介绍 如何使用没有被LLM训练过的数据来提高LLM性能&#xff1f;检索增强生成&#xff08;RAG&#xff09;是未来的发展方向&#xff0c;下面将解释一下它的含义和实际工作原理。 ​ 假设您有自己的数据集&#xff0c;例如来自公司的文本文档。如何让ChatGPT和其他…

响应式编程又变天了?看JDK21虚拟线程如何颠覆!

本文解释为啥会有响应式编程&#xff0c;为什么它在开发者中不太受欢迎&#xff0c;以及引入 Java 虚拟线程后它可能最终会消失。 命令式风格编程一直深受开发者喜爱&#xff0c;如 if-then-else、while 循环、函数和代码块等结构使代码易理解、调试&#xff0c;异常易追踪。然…

基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息

文章目录 1. 环境信息2. gitlab 部署3. jenkins部署4. gitlab集成jenkins4.1 jenkins的凭据上保存gitlab的账号信息4.2 jenkins中配置gitlab的连接信息4.3 编写jenkins上pipeline文件4.4 jenkins上创建pipeline项目4.5 gitlab上配置webhooks事件4.6 测试 1. 环境信息 gitlab服…

Python-Opencv图像处理的小坑

1.背景 最近在做一点图像处理的事情&#xff0c;在做处理时的cv2遇到一些小坑&#xff0c;希望大家遇到的相关的问题可以注意&#xff01;&#xff01; 2. cv2.imwrite保存图像 cv2.imwrite(filename, img, [params]) filename&#xff1a;需要写入的文件名&#xff0c;包括路…