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

原来CDC数据同步可以这么简单,零代码可视化一键数据同步

当前企业实时同步与分析场景中面临的挑战:

随着业务发展需要,实时分析成为企业目前的强需求,成为支撑企业业务发展的必须项。

一般来说,要满足数据实时分析的诉求,通常有两种方案:

第一种是直接使用源端的业务数据库,对接 BI 分析工具进行查询。

这种方式比较简单直接,但存在两项弊端:其一,在数据量特别大的时候且业务复杂度高的情况下,涉及到比较复杂的关系查询,比如多表 join ,查询性能会遇到瓶颈,一条 SQL 可能需要很长的时间才返回,满足不了实时分析的交互诉求;其二,从稳定性和安全性两个维度考虑,在企业中业务数据库通常归属业务方,一般不愿意被直接用于数据分析使用,限制了数据分析团队去查询使用。

第二种是把数据库里的数据先同步到数仓中,利用数仓高性能的查询能力来对接 BI 功能进行分析。

这个方案能很好解决上一个方案面临的两个问题,其自身最大挑战在于数据新鲜度。把数据从数据库同步到数仓,传统方式通常采用 T+1 或 H+1 的离线方式,时效性是一天或一小时的延迟,这样的数据新鲜度越来越不能满足业务对数据进行实时分析的时效性要求。后来演进出实时数仓架构,支持把数据实时写入到数仓,时效性和新鲜度会有极大提高,但实时数仓中常驻的实时同步任务,会使得成本会有极大增加;且数据写入数仓后,为了满足 BI 报表查询响应的要求,往往还需要再增加额外的 OLAP 引擎来做查询加速,会使得成本又进一步增加。

总结来说,实时同步与分析主要面临数据导入和分析,在数据数据新鲜度和整体成本上的两个挑战。

云器Lakehouse简介

云器作为新一代数据平台的提供商,为企业提供了一体化 Data+AI 的整体解决方案。云器Lakehouse平台提供以下两大方面的核心产品能力:

  • Single-Engine引擎:可以统一批处理、流处理和交互分析全场景的作业负载诉求。
  • 一站式数据平台:丰富的配套产品功能,预置数据相关常用服务,如数据同步、开发构建、运维监控、资产管理、数据质量等。

基于此形成一整套解决方案,可以用一个引擎处理结构化和非结构化数据类型、不同的处理分析负载,满足企业在数据构建方面全方位的诉求,让数据处理更高效、更实时。

图1:云器Singe-Engine引擎方案

在云器Lakehouse的实时同步和实时分析解决方案中,支持源端多种数据源接入,如MySQL、PgSQL、SQL Server 等。基于实时同步写入到数仓里的同一份数据,可同时支撑 BI 报表进行实时查询。基于一个引擎(Single-Engine),一份数据从源端同步写入,再支撑目标消费,不再需要传统方案中额外新增的 OLAP 加速引擎,可以简化整体架构,进而极大地节约成本。

图2:云器Lakehouse支持主流数据库接入

实时任务演示

下面用一个具体例子演示云器Lakehouse是怎样去应对源端的复杂挑战,将数据实时同步,并支持实时分析查询。

演示背景

本次演示中,源端准备了四张各有 100 万行数据的表,计划将这 400 万行数据同步到目标里。源端数据在 MySQL 的 RDS 数据库内,采取分库分表的结构,数据存在不同的分表,通过云器的实时同步方案,把数据同步进云器Lakehouse,直接使用 BI 报表进行查询分析。

图3:演示数据流程

本演示以常见的 SaaS 服务模式为例,多租模式下,其底层业务数据库中,某些租户的信息会存在同一张分表内,分表下包含租户定制的扩展字段,即源端是基本相同的四张分表,但部分表的字段存在细微差异,如下图所示,yellow_taxi_02 表包含扩展字段 2 。

图4:演示表结构示意

实时同步任务配置

下面开始进入云器Lakehouse产品中,为大家演示超大规模数据是如何实时同步,并进行实时查询分析的。

多表异构同步配置

首先在云器Lakehouse任务开发里新建多表实时同步任务,选择 MySQL 数据源。云器提供两类数据同步模式:

  • 第一类多表镜像,把源端的数据表原原本本地镜像同步到数据仓库里。
  • 第二类是多表合并,也是本次演示所中用到的场景。在源端数据量特别大、有分库分表场景的情况下,同步过程中,需要提前把需要 ETL 处理的 transform 过程完成,多张表合并写入到同一张表中,这样在后续查询中不需要再进行多表join,为查询提速。

之后再选择存储了源端连接串信息的数据源。(如下图)

图5:在云器Lakehouse中创建实时任务

接下来配置需要同步的对象。云器提供了丰富的过滤规则来筛选源端表,比如命名的精确匹配、正则匹配等,可以按需使用。在源端表字段存在不一致的情况下,Lakehouse实时同步会自动检测识别,提示用户开启异构表合并同步功能。异构表合并同步功能作用是在目标端的表中,取源端表字段的并集进行建表,确保源端所有的数据能被同步写入到目标端。

图6:配置目标表

配置完成后可以对具体的表的字段进行预览检查,确保扩展字段也被添加进来,保证数据一致。

图7:检查具体字段

如果使用镜像同步模式来代替多表合并模式,会把源端表的结构完整映射到目标表上,但还需要再进行 ETL 的处理加工、产出一张新的合并后的表供BI查询。增加表,也附带增加了一个处理链路,提升复杂度的同时会使得端到端的整个链路更长,数据新鲜度和时效性会大打折扣,成本也会提升。

通过扩展字段作为联合主键确保合并过程中数据不丢失

接下来看一个更复杂的情况,前面提到,源端数据是采用分表的方式存储,但业务上常常会遇到一种情况,同样一个主键字段在不同分表之间的数据会出现重复。

本次演示数据中也模拟设计了类似情况,在源端两张表里去查询 ID ,可以看到同样的主键 ID 取值,在不同的表里分别会有一条记录,这会给同步过程带来了挑战:在合并写入到目标端时,如果是只按 ID 作为主键,这两条记录就会被尝试写入到一条记录中,会产生数据冲突的情况。两条源端的记录依据先后顺序,后到的源端表中的数据被把先到的源端表中的数据给覆盖掉。

图8:同一字段在不同分表间的记录对比

面对这种情况,Lakehouse 实时同步方案中,提供了扩展字段的能力,来保证数据准确性。通过标识源端数据来源,比如将 server 、databasename 、 tablename 等字段设置为联合主键后,那么这两条数据在目标端会被当成两条记录来对待。通过这种方式,保证在即使源端出现分表中主键数据有重复的复杂情况下,源端数据也能被准确地同步到目标端。

图9:云器Lakehouse扩展字段功能

下一步在目标配置里选择数据源、目标数据源及计算集群。

图10:目标表配置

接下来可以在映射关系中预览同步的字段配置,可以看到扩展字段包含在内,新增组件/联合主键也在这里有所体现。

图11:预览目标表字段

云器Lakehouse实时同步中,也提供了丰富同步规则策略,用来动态适配源端数据库的变更(Schema Evelution),比如源端表删除、新增字段等情况下的应对策略。

图12:配置同步规则

到这里,整个同步任务就配置完成,只需要简单五步:选择数据源、圈定源端同步对象、设置高阶属性、选定目标端,设定同步策略。

启动数据实时同步

云器Lakehouse提供了开发环境和生产环境两种模式,要将该任务在生产环境运行起来,需要先将其发布提交,然后在运维中心再启动该任务。

任务启动时,可以根据实际需求,选择是否进行全量数据同步。首次同步的数据,通常建议选择做一次全量数据同步,然后再进行增量数据同步。

图13:启动任务

我们可以通过BI报表来检查源端数据库的数据情况,源端总共四张表,各有 100 万行数据,需要把这 400 万行数据同步到目标表里。在前面配置过程中可以看到每张表有20 多个字段,而且字段类型大部分是 String 类型,单条记录的size不算小,是比较贴合真实生产上的业务数据库的情况。

图14:源端数据的 BI 报表

在运维界面中,可以看到任务正在全量同步阶段,数据已经写入 200 万行,速率在 25, 000+ 行/秒。

图15:任务状态监控

特别的,在云器Lakehouse的实时同步任务中,仅需要在第一次启动时对源端做一次全量同步,在此基础上根据源端的数据变更,再进行增量同步。而且全量同步环节完成后,无需手动更改,任务会自动转入增量同步环节。

云器Lakehouse还提供数据资产管理的产品模块,可以实时检查目标表的数据量的情况,全量同步完成后,可以看到目标端的数据条数和源端完全一致,为400万行。

图16:数据详情

数据变更

在实际应用中,经常会出现因为业务需要使得源端数据库的表和结构出现变化的情况,如源端表增加了字段,删除了字段、或者字段的类型变化了。对于这类情况,Lakehouse的实时同步也提供了对应的解决办法。

云器Lakehouse产品支持直接操纵源端数据库,通过 SQL 来对源端数据库进行修改、查询等操作,首先我们对源端数据进行变更,先在源端添加一些新的字段:ext_column_0 & ext_column_1,并在源端表里删掉一个字段,同时更改一个字段类型从 int 改为 bigint 。

图17:通过 SQL 调整源端表

接下来可以在监控页面中看到,源端的数据变更已经被同步过来进行消费,基于在同步任务中配置的Schema Evelution规则,自动更新,无需手动操作进行其它额外配置、或者重启任务,这样能确保整个同步链路平滑运行。

图18:监控运维界面

同步完成后,也可以在任务运维界面中检查源端的变更是否被成功同步到目标端,可以看到,新增的字段 ext_column_0 & ext_column_1已经被扩展进目标端,更改的 bigint 字段也完成变更。

图19:检查变更后数据

实时查询

在传统的离线数仓中,数据进来做完 ETL 的各种处理加工后,直接对接 BI 引擎查询会很慢,所以通常会采用一些实时分析引擎,比如 Clickhouse 等,再做查询加速。但在云器的方案中完全不需要,源端表能够被实时写入,也能够被实时查询,以及通过批处理加工后被实时查询分析。

下图为本次DEMO的 BI 报表示意,展示源端 MySQL 数据行数的统计,目标端是云器 Lakehouse 内的数据行数,并做了一个复杂查询分析,按照不同的乘客数量统计费用的平均值。实时同步写入的表,跟查询的表是同一张表。

在下图分析看板,是基于 Metabase 工具构建:

图20:BI 报表

云器产品里提供了作业历史产品模块,可以看到提交给引擎的所有 SQL 明细。从下图中可以看到,实时同步写入的是 yellow_taxi_demo 表,在Metabase BI 看板里实时查询的也是该表。而且在演示的这个相对复杂的查询条件下,进行了400万行数据的全表扫描,能在 10 毫秒左右返回查询结果。云器Lakehouse的方案不需要新增额外的加速引擎来进行查询加速,也省去了再同步复制一份数据,所以能够极大地节约成本。

图21:作业历史界面

我们接下来看下高并发下的查询响应情况。云器Lakehouse 采用存算分离架构,在查询计算层面,通过不同集群类型来支撑不同的查询负载:

  • 通用型集群,面向批处理进行了针对性的优化。
  • 分析型集群,对于在线的实时分查询非常友好。

云器也提供良好的资源弹性能力,可以设定不同集群规格和弹性伸缩方式,可以配置查询的并发数以及实例的副本个数来实现动态伸缩。比如源端有 8 个并发时,只需要 1 个查询实例,通过弹性设置为 2 个副本,当并发数超过 8 个时,系统会自动拉起扩容出第 2 个副本来承接超过 8 个以上的并发流量,整个过程完全不需要人为干预。

此外,云器Lakehouse还提供自动启停的功能,整个产品的资源收费模型上,在SaaS模式下采取按量付费的模式,比如对于 BI 报表,在夜间没有使用、没有流量时,集群会被自动停止,就会产生费用,能避免资源的空置浪费、节约成本费用。

图22:集群创建

稳定性和监控

实时同步和分析链路搭建完成后,对于企业来讲,最关心的问题之一就是整个链路的稳定性。

云器Lakehouse通过监控和告警的产品模块,可以为整个同步链路的稳定性提供保障。云器Lakehouse为每个同步任务提供完善的监控信息展示,比如同步状态、同步延迟等。面向同步链路里可能会发生的异常情况,比如单条数据写入时发生异常、导致任务失败,实时同步方案中也提供了任务的自动 Failover 能力,任务失败以后会被自动拉起,减少人为运维处理的投入。

图23:指标监控界面

云器Lakehouse内置监控告警模块,内置了丰富的状态和指标监控能力,支持自定义配置监控规则,来全面监控整个任务运行的状态,包括任务实例运行失败、单表存量数据同步异常、实时同步任务端到端延迟、作业 failover 、源端数据读取的点位延迟等等,一系列的监控事项,都可以通过规则监控起来。

图24:监控告警规则

本次演示中配置了一些监控规则,可以看到下图告警通知,会监控端到端同步的延迟是否超过了 10 秒,在数量特别大时,延迟上去,会被监控捕获到,并通过告警通知提醒负责人感知并及时处理。

图25:监控告警界面

任务运维处置

在实际生产过程中,经常会遇到各种各样的复杂问题,为此云器实时同步方案中也提供了多种配套运维处置功能来进行支持。

例如在实时同步运行中,源端数据发生了变化,某个表中的数据出现了问题,针对这种情况,我们提供补数同步功能,支持对特定表重新进行全量同步。在业务突发高峰,源端变更流量非常大时,多个表的变更数据的实时同步会相互影响。这两种情况下,都可以通过全量补数同步的功能去加速数据同步过程。以下图为例,对源端表 yellow_taxi_00 表重新进行补数全量同步,其增量实时同步会被暂停,后台会通过全量的方式把源端数据重新同步。补数修订的全量同步完成后,增量同步会自动启动,无需再手动操作。

图26:补数同步功能

图27:自动切换同步状态

此外,云器Lakehouse还为日常运维提供优先执行功能,当在有多张表需要同步,而资源相对有限的条件下,可选择业务上更重要的表优先分配资源,在任务队列里面优先执行该表的数据同步,可以在任务整体出现消费堆积、端到端延迟变大的情况下,也能保证业务关键数据的新鲜度。

图28:日常运维功能

性能与成本

性能和成本也是企业目前比较关注的问题,在不考虑产品性能的情况下单独讨论成本是不合理的。企业在追求数据新鲜度时,可能会面临成本的大幅增加;如果优先考虑成本,可能会牺牲数据同步和查询的性能,导致数据新鲜度不足,对此,云器Lakehouse的解决方案希望能将性能与成本之间的平衡控制权交给企业。

对于企业来说,业务上最开始构建时,可能 t+1 的时效性已经能满足业务初始启动使用的诉求,但随着业务发展会需要越来越新鲜的数据,如 h+1 或者 m+1 。

为此,云器Lakehouse可以灵活地配置调度周期,比如可以从每周执行调整为每天执行,从每天执行一次改为执行多次,调度频次也支持灵活设定间隔,最小支持 1 分钟,这是传统批处理的方式。

图29:调度配置界面

云器Lakehouse 也提供了更高阶的产品特性:Dynamic Table ,其核心要点是可以只计算变化的数据,来代替传统的批处理中的全量计算,并内置刷新周期,可以根据业务需要灵活调整。比如将 Dynamic Table 的刷新周期设置一个小时,它可以根据源端的数据变化,在一个小时内刷新一次,更新表的数据计算结果供下游使用。如果业务诉求的新鲜度变得更高时,只需把 Dynamic Table 的数据刷新频次调整的更高,就可以实现数据新鲜度的“无级调速”。

上文也提到,在计算集群规格上,云器Lakehouse也支持灵活调整。当数据新鲜度刷新周期变得更高时,每小批处理的数据量相应会变小,可以使用相对来说更小的集群规格来满足数据处理的要求,也能进一步节约成本。通过这样的灵活变化,能够找到数据新鲜度和成本的一个精益平衡。

总结来说,企业通常选择批处理都是因为其成本低,代价是它的数据新鲜度不高。云器Lakehouse提供的的处理方式,既能降低成本,还解决了数据时效性的问题。或者反过来说,以前企业为了高时效性,可能就不控成本了,但今天云器提供的这种方式,在选择最适合的数据新鲜度和刷新周期下,能获得很好的平衡。

云器服务了国内一家 CRM 行业的头部客户,基于上述的实时同步和查询方案,从整个源端的实时同步到后续的实时处理分析对照下来,相比国内的头部云厂商的主流方案,整个成本上能够节约 50% 以上。

(了解更多请点击销售易基于Lakehouse的实时分析提升用户数据体验实践分享)

总结

云器Lakehouse基于一站式产品能力,提供了面向实时同步和实时分析场景的解决方案,应对源端数据库的复杂情况。产品支持对接MySQL、 PGSQL、SQLServer 等各种数据源,满足源端数据库存在异构情况下的同步要求,提供相对完善的高性能同步能力,和完善的配套运维监控能力保障数据的稳定生产。在成本方面,云器相比头部云厂商的传统同步方案,能够做到 50% 以上的整体成本节约。性能方面,具备更低的端到端的同步延迟,通常情况下可以做到 20 秒之内;以及更快的分析查询响应的速度,在复杂的情况下,能够做到 10 毫秒的查询相应速度。

基于云器Lakehouse的产品能力,可以为企业提供更好的数据新鲜度,让业务决策快人一步,在竞争中处于领先位置。

相关文章:

原来CDC数据同步可以这么简单,零代码可视化一键数据同步

当前企业实时同步与分析场景中面临的挑战: 随着业务发展需要,实时分析成为企业目前的强需求,成为支撑企业业务发展的必须项。 一般来说,要满足数据实时分析的诉求,通常有两种方案: 第一种是直接使用源端…...

Ubuntu环境使用 Whisper 与 ZhipuAI 实现本地批量视频转录与文本标点复原(本地亲测可用)

使用 Whisper 与 ZhipuAI 实现批量视频转录与文本标点添加 在本篇博客中,我们将介绍一个实用的项目,帮助初学者了解如何使用 Whisper 和 ZhipuAI 的 API 来进行视频转录和文本处理。这个项目主要功能是将视频转录成文本,并利用大语言模型为转…...

SPI机制

一、SPI简介 SPI(Service Provider Interface)机制是一种服务发现机制,广泛用于Java生态中。它允许框架或库通过接口解耦具体实现,用户可以在运行时动态地提供接口的实现,而不是在编译时确定。这种机制在很多场景下非…...

生信分析流程:从数据准备到结果解释的完整指南

介绍 生物信息学(生信)分析是一个复杂的过程,涉及从数据准备到结果解释的多个步骤。随着高通量测序技术的发展和生物数据的迅猛增长,了解和掌握生信分析的标准流程变得尤为重要。这不仅有助于提高分析的准确性,还能优…...

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…...

【fisco学习记录2】多群组搭建

说明 文档参考&#xff1a; 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前&#xff0c;先暂停之前的单群组&#xff0c;并删除&#xff1a; cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…...

深度解读:路由交换、负载均衡与防火墙的网络交响

一、路由交换&#xff1a;网络流动的“大动脉” 1. 路由&#xff1a;决定命运的“路径规划师” 路由技术如同现代交通网络中的导航系统&#xff0c;决定了数据从起点到终点的最佳路径。路由器基于网络层IP地址&#xff0c;对每个数据包进行精确的路径选择&#xff0c;并确保其…...

linux线程 | 线程的控制(二)

前言&#xff1a; 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以&#xff0c; 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…...

npm install报错一堆sass gyp ERR!

执行npm install &#xff0c;出现一堆gyp含有sass错误的情况下。 解决办法&#xff1a; 首页可能是node版本问题&#xff0c;太高或者太低&#xff0c;也会导致npm install安装错误&#xff08;不会自动生成node_modules文件&#xff09;&#xff0c;本次试验&#xff0c;刚开…...

微知-BlueField DPU在lspci中显示Flash Recovery是什么意思?

效果&#xff1a; lspci |grep BlueField10:00.0 Memory controller: Mellanox Technologies MT42822 Family [BlueField-2 SoC Flash Recovery] (rev 01)*原因&#xff1a; 表示此时flash是empty空的&#xff0c;或者在flash中的FW是无法工作的。比如烧录错误。 这里指的一提…...

【前端知识点】前端笔记

css 引入css文件的文件路径 <!-- 引入外部 CSS 文件 --> <!-- 当前文件所在文件夹目录 --> <link rel"stylesheet" href"./"> <!-- 当前文件所在父文件夹目录 --> <link rel"stylesheet" href"../">j…...

Sping Cache 使用详解

缓存是提升应用性能的常用手段。它通过将耗时的操作结果存储起来&#xff0c;下次请求可以直接从缓存中获取&#xff0c;从而避免重复计算或查询数据库&#xff0c;显著减少响应时间和服务器负载。Spring 框架提供了强大的缓存抽象 Spring Cache&#xff0c;它简化了缓存的使用…...

动手学深度学习60 机器翻译与数据集

1. 机器翻译与数据集 import os import torch from d2l import torch as d2l#save d2l.DATA_HUB[fra-eng] (d2l.DATA_URL fra-eng.zip,94646ad1522d915e7b0f9296181140edcf86a4f5)#save def read_data_nmt():"""载入“英语&#xff0d;法语”数据集"&qu…...

Python网络爬虫技术

Python网络爬虫技术详解 引言 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网络蜘蛛&#xff08;Web Spider&#xff09;或网络机器人&#xff08;Web Robot&#xff09;&#xff0c;是一种按照一定规则自动抓取互联网信息的程序或脚本。它们通过遍历网页链…...

黑马程序员-redis项目实践笔记1

目录 一、 基于Session实现登录 发送验证码 验证用户输入验证码 校验登录状态 Redis代替Session登录 发送验证码修改 验证用户输入验证码 登录拦截器的优化 二、 商铺查询缓存 缓存更新策略 数据库和缓存不一致解决方案 缓存更新策略的最佳实践方案 实现商铺缓…...

ES-入门聚合查询

url 请求地址 http://192.168.1.108:9200/shopping/_search {"aggs": { //聚合操作"price_group":{ //名称,随意起名"terms":{ //分组"field": "price" //分组字段}}} } 查询出来的结果是 查询结果中价格的平均值 {&q…...

七维大脑: 探索人类认知的未来之路

七维大脑&#xff1a; 探索人类认知的未来之路 随着科技的不断发展&#xff0c;人们对于大脑的认知也在不断扩展。近年来&#xff0c;科学家们提出了一个名为“七维大脑”的概念&#xff0c;试图通过七个维度来理解人类的认知过程。这个概念的提出&#xff0c;让人们开始思考&…...

spring |Spring Security安全框架 —— 认证流程实现

文章目录 开头简介环境搭建入门使用1、认证1、实体类2、Controller层3、Service层3.1、接口3.2、实现类3.3、实现类&#xff1a;UserDetailsServiceImpl 4、Mapper层3、自定义token认证filter 注意事项小结 开头 Spring Security 官方网址&#xff1a;Spring Security官网 开…...

Django+vue自动化测试平台---正式开源!!!

自动化测试&#xff1a;接口、Web UI 与 App 的全面探索 在此郑重声明&#xff1a;本文内容未经本人同意&#xff0c;不得随意转载。若有违者&#xff0c;必将追究其法律责任。同时&#xff0c;禁止对相关源码进行任何形式的售卖行为&#xff0c;本内容仅供学习使用。 Git 地…...

电子电气架构 --- 智能网联汽车未来是什么样子?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...