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

湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构

导读:浙江霖梓早期使用 CDH 产品套件搭建了大数据系统,面临业务逻辑冗余、查询效率低下等问题,基于 Apache Doris 进行整体架构与表结构的重构,并基于湖仓一体和查询加速展开深度探索与实践,打造了 Doris + Paimon 的实时/离线一体化湖仓架构,实现查询提速 30 倍、资源成本节省 67% 等显著成效。

浙江霖梓是一家专注于深度学习和人工智能应用的金融创新企业,自 2018 年成立以来,专注于深度学习和⼈⼯智能的应⽤ ,通过构建数据迭代能⼒形成结构化的数据决策产品,为企业提供精准经营决策。同时,提供基于大数据的风控能力的一系列高效便捷的金融服务产品。

然而,随着业务的持续扩展,大数据业务系统的局限逐渐暴露:报表系统计算缓慢、运维成本持续攀升、组件间的高度耦合导致架构稳定性较差等,严重影响了大数据系统产出效率,因此浙江霖梓引入 Doris+Paimon 重新构建了实时/离线一体化湖仓架构,为反欺诈策略、用户⾏为分析、BI 应用等若干系统提供了高效准确的服务,实现了查询提速 30 倍、资源成本节省 67% 等显著成效

早期架构及痛点

下图是早期的 CDH 架构示意图,MySQL 数据通过 Sqoop 全量导入至 Hive,埋点数据通过 Java 程序清洗后进入 Flume 的 source 端,并最终 sink 到 Hive 的分区表中,离线数仓任务的 ETL 由 Hive 执行,批处理作业则通过 Spark SQL 运行,所有任务都从 ODS 层出发直接进入到 APP 层。数据开发与分析工作则依赖 CDH 自带的 Hue 平台,任务调度依赖 easyScheduler,最终与自主研发的报表平台对接,实现数据的可视化。

早期架构及痛点.PNG

随着业务扩展,早期架构的局限逐渐暴露:数据采集、变更及分析效率低下的同时,整体运维成本也在持续攀升,并且各组件间的高度耦合降低了架构的整体稳定性。此外,由于各部门未统一指标⼝径,不同取数逻辑的分析结果存在较大差异,使得业务痛点的精准定位变得异常困难,传统的 Hive+BI 系统已无法满足需求。

为了解决上述痛点,浙江霖梓考察了市⾯上较为常⻅的大数据分析组件,如 HBase、ClickHouse、Apache Doris 等,最终从查询性能、写入性能、投⼊成本等⽅⾯评估,最终选择了综合实⼒⾮常突出的 Apache Doris。以下为前期技术选型调研结果:

早期架构及痛点-2.PNG

相较于其他产品,Apache Doris 的核心优势如下:

  • 查询快:⽀持物化视图和向量化执⾏引擎,并⽀持多种表模型以及 Rollup 、BloomFilter、倒排索引等,离线跑批速度非常快,并对查询性能有显著加速效果。
  • 存储省:通过表的优化和冷热数据分层特性,能够充分利用机械盘和固态盘,显著提升资源利用率。此外,采用高效的 ZSTD 压缩算法,压缩比高达 10 倍,大幅降低了存储费用。
  • 运维简单:不依赖外部系统, 原架构一旦某个服务发生异常,与其关联的服务都会受到影响,给运维增加了难度。⽽ Apache Doris 的原生运维工具 Doris Manager 可以满⾜⽇常绝⼤多数的运维需求,再加上 Doris 架构简单且不存在⼩⽂件问题,在线扩展节点十分方便,⼤⼤降低了运维难度。
  • 便捷迁移:兼容 MySQL 协议,报表系统只需要修改源配置就可以轻松对接。
  • 社区活跃:Apache Doris 的社区⾮常活跃,技术团队解决问题的能⼒较强;版本迭代速度快,能很好的解决业务痛点。

基于 Apache Doris 的实时/离线一体化湖仓架构

基于 Apache Doris 的实时:离线一体化湖仓架构-1.PNG

经过七个月的设计与实施,最终完成了基于 Apache Doris 离线 / 实时一体化湖仓统一架构。如上图所示,离线数据通过 DataX 同步、实时数据通过 Flink CDC 采集加工,这些数据最终存储到 Doris 或 Paimon 表格式中。

目前基于 Paimon 的全量数据入湖还在持续完善,原先的部分离线数据通过 Flink CDC 实时入湖,而另一部分会直接进入 Doris 来缩短数据链路。这些数据经由 Doris 统一分析处理后,最终服务于自研数据服务。在这其中,Doris 集群被灵活拆分为多个资源组,分别满足离线数仓、数据集市、实时业务监控等不同上游服务的数据处理与分析需求。Apache Doris 的引入,也带来许多显著收益:

  • 查询效率提升:Hive ⾯对复杂的⼤数据量跑批任务时,耗时往往超过 20min,亿级别的⼤表 Join 甚至需要花费 35-50min,⽽ Apache Doris 在未经优化的初次跑批中耗时 7min ,经过基础优化后缩减至 40s-90s,查询速度提升近 30 倍。
  • 开发效率提高:原架构使用 Spark 进行 ETL 之后导入数仓,业务开发需要结合 Spark、Hive、Kafka 等多组件;切换至 Doris 后,只需专注 Doris SQL 的开发与优化,开发工作大大简化。此外,Doris 与 Kafka、DataX、Flink 等组件兼容性较高且包含丰富的插件库,进一步提高了开发效率。
  • 负载隔离:利⽤ Workload Group 、Resource Group 等配置代替 Yarn,实现更加合理的资源隔离。
  • 更低使用成本:依赖 Doris 极致的压缩与计算性能,原架构的 27 台服务器精简至 10 台左右,总体资源开销降低至原来的 1/3(节省了 67%),为⽇后 PB 级别的数据量提供了更优的成本方案。
  • 运维更加便捷:通过 Doris Manager 轻松部署和接管 Doris 集群,实时查看集群的运行状态和详情,快捷地对集群进行扩缩容、升级及重启操作,数据管理更流畅、更高效。

详细可参考 Doris Manager 介绍文档与安装手册

架构升级实践与调优

01 数据接⼊

  • 离线数据处理:将 Sqoop+Flume 替换成 DataX,并新增了 Data X Doris Json 一键生成功能,利用主键模型的 Replace 特性,将全量同步优化为增量同步。改造后,数据采集时间从原来的 5h 缩短至 1.5h,处理效率提升 70%。
  • 第三方埋点数据:之前需要通过大数据后端项目的接口 ETL 后传输到 Flume,改造后,ETL 逻辑依靠 Doris 实现,以 StreamLoad 的方式直接接入埋点数据。
  • 后端日志数据迁移:由于后端日志打印频繁,MySQL 存储压力较大,影响业务分析效率。改造后通过 Routine Load 对接 Kafka 消费日志数据,并设置了 TTL,此外还根据业务开发侧的需求进行了简单的数据清洗,实现高性能的日志检索功能。
  • 风控业务的实时命中策略与反欺诈实时指标处理:Flink 负责将 ETL 处理后的数据写入 Paimon,通过结合 Doris 的湖分析能力接入 Paimon,凭借 Doris 的统一查询入口为业务决策系统和数据分析提供数据服务。这一优化确保了业务问题能够迅速被发现并解决,有效避免了以往 T+1 数据模式下因数据滞后和业务感知延迟所带来的问题。

02 基于 Doris 的数仓建模

在构建新架构的同时,对数据表也进行了深度重构。基于 OneData 理论和 Apache Doris 的表模型设计,我们从底层建表逻辑出发,精心整理了以下内容,现与大家分享:

ODS 贴源层:使用主键模型备份 MySQL 的原始数据,可以接受 MySQL 历史数据的物理删除,从⽽减轻业务压⼒,降低云上存储成本。

DWD 明细层:主要使用主键模型,为了确保明细数据的准确性,也可以采用其他模型进行校验。在此层将屏蔽 ODS 层的数据,以提高数据表的复用性。

DWS 汇总层:采用聚合模型来汇集不同维度的表数据,形成若⼲张 Base 表,后续基于 Base 表进⾏维度上卷或 BI 分析,使 SQL 语句更加简洁、批处理性能得到提升。

APP 报表层:对接报表系统并定期通过邮件或办公软件发送至业务⽅,以供业务监控与业务决策。 由于该层涉及到基于不同时间字段维度以及维度上卷,因此选用明细模型。

02 基于 Doris 的数仓建模.png

重构后的数据表结构更加简洁,显著提升了 SQL 语句的可读性,也使得数据同步性能,有效减轻了大规模数据全量同步所带来的沉重负担,从而避免业务阻塞。

03 结算系统数据回流

早期业务结算系统的核心数据难以复用,资源浪费的同时,数据批处理的效率也较为低下。引入 Doris 后,基于 Doris 的数仓建模复用了 DM 层的数据,有效支撑了结算代偿、回购对账、账户管理等核心业务需求的及时处理。此外还接入了风控决策引擎,为其提供了实时反欺诈数据指标,实现了高效实时计算和核心数据回流。

得益于 Doris 出色的即席查询和实时写入能力,数据回流的调度执行耗时平均不超过 2 秒,业务系统的灵活性和数据响应速度相比之前提高了 8-12 倍。

03 结算系统数据回流.png

04 资源管理与权限控制

改造初期,由于资源管理配置不当,集群性能未达预期,可以通过调整 Workload Group 的并⾏查询数量、等待队列容量和超时时间,避免多条 SQL 语句抢占资源从⽽降低集群整体性能,此外,调整 Workload Group 的 max_concurrencymax_queue_sizequeue_timeout 等参数,避免查询超时。

Workload Group 相关数据开发的逻辑概念如下:

04 资源管理与权限控制.png

05 基础性能优化项

早期架构由于缺乏系统性的架构设计理论依据,导致了组件开发与维护工作十分复杂,既未设置合理的数据分区,也未对存储效率、查询索引等数据管理机制进行合理规划,所以在升级成为新架构时,浙江霖梓全面梳理并提炼业务关键指标,并针对 Doris 的各项基础性能进一步优化,有效提高了离线 / 实时一体化数仓的数据处理效率。

分区分桶

在建表时设置合理的分区分桶字段,其⼤⼩根据业务查询时间区间与数据体量决定,原理与 Hive 分区分桶基本—致,需要注意的是,业务变更频率较⾼的场景,不建议使⽤⾃动分区。我们综合考虑表数据量、增⻓趋势、表使⽤⽅法等情况,设置了动态分区,建表示例 SQL 如下:

PARTITION BY RANGE(k1) () 
DISTRIBUTED BY HASH(k1) 
PROPERTIES 
( "dynamic_partition.enable" = "true", "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-7", "dynamic_partition.end" = "3", "dynamic_partition.prefix" = "p", "dynamic_partition.buckets" = "32" 
); 

前缀索引

Apache Doris 的前缀索引属于稀疏索引,表中按照相应的⾏数的数据构成—个逻辑数据块( Data Block),每个逻辑数据块在前缀索引表中存储—个索引项,其⻓度不超过 36 字节,查找前缀索引表时,可以帮助确定该⾏数据所在逻辑数据块的起始⾏号。由于前缀索引内存占⽤较⼩,可以全量在内存缓存,并快速定位数据块。设计原则⼀般遵循:<时间字段> + <分桶键> + <主键 id> ,对于 ODS 表, 要确保这些字段不存在 NULL 值 ,否则会导致输出数据不⼀致。

倒排索引

主要⽤于规则明细表与⽇志表中,⽤于快速统计规则路由情况以及关键词出现频次,减少资源占⽤率。Table 中的⾏对应⽂档、列对应⽂档中的某个字段,可以根据关键词快速定位其所在⾏,达到 WHERE ⼦句加速的⽬的。

BitMap 去重

BITMAP 类型的列可以在 Aggregate 表、Unique 表或 Duplicate 表中使⽤ ,针对—些特定的场景如 UV 、规则命中次数进⾏查询加速。SQL 示例如下:

#建表 
create table metric_table ( dt int, hour int, device_id bitmap BITMAP_UNION 
) 
aggregate key (dt, hour) 
distributed by hash(dt, hour) buckets 1 
properties( "replication_num" = "1" 
); 
#查询 
select hour, BITMAP_UNION_COUNT(pv) over(order by hour) uv from( select hour, BITMAP_UNION(device_id) as pv from metric_table -- 查询每⼩时的累计UV where dt=xxx 
group by hour order by 1 
) res; 

开启执行优化器

在 Doris 2.1.x 版本中,建议启用 Pipeline X 和 local shuffle,以进一步提升复杂查询的执行效率。经过压测,开启 Pipeline X 优化器之后,性能提升了 20-30%。以下是 Pipeline X 优化器开启状态确认步骤:

#查看新优化器是否开启
#确保值全为true 
show variables like '%enable_nereids_dml%'; 
show variables like '%experimental_enable_nereids_dml_with_pipeline%'; 
show variables like '%experimental_enable_nereids_planner%'; 
#默认 30,根据实际情况调整 
show variables like '%nereids_timeout_second%'; 

此时对 Doris 、Hive 、Spark 进行压测,具体是对 15 个大表执行 join 操作,每张大表的平均数量约 13 亿条,测试过程中还涉及了 2 个表之间的笛卡尔积计算。根据执行结果,Doris 平均耗时只需 6 分钟。相比之下,Hive 执行相同任务耗时长达 2 小时,而 Spark 则执行失败。

报表优化

ADS 报表层在建表时开启 Merge-On-Write,以提升报表数据响应性能,同时开启⾏列混存以及查询缓存,避免刷新导致静态数据重复查询,影响集群性能。

#开启⾏存
"store_row_column" = "true" 

总结与规划

截至目前,基于 Doris + Paimon 的实时/离线一体化湖仓架构已为反欺诈策略、用户⾏为分析、业务监控、 BI 应用等若干系统提供了服务,实现查询提速 30 倍、资源成本节省 67% 等显著成效。未来,浙江霖梓将持续扩大 Apache Doris 在内部系统的使用范围,并将对数据湖能力、智能实时应用进行探索及应用:

  • 全面接入数据湖:逐渐扩大 Doris + Paimon 湖仓⼀体化架构的应用范围,打通存量数据湖与 Doris 数仓的对接,为日后 PB 级数据的分析做好充分准备。
  • 打造实时智能金融客服:推动 Doris App 报表丰富度的提升,将 Doris 数据导出到 Elasticsearch 做知识库并接入⼤模型,通过 Prompt 与 GraphRAG 增强智能检索落地智能⾦融问答系统。
  • 打造智能营销系统:将 Doris 作为知识库做实现精准营销,节约人力并且降低⼈为决策误差,深度挖掘数据潜在价值。

最后,衷⼼感谢 SelectDB 与 Apache Doris 社区伙伴的相携相伴,我们也会基于 Doris 进⾏离线 / 实时湖仓构建中持续挖掘,力求找到更优的问题解决方案,并回馈至社区。

相关文章:

湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构

导读&#xff1a;浙江霖梓早期使用 CDH 产品套件搭建了大数据系统&#xff0c;面临业务逻辑冗余、查询效率低下等问题&#xff0c;基于 Apache Doris 进行整体架构与表结构的重构&#xff0c;并基于湖仓一体和查询加速展开深度探索与实践&#xff0c;打造了 Doris Paimon 的实…...

【AI-34】机器学习常用七大算法

以下是对这七大常用算法的浅显易懂解释&#xff1a; 1. k 邻近算法&#xff08;k - Nearest Neighbors&#xff0c;KNN&#xff09; 想象你在一个满是水果的大广场上&#xff0c;现在有个不认识的水果&#xff0c;想知道它是什么。k 邻近算法就是去看离这个水果最近的 k 个已…...

2025年金三银四经典自动化测试面试题

概述 觉得自动化测试很难&#xff1f; 是的&#xff0c;它确实不简单。但是学会它&#xff0c;工资高啊&#xff01; 担心面试的时候被问到自动化测试&#xff1f; 嗯&#xff0c;你担心的没错&#xff01;确实会被经常问到&#xff01; 现在应聘软件测试工程师的岗位&…...

遵循规则:利用大语言模型进行视频异常检测的推理

文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly &#xff08;正常与异常&#xff09;Abstract and Concrete &#xff08;抽象与具体&#xff09;Human and Environment &#xff08;人类与环境&#xff09; 3…...

RFM模型-数据清洗

在进行数据清洗时&#xff0c;主要的目标是确保数据质量良好&#xff0c;以便后续的分析和建模工作能够顺利进行。针对你使用粒子群优化算法改进RFM模型来对电商数据进行用户群像划分的实验&#xff0c;数据清洗环节尤其重要&#xff0c;因为不干净的数据会影响模型的精度和效果…...

文件系统惹(细)

目录 块概念 分区 inode ext2文件系统 Boot Sector Super Block GDP&#xff08;group descriptor table&#xff09; Block Bitmap&#xff08;块位图&#xff09; Inode Bitmap &#xff08;inode位图&#xff09; Data Block inode和Datablock映射 目录和文件名 …...

中望CAD c#二次开发 ——VS环境配置

新建类库项目&#xff1a;下一步 下一步 下一步&#xff1a; 或直接&#xff1a; 改为&#xff1a; <Project Sdk"Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>NET48</TargetFramework> <LangVersion>pr…...

Centos7安装Clickhouse单节点部署

​ 部署流程 1、关闭防火墙&沙盒 关闭防火墙并关闭开机自启动 systemctl stop firewalld && systemctl disable firewalld查看selinux状态是否为disabled&#xff0c;否则修改 [rootlocalhost ~]# getenforce Enforcing修改为disabled vim /etc/selinux/config…...

4.SpringSecurity在分布式环境下的使用

参考 来源于黑马程序员&#xff1a; 手把手教你精通新版SpringSecurity 分布式认证概念说明 分布式认证&#xff0c;即我们常说的单点登录&#xff0c;简称SSO&#xff0c;指的是在多应用系统的项目中&#xff0c;用户只需要登录一次&#xff0c;就可以访 问所有互相信任的应…...

使用 Notepad++ 编辑显示 MarkDown

Notepad 是一款免费的开源文本编辑器&#xff0c;专为 Windows 用户设计。它是替代记事本&#xff08;Notepad&#xff09;的最佳选择之一&#xff0c;因为它功能强大且轻量级。Notepad 支持多种编程语言和文件格式&#xff0c;并可以通过插件扩展其功能。 Notepad 是一款功能…...

Spring 框架数据库操作常见问题深度剖析与解决方案

Spring 框架数据库操作常见问题深度剖析与解决方案 在 Java 开发的广阔天地中&#xff0c;Spring 框架无疑是开发者们的得力助手&#xff0c;尤其在数据库操作方面&#xff0c;它提供了丰富且强大的功能。然而&#xff0c;就像任何技术一样&#xff0c;在实际项目开发过程中&a…...

第一天:爬虫介绍

每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中&#xff0c;对于爬虫有兴趣的伙伴可以订阅专栏一起学习&#xff0c;完全免费。 键盘为桨&#xff0c;代码作帆。这趟为期30天左右的Python爬虫特训即将启航&#xff0c;每日解锁新海域&#xff1a;从Requests库的…...

ECP在Successfactors中paylisp越南语乱码问题

导读 pyalisp:ECP中显示工资单有两种方式&#xff0c;一种是PE51&#xff0c;一种是hrform&#xff0c;PE51就是划线的那种&#xff0c; 海外使用的比较多&#xff0c;国内基本没人使用&#xff0c;hrform就是pdf&#xff0c;可以编辑pdf&#xff0c;这个国内相对使用的人 比…...

Express 中间件分类

一、 按功能用途分类 1. 应用级中间件 这类中间件应用于整个 Express 应用程序&#xff0c;会对每个进入应用的请求进行处理。通过 app.use() 方法挂载&#xff0c;可用于执行一些全局性的任务&#xff0c;像日志记录、请求预处理、设置响应头这类操作。 const express req…...

基于Multi-Runtime的云原生多态微服务:解耦基础设施与业务逻辑的革命性实践

引言&#xff1a;当微服务遭遇复杂性爆炸 在分布式系统复杂度指数级增长的今天&#xff0c;一线开发者平均需要处理27种不同的基础设施组件配置。CNCF最新研究报告指出&#xff0c;采用Multi-Runtime架构可减少83%的非功能性代码编写量&#xff0c;同时使分布式原语&#xff0…...

flutter isolate到底是啥

在 Flutter 中&#xff0c;Isolate 是一种实现多线程编程的机制&#xff0c;下面从概念、工作原理、使用场景、使用示例几个方面详细介绍&#xff1a; 概念 在 Dart 语言&#xff08;Flutter 开发使用的编程语言&#xff09;里&#xff0c;每个 Dart 程序至少运行在一个 Isol…...

Http connect timed out

客户向云端服务请求时&#xff0c;连接云端域名显示连接超时&#xff0c;为什么呢&#xff0c;偶尔会有。 java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketI…...

Flutter 异步编程利器:Future 与 Stream 深度解析

目录 一、Future&#xff1a;处理单次异步操作 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Future 3.2 使用 then 消费 Future 3.3 特性 二、Stream&#xff1a;处理连续异步事件流 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Stream 3.2 监听 Stream 3.…...

langchain实现的内部问答系统及本地化替代方案

主旨&#xff1a;问答系统搭建使用langchain要token&#xff0c;本文目的在于一、解析langchain调用过程&#xff0c;二、不使用langchain规避token&#xff0c;而使用本地化部署的方案方向。主要是本地向量化库的建立。 文章目录 主旨&#xff1a;问答系统搭建使用langchain要…...

“新旗手”三星Galaxy S25系列,再次定义了AI手机的进化方向

一年多前&#xff0c;三星Galaxy S24系列正式发布&#xff0c;作为首款由Galaxy AI赋能的AI手机&#xff0c;带来了即圈即搜、通话实时翻译、AI扩图等“神奇能力”。 彼时AI手机还是一个新物种&#xff0c;没有明确的产品定义&#xff0c;体验上也没有“标准答案”。三星Galax…...

JVM的类加载器

什么是类加载器&#xff1f; 类加载器&#xff1a;JVM只会运行二进制文件&#xff0c;类加载器的作用就是将字节码文件加载到JVM中&#xff0c;从而Java 程序能够启动起来。 类加载器有哪些&#xff1f; 启动类加载器(BootStrap ClassLoader):加载JAVA HOME/jre/lib目录下的库…...

Node.js中的模块化:从原理到实践

目录 一、为什么需要模块化&#xff1f; 二、Node.js模块类型解析 2.1 核心模块 2.2 文件模块 2.3 第三方模块 三、CommonJS规范深度解析 3.1 模块加载原理 3.2 模块缓存机制 3.3 循环依赖处理 四、ES Modules新特性 4.1 基本用法 4.2 与CommonJS的差异比较 五、模…...

LLM论文笔记 6: Training Compute-Optimal Large Language Models

Arxiv日期&#xff1a;2022.3.29机构&#xff1a;Google DeepMind 关键词 scaling lawpower law参数量FLOPStokes 核心结论 1. 当前大多数大语言模型&#xff08;如 GPT-3 和 Gopher&#xff09;在计算预算分配上存在问题&#xff0c;模型参数过大而训练数据不足 2. 计算预算…...

数仓:核心概念,数仓系统(ETL,数仓分层,数仓建模),数仓建模方法(星型模型,雪花模型,星座模型)和步骤

数仓建模的核心概念 事实表&#xff08;Fact Table&#xff09;&#xff1a; 存储业务过程的度量值&#xff08;如销售额、订单数量等&#xff09;。 通常包含外键&#xff0c;用于关联维度表。 维度表&#xff08;Dimension Table&#xff09;&#xff1a; 存储描述性信息&…...

markdown|mermaid|typora绘制流程图的连接线类型怎么修改?

1、使用typora绘制流程图。别人例子里面的连线是圆弧&#xff0c;我的画出来就是带折线的 这是卖家秀&#xff1a; 这是买家秀&#xff1a; 无语了有没有&#xff1f; 犹豫了片刻我决定一探究竟&#xff08;死磕&#xff09;。 Typora --> 文件 --> 偏好设置 --》 mar…...

理解WebGPU 中的 GPUDevice :与 GPU 交互的核心接口

在 WebGPU 开发中&#xff0c; GPUDevice 是一个至关重要的对象&#xff0c;它是与 GPU 进行交互的核心接口。通过 GPUDevice &#xff0c;开发者可以创建和管理 GPU 资源&#xff08;如缓冲区、纹理、管线等&#xff09;&#xff0c;并提交命令缓冲区以执行渲染和计算任…...

庞氏骗局(Ponzi Scheme):金融投资与公司经营中的隐形陷阱(中英双语)

庞氏骗局&#xff1a;金融投资与公司经营中的隐形陷阱 庞氏骗局&#xff08;Ponzi Scheme&#xff09;&#xff0c;这个词在金融史上屡见不鲜。从投资骗局到企业经营中的资本运作&#xff0c;庞氏骗局的核心逻辑始终如一&#xff1a;用后来的资金填补前面的缺口&#xff0c;营…...

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取用户token&#xff0c;使用jmeter压力测试 3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去3.6 批量删除生成的用户…...

前端调用串口通信

项目录结构 node项目 1&#xff09; 安装serialport npm install serialport 2&#xff09;编写index.js 1 const SerialPort require(serialport); 2 var senddata [0x02];//串口索要发送的数据源 3 var port new SerialPort(COM3);//连接串口COM3 4 port.on(open, fun…...

微信小程序请求大模型监听数据块onChunkReceived方法把数据解析成json

自己写的真是案例&#xff0c;onChunkReceived监听到的数据块发现监听到的内容不只是一个块&#xff0c;有时候会是多块&#xff0c;所以自己加了一个循环解析的过程&#xff0c;不知道大家监听到的数据情况是否一致。 在网上翻阅大量资料有的说引入js文件&#xff0c;亲测无效…...

SQL Server STUFF 函数的用法及应用场景

在 SQL Server 中&#xff0c;STUFF 函数是一种强大的字符串处理工具&#xff0c;常用于删除指定位置的字符并插入新的字符。通过这个函数&#xff0c;开发者能够灵活地修改字符串&#xff0c;从而在数据处理、字符串拼接和格式化等方面大显身手。本文将深入探讨 STUFF 函数的语…...

Qt使用CipherSqlite插件访问加密的sqllite数据库

1.下载 git clone https://github.com/devbean/QtCipherSqlitePlugin.git 2.编译CipherSqlite插件 使用qt打开QtCipherSqlitePlugin项目&#xff0c;并构建插件 ​ 3.将构建的插件复制到安装目录 ​ 4.使用DB Browser (SQLCipher)创建数据库并加密 ​ 5.qt使用Ciphe…...

美国哈美顿零件号A203560 HAMILTON 10µl 1701 N CTC (22S/3) A200S 203560

零件号a61092-01 hamilton ml600 电源 110-220 vac 61092-01 零件号a81322 hamilton 1001 tll 1ml 注射器带塞子 81322 零件号a61710-01 hamilton ml600 探头支架 管架 61710-01 零件号a61614-01 hamilton ml600 填充管 12 ga 1219mm 4.57ml 61614-01 零件号a61615-01 ham…...

深入理解 Rust 的迭代器:从基础到高级

1. 迭代器的基础概念 1.1 什么是迭代器&#xff1f; 迭代器是一种设计模式&#xff0c;允许我们逐个访问集合中的元素&#xff0c;而无需暴露集合的内部结构。在 Rust 中&#xff0c;迭代器通过实现 Iterator trait 来定义。该 trait 主要包含一个方法&#xff1a; pub trai…...

聊聊 IP 地址和端口号的区别

在计算机网络中&#xff0c;两个基本概念对于理解设备如何通过网络进行通信至关重要。IP 地址和端口号是 TCP/IP 的典型特征&#xff0c;其定义如下&#xff1a;IP 地址是分配给连接到网络的每台机器的唯一地址&#xff0c;用于定位机器并与其通信。相反&#xff0c;端口号用于…...

地图打包注意事项

地图打包 &#xff08;注意不能大写 后缀也不能&#xff09; 需要文件 objects_n 文件夹 &#xff08;内部大量png文件和plist文件&#xff09;.map.png 小地图tiles_n_n.plist 和tiles_n_n.png 文件sceneAtlasSplitConfigs合并.txt 文件放入 objects_n文件夹 内部(.png文件…...

代码随想录算法营Day38 | 62. 不同路径,63. 不同路径 II,343. 整数拆分,96. 不同的二叉搜索树

62. 不同路径 这题的限制是机器人在m x n的网格的左上角&#xff0c;每次只能向下走一格或者向右走一格。问到右下角有多少条不同路径。这个动态规划的初始状态是第一行和第一列的格子的值都是1&#xff0c;因为机器人只能向右走一格或者向下走一格&#xff0c;所以第一行和第…...

科普:数据仓库中的“指标”和“维度”

在数据仓库中&#xff0c;指标和维度是两个核心概念&#xff0c;它们对于数据分析和业务决策至关重要。以下是对这两个概念的分析及举例说明&#xff1a; 一、指标 定义&#xff1a; 指标是用于衡量业务绩效的关键数据点&#xff0c;通常用于监控、分析和优化企业的运营状况。…...

`Pinia` + `Formily` + `useTable` 实现搜索条件缓存方案

Pinia + Formily + useTable 实现搜索条件缓存方案 背景 在当前的应用体验中,每当用户刷新页面或退出系统时,之前的搜索条件就会消失不见。为了进一步提升工作效率并增强用户体验,希望能够实现这样一个功能:即使用户进行了页面刷新或是暂时离开了平台,再次返回时也能自动…...

Trader Joe‘s EDI 需求分析

Trader Joes成立于1967年&#xff0c;总部位于美国加利福尼亚州&#xff0c;是一家独特的零售商&#xff0c;专注于提供高质量且价格合理的食品。公司经营范围涵盖了各类杂货、冷冻食品、健康食品以及独特的本地特色商品。 EDI需求分析 电子数据交换&#xff08;EDI&#xff…...

【BUG】conda虚拟环境下,pip install安装直接到全局python目录中

问题描述 conda虚拟环境下&#xff0c;有的虚拟环境的python不能使用&#xff08;which python时直接使用全局路径下的python&#xff09;&#xff0c;且pip install也会安装到全局路径中&#xff0c;无法安装到conda虚拟环境中。 解决方案 查看虚拟环境的PIP缓存默认路径&…...

用Shader glsl实现一个简单的PBR光照模型

PBR模型定义了各种光照属性&#xff0c;如基础颜色、金属度、粗糙度等&#xff0c;就像给物体设定各种 “性格特点”。顶点着色器负责把顶点从模型空间转换到裁剪空间&#xff0c;同时计算一些用于光照计算的参数&#xff0c;就像给顶点 “搬家” 并准备好 “行李”。而片段着色…...

Linux系统使用ollama本地安装部署DeepSeekR1 + open-webui

Linux系统使用ollama本地安装部署DeepSeekR1 open-webui 1. 首先&#xff0c;下载安装ollama #下载安装脚本并执行 curl -fsSL https://ollama.com/install.sh | sh #安装完成后查看ollama版本 ollama --version2. 使用ollama下载deepseek #不同的参数规格对硬件有不同的要…...

学习星开源在线考试教育系统

学习星开源考试系统 项目介绍 项目概述&#xff1a; 学习星在线考试系统是一款基于Java和Vue.js构建的前后端分离的在线考试解决方案。它旨在为教育机构、企业和个人提供一个高效、便捷的在线测试平台&#xff0c;支持多种题型&#xff0c;包括但不限于单选题、多选题、判断…...

树莓派通过手机热点,无线连接PC端电脑,进行远程操作

树莓派通过手机热点实现无线连接具有以下几点优势&#xff1a; 1.该方式能够联网&#xff0c;方便在项目开发时下载一些数据包。 2.该方式能够通过手机端查看树莓派IP地址(有些情况树莓派ip地址会发生改变) 借鉴链接如下&#xff1a; 树莓派的使用网线及无线连接方法及手机…...

【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1&#xff1a;代码分析 4.2&#xff1a;流量分析 5.poc代码&#xff1a; 1.漏洞描述 漏洞编号&#xff1a;CVE-2022-35561 漏洞名称&#xff1a;Tenda W6 栈溢出漏洞 威胁等级&#xff1a;高危 漏洞详情&#xff1…...

Windows环境管理多个node版本

前言 在实际工作中&#xff0c;如果我们基于Windows系统开发&#xff0c;同时需要维护老项目&#xff0c;又要开发新项目&#xff0c;且不同项目依赖的node版本又不同时&#xff0c;那么就需要根据项目切换不同的版本。本文使用Node Version Manager&#xff08;nvm&#xff0…...

git 沙盒 下(二)

url &#xff1a;Learn Git Branching 高级git 多次Rebase 最开始我先把bugFix分支先rebase到main上&#xff0c;之后再把c7合并到c6 &#xff0c;之后就差合并为一个分支了&#xff0c;但是无论移动c7还是another分支都无法合并&#xff0c;都会在原地停留 后来根据提示最…...

基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现

基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系…...

vue-plugin-hiprint (vue2

页面效果 <template><div><div class"d-flex flex-column mt5"><div class"d-flex flex-row " style"margin-bottom: 10px;justify-content: center;"><!-- 纸张大小 A3、A4 等 --><div class"paper&quo…...