前端可观测性系统建设

news2024/11/23 9:59:14

一.  背景

随着前端业务的日趋庞大,及时发现和解决业务中的问题、优化用户体验、实时监控业务健康度变得愈发重要。在业务层面,我们希望能够监控每次发布版本后,核心功能是否有显著提升或至少没有负面影响,核心接口是否正常运作,页面跳失率是否有明显增加。而在技术层面,我们希望能够日常监控首屏加载时间,确保页面没有因为发布版本、运营配置、活动结束、库存不足等因素而出现错误。最后,我们还希望能够帮助业务方分析用户在前端页面的常规操作,如点击、交互、跳转等,以发现提升核心功能指标的突破口。

因此,一个能够观测业务的系统是不可或缺的。这个系统实现了数据埋点上报、看板自动搭建和数据监控的可观测性链路闭环,并具有以下重要作用:

  • 问题排查和故障修复:业务可观测性可以实时监控页面报错数量变化、报错位置等,方便快速定位问题并修复

  • 性能实时监控:业务可观测性可以通过监控前端业务的性能指标,如:首屏加载时间、核心接口请求时间,以及一些自定义生命周期消耗时间来了解用户在使用过程中的体验。通过这些指标,可以发现页面的性能瓶颈,并有针对性地优化,提升用户体验、增加用户黏性的同时,提升业务核心功能的转化率

  • 业务核心功能数据支持和决策参考:通过分析页面核心功能点的点击等,为业务决策提供支持、参考,如产品迭代、功能优化前后,核心功能指标是否有改善

  • 用户行为分析:通过分析用户在前端页面的常规操作,如点击、交互、跳转等行为进行分析,可视化地展现用户的使用习惯、偏好和需求,给业务决策提供支持。通过分析用户留存、页面跳失率等指标,给业务迭代提供参考

二. 设计实现

2.1 当前痛点

当前埋点和看板主要问题:

  • 不统一:团队内项目使用过的埋点脚本3,4种,不统一,不维护,上报的数据到不同的数据集难处理

  • 不处理:很多项目只埋点,不查看,问题全靠客服反馈

  • 可视化差:很多项目开发自己写sql或者依赖北极星,缺少项目之间对比和总体概览

  • 监控弱:不方便随时监控自己的项目状况

2.2 痛点解决

2.2.1 解决痛点不统一:统一埋点上报sdk

当前团队内埋点上报痛点包括:

  • 上报脚本种类多,可用性差:当前团队内使用了meta-report, log-report, live-web-track等多种上报脚本,不同的脚本使用中有差异。部分脚本已经停止迭代或者很少迭代了

  • 上报到不同的位置:即使使用同一个上报脚本,也有上报到不同的数据表的情况,导致对数据的统一处理、数据看板的建设都很难维护

  • 脚本能力欠缺:对于一些大多数业务都用得上的通用数据上报,很多脚本能力欠缺,需要业务方自己去写复杂的代码上报监控,门槛较高

为了解决这些问题,我们的团队计划开发一个基于live-web-track的埋点公共包。这个公共包的目标是统一上报脚本和数据表位置,并提供一系列通用的数据上报功能,如无交互跳出、页面停留时长等上报功能。通过这个公共包,我们希望能够统一埋点数据上报方式,供统一的数据看板消费,实现业务的可观测性。这样一来,我们可以更好地监控和分析业务数据,为业务决策和增长提供更可靠的支持。

埋点公共包分为两部分。首先是埋点核心组件,基于live-web-track,提供了初始化项目基本参数、无交互跳出上报、页面停留时间等能力。同时,还提供了自定义埋点上报和曝光点击的指令上报等方法,以供业务方使用。其次是常用组件,可根据需要进行接入。其中包括图片组件和HTTP请求组件。图片组件会自动对图片进行压缩、转换为WebP格式,并进行懒加载等常规优化。同时,它还会拦截图片加载失败的情况,并自动上报错误埋点,供错误监控平台进行监测。HTTP请求组件会拦截请求,根据传入的标记tag来判断接口是否为核心接口,并上报核心接口的请求次数。同时,它还会拦截接口请求成功和失败的情况,并上报成功次数和请求消耗的时间。对于错误请求,它会自动上报到错误监控平台。

sdk设计如下图:

图片

2.2.2 解决痛点不处理:自动创建业务核心大盘、健康度大盘

通过引入这个埋点公共包,我们将能够提供统一的上报脚本和数据表位置,同时提供通用的数据上报功能,帮助业务方解决不处理的问题。上报的数据会自动创建看板,业务方无需手动操作,就可以看到核心数据看板、健康度看板等。

2.2.3 解决痛点可视化差:统一看板

当前业务监控数据主要有两种方式:

  1. 在观远平台通过自行编写SQL语句进行数据查询和建立看板。

  2. 使用北极星平台进行数据可视化和看板搭建。

然而,观远方式存在一些痛点需要解决:

  • 学习门槛较高:编写复杂的SQL查询语句对于不熟悉sql语句的人员来说是个挑战。

  • 实时性差:数据查询需要耗费时间,业务方可能无法及时获取最新的数据,难以满足日常监测需求。

  • 默认看板效果局限:观远提供的默认图表样式和统计方式有一定限制,对于复杂的数据分析和看板搭建需要具备一定的技术能力。

另一方面,北极星平台虽然不需要编写SQL语句,易于上手,但也存在一些痛点:

  • 不支持部分常用公式:例如H5端的平均数、P90等计算方式,以及常规的四则运算也有一定限制。

  • 看板效果局限:对于单一埋点的监控,北极星平台表现良好。然而,对于普遍指标的对比分析,业务方需要自己搭建专属看板,导致不同业务之间出现重复工作的情况。

因此,为了满足业务的日常监控需求,我们计划在观远测中建立统一维护的业务可观测性看板。这样一来,可以解决上述问题,降低技术门槛,提高数据查询的实时性,并提供更灵活、专业的数据可视化和统计分析功能,帮助业务方更好地理解和优化业务,实现数据驱动的决策和增长。

图片

如图所示,整体架构主要分为4个部分,它们各自扮演着重要的角色:

  • 健康度大盘:这个部分负责评估业务的健康状况。通过核心转化率、页面跳失率、FMP(首次有意义绘制时间)、JS异常率、核心接口成功率以及核心接口耗时等6个维度,对页面的整体健康度进行评估和统计。通过对这些关键指标的平均值计算,可以快速了解业务的整体健康状态。

  • 业务核心大盘:这个部分主要分为通用看板和自定义指标看板。通用看板涵盖了所有业务都需要关注的核心指标,包括核心接口成功率、核心接口请求耗时、JS异常、UV/PV、FMP 90分位、页面无交互跳出率、页面停留时长以及核心功能转化率等。而自定义看板则允许业务方根据自身需求,额外关注一些埋点指标,从而深入了解业务的特定指标。

  • 错误监控平台:这个部分建立在观远的ARM上报平台之上。它能够收集业务自动上报的资源报错、JS报错和未捕获报错,以及业务主动上报的自定义报错。这样可以实时监控和分析业务中出现的错误,帮助及时发现和解决问题,提升系统的稳定性和用户体验。

  • 可视化看板:这个部分主要将用户行为进行分析,并进行可视化展示。通过对用户的点击、交互、留存、跳转等行为进行分析,可以更好地了解用户的行为模式和趋势。例如,通过点击热力图可以看到用户在页面上的热门点击区域;通过流量链路桑基图可以了解用户在不同页面之间的跳转路径;通过留存分析看板可以追踪用户的留存情况。这些可视化分析结果可以帮助业务方做出更加明智的决策,优化业务流程,实现数据驱动的增长。

建立统一维护的可观测性看板,不仅可以满足业务的日常监控需求,还提供更灵活、专业的数据可视化和统计分析功能,帮助业务方解决数据可视化差的痛点,帮助业务方优化业务和实现数据驱动的决策和增长。

2.2.4 解决痛点监控弱:接入dejavu平台,发版前后监控项目健康状况

将健康度、可视化看板等接入dejavu,与dejavu的能力共建,实时关注项目健康状况

图片

三. 落地成果

3.1 可观性系统统一

目前已经推广使用的业务做到了三个统一:

  1. 统一埋点上报方式

  2. 统一埋点上报数据集

  3. 统一数据看板

3.2 广泛推广

前端可观测性建设在建设初期就引起了各个业务的特别关注,已经成功接入埋点sdk并上线了140个页面,主要功能有:

  1. 常规埋点系统统一:我们已经有140个页面使用我们的埋点公共包进行埋点上报,并通过业务数据大盘看板监测页面的核心指标以及自定义指标的观测。

  2. 页面健康度检测:目前有81个页面接入了页面健康度大盘。截至2023年结束,所有业务的整体健康度平均分达到了87分,其中80分以上的页面占比达到了56%。

  3. 可视化看板接入:其他可视化看板各个业务已经开始逐步接入。其中热力图看板在2023年已经应用于创作中心的任务中心等业务,并受到了合作方的高度赞扬。目前热力图看板已经推广到了其他团队业务。

  4. 核心业务治理:创作灵感页面首屏时间降低33.3%,前端异常率降低了 12PP,页面跳失率降低了 4.03PP,核心转化率提高了 2.03PP,创作中心荣誉周报前端异常率降低了 2.27PP,页面跳失率降低了 8.61PP,核心转化率提高了 0.72PP,Web投稿异常治理,解决了8个异常问题,优化了2个网络延迟场景下影响用户投稿体验的问题等

3.3 共建

2023年年底与前端基础技术组共建,将可视化看板热力图、健康度等接入dejavu平台,将接入的业务方进一步扩大的同时,让业务方可以在发版前后监控项目健康状况。

3.4 专利申请

申请号:CN202311033775.4

四. 看板设计

可视化看板设计是可观测性系统中十分重要的部分。可视化看板不仅可以展示项目核心数据(PV、UV、FMP等)、健康度状况、核心错误看板,还可以用于对用户行为进行深入分析和可视化展示。它能够帮助我们了解用户的点击、交互、留存、跳转等行为,并将这些行为以直观的方式呈现出来。

  1. 业务核心看板分为通用看板和自定义指标看板,不仅可以反馈所有业务都在关注的数据指标,还可以允许业务方根据自己的需求设置额外关注的埋点指标

  2. 健康度大盘可以一览所有业务的健康度状况,也可以查看单一业务健康度的明细以及不健康的原因和改进建议

  3. 监控错误看板可以实时查询业务的js报错、资源报错的等信息,帮助业务第一时间定位问题并做出修改

  4. 点击热力图能够展示用户在页面上的点击热度分布,通过不同颜色的热点来表示点击的频率和位置。这有助于我们识别用户感兴趣的区域和热门功能,从而优化页面设计和用户体验

  5. 流量链路桑基图则展示了用户在网站或应用内的流程路径,以及每个路径上的转化率和转化数量。通过这个图表,我们可以清晰地了解用户从入口到目标页面的转化过程,找到潜在的流失点,并优化用户转化率

  6. 留存分析看板则用于跟踪用户的留存情况,即用户在不同时间段内的持续使用情况。通过这个看板,我们可以直观地了解用户的留存率和用户群的活跃度,从而为产品运营和推广提供数据支持和决策依据。

  7. 通过以上可视化看板,我们能够更好地理解用户行为、优化产品设计和用户体验,并实现数据驱动的决策和增长。

4.1 业务核心大盘

我们的业务核心大盘分为两个部分:通用看板和自定义指标看板。通用看板包括一些所有业务都需要关注的核心指标,如核心接口的成功率、核心接口请求的耗时、JavaScript异常、用户访问量和页面加载的90分位时间、页面的无交互跳出率、用户在页面停留的时长以及核心功能的转化率等。这些指标能够全面反映业务的关键性能和用户行为情况。而自定义看板则允许业务方根据自己的需求设置额外关注的埋点指标。可以通过JSON配置来定义每个页面所展示的埋点数据和计算公式。这样,业务方可以根据自身情况定制化展示所需的埋点指标。

在业务核心大盘中,我们还提供了筛选功能,可以根据页面分组、页面名称和时间段来进行数据的筛选和查看。

4.2 健康度大盘

通用健康度大盘看板,一览所有业务实时健康度汇总

健康度大盘由六个维度组成

核心转化率:业务定义的核心转化行为次数 / 页面UV(0分与100分基准为各业务线自定义配置)

页面跳失率:用户进入页面后无任何交互退出的次数 / 页面UV(0分与100分基准为各业务线自定义配置)

FMP-P90:首屏加载时长 P90 分位毫秒数 (0分=2500, 100分=500)

JS异常率:JS 全局异常上报次数 / 页面PV (0分=0.01, 100分=0)

核心接口成功率:业务定义的核心接口请求成功(httpcode=200)次数 / 请求总次数 (0分=0.97, 100分=1)

核心接口耗时-P90:业务定义的核心接口请求耗时 P90 分位毫秒数 (0分=1000, 100分=300)

在选取了几个业务接入并观测接入后的数据,给FMP-P90、JS异常率、核心接口成功率、核心接口耗时-P90这5个指标内置了通用公式,这个公式是通过几个特点的点,拟合了一条近似曲线。业务方也可以通过json配置的方式微调公式,来满足业务的差异性。核心转化率、页面跳失率这两项指标在不同页面之间基准相差较大,需要手动设置基准以保证数据相对准确。以页面跳失率为例,微调公式的方法,和产品商议得分80分的页面跳失率和得分为60分的页面跳失率,求出公式中的a和b,进而得出微调后的公式。

健康度公式如下:

图片

4.3 错误监控看板

在错误监控方面,我们将继续使用现有的ARM平台监控系统。该系统支持查看错误的关键信息,包括MID(用户设备标识)、页面URL、BUVID(用户访问标识)、错误类型、错误信息以及堆栈信息等。通过这些关键信息的展示和分析,我们能够更准确地定位和解决错误,并提供优化业务的决策依据。

4.4 热力图看板

热力图看板是为了解决观测页面各个模块点击状态的痛点而设计的一种解决方案。它可以直观可视化地展示页面上各个模块的点击热度情况。除此之外,热力图看板还提供了一系列功能,包括观测一段时间内的热力变化、导出热力图数据、导出热力变化视频、进行页面AB实验分析以及进行模块热力环比分析等。

通过使用JSON配置页面背景图和点击模块的位置,接入热力图看板变得非常便捷。这使得业务方能够快速集成该功能,并获得对业务迭代的数据支持和参考。热力图看板的强大功能和简便的接入方式,将帮助业务方更好地了解用户在页面上的点击行为,优化页面布局和功能设计,并实现数据驱动的业务迭代和增长。

4.5 流量链路桑基图看板

随着页面复杂度提升,每个页面的来源和去向越来越多。为了关注用户体验和转化率、更好地了解用户在页面之间的流量路径和转化情况,采用流量链路桑基图进行数据分析和优化会事半功倍。量链路桑基图将用户的访问路径和转化行为以图形形式展示,直观地了解用户在整个流程中的行为和转化过程。

桑基图 (Sankey Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向。上图为1869年,查尔斯米纳德(Charles Minard)绘制的1812年拿破仑征俄图(Map of Napolean's Russian Campaign of 1812),这是一个在地图上覆盖桑基图的流程图。1898年爱尔兰人Matthew Henry Phineas Riall Sankey 在土木工程师学会会报纪要的一篇关于蒸汽机能源效率的文章中首次推出了第一个能量流动图,此后便以其名字命名为 Sankey 图,中文音译为桑基图。

图中延伸的分支的宽度对应数据流量的大小。桑基图的特点如下:

  • 起始流量和结束流量相同,所有主支宽度的总和与所有分出去的分支宽度总和相等,保持能量的平衡;

  • 在内部,不同的线条代表了不同的流量分流情况,它的宽度成比例地显示此分支占有的流量;

  • 节点不同的宽度代表了特定状态下的流量大小。

桑基图通常应用于能源、材料成分、金融等数据的可视化分析[1]。

通过流量链路桑基图可以清晰看出页面流量的留存和流失,找到转化率难以提升的问题所在和瓶颈,并加以针对性的优化和改进,实现业务增长和留存。它有如下几点优势:

  • 可视化展示:流量链路桑基图以图形的方式展示用户流量路径和转化情况,直观易懂。通过不同颜色和宽度的连线来表示用户的转化情况,使得数据更加具有可读性和可理解性。

  • 简洁明了:流量链路桑基图将复杂的用户流量路径和转化过程简化为直观的图形展示,使得数据分析更加简洁明了。通过查看桑基图,可以一目了然地了解用户的流量分布和转化情况,快速找出瓶颈和问题所在。

  • 快速发现问题:通过流量链路桑基图,可以快速发现用户在流程中的流失点和转化率低的环节。在这些环节上,业务侧可以重点优化,改善用户体验,提高转化率。

  • 数据驱动决策:流量链路桑基图提供了直观的数据支持,可以为业务侧的决策提供指导。通过对用户流量路径和转化情况的分析,业务侧可以制定相应的策略和措施,优化产品设计和运营活动,提升业务效果和转化率。

4.6 留存看板

目前页面的核心指标看板缺失留存看板,不方便看增长类、留存类业务的指标

留存,是指用户在起始(新增或使用产品)之后一段时间再次回到产品。
留存率,是指再次回到产品的用户数量与初始用户数量的比率。

  • 用户在新增或使用产品后当日回到产品的比率,计为 当日留存率

  • 用户在新增或使用产品后第2天回到产品的比率,计为 次日留存率

  • 用户在新增或使用产品后第3天回到产品的比率,计为 3日留存率

  • 用户在新增或使用产品后第7天回到产品的比率,计为 7日留存率

  • 用户在新增或使用产品后第8~14天回到产品的比率,计为 次周留存率

  • 用户在新增或使用产品后第n周内回到产品的比率,计为 n周留存率

说明

这里的周是指7天,而非自然周。

用户留存率,是产品和运营努力提升的重要指标之一。因此,在产品升级、运营活动之后,往往需要对升级或活动所影响用户群体的留存率进行监控分析。

新用户留存以「用户新增」作为留存起始条件进行计算。

即:如果昨日新增的100个用户,其中50人在今日再次回到产品,则昨日的新用户次日留存率为50%。
新用户留存是最为常用的留存计算方式。在大多数情况下,如果没有特殊说明,「留存=新用户留存」。

活跃用户留存以「用户活跃」作为留存起始条件进行计算。

即:如果昨日活跃的100个用户,其中50人在今日再次回到产品,则昨日的活跃用户次日留存率为50%。

目前页面的核心指标看板缺失留存

单独看板,单选业务,不支持日期选择,页面参考

4.7 用户旅程

关注用户旅程,深度了解单个用户体验成为了提升用户满意度和留存率的关键,可以帮助开发更有效地排查线上不容易复现的问题。

为此,我们开发了前端单个用户旅程监控的系统建设。

整体架构设计:

图片

五.未来规划

前端可观测性系统目前已经实现了从埋点上报到数据看板的功能闭环,经过了半年的开发、接入和推广,已经完成了基本能力的建设并已经在业务中落地。但是对于业务数据下钻分析能力、对业务迭代的指导作用还有待提升,具体有如下几方面的规划:

完善业务数据大盘中自定义埋点的公式,支持更多常见公式的计算和自定义公式的计算

增加企微告警能力,对于报错信息增加、健康度下降的项目,自动给项目负责人发送消息

增加更多对业务侧有指导意义的可视化看板,目前留存看板、热力图看板、桑基图对产品侧帮助很大,未来支持更多类型的看板,帮助产品自动分析数据变化原因并智能提供迭代建议

与bili-mirror、dejavu等继续共建,给业务方提供更多的帮助

六.参考文献

【1】ANTV桑基图.https://antv-2018.alipay.com/zh-cn/vis/chart/sankey.html

-End-

作者丨晨松

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

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

相关文章

禁用/屏蔽 Chrome 默认快捷键

Chrome 有一些内置的快捷键,但是它并没有像其他软件一样提供管理快捷键的界面。在某些时候,当我们因为个人需求希望禁用 Chrome 某些快捷键时,又无从下手。 好在有开发者开发了 Chrome 插件,可以禁用 Chrome 快捷键的插件&#x…

振动分析-4-振动传感器的安装部署

参考(电机、减速机、风机)振动传感器部署指南 设备状态监测的测点通常选在设备轴承或靠近轴承的位置,通过在轴向、垂直方向、水平方向部署振动传感器来实现设备振动信号的采集。但在实际工作中,考虑安装空间和硬件成本,部署过程通常被两个问题…

使用Apache Flink实现实时数据同步与清洗:MySQL和Oracle到目标MySQL的ETL流程

使用Apache Flink实现实时数据同步与清洗:MySQL和Oracle到目标MySQL的ETL流程 实现数据同步的ETL(抽取、转换、加载)过程通常涉及从源系统(如数据库、消息队列或文件)中抽取数据,进行必要的转换&#xff0c…

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…

Python 库PySpark,一个超级强大的数据处理引擎

目录 01初识 PySpark 为什么选择 PySpark? 安装 PySpark 配置 PySpark 02基本操作 创建 RDD 基本 RDD 操作 03DataFrame 和 Spark SQL 创建 DataFrame 基本 DataFrame 操作 使用 Spark SQL 04机器学习与流处理 …

MacOS - 3 招快速去除桌面上的图标文件

在平时用 Mac 电脑的时候&#xff0c;会产生许多我们不用的或废弃的图标、文件&#xff0c;在 Mac 桌面上显得很乱&#xff0c;不仅影响美观也直接影响了我们工作的心情。下面我们分享 3 招快速去除桌面上的图标或文件的方法&#xff0c;有需要的朋友可以试一试。 1. 右键删除&…

QPushButton、QCheckBox、QRadioPutton、QLineEdit用法

实现LineEdit 文本的 居左、居中、居右设置 实现LineEdit 文本的粗体、斜体、下划线设置 实现LineEdit 控件的 ReadOnly、Enable、ClearButtonEnable的设置 创建资源文件&#xff0c;引入button需要的icon 总体布局 窗体使用垂直布局&#xff0c;每个组合控件内部是水平布局 2个…

游泳耳机品牌排行榜,10大实力超群的游泳耳机分享!

在当今快节奏的生活中&#xff0c;运动已成为许多人不可或缺的一部分&#xff0c;不仅为了健康&#xff0c;也是释放压力、提升生活品质的有效方式。而随着科技与健身的深度融合&#xff0c;智能穿戴设备尤其是专为运动设计的耳机&#xff0c;正逐渐成为运动爱好者的新宠。对于…

nodejs爬虫小红书评论区

发现好像还是爬虫的知识热度比较高&#xff0c;最近一直在加强JS这块。这两天脚本模拟爬BOSS的时候也想着怎么用nodejs&#xff0c;昨天都没更新文章&#xff0c;Q-Q&#xff0c;因为一直failed没啥成果。 使用模块 这边可以看到使用的模块其实也挺多&#xff0c;但主要还是ht…

vue大作业-实现学校官网

vue大作业-实现学校官网 基于vue2实现的学校官网 项目展示 学校官网介绍 欢迎访问我们学校的官方网站&#xff0c;这里为您提供了全面的信息和资源&#xff0c;帮助您更好地了解我们的教育理念、教学资源和学术活动。 首页 首页是您了解我们学校的起点。这里展示了学校的最…

单元测试的思考与实践

1. 什么是单元测试 通常来说单元测试&#xff0c;是一种自动化测试&#xff0c;同时包含一下特性&#xff1a; 验证很小的一段代码&#xff08;业务意义 或者 代码逻辑 上不可再分割的单元&#xff09;&#xff0c;能够更准确的定位到问题代码的位置 能够快速运行&#xff08;…

初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发

当你初始化一个Android项目时&#xff0c;Android Studio会自动生成一些文件和目录结构&#xff0c;以帮助你快速上手开发。这些文件和目录各自有其特定的功能和用途。下面我为你解释一下这些自动生成的内容&#xff1a; 1. app 目录 这是你的应用模块的根目录&#xff0c;包…

C++之模板(三)

1、缺省模板参数 可以将数据结构类型传递进来&#xff0c;比如vectop<T>&#xff08;如果没传就是默认&#xff09; 把vector当作类型参数来传递&#xff0c;从而使用它的接口然后适配出新的接口。实际上这个Stack称为适配器。有时候可能需要vector&#xff0c;但是又需…

深入解析知识付费平台的核心功能模块:满足个性化学习需求的数字化教育新星

在数字化学习的大潮中&#xff0c;知识付费平台已成为教育行业的一颗新星&#xff0c;它以满足用户需求为核心&#xff0c;提供便捷高效的学习渠道。该平台汇聚了各类专业知识&#xff0c;覆盖职业技能、生活兴趣和人文社科等多个领域&#xff0c;满足不同用户的学习需求。同时…

【二】【QT开发应用】QMake和CMake介绍,GN,QT三个窗口类的区别,QMainWindow, QWidget,QDialog

QMake和CMake介绍 qmake&#xff1a;qt独有的代码构建工具, 是一种简洁的构建工具&#xff0c;主要用于生成 Qt 项目的跨平台编译配置文件&#xff0c;语法简单&#xff0c;适合小型和中型项目。 cmake&#xff1a;C通用的代码构建工具&#xff0c;绝大部分C开源项目都使用cm…

MySQL 8.0 版本更新 要点 列表 (8.0-8.0.23)

开头还是介绍一下群&#xff0c;如果感兴趣 PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共 2370 人左右…

楼顶气膜体育馆建设的关键问题解析—轻空间

随着城市化进程的加快和土地资源的日益紧张&#xff0c;楼顶气膜体育馆作为一种新兴的建筑形式备受关注。其轻盈美观、节省用地、施工便捷等特点&#xff0c;使其成为城市空间利用的理想选择。那么&#xff0c;在楼顶建设气膜体育馆有哪些关键问题需要考虑呢&#xff1f; 一、楼…

Simulink代码生成: 状态机的其他建模方法

本文研究状态机建模的一些方法和技巧。 文章目录 1 引入2 状态机建模方法2.1 状态机中的计时2.2 状态机中的计数2.3 转移顺序 3 总结 1 引入 博主一直很喜欢用Simulink中的状态机建模&#xff0c;在这里想记录一下自己平时使用Stateflow建模的心得。因为自身行业所限&#xff…

LayUI使用(二)处理表格会出现下拉框的问题

一、问题描述 如下&#xff0c;layui的表格渲染后&#xff0c;当鼠标悬停在表格项时会出现右侧的下拉框&#xff0c;layui版本较老&#xff0c;原因未知 二、处理办法 在cols里面加上width&#xff0c;也不用每个都加&#xff0c;加一部分表格项即可 注意&#xff1a;若想禁止…

全功能知识付费小程序源码系统 界面支持万能DIY装修 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代&#xff0c;知识付费已经成为一种重要的商业模式。为了满足市场对于便捷、高效、个性化的知识付费解决方案的需求&#xff0c;小编给大家分享一款全功能知识付费小程序源码系统。这一系统不仅具备界面支持万能 DIY 装修的独特优势&#xff0c;还配备…