大模型驱动的新一代 BI 平台,Sugar BI 开启智慧决策新模式

本文整理自 2024 年 4 月 16 日的 2024 百度 Create 大会上的《大模型驱动的新一代 BI 平台如何开启智慧决策》分享。

全文包括了可视化 BI 分析技术架构、智能图表推荐策略与规则设计、Sugar Bot 智能问数的技术实现流程,以及目前的场景应用等。

1    Sugar BI 产品介绍

首先,为大家介绍Sugar BI近几年的发展路径:

Sugar BI 的前身是百度集团内部的报表平台 ShowX。在 2016 年覆盖了 300 多条产品线、运行几万张报表。ShowX 团队在支持内部业务的过程中不断打磨着产品、完善产品功能,获得了众多业务线及内部用户的好评。

2018 年,我们对 ShowX 做了完整的重构和升级,并将 ShowX 更名 Sugar BI, Sugar BI 在百度智能云以 SaaS 的形式对外提供服务。在 Sugar BI 上线的第一年,日活用户超过 1 w+ 。

在接下来几年时间里,我们陆续推出了 2.0 和 3.0 版本,不断提升 Sugar BI 的可视化图表数量以及支持的数据源数量,支持了更多的 BI 分析能力与第三方的集成能力,夯实了 BI 平台的各项功能,也获得了更多用户的认可。

从 2021 年开始,Sugar BI 开始探索智能分析方向,致力于打造领先的智能 BI 产品,不断将 AI 能力融合进自身产品中,希望利用 AI 能力来辅助用户数据分析。在 4.0 版本中, Sugar BI 推出了各项增强分析的功能,如自动分析、波动归因分析等。

在 2023 年以及今年,在大模型和生成式 AI 的浪潮下,在海量数据中快速发现规律、获取洞见,辅助经营决策,成为当前许多企业关注的重点。我们深度融合大模型的能力,推出了智能问数 Sugar Bot,使得需要数天才能完成的任务缩短至几分钟,大幅度提升了用户的数据分析效率。

 使用 Sugar BI,用户 5 分钟即可搭建专业的场景化 BI 分析页面。在 Sugar BI  平台上,只需添加数据源连接,基于数据表创建数据模型,通过鼠标点选拖拽可视化组件以及数据字段,即可快速地制作报表和大屏页面。在完成可视化页面的制作之后,可以发布并分享给其他用户,也可按需订阅,支持邮件、如流、飞书、企业微信、钉钉等多种推送方式。

Sugar BI  支持连接 30 多种数据源,包括了市面上几乎所有的场景数据库类型。支持连接的数据源包括关系型数据库如 MySQL、SQL Server、Oracle、PostgreSQL,还有国产的如达梦、人大金仓、华为 GaussDB 等。大数据方面 Sugar BI 支持如 Hive、Spark、Doris、Clickhouse、Presto 等。另外,Sugar BI 还支持对接一些 NoSQL 和时序数据库,例如 InfluxDB、Prometheus,以及 Redis、MongoDB 等。

当然,用户也可以上传 Excel/CSV 文件作为数据源,甚至可以手动填报录入数据,以及对接一些第三方的 API 接口。在开发调试的时候,还可以使用静态 JSON 的方式来快速搭建可视化的 Demo 效果。

最后,如果您的数据库在局域网,那么您的数据库不需要绑定公网 IP,只需要有一台能访问互联网的机器,并在机器上安装 Sugar BI 官方提供的内网隧道客户端,即可将数据库对接到 Sugar BI 进行可视化分析。并且 Sugar BI  还支持同源异库以及跨多数据源的数据交叉分析。

 Sugar BI 基于百度开源的 Echarts 以及 D3 图表库,支持 150 多种可视化组件。同时内置多种主题风格,用户只需要简单的配置就能搭建出美观实用的可视化页面。

除了常见的二维图表,Sugar BI 也支持了三维图表以及一些 3D 地图类组件、媒体组件、三维场景等,能让您的可视化效果更进一步。

同时,Sugar BI 在易用性上也满足各类人员角色的需求。在报表页面开发时,Sugar BI 采用完全零代码、拖拽式操作,通过鼠标点选、拖拽组件就能完成可视化页面的设计和制作。每个图表组件都拥有非常完整和丰富的配置,用户以零代码的方式即可获得精美、酷炫的的数据可视化页面。

用户在 PC 上搭建好报表页面后,Sugar BI 页面的布局也会自动优化适配移动端。

这一切都不需要用户书写任何的代码和 SQL 语句,只要你懂数据、懂业务,就能完成对数据的快速可视化分析。

 上面介绍了 Sugar BI报表搭建相关内容,数据可视化同样也离不开可视化大屏。Sugar BI 内置了 60 多套专业设计的可视化大屏模板,涵盖了政务、教育、零售、金融、制造等垂直行业,能够满足大部分场景下用户的可视化需求。

并且 Sugar BI 的可视化大屏模板覆盖了 PC 和移动端两种不同的终端,用户基于模板,只需要对接自己的业务数据、并稍作修改,即可拥有炫酷的可视化大屏,真正做到开箱即用。

2    可视化 BI 分析技术

在 Sugar BI 定位于具有 AI 特色的可视化 BI 分析平台。为此,后续的工作我们着重突出了 Sugar BI 的三个能力:AI、BI、可视化。

下图是 Sugar BI 的整体架构图,我们将 AI、BI、可视化三大能力进行融合,使用容器化技术进行打包和部署。今天将为大家重点分享并剖析 Sugar BI 的 BI 与 AI 能力。

  • BI 能力:Sugar BI 基于数据模型构建了各种交互式分析,搭配交叉、留存、二次表计算等 BI 能力,适配对接用户的各种数据源。

  • AI 能力:Sugar BI 团队基于大模型进行了全新的尝试探索,推出了 Sugar Bot 智能问数模块,将 LUI 和 GUI 结合,给用户带来全新的 BI 体验。Sugar Bot 的底层采用百度文心系列大模型,依托千帆大模型平台进行开发。

下面,我将分别给大家详细介绍Sugar BI的 BI 和 AI 能力。首先,为大家介绍 Sugar BI 的 BI 能力,如下图所示:

  • 数据源:前面我们说过 Sugar BI 支持对接丰富的数据源种类,一共超过 30 种数据源,支持了达梦、人大金仓、华为 GaussDB 等国产数据库。

  • 数据模型:Sugar BI 可以进行单表、多表 Join,支持视图以及用户自定义的 SQL 视图,并且对字段进行自动的维度和度量的划分。

  • BI 引擎:在数据的交互性方面,Sugar BI 支持筛选、下钻、联动等;同时,在数据计算方面,Sugar BI 支持了在 SQL 查询中就能实现的计算字段或分桶分组。

  • 计算引擎:Sugar BI 也支持数据查询完之后的二次表计算,甚至支持了特定场景下的一些特殊的计算,如留存分析、交叉透视、监控预警计算等,满足您在不同场景下各类数据计算的需求。

  • 另外,在跨越多数据源的联邦查询场景中,Sugar BI 利用开源 Presto 的能力,自己搭建和运维了 Presto 集群,让用户可以跨数据库的多表 Join 查询分析。

下面我将从数据模型、交互分析方面,进一步介绍 Sugar 的 BI 能力。

Sugar BI 的数据模型,是基于数据库中的数据表进行语义话表达,将多表之间的Join 关系进行描述,并且能够自动帮助用户将字段进行维度、度量的区分,而且还可以建立一些虚拟的计算字段。这个过程中不需要用户懂 SQL,Sugar BI 平台能够自动地适配不同数据库之间的 SQL 方言。

例如:一个简单的 Demo,拖拽数据模型中几个字段到图表上进行绑定,最终生成的 SQL 查询语句可参考下图,本质上是实现了对两张表的 Join 的简单操作。

懂技术的同学,可能也了解到数据模型它应该就是一个雪花模型。那什么是雪花模型呢,其实这个模型是从形状上和雪花非常相似,所以才叫雪花模型。

比如,大家可以参考下图,下图的模型有 7 张表 Join 组成,table2 到 7 都是围绕在 table1 周围的多张表,多张表形成了一个分叉的树形结构。在数据进行查询和提取时,我们采用了一个算法,叫做最近共同祖先寻找,如果查询的字段来自同一个表,那本次查询不需要 Join 多张表,只需要单表查询即可。

如果查询字段是 field3 和 field6,我们需要 Join 的表是 table1、table2 和 table3。同理如果是 field3 和 field13,我们需要 Join 的表是 table1、table2、table3、table7 这 4 张表。如果是 field7 和 field13,那我们就需要 Join 表 1、2、3、4、7 这 5 张表了,以此类推。

下面为大家继续介绍 BI 的交互式分析。

Sugar BI 支持两种过滤组件模型,第一种是页面整体的过滤组件,第二种是单个图表的过滤组件,二者的的原理都是一样的。在用户进行数据筛选时,最终影响的是图表数据查询时的 SQL 语句,用户在进行数据筛选的整个过程相当于在 SQL 中增加了 Where 的筛选子句。

除了数据过滤组件,Sugar BI也支持图表联动和下钻交互。图表联动和数据过滤组件非常类似,下图左侧的图表 A 就可以当成右边图表 B 的一个过滤组件,只不过在交互和配置上稍有不同而已,最终还是一样影响的右边图表 SQL 语句中的 where 子句。

图表下钻也是同样的原理。图表下钻是图表联动的进阶版本,它是在图表 A 发生点击等交互行为时才弹出呈现出来,或者在覆盖掉图表 A 上进行的展示。

以上就是 Sugar BI 关于 BI 能力的相关介绍。

3    智能图表推荐

下面将为大家详细介绍 Sugar BI 智能图表推荐,这部分也是智能问数 Sugar Bot 的可视化基础。正因为有了它,我们才能基于大模型进行智能化的探索。

3.1    智能图表推荐

智能图表到底是什么呢?下面我们将通过 Demo 视频展示智能图表的能力。

首先拖拽了「地区」字段,图表使用表格的组件展示了所有的地区名称。随后我们拖拽了「销售量」的度量字段,这时图表自动切换为饼图,展示了各个地区的销售量情况。紧接着我们拖入了「销售额」字段,这使得图表变成了折线图展示了这些数据。

然后我们删除了「地区」字段,图表切换成了指标卡片,直接用数字卡的形式呈现了「销售量」和「销售额」,这时我们接着删除「销售额」并且拖入「省份」这个维度字段,图表一下子变成了中国地图,用颜色的方式呈现了各个省的销售量数据,

最后,我们给「销售量」设置了降序的排序方式,图表自动切到排行榜,从大到小用排行的形式进行数据的呈现。

所以,智能图表就是具备了根据数据自动推荐最合适的可视化类型的能力。

3.2    智能图表的技术实现流程

Sugar BI 智能图表技术实现的大体流程,可参考下图:

  • 步骤一:我们对平台中每种图表都抽象了各自的图表特征,用户在拖拽字段以及配置字段各种属性的时候,这些字段也相当于有了一些具体的特征。

  • 步骤二:把这图表的各个特征作为「输入」,图表推荐模块会对这些类特征进行匹配和计算,「输出」最终的图表特列优先级列表,以及字段在图表上的字段放置策略。

  • 步骤三:在匹配的过程中,还需要能够高优先级的兼容用户的指定内容,例如用户指定高优使用饼图进行呈现,那么就需要高优使用饼图,只有在数据没法使用饼图呈现时,才推荐其他类型的图表。

3.3    图表特征设计

每个图表都可以有多个特征,而且同一个图表可能会存在一些稍微不同的特性(例如折线和柱图的混搭)。如下方右侧图,为我们列举了图表特征的详细描述,特征核心其实就是描述一种图表如何绑定数据字段,例如图表可以绑定几个维度字段、几个度量字段,是不是必须要有维度字段,度量字段有数据单位时是否高优使用某种图表类型等等。我们把这些特性进行泛化,从而形成特征配置。

3.4    推荐策略

有了图表特征,我们还需要设计一套推荐的策略打分机制。在用户进行字段拖入时,保证最合适的图表能够获得最高的评分,然后按照评分进行排序,为用户推荐图表。

我们对评分设置了两种类型的规则,分别是强制规则、和可选规则。强制规则是每一项都是要被满足,可选规则是这种图表在某种情况下的加分项。

  • 强制规则只要有一项不满足,那就是 0 分,所以多个强制规则之间我们采用相乘的方式进行积分。

  • 可选规则之间使用相加的方式,最终得分是强制规则 * 可选规则,这也能保证强制规则只要一项没被满足,最终得分就是 0 。

 在强制规则和可选规则中,强制规则要求必须被满足,例如折线图的 X 轴必须要绑定一个维度字段,Y 轴起码要绑定一个度量字段,这就是折线图的强制规则。

可选规则是加分项,例如度量字段设置了排序的时候优先使用排行榜,又例如维度字段是日期类型的时候,可能使用折线图来展示趋势会比较好,这些就都是各种图表的加分项特征。

当然,前面我们也提到过,在特定场景中,用户可能会指定高优的图表类型,下面我们讲述的智能问数 Sugar Bot 其中的场景之一。

4    Sugar Bot 智能问数

4.1    Sugar Bot 介绍

智能问数目前究竟能做什么、能达到怎样的效果,下面我们将通过电商场景的订单数据模型 Demo 视频,展示智能图表的能力

大家通过上面的 Demo 可以清晰地看到,我们可以直接和 Sugar Bot 进行对话式的交互,让 Sugar Bot 帮我们对数据进行查询分析以及可视化呈现。同时,在对话交互的过程中,用户还可以针对 Sugar Bot 呈现的结果进行二次修改,用户不仅可以直观地了解到所有查询的维度、度量以及筛选字段,还可以查看具体的 SQL 语句。另外,利用大模型的能力,Sugar Bot 还可以对数据做总结归纳,帮助用户更好地理解和挖掘数据价值,支撑用户做出智慧的决策。

Sugar Bot 除了 LUI+GUI 形式的交互式问数之外,它还能作为 Copilot 辅助用户制作报表和可视化大屏。

我们继续看下一个 Demo 演示。

Sugar Bot Copilot 辅助报表:大屏制作

在报表/大屏的编辑时,Sugar Bot 支持了 Copilot 模式,通过问答得到的可视化图表可以快速「添加」到报表页面中,例如:演示中我们添加了 Copilot 中三个图表,同时数据分析结论也可以添加到报表中。不仅如此,添加到报表中的元素,我们还可以继续进行二次编辑,例如调整大小和更改数据绑定配置等等。最后,我们进行保存和退出,一份 report 报表就制作完成了。

目前 Copilot 还只具备添加图表的能力,对于图表的配置修改,例如大小、配色、各种下钻联动配置等等,后面在 Copliot 都可以实现,这些功能也都已经在开发中,请大家敬请期待。

4.2    整体架构

下面将为大家详细介绍 Sugar Bot 智能问数的技术实现部分。下图是 Sugar Bot 整体的架构,从用户的自然语言输入到最终的可视化结果呈现,主要有四个步骤。实现这一切的基石是前面介绍的 BI 数据模型。

  • 提示词工程(也就是大家常说的 Prompt Engineering )。

  • NL2JSON:我们利用大模型做的 NL2JSON 提取(此处的 JSON 是指 SQL 语句的一种结构化表达)。

  • 干预纠偏:对 JSON 结果做了一些干预纠偏(这一步主要是纠正大模型的一些幻觉和胡说八道的问题)。

  • 智能图表:最后一步就是我们在上一个章节介绍的智能图表,智能图表主要根据数据来为用户自动修改、推荐合适的可视化展现形式。

我们让大模型对用户的输入进行理解,提取用户需要查询的维度、度量,以及需要对数据做怎样的筛选、排序等,然后 Sugar Bot 利用既有的 BI 能力,基于数据模型来生成最终的 SQL 语句,最后对接智能图表的能力进行可视化的呈现。这其中,其实最重要的是提示词工程,下面为大家进一步介绍 Sugar Bot 提示词的相关内容。

4.3    提示词工程

Sugar Bot 的核心提示词包括以下六个部分:

  • 字段 Schema 信息;

  • 示例数据;

  • 输出格式说明;

  • 注意事项(包括用户可以录入私域知识,以及告诉大模型当前的时间);

  • 构造一些 few-shot 示例;

  • 用户输入的问题 query。

 下面为大家展示一个具体的 prompt 格式:

  • prompt 前两行说明有哪些维度、度量字段,紧接着是维度的字段的几行简单示例数据,使用的 markdown 格式。

  • 第 10、11 行是告诉大模型需要输出 JSON 格式的结果,并且详细描述了 JSON 的具体格式,例如维度、度量字段以及 filters 筛选是如何使用 JSON 来表示的。

  • 第 13 行到 15 行是注意事项,这块嵌入的是用户在数据模型上录入的私域知识,以及当前时间。我们知道大模型是不知道当前的准确时间的,所以我们需要在 prompt 中告诉它,这样用户在问「上个月」这样的筛选操作时,大模型才能知道要如何筛选具体的日期时间

  • 再后面就是非常重要的 few-shot 部分,我们给大模型列举了一些例子,告诉它一些问题的正确答案是什么,大模型具备非常强大的 contextlearning 上下文即时学习能力,最后才能用户输入的 query,大模型就能利用这个完整的 prompt,最终输出用户想要的查询的 JSON 格式。

可以看到,下图的 prompt 还是比较复杂的。在真实场景中,用户的 query 可能只有一句话,十几个字,但是我们通过提示词工程之后提交给大模型的 prompt 可能就会有上千个 token。

 在 Sugar BI 中, prompt  中的每个部分都是通过统一的配置来完成的,有些是通过 BI 的既有能力,有些是针对 Sugar Bot 单独开发。下面会为大家逐一介绍我们为  Sugar Bot  单独做了哪些工作。

4.3.1    Schema 信息处理

首先是维度、度量字段。Sugar Bot 智能问数是基于 BI 的数据模型,Sugar BI 的数据模型可以设置每个数据字段的别名,这样可以将数据表的英文字段名映射为语义化中文,甚至是某个垂直领域的专有名词。

另外数据模型中也可以添加虚拟的计算字段,例如:利润 = 销售额 - 成本, 这样问利润的时候就能很大程度上降低大模型的理解难度。 

 最后我们还可以给某些字段做一些特殊的属性配置,例如设置地理字段,这样在可视化呈现的时候就能优先使用地图进行展示。

 4.3.2    few-shot

Sugar Bot 中设计了两种 few-shot 的自动生成方式:

  • 首先是开箱即用的,冷启动方式,我们通过一定的规则来自动生成一些难易程度不等的 few-shot 示例,例如最简单的维度/度量查询「帮我查一下各个城市的销售额有多少?」, 再难一点的日期筛选例如「上个月的利润情况如何?」等等,然后在复杂数据筛选加上时间聚合如「华北地区23年 Q4,每个月销售情况怎么样?」,最后也可以加一些排序类型的如「上个月全国利润排名前20的城市是哪些?」。这些都是比较常用的用户问题,作为 few-shot 放到 prompt 中能很大程度帮助大模型理解当前要做的任务。

  • 第二种 few-shot 就比较高级一些,它能够让整个系统越用越聪明,效果越用越好。Sugar BI 中支持了用户的点赞、点踩反馈,利用这些历史的点赞 query,通过向量化处理,Sugar BI 可以匹配到与用户当前 query 比较近似的点赞 query,把这些点赞 query 作为 few-shot 传递给大模型,将会得到更好的效果。并且利用这些点赞的 query,对大模型做 SFT 精调,达成了一个完整的数据飞轮,整套系统将达到一个正向的循环效果。

4.3.3    私域知识

在私域知识方面,Sugar BI 在数据模型上允许用户录入一些垂直领域的行业知识,帮助大模型进行理解,达到更好的效果。

4.3.4    图表类型指定

最后,利用大模型的 function call,Sugar Bot 智能问数可以优先考虑用户在 query 中指定的可视化图表方式,并且支持用户在界面进行图表类型的二次切换,灵活更换图表。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】路漫漫其修远兮,深入[指针]正当下

一. 指针初步 1.概念定义 地址:我们在内存中开辟空间时,为了方便后续访问,每个数据有确切的地址。 指针:指向数据的地址,并将其地址储存在指针变量中。 2.基本运算符 • 取地址操作符(&) …

OpenHarmony 4.0 实战开发——分布式软总线解析:设备发现与传输

OpenHarmony 的分布式软总线子系统为 OpenHarmony 系统提供的通信相关的能力,包括:WLAN 服务能力、蓝牙服务能力、软总线、进程间通信 RPC(Remote Procedure Call)等通信能力。 其中主要包括: WLAN 服务:…

【Java开发的我出书啦,各位同仁快过来围观】!!!

文章目录 🔊博主介绍🥤本文内容出书的目的出书的过程书籍的内容 📥博主的话 🔊博主介绍 文章目录 🔊博主介绍🥤本文内容出书的目的出书的过程书籍的内容 📥博主的话 🌾阅读前&#x…

机器学习 | 时间序列预测中的AR模型及应用

自回归模型,通常缩写为AR模型,是时间序列分析和预测中的一个基本概念。它们在金融、经济、气候科学等各个领域都有广泛的应用。在本文中,我们将探索自回归模型,它们如何工作,它们的类型和实际例子。 自回归模型 自回…

Elasticsearch中的三种分页策略深度解析:原理、使用及对比

码到三十五 : 个人主页 在Elasticsearch中,分页是查询操作中不可或缺的一部分。随着数据量的增长,如何高效地分页查询数据急需需要面对的问题。Elasticsearch提供了三种主要的分页方式:from size、scroll和search_after。下面详细…

ICode国际青少年编程竞赛- Python-2级训练场-基础训练4

ICode国际青少年编程竞赛- Python-2级训练场-基础训练4 1、 for i in range(4):if i > 2:Flyer[i].step(3)else:Flyer[i].step(1) Dev.step(Item[3].x - Dev.x)2、 for i in range(6):if i < 3:Flyer[i].step(2)else:Flyer[i].step(3) Dev.step(Item[2].x - Dev.x)3、 …

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中&#xff0c;晶圆厂建设热潮正在美国兴起&#xff0c;这一波建设浪潮的核心动力之一&#xff0c;便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴&#xff0c;旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

翻译《The Old New Thing》 - The new scratch program

The new scratch program - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050422-08/?p35813 Raymond Chen 2005年4月22日 译注&#xff1a;此篇是 翻译《The Old New Thing》 - The scratch program 姊妹篇&#xff0c;对 scratch 程序作…

普通人副业要趁早,5种靠谱且持久的赚钱副业

中年危机、35岁被裁&#xff0c;这些听起来就让人焦虑的词汇&#xff0c;是否也让你感到不安&#xff1f;别担心&#xff0c;只要你早早开启副业之旅&#xff0c;这些都不是问题。 今天&#xff0c;我要为你介绍的这5种副业&#xff0c;不仅能帮你赚钱&#xff0c;还能让你的能…

前端高频面试题 5.08

事件委托 事件委托是前端开发中常用的一种优化性能和代码可维护性的方法&#xff0c;它基于DOM的事件冒泡机制。当一个元素触发事件时&#xff0c;这个事件会按照从顶层到底层的顺序传播&#xff0c;直到最底层的元素&#xff08;通常是文档的根节点&#xff09;。事件委托利用…

张大哥笔记:如果不想继续打工,互联网创业或许是最好的出路!

互联网时代最好的出路&#xff0c;就是选择创业&#xff0c;不要选择打工。选择打工很亏&#xff0c;你学到的是打工的本事。而创业&#xff0c;看似不赚钱&#xff0c;看似倒霉&#xff0c;但是会锻炼出了你一天赚几千&#xff0c;甚至几万的本事。 随着互联网越来越被人们所…

Educational Codeforces Round 165 (Div. 2) A~E

A.Two Friends (思维) 题意&#xff1a; 小 A A A想开一个派对。他有 n n n个朋友&#xff0c;他希望至少有 2 2 2个朋友参加他的派对。 i i i 这个朋友最好的朋友是 p i p_i pi​ 。所有的 p i p_i pi​ 都是不同的&#xff0c;对于每一个 i ∈ [ 1 , n ] i \in [1, n] …

C++之泛型编程---有限双端队列结构容器

引言 为了解决工业领域代码容器的通用化&#xff0c;可以考虑C里的泛型编程概念。假设一个场景需要实时保存最近的n个数据并按照顺序依次处理时&#xff0c;就需要定义一种新的容器来满足要求。当容器不满时&#xff0c;添加数据直接到队尾&#xff0c;当容器数据已经为n个时&a…

毕设UI设计不会前端怎么办?今天看到了一款自动生成UI的项目-OpenUI

试用地址&#xff1a;Create a new Elemint (openui.fly.dev) OpenUI 是由 W&B 开发开源项目&#xff0c;旨在简化用户界面(UI)组件的构建过程。它通过允许开发者使用想象力描述 UI&#xff0c;然后实时看到渲染效果&#xff0c;使得 UI 开发变得有趣、快速且灵活。 这个…

CSS-盒子模型元素溢出

作用&#xff1a;控制溢出的元素的内容的显示方式 属性&#xff1a;overflow 属性值 属性值效果hidden溢出隐藏scroll溢出滚动&#xff08;无论是否溢出&#xff0c;都显示滚动条位置&#xff09;auto溢出滚动&#xff08;溢出才显示滚动条位置&#xff09; <!DOCTYPE html&…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

Pytorch学习笔记——卷积操作

一、认识卷积操作 卷积操作是一种数学运算&#xff0c;它涉及两个函数&#xff1a;输入函数&#xff08;通常是图像&#xff09;和卷积核&#xff08;也称为滤波器或特征检测器&#xff09;。卷积核在输入函数上滑动&#xff0c;将核中的每个元素与其覆盖的输入函数区域中的对应…

华为数据之道第四部分导读

目录 导读 第四部分 第10章 未来已来&#xff1a;数据成为企业核心竞争力 数据&#xff1a;新的生产要素 数据被列为生产要素&#xff1a;制度层面的肯定 数据将进入企业的资产负债表 数据资产的价值由市场决定 大规模数据交互的企业数据生态 数据生态离不开底层技术的…

618大促买什么数码好物最划算?必囤不后悔好物清单来了!

随着年度618购物盛宴的临近&#xff0c;作为数码领域的资深狂热者&#xff0c;满怀激情与憧憬为大家精心挑选了一系列令人瞩目的数码产品。无论你是热衷于追逐最新科技潮流的先锋&#xff0c;还是期望通过数码设备提升生活品质的优雅用户&#xff0c;这里都定有一款能触动你内心…

(动画详解)LeetCode20.有效的括号

题目描述 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 解题思路 栈的方法 遍历整个字符串 当检测到左括号的时候&#xff0c;就让左括号入栈 当检测到右括号的时候&#xff0c;就让左括号出栈与右括号对比 如果相等则继续比较直到结束&#xff0c;如果不相等…