数据仓库建模
目录
数仓建模
为什么要对数据仓库进行分层
主题
主题的概念
维度建模:
模型的选择:
星形模式
雪花模型
星座模式
拉链表
维度表和事实表:
维度表
事实表
事实表设计规则
退化维度
事务事实表、周期快照事实表、累积快照事实表
四步维度建模
建模步骤
落地实施的具体步骤:
同步策略
基本原则
数仓建模
不以规矩,不能成方圆。火车之所以能奔驰千里,是因为它始终离不开两条铁轨;风筝之所以能飞翔万尺,是因为它总是情系着手中的线;大江东流,日月交替,大自然生生不息,用规则演绎着生命的轨迹。
先确认主题,然后是维度建模的四个步骤
为什么要对数据仓库进行分层
实现好分层架构,有以下好处:
-
清晰数据结构:每一个数据分层都有对应的作用域,在使用数据的时候能更方便的定位和理解。
-
数据血缘追踪:提供给业务人员或下游系统的数据服务时都是目标数据,目标数据的数据来源一般都来自于多张表数据。若出现目标数据异常时,清晰的血缘关系可以快速定位问题所在。而且,血缘管理也是元数据管理重要的一部分。
-
减少重复开发:数据的逐层加工原则,下层包含了上层数据加工所需要的全量数据,这样的加工方式避免了每个数据开发人员都重新从源系统抽取数据进行加工。
-
数据关系条理化:源系统间存在复杂的数据关系,比如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统,取数时该如何决策呢?数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型,使用时就可避免上述问题了。
-
屏蔽原始数据的影响:数据的逐层加工原则,上层的数据都由下一层的数据加工获取,不允许跳级取数。而原始数据位于数仓的最底层,离应用层数据还有多层的数据加工,所以加工应用层数据的过程中就会把原始数据的变更消除掉,保持应用层的稳定性。
主题
主题的概念
主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。
主题域是对某个主题进行分析后确定的主题的边界。分析主题域,确定要装载到数据仓库的主题是信息打包技术的第一步。而在进行数据仓库设计时,一般是一次先建立一个主题或企业全部主题中的一部分,因此在大多数数据仓库的设计过程中都有一个主题域的选择过程。主题域的确定必须由最终用户和数据仓库的设计人员共同完成。
主题域的确定必须由最终用户和数据仓库的设计人员共同完成的, 而在划分主题域时,大家的切入点不同可能会造成一些争论、重构等的现象,考虑的点可能会是下方的某些方面:
-
按照业务或业务过程划分:比如一个靠销售广告位置的门户网站主题域可能会有广告域,客户域等,而广告域可能就会有广告的库存,销售分析、内部投放分析等主题;
-
根据需求方划分:比如需求方为财务部,就可以设定对应的财务主题域,而财务主题域里面可能就会有员工工资分析,投资回报比分析等主题;
-
按照功能或应用划分:比如微信中的朋友圈数据域、群聊数据域等,而朋友圈数据域可能就会有用户动态信息主题、广告主题等;
-
按照部门划分:比如可能会有运营域、技术域等,运营域中可能会有工资支出分析、活动宣传效果分析等主题;
维度建模:
在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。
模型的选择:
-
首先就是星座不星座这个只跟数据和需求有关系,跟设计没关系,不用选择。
-
星型还是雪花,取决于性能优先,还是灵活更优先。
-
目前实际企业开发中,不会绝对选择一种,根据情况灵活组合,甚至并存(一层维度和多层维度都保存)。但是整体来看,更倾向于维度更少的星型模型。尤其是Hadoop体系,减少Join就是减少Shuffe,性能差距很大。(关系型数据可以依靠强大的主键索引)
星形模式
星型模型是数据集市维度建模中推荐的建模方法。星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星型模型的特点是数据组织直观,执行效率高。因为在数据集市的建设过程中,数据经过了预处理,比如按照维度进行了汇总,排序等等,数据量减少,执行的效率就比较高
星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:
-
维表只和事实表关联,维表之间没有关联;
-
每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
-
以事实表为核心,维表围绕核心呈星形分布;
雪花模型
雪花模型也是维度建模中的一种选择。雪花模型的维度表可以拥有其他维度表的,虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。
星形模式中的维表相对雪花模式来说要大,而且不满足规范化设计。雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计。然而这种模式在实际应用中很少见,因为这样做会导致开发难度增大,而数据冗余问题在数据仓库里并不严重。
星座模式
星座模型是星型模型延伸而来,星型模型是基于一张事实表的,而星座模型是基于多张事实表的,而且共享维度信息。 通过构建一致性维度,来建设星座模型,也是很好的选择。比如同一主题的细节表和汇总表共享维度,不同主题的事实表,可以通过在维度上互相补充来生成可以共享的维度。
拉链表
什么是拉链表
拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录
一个事物从开始,一直到当前状态的所有变化的信息。
拉链表和流水表
流水表存放的是一个用户的变更记录,比如在一张流水表中,一天的数据中,会存放一个用户的每条修
改记录,但是在拉链表中只有一条记录。
维度表和事实表:
维度表
维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或者概念。例如:用户、商品、日期、地区等。
与事实表比较,维度表一般包含较少的行,但是可能列数较多
缓慢变化维
事实表
事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等)
每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。
事实表中的每行对应一个度量事件,每行中的数据是一个特定级别的细节数据,称为粒度,
粒度可划分为三类:事务、周期性快照、累积快照
事实表的事实数值可分为三种:可加性、半可加、不可加
事实表设计规则
-
尽可能包含所有与业务过程相关的事实;
-
只选择与业务过程相关的事实;
-
分解不可加性事实为可加的组件;比如订单的优惠率,应该分解为订单原价金额与订单优惠金额
-
在选择维度和事实之前必须先声明粒度;
-
在同一个事实表中不能有多种不同粒度的事实;粒度的声明是事实表设计中不可忽视的重要一步,粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性,在选择维度和事实之前必须先声明粒度,且每个维度和事实必须与所定义的粒度保持一致
-
在同一个事实表中不能有多种不同粒度的事实;
-
事实的单位要保持一致;
-
对事实的 null 值要处理;在数据库中null值对常用的大于或小于等SQL不生效,建议使用零值填充
-
使用退化维度提高事实表的易用性;目的主要是为了减少下游用户使用时关联多个表的操作。直接通过退化维度实现对事实表的过滤查询、控制聚合层次、排序数据以及定义主从关系等
退化维度
有时,维度除了主键外没有其他内容。例如,当某一发票包含多个数据项时,数据项事实行继承了发票的所有描述性维度外键,发票除了外键外无其他项。但发票数量仍然是 在此数据项级别的合法维度键。这种退化维度被放入事实表中,清楚地表明没有关联的维 度表。退化维度常见于交易和累计快照事实表中。
事务事实表、周期快照事实表、累积快照事实表
-
·事务事实表:事务事实表描述业务过程事务层面的事实,每条记录代表一个事务事件,保留事务事件活动的原始内容。事务事实表中的数据在事务事件发生后记录,一般记录后数据就不再进行更改,其更新方式为增量更新。事务事实表相对其他事实表保存的数据粒度更细,可以通过事务事实表对事务行为进行详细分析。
-
·周期快照事实表:周期快照事实表以具有规律性、可预见的时间间隔产生快照来记录事实,每行代表某个时间周期的一条记录,记录的事实是时间周期内的聚集事实值或状态度量。周期快照事实表的内容一般在所表达的时间周期结束后才会产生,一般记录后数据就不再更改,其更新方式为增量更新。周期快照事实表一般是建立在事务事实表之上的聚集,维度比事务事实表少,粒度比事务事实表粗,但是由于对事实进行了多种形式的加工从而产生了新的事实,故一般事实会比事务事实表多。
-
·累计快照事实表:累积快照事实表覆盖一个事务从开始到结束之间所有的关键事件,覆盖事务的整个生命周期,通常具有多个日期字段来记录关键事件时间点。周期快速事实表涉及的多个事件中任意一个的产生都要做记录,由于周期快照事实表涉及的多个事件的首次加载和后续更新时间是不确定的,因此在首次加载后允许对记录进行更新,一般采用全量刷新的方式更新。
累计快照事实表一般用于追踪某个业务的全生命周期及状态转换,比如交易业务,涉及下单、支付、发货、确认收货,这些相关事件在不同的事务事实表中,通过事务事实表很难看到不同事件之间的转化及状态变化,通过累计快照事实表可把相关事件串起来放在一条记录中,这样就很容易解决了。
四步维度建模
不管哪种类型的事实表,设计方法都类似,事实表设计可以遵循以下步骤:
选择业务过程→声明粒度→确认维度→确认事实
-
第一步:选择业务过程
-
确定业务过程。企业业务是由一个个业务过程组成的,事实表就是为了记录这些业务过程产生的事实,以便还原任意时刻的业务运转状态。所以设计事实表,第一步就是确定实施所要表达的是哪一个或者几个业务过程。笔者理解业务过程是企业活动事件,比如注册、登录、下单、投诉等都是业务过程,最基本的是每一个业务过程对应一张事实表,这样最容易理解。但是实际开发过程中,业务过程和事实表会存在多对多的关系。
-
-
第二步:定义粒度。
-
不管事实表对应一个还是多个业务过程,粒度必须是确定的,每个事实表都有且只能有唯一的粒度,粒度是事实表的每一行所表示的业务含义,是事实的细节级别。在实际设计过程中,粒度与主键等价,粒度更偏向业务,而主键是站在技术角度说的。虽然粒度在最终的事实表中很难被体现,但是定义粒度是必不可少的步骤,这样可避免整个事实表的业务含义模糊。
-
-
第三步:确定维度。
-
定义粒度之后,事实表每一行的业务含义就确定了。那么业务人员会站在哪些角度来描述事实度量?这就要确定维度了,常见的维度有时间、区域、客户、产品、员工等。维度依附于粒度,是粒度的环境描述。
-
-
第四步:确定事实。
-
事实就是事实表度量的内容,也就是业务过程产生的事实度量的计算结果,比如注册量、登录次数、交易金额、退款量等。事实表的所有事实度量都与事实表所表达的业务过程相关,所有事实必须满足第二步所定义的粒度。
-
-
第五步:冗余维度属性。
-
事实表的设计要综合考虑数据来源和使用需求,在满足业务事实记录的同时也要满足使用的便利性和性能要求。大数据时代,事实表记录数动辄亿级,甚至数十亿、数百亿,维表也有可能达到亿级甚至更多。利用标准维度模型会经常出现维表与事实表关联的情况,这种对亿级表的关联计算,在性能上是灾难性的。为了满足业务需求,降低资源消耗,建议适当冗余维度属性数据到事实表,直接利用事实表就可以完成绝大部分业务的使用需求,这样下游使用时可减少大表关联,提升效率。所以大数据时代,适当进行维度冗余是可取的。
-
建模步骤
主要过程(自己归纳,可能部分有误):
(1)了解业务流程:确定范围、收集业务和技术资料、模型设计研讨;
(2)分析源数据:分析整理数据结构,分析源系统样本数据;
(3)建立实体模型:框架设计、数据源主题划分、概念模型设计;
(4)模型详细设计:归纳映射、属性扩展、数据类型定义、实体间依赖关系、填写并完善实体属性;
(5)逻辑数据模型客户化:按主题规划,宽表设计;
(6)模型验证:命名、布局、划分是否规范,数据验证(准确性以及是否有遗漏),应用验证(是否满足下游应用系统和数据分析的要求),合理性验证(准入原则、数据关系)
落地实施的具体步骤:
1)按照命名规范创建表,包括维表和事实表;
2)开发生成维表和事实表的数据的逻辑代码;
3)进行代码逻辑测试,验证数据加工逻辑的正确性;
4)代码发布,加入生产调度,并配置相应的质量监控和报警机制;
5)持续任务运维监控。
同步策略
数据同步策略的类型包括:全量表、增量表、新增及变化表、拉链表
全量表:存储完整的数据。
增量表:存储新增加的数据。
新增及变化表:存储新增加的数据和变化的数据。
拉链表:对新增及变化表做定期合并。
1、实体表同步策略
实体表:比如用户,商品,商家,销售员等
实体表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。
2、维度表同步策略
维度表:比如订单状态,审批状态,商品分类
维度表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。
说明:
1)针对可能会有变化的状态数据可以存储每日全量。
2)没变化的客观世界的维度(比如性别,地区,民族,政治成分,鞋子尺码)
可以只存一份固定值。
3、事务型事实表同步策略
事务型事实表:比如,交易流水,操作日志,出库入库记录等。
因为数据不会变化,而且数据量巨大,所以每天只同步新增数据即可,所以可以做成 每日增量表,即每日创建一个分区存储。
4、周期型事实表同步策略
周期型事实表:比如,订单、请假、贷款申请等
这类表从数据量的角度,存每日全量的话,数据量太大,冗余也太大。如果用每日增量的话无法反应数据变化。
每日新增及变化量,包括了当日的新增和修改。一般来说这个表,足够计算大部分当日数据的。但是这种依然无法解决能够得到某一个历史时间点(时间切片)的切片数据。
所以要用利用每日新增和变化表,制作一张拉链表,以方便的取到某个时间切片的快照数据。所以我们需要得到每日新增及变化量。
基本原则
1.高内聚和低耦合
一个逻辑或者物理模型由哪些记录和字段组成,应该遵循最基本的 软件设计方法论的高内聚和低耦合原
则。主要从数据业务特性和访问特 性两个角度来考虑:将业务相近或者相关、粒度相同的数据设计为一
个 逻辑或者物理模型;将高概率同时访问的数据放一起,将低概率同时访 问的数据分开存储。
-
核心模型与扩展模型分离
建立核心模型与扩展模型体系,核心模型包括的字段支持常用的核 心业务,扩展模型包括的字段支持个性化或少量应用的需要,不能让扩 展模型的字段过度侵入核心模型,以免破坏核心模型的架构简洁性与可 维护性。
-
公共处理逻辑下沉及单一
越是底层公用的处理逻辑越应该在数据调度依赖的底层进行封装 与实现,不要让公用的处理逻辑暴露给应用层实现,不要让公共逻辑多 处同时存在。
-
成本与性能平衡
适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复 制。
-
数据可回滚
处理逻辑不变,在不同时间多次运行数据结果确定不变。
-
一致性
具有相同含义的字段在不同表中的命名必须相同,必须使用规范定 义中的名称。
-
命名清晰、可理解
表命名需清晰、一致,表名需易于消费者理解和使用。
相关文章:
数据仓库建模
目录 数仓建模 为什么要对数据仓库进行分层 主题 主题的概念 维度建模: 模型的选择: 星形模式 雪花模型 星座模式 拉链表 维度表和事实表: 维度表 事实表 事实表设计规则 退化维度 事务事实表、周期快照事实表、累积快照事实…...

力扣:1738. 找出第 K 大的异或坐标值
1738. 找出第 K 大的异或坐标值 给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j](下标从 0 开始计数&…...

Keras深度学习框架第二十讲:使用KerasCV中的Stable Diffusion进行高性能图像生成
1、绪论 1.1 概念 为便于后文讨论,首先进行相关概念的陈述。 Stable Diffusion:Stable Diffusion 是一个在图像生成领域广泛使用的技术,尤其是用于文本到图像的转换。它基于扩散模型(Diffusion Models),这…...

C/C++ vector详解
要想了解STL,就必须会看: cplusplus.comhttps://legacy.cplusplus.com/ 官方内容全都是英文的,可以参考: C/C初始识https://blog.csdn.net/2301_77087344/article/details/138596294?spm1001.2014.3001.5501 vectorÿ…...

使用libtorch加载YOLOv8生成的torchscript文件进行目标检测
在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…...

Oracle 并行和 session 数量的
这也就是为什么我们指定parallel为4,而实际并行度为8的原因。 insert create index,发现并行数都是加倍的 Indexes seem always created with parallel degree 1 during import as seen from a sqlfile. The sql file shows content like: CREATE INDE…...

Android 版本与 API level 以及 NDK 版本对应
采用 Android studio 开发 Android app 的时候,需要选择支持的最低 API Level 和使用的 NDK 版本,对应开发 app 的最低 SDK 版本: 在 app 的 build.gradle 文件里,对应于代码如下: 目前各版本的占有率情况如下…...
护网经验面试题目原版
文章目录 一、护网项目经验1.项目经验**Hvv的分组和流程**有没有遇到过有意思的逻辑漏洞?有没有自己开发过武器/工具?有做过代码审计吗?有0day吗有cve/cnvd吗?有src排名吗?有没有写过技战法有钓鱼经历吗?具…...

ipa 覆盖算法测试
相关文章 ipa 功能包测试 ipa 分区算法 ipa 分区算法总结,部分算法图解 ipa 覆盖算法分析(一) ipa 覆盖算法分析(二) 测试 网上找的地图: fig.1 测试地图 opencv fig.2 opencv 显示的覆盖路径 rviz fi…...

linuxwindows硬件信息midecod和wmic命令
1、命令dmidecode -t实例 1.1命令格式 dmidecode -t [类型代码或名称 ] 指令 1.2获取系统信息 [rootlala docker]# dmidecode -t 1 1.3获取主板信息: [rootshanghai docker]# dmidecode -t 2 1.4获取CPU ID dmidecode -t 4 | grep ID 1.5获取系统序列号 …...
03. SpringBoot 整合 Redis
文章目录 Jedis导入依赖测试连接Jedis 实现事务 SpringBoot 整合 RedisRedisTemplateSpringBoot 整合 Redis 测试RedisTemplate 序列化RedisUtils Jedis Jedis 是 Redis 官方推荐的 Java 连接工具。 导入依赖 </dependencies><dependency><groupId>redis.c…...

01-Linux【准备篇】
一、学Linux的作用? 1.Linux下开发(部署)软件项目 2.Linux运维 二、Linux的强与弱 1.薄弱 个人桌面领域的应用 此领域是传统Linux应用薄弱的环节,近些年随着Ubuntu、fedora等优秀桌面环境的兴起,Linux在个人桌面领域的占有率在慢慢提高…...

在IDEA中配置servlet(maven配置完成的基础下)
在IDEA中配置servlet(maven配置完成的基础下) 1.先新建一个项目 2.选择尾巴是webapp的,名称自定义 3.点击高级设置,修改组id 点击创建,等待jar包下载完成。在pom.xml中配置以下 <dependency><groupId>ja…...

pyqt6水平布局
效果预览 main_window.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>MainWindow</class><widget class"QMainWindow" name"MainWindow"><property name"geo…...

CLIP论文学习
学习来自B站bryanyzhu...

手把手教大家,怎么查看抖音小店的类目保证金?
大家好,我是喷火龙。 抖音小店的类目保证金也介绍过很多次了,不同的类目有不同的保证金,要想准确的知道自己想做的类目要交多少保证金的话,还是去官网查询比较可靠。 今天,就教大家怎么去查询自己想做的类目要交多少…...

5.24作业
...

Linux之LLVM、Clang、Clang++区别及用法实例(六十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
CentOS7 安装 Mysql 5.7:密码查看与修改、更改端口、开机启动
文章目录 下载 MySQL yum包安装MySQL源安装MySQL服务端,需要等待一些时间启动MySQL修改密码方式一:临时密码获取临时密码,MySQL5.7为root用户随机生成了一个密码通过临时密码登录MySQL,进行修改密码操作 方式二:skip-grant-tables…...

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(十三)
本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! 接上一篇文章内容,讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 我们,继续讲一…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...