数仓建模(三)建模三步走:需求分析、模型设计与数据加载
本文包含:
- 数据仓库的背景与重要性
- 数据仓库建模的核心目标
- 本文结构概览:需求分析、模型设计与数据加载
目录
第一部分:需求分析
1.1 需求分析的定义与目标
1.2 需求分析的步骤
1.2.1 业务需求收集
1.2.2 技术需求分析
1.2.3 成果输出
1.3 常见问题与解决策略
1.4 需求分析案例
第二部分:模型设计
2.1 数据仓库模型的分类与选择
2.1.1 数据仓库模型分类
2.1.2 模型选择的原则
2.2 维度建模的核心概念
2.2.1 事实表
2.2.2 维度表
2.2.3 粒度选择的重要性
2.3 模型设计步骤
2.3.1 概念模型设计
2.3.2 逻辑模型设计
2.3.3 物理模型设计
2.4 常见模型设计问题与优化
2.5 实战案例
第三部分:数据加载
3.1 数据加载的定义与核心任务
3.2 数据加载的流程
3.2.1 数据抽取
3.2.2 数据转换
3.2.3 数据加载
3.3 数据加载的性能优化
3.3.1 优化策略
3.3.2 缓存与索引
3.3.3 异常处理机制
3.4 数据加载的工具与框架
3.4.1 开源工具
3.4.2 数据集成平台
3.5 实战案例
第四部分:综合案例与项目总结
4.1 综合案例:从零到一构建一个数据仓库
4.1.1 项目背景
4.1.2 数据仓库建设流程
1. 需求分析
2. 模型设计
3. 数据加载
4. 系统测试与优化
4.1.3 项目结果
4.2 成功的数据仓库建模经验总结
4.2.1 需求分析的关键
4.2.2 模型设计的原则
4.2.3 数据加载的优化策略
4.2.4 团队协作与管理
结论

第一部分:需求分析
1.1 需求分析的定义与目标
在数据仓库建模中,需求分析是首要环节,其目标是明确数据仓库的建设目的,确保最终设计的模型能够满足业务需求和技术需求。
- 需求分析的定义:通过与业务和技术团队的充分沟通,深入理解业务背景、数据来源及使用场景,并形成清晰的需求文档。
- 目标:
- 确定数据仓库需要支持的业务指标和分析场景。
- 梳理各数据源的结构和质量。
- 识别系统需要的性能和扩展能力。
1.2 需求分析的步骤
1.2.1 业务需求收集
- 明确业务目标:
例如,在零售行业中,业务需求可能包括客户购买行为分析、销售趋势预测、库存管理优化等。 - 识别关键指标(KPI):
通过访谈业务部门,了解他们日常关注的指标,例如销售额、转化率、库存周转率等。 - 典型分析问题:
- 哪些商品的销售增长最快?
- 不同地区的销售差异如何?
方法:
- 与业务人员一对一访谈,使用模板问题引导讨论。
- 组织跨部门的需求研讨会,整合不同团队的视角。
1.2.2 技术需求分析
- 数据源的类型:
识别企业内部的系统(如CRM、ERP、POS)和外部数据(如第三方统计数据)。 - 数据质量与可用性评估:
确定数据源是否有缺失、重复或不一致的问题。 - 性能需求:
例如,日交易记录超过1000万笔的数据仓库,需要支持实时查询和并发分析。
方法:
- 制定数据质量检查清单。
- 使用数据分析工具(如SQL或Python)进行探索性数据分析(EDA)。
1.2.3 成果输出
- 需求文档:包括业务需求、技术需求、数据源清单、期望输出格式等。
- 优先级排序:列出核心需求与次要需求,明确实现顺序。
1.3 常见问题与解决策略
-
需求模糊不清:
原因:业务方对数据仓库缺乏了解。
解决:引入简单的原型系统,帮助业务方快速验证需求。 -
需求变更频繁:
原因:市场动态变化或业务策略调整。
解决:采用敏捷开发方法,分阶段交付。 -
跨部门需求冲突:
原因:不同团队对指标定义或优先级存在分歧。
解决:设立需求评审委员会,确保决策权统一。
1.4 需求分析案例
案例:某零售企业的需求分析
- 背景:该企业希望通过数据仓库支持销售分析和库存管理。
- 业务需求:
- 识别畅销品和滞销品。
- 对比不同地区的销售业绩。
- 技术需求:
- 日销售数据约500万条,需支持实时查询。
- 数据来源包括POS系统、会员系统和供应链管理系统。
- 分析过程:
- 与销售团队沟通,明确KPI为销售额、毛利率、退货率等。
- 检查数据质量,发现POS系统的数据存在部分缺失。
- 提出解决方案:在数据加载过程中增加异常值填补与校验逻辑。
- 输出成果:
- 确定需求文档,列出关键指标和分析场景。
- 为后续模型设计提供清晰方向。
第二部分:模型设计
2.1 数据仓库模型的分类与选择
2.1.1 数据仓库模型分类
-
星型模型
- 结构特点:以事实表为中心,多个维度表围绕其设计,维度表中不拆分子表。
- 优点:
- 查询逻辑简单直观,易于理解。
- 高效支持多维分析,如OLAP查询。
- 缺点:
- 数据冗余度较高,维度表可能包含重复信息。
-
雪花模型
- 结构特点:对维度表进行进一步规范化拆分,将重复信息分散到多个表中。
- 优点:
- 数据冗余度低,存储效率高。
- 缺点:
- 查询复杂度增加,性能下降。
-
数据湖与数据仓库结合
- 背景:现代企业往往需要处理多样化、非结构化的数据。
- 特点:
- 数据湖存储原始数据,提供灵活性;
- 数据仓库对经过清洗和转换的数据进行建模,优化性能。
- 场景:适用于需要同时支持实时流处理和离线分析的场景。
2.1.2 模型选择的原则
- 业务需求驱动:模型设计需围绕业务场景展开。例如,财务分析偏向使用星型模型,科学研究更倾向于雪花模型。
- 性能与存储平衡:权衡查询效率和存储空间,例如大规模日志分析场景可能需要宽表设计。
- 系统扩展性:为未来的数据增长预留空间,如增加新的维度或事实字段。
2.2 维度建模的核心概念
2.2.1 事实表
-
作用:记录业务活动的数值型数据,通常包含度量指标(如销售额)和外键(关联维度表)。
-
分类:
- 事务型事实表:记录单一业务事件,适用于实时交易场景,例如订单明细表。
- 快照型事实表:记录某一时刻的整体状态,例如每月库存快照表。
- 累积型事实表:记录事件从开始到结束的状态变化,例如项目生命周期表。
-
设计原则:
- 粒度明确:粒度决定数据表的记录细节水平,影响查询性能与数据量。
- 示例:电商订单数据的粒度可以是“单个订单”或“单个商品”。
- 事实列设计:确保每个度量字段都可以有效计算,如总金额、数量等。
- 粒度明确:粒度决定数据表的记录细节水平,影响查询性能与数据量。
2.2.2 维度表
- 作用:存储描述性信息,为事实表中的数据提供上下文支持。
- 设计技巧:
- 定义主键(通常为业务主键,如客户ID)。
- 添加分组字段(如“季度”、“类别”)以支持聚合查询。
- 使用层次结构(如“国家 > 省 > 市”)优化分析。
2.2.3 粒度选择的重要性
- 定义:事实表中一条记录的详细程度。
- 影响:粒度越细,数据量越大,分析的灵活性越高,但性能需求也更高。
- 案例:零售商的销售分析
- 粒度:按“交易ID”存储 → 支持订单级分析;按“商品ID”存储 → 支持商品级分析。
2.3 模型设计步骤
2.3.1 概念模型设计
- 目的:定义高层次的业务实体及其关系。
- 方法:通过业务需求分析,识别核心对象和关键关系。
- 示例:
- 实体:客户、产品、订单。
- 关系:客户与订单之间为“一对多”,订单与产品之间为“多对多”。
2.3.2 逻辑模型设计
- 定义维度表与事实表:
- 确定主键、外键。
- 设计字段类型,如数值型用于事实列,字符型用于维度列。
- 字段设计:
- 添加衍生字段(如“商品类别”、“客户年龄段”)简化分析。
- 提供多语言支持(如“产品名称”和“产品名称_英文”)。
2.3.3 物理模型设计
- 数据库技术选择:如MySQL适用于中小型项目,Hive适合大数据量分析。
- 存储优化:
- 使用分区策略:按时间、区域等分区提升查询性能。
- 引入分桶:将数据分散到多个文件中以优化Join操作。
- 索引设计:
- 单字段索引:提高单列查询速度。
- 复合索引:支持复杂查询场景,如联合过滤条件。
2.4 常见模型设计问题与优化
- 事实表过大
- 问题:大规模事实表查询慢,占用存储多。
- 解决:按时间、区域或业务场景进行拆分,如按月分表。
- 维度表冗余
- 问题:维度表中重复字段增多,影响存储和一致性。
- 解决:使用雪花模型或规范化设计。
- 数据一致性问题
- 问题:来自多个系统的数据口径不同,影响分析结果。
- 解决:在ETL阶段加入清洗规则,确保统一标准。
2.5 实战案例
案例:基于电商平台的模型设计
- 背景:某电商平台希望建立数据仓库支持用户行为分析和销售预测。
- 需求分析:
- 业务需求:PV、UV、跳出率、销售额分析;按品类统计商品销量。
- 技术需求:日新增订单数据量500万条,支持10秒内响应查询。
- 模型设计:
- 概念模型:核心实体包括用户、订单、商品。
- 逻辑模型:
- 事实表:
订单事实表(订单ID、销售额、用户ID、时间ID、商品ID)
- 维度表:
- 用户维度表:用户基本信息,如性别、注册时间、会员等级。
- 商品维度表:商品信息,如类别、品牌、库存状态。
- 事实表:
- 物理模型:
- 基于Hive设计分区表,分区字段为订单日期。
- 引入分桶优化用户行为查询,分桶字段为用户ID。
- 优化措施:
- 宽表设计:将多个维度表的信息预先关联,提升高频查询效率。
- 增量更新:每日加载增量数据,减少全量更新的性能开销。
第三部分:数据加载
3.1 数据加载的定义与核心任务
数据加载是数据仓库建模中的关键环节,它将原始数据从数据源中抽取、清洗、转换后加载到目标系统(如数据仓库或数据湖)中,为后续分析提供支撑。
-
核心任务:
- 数据抽取(Extract):从不同系统中获取原始数据。
- 数据转换(Transform):对数据进行清洗、聚合和标准化处理。
- 数据加载(Load):将处理后的数据写入数据仓库或数据库。
-
目标:
- 确保数据的完整性、一致性和准确性。
- 提高数据加载的性能和可靠性。
3.2 数据加载的流程
3.2.1 数据抽取
- 数据源类型:
- 关系型数据库(如MySQL、PostgreSQL)
- 非结构化数据(如JSON、日志文件)
- 流式数据源(如Kafka、Flume)
- 抽取方式:
- 全量抽取:适用于初始加载,完整拉取数据。
- 增量抽取:只提取新增或更新的数据,减少数据量。
- 工具与技术:
- Sqoop:从关系型数据库导入数据到HDFS或Hive。
- Kafka:实时数据流的抽取与传输。
3.2.2 数据转换
- 数据清洗:
- 去除重复数据。
- 填补缺失值(如使用均值、中位数或默认值)。
- 标准化字段格式(如日期格式、货币单位)。
- 数据聚合:
- 例如,按天聚合用户访问日志,生成PV、UV等统计指标。
- 衍生字段生成:
- 根据业务需求添加计算字段,如“销售额 = 单价 × 数量”。
3.2.3 数据加载
- 加载方式:
- 批量加载:适用于历史数据或低频更新场景。
- 实时加载:适用于实时分析需求,如监控系统。
- 数据验证与监控:
- 验证数据完整性(记录数是否一致)。
- 监控加载任务状态,及时发现失败或延迟。
3.3 数据加载的性能优化
3.3.1 优化策略
- 分区与分桶:
- 分区:按时间或区域对数据进行逻辑分割,减少查询范围。
- 分桶:将数据物理分块以优化Join操作。
- 并行加载:
- 利用多线程或分布式架构并行处理多个数据源或分片。
- 批量插入:
- 通过批量插入减少单条插入操作的网络和IO开销。
- 增量更新:
- 通过记录变更数据(CDC),避免全量更新。
3.3.2 缓存与索引
- 使用内存缓存(如Redis)加速加载过程。
- 在目标系统中提前创建索引以提升写入后查询性能。
3.3.3 异常处理机制
- 加入容错机制:如数据加载失败时,自动重试或回滚。
- 生成日志记录:便于排查问题。
3.4 数据加载的工具与框架
3.4.1 开源工具
- Apache NiFi
- 支持数据流的可视化设计和实时监控。
- 适用于跨平台、多格式数据的集成与传输。
- Apache Airflow
- 提供强大的调度和工作流管理功能,适合批量加载任务。
- Kafka
- 支持高吞吐量的流式数据加载,适用于实时场景。
3.4.2 数据集成平台
- Informatica:企业级数据集成解决方案,支持复杂ETL任务。
- Talend:开源工具,适合中小型数据仓库构建。
3.5 实战案例
案例:某金融企业的数据加载实践
-
背景
- 该企业需要构建一个数据仓库支持客户行为分析和风险管理。
- 数据源包括交易记录系统、用户行为日志和第三方信用评级数据。
-
解决方案
- 数据抽取:
- 使用Kafka实时抽取交易记录数据。
- 使用Sqoop批量导入用户行为日志到HDFS。
- 数据转换:
- 对交易记录进行清洗,去除重复条目并填充缺失字段。
- 衍生信用评分字段,用于风险评级分析。
- 数据加载:
- 交易数据采用实时加载,每分钟刷新一次。
- 行为日志采用每日批量加载,更新至Hive数据仓库。
- 数据抽取:
-
优化措施
- 增量更新策略:通过事务时间戳标记增量数据,避免重复加载。
- 使用分区表:按月分区交易数据,提升查询性能。
- 监控与告警:通过Airflow监控加载任务状态,确保任务按时完成。
-
效果
- 数据加载性能提升30%,每日数据更新时效性缩短至5分钟内。
- 支持实时查询和离线分析,为决策提供及时支持。
第四部分:综合案例与项目总结
4.1 综合案例:从零到一构建一个数据仓库
4.1.1 项目背景
某连锁零售企业计划建设数据仓库,目标是支持以下业务需求:
- 销售分析:按门店、商品类别、时间等维度分析销售额、利润率等关键指标。
- 库存管理:实时监控库存状态,避免库存过剩或短缺。
- 客户行为分析:分析客户购买习惯,提供精准营销建议。
技术需求包括:
- 支持每日1000万条交易记录的导入与查询。
- 响应时间要求:批量查询 ≤ 10秒,实时数据监控 ≤ 1分钟。
- 数据来源多样,包括POS系统、CRM系统和第三方供应链数据。
4.1.2 数据仓库建设流程
1. 需求分析
- 业务需求:通过与销售、运营和市场团队的沟通,明确关键指标:
- 日/周/月销售额和利润率。
- 商品滞销率和补货建议。
- 不同客户群体的购买偏好。
- 技术需求:
- 数据源清单:POS系统、会员系统、供应链管理系统。
- 性能需求:支持实时监控和历史分析场景。
2. 模型设计
- 概念模型:确定核心业务实体和关系:
- 实体:门店、商品、客户、订单。
- 关系:客户与订单为“一对多”,订单与商品为“多对多”。
- 逻辑模型:设计事实表和维度表:
- 事实表:
- 销售事实表(销售额、订单量、利润率、时间ID、门店ID、商品ID)。
- 库存事实表(库存数量、入库时间、商品ID、门店ID)。
- 维度表:
- 商品维度表:商品类别、品牌、规格等。
- 时间维度表:日、周、月、季度、年。
- 门店维度表:地区、门店类型、管理人员等。
- 客户维度表:性别、年龄段、会员等级等。
- 事实表:
- 物理模型:
- 使用Hive作为数据仓库,支持大规模数据处理。
- 按时间分区事实表(如按月分区销售事实表)。
- 对维度表建立索引(如商品ID索引,提升Join性能)。
3. 数据加载
- 数据抽取:
- 使用Kafka实时采集POS系统的订单数据。
- 使用Sqoop每日批量导入会员数据和供应链数据。
- 数据转换:
- 清洗:去重、补齐缺失值(如缺失库存数据用平均值填补)。
- 衍生:生成商品销量排名和会员购买频率字段。
- 数据加载:
- 批量加载:每日更新商品维度和销售事实表。
- 实时加载:订单数据实时流式写入Kafka,再加载到Hive。
4. 系统测试与优化
- 测试:
- 测试查询性能,确保核心查询在10秒内完成。
- 验证数据一致性,确保加载数据与源系统一致。
- 优化:
- 增量更新:通过记录变更时间戳,仅加载新增或更新数据。
- 并行加载:分区表加载时采用多线程并行处理。
4.1.3 项目结果
- 业务效果:
- 销售分析报告生成时间从1小时缩短至5分钟。
- 实现实时库存监控,库存周转率提升15%。
- 精准营销活动的ROI提高20%。
- 技术效果:
- 支持每日数据导入量1亿条,查询响应时间≤10秒。
- 系统运行稳定,具备良好的扩展性。
4.2 成功的数据仓库建模经验总结
4.2.1 需求分析的关键
- 与业务部门深度协作:确保模型设计和数据加载完全对齐业务需求。
- 建立需求优先级:合理规划实现顺序,避免低优先级需求占用资源。
4.2.2 模型设计的原则
- 关注可扩展性:为未来的业务增长留有扩展空间,如新维度或新事实字段。
- 平衡性能与存储:通过分区、分桶等技术优化大数据查询性能。
- 坚持以业务场景为导向:从实际需求出发,避免过度设计或不必要的复杂化。
4.2.3 数据加载的优化策略
- 自动化与监控:采用工具(如Airflow)调度和监控ETL任务,提升效率并降低出错率。
- 增量更新:减少全量数据加载的开销,提高加载效率。
- 实时与批量结合:根据场景选择适合的加载方式,既满足实时监控,也支持历史分析。
4.2.4 团队协作与管理
- 跨部门协作:建立需求评审机制,减少部门间的冲突。
- 敏捷开发:分阶段交付系统功能,快速响应需求变更。
结论
数据仓库建模的成功,离不开需求分析、模型设计和数据加载这三步的紧密结合。通过科学的方法和合理的工具选型,企业能够高效构建一个稳定、可扩展的数据仓库,为数据驱动的决策提供强有力的支持。
未来,随着实时数据处理技术和数据湖集成方案的发展更进一步(2025年有望),数据仓库的能力将更加丰富,为企业的数字化转型提供更强大的动力。
下节预告:大数据分析的基础结构 星型模型与雪花模型
相关文章:

数仓建模(三)建模三步走:需求分析、模型设计与数据加载
本文包含: 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览:需求分析、模型设计与数据加载 目录 第一部分:需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…...
PHP xml 常用函数整理
————————-DOM 函数————————————– 1、DOMDocument->load() 作用:加载xml文件 用法:DOMDocument->load( string filename ) 参数:filename,xml文件; 返回:如果成功则返回 TRUE&a…...

数据结构(Java版)第八期:LinkedList与链表(三)
专栏:数据结构(Java版) 个人主页:手握风云 目录 一、链表中的经典面试题 1.1. 链表分割 1.2. 链表的回文结构 1.3. 相交链表 1.4. 环形链表 一、链表中的经典面试题 1.1. 链表分割 题目中要求不能改变原来的数据顺序,也就是如上图所示。…...
数据结构学习记录-数据结构概念
1 数据结构: 数据结构是计算机存储,管理数据的方式。 数据必须依据某种逻辑联系组织在一起存储在计算机内 数据结构研究的就是这种数据的存储结构和数据的逻辑结构。 1.1 数据的逻辑结构: 逻辑结构指的是数据本身之间的关系 集合&#x…...

【Linux】11.Linux基础开发工具使用(4)
文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须…...
数据结构与算法之栈: LeetCode 1047. 删除字符串中的所有相邻重复项 (Ts版)
删除字符串中的所有相邻重复项 https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/ 描述 给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们在 s 上反复执行重复项删除操作,直到无…...
C++ 在线编译软件介绍、杭电OJ、北大OJ、力扣OJ
在线编译软件的话,可见下: https://www.jyshare.com/compile/12/ 杭州电子科技大学开发的一个免费的写代码地址 ,杭电OJ https://bestcoder.hdu.edu.cn/ 北大OJ http://poj.org/ 力扣OJ 力扣 (LeetCode) 全球极客挚爱的技术成长平台...
Java学习笔记(二十三)
1 CacheEvict CacheEvict是Spring框架中用于清空缓存的注解。以下是对CacheEvict注解的详细介绍: 1.1 作用 CacheEvict注解的主要作用是删除缓存中的数据。在方法执行后或执行前(根据配置),它可以清空指定的缓存项或整个缓存区…...
《AI赋能鸿蒙Next,开启智能关卡设计新时代》
在游戏开发领域,关卡设计是至关重要的一环,它直接影响着玩家的游戏体验和沉浸感。而随着人工智能技术的飞速发展,结合鸿蒙Next系统的强大功能,为游戏的智能关卡设计带来了全新的思路和方法。 利用AI学习玩家行为模式 在鸿蒙Next…...

js:正则表达式
目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本字符组合模式 正则表达式是一…...
linux环境使用docker部署多个war项目
如果你的需求是在一个服务器上部署多个Tomcat项目,并且每个项目需要独立运行,可以通过以下方式实现: 1. 使用不同的端口 每个Tomcat项目可以使用不同的端口号(如9090、9091、9092等),并通过Docker容器分别…...
【react】使用antd Table渲染数据遇到的报错问题
记录自己在开发过程中遇到的报错问题: 目录 原本写法:错误分析:解决方案: 原本写法: render: (text) > {console.log(text, "111111text");console.log(typeof text, "111111text");return t…...

JVM之垃圾回收器G1概述的详细解析
G1(并发) G1 特点 G1(Garbage-First)是一款面向服务端应用的垃圾收集器,应用于新生代和老年代、采用标记-整理算法、软实时、低延迟、可设定目标(最大 STW 停顿时间)的垃圾回收器,用于代替 CMS࿰…...

1.15寒假作业
web:nss靶场ez_ez_php 打开环境,理解代码 使用个体传参的方法,首先代码会检查file参数的前三个字符是不是php,如果是就输出nice,然后用include函数包含file,绕过不是则输出hacker,如果没有file…...

RK356x bsp 5 - 海华AW-CM358SM Wi-Fi/Bt模组调试记录
文章目录 1、环境介绍2、目标3、海华AW-CM358SM3.1、基本信息3.2、支持SDIO3.03.3、电气特性 4、适配流程步骤5、SDIO控制器适配5.1、sdio dts配置5.2、验证 6、Wi-Fi 适配6.1、wifi dts配置6.2、驱动移植6.2.1、kernel menuconfig6.2.2、传统驱动移植6.2.3、RK SDK WIFI/BT驱动…...
支持Google Analytics快捷添加的CMS:费用与部署形式详解
CMS 的费用和部署形式是选择平台的重要参考因素,不同的业务需求需要不同的解决方案。本文将从费用和部署形式两个角度,详细分析支持 Google Analytics 快捷集成的 CMS 和工具,帮助您更好地了解这些平台的特点。 1. BigCommerce 费用ÿ…...

CSS | 实现三列布局(两边边定宽 中间自适应,自适应成比)
目录 示例1 (中间自适应 示例2(中间自适应 示例3(中间自适应 示例4 (自适应成比 示例5(左中定宽,右边自适应 示例6(中间自适应 示例7(中间自适应 示例8(中间定宽…...

fpga系列 HDL:跨时钟域同步 双触发器同步器
目录 **双触发器同步器(Two-Flip-Flop Synchronizer)示例代码**:双触发器同步器的优缺点优点:缺点:适用场景: 应用实例:同步来自spi_slave的单个使能信号 跨时钟域的设计需要特别小心࿰…...

金融项目实战 05|Python实现接口自动化——登录接口
目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现 1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件:jso…...

《HTML在网络安全中的多面应用:从防范攻击到安全审查》
Html基础 Html简介 HTML(HyperText Markup Language,超文本标记语言)是用于描述网页内容和结构的标准语言。以下是对HTML的简要介绍: 基本概念 定义: HTML不是一种编程语言,而是一种标记语言。 它使用标…...

Linux网络 | 学习传输层网络协议之UDP(短篇)
前言: 本节内容正式迈入传输层网络协议的知识殿堂, 之前的文章, 我们都是在应用层进行翻来覆去。 比如http就是应用层协议, 只不过使用了tcp的系统调用。 从本节开始, 友友们将会学习传输层两大协议: UDP和…...
iOS - 内存屏障的使用场景
内存屏障的使用是为了解决以下几个关键问题: 1. CPU 乱序执行 // 没有内存屏障时,CPU 可能乱序执行 void example() {// 这两行代码可能被 CPU 重排序a 1; // 操作1flag true; // 操作2 }// 使用内存屏障确保顺序 void safeExample() {a 1;…...
MySQL 8.0 新特性详解与实用示例
MySQL 8.0 新特性详解与实用示例 1. 引言 MySQL 8.0 是 MySQL 版本系列中具有里程碑意义的更新版本,带来了大量新功能和优化,极大地提升了数据库的性能和可用性。本文将深入介绍 MySQL 8.0 的主要新特性及其应用场景,帮助你在项目中更高效地…...

【STM32-学习笔记-5-】ADC
文章目录 ADCADC函数Ⅰ、ADC_InitTypeDef结构体参数①、ADC_Mode②、ADC_DataAlign③、ADC_ExternalTrigConv④、ADC_ContinuousConvMode⑤、ADC_ScanConvMode⑥、ADC_NbrOfChannel Ⅱ、ADC配置示例1、单次转换,非扫描单次转换非扫描模式下,获取多通道的…...

TY1801 反激变换器PWM GaN功率开关
TY1801 是一款针对离线式反激变换器的多模式 PWM GaN 功率开关。TY1801 内置 GaN 功率管,它具备超宽 的 VCC 工作范围,非常适用于 PD 快充等要求宽输出电压的应用场合,系统不需要使用额外的绕组或外围降压电路,节省系统 BOM 成本。TY1801 支持 Burst&…...

Jenkins安装、插件下载及构建环境配置详解
Jenkins简介 1.1 简介 Jenkins 是一个基于Java开发的开源持续集成工具,它提供了一个开放且易用的软件平台,主要用于自动化构建、测试和部署软件项目,以实现持续集成(CI)和持续交付/部署(CD)。…...
ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
在 uart_driver_install 函数中,参数 RX_BUF_SIZE * 2 指定了接收缓冲区(RX buffer)的大小。这个参数对于 UART 驱动程序来说非常重要,因为它决定了可以存储多少接收到的数据,直到应用程序读取它们为止。下面是对该函数…...
Ubuntu把应用程序放到桌面
有时候我们下载的软件是一个文件夹,通常需要进入进入指定文件夹下去执行.sh 文件来启动,下面来个实例如何把idea放到桌面 打开文件目录/usr/share/applications/或者~/.local/share/applications/目录。第一个目录是全局的,所有用户都可以使…...
什么是端口映射
端口映射 端口映射(Port Mapping)是一种网络技术,用于将外部网络请求转发到内部网络的特定设备或服务。它通常用于以下场景: 外部访问内部服务:允许外部用户通过公网IP访问内网中的设备或服务。多设备共享IP…...

数据结构《MapSet哈希表》
文章目录 一、搜索树1.1 定义1.2 模拟实现搜索 二、Map2.1 定义2.2 Map.Entry2.3 TreeMap的使用2.4 Map的常用方法 三、Set3.1 定义3.2 TreeSet的使用3.3 Set的常用方法 四、哈希表4.1 哈希表的概念4.2 冲突4.2.1 冲突的概念4.2.2 冲突的避免1. 选择合适的哈希函数2. 负载因子调…...