数据建模流程: 概念模型>>逻辑模型>>物理模型
数据建模流程


概念模型
概念模型是一种高层次的数据模型,用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求,而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识,确保对业务需求的理解一致
特点
-
业务导向:概念模型主要从业务角度出发,描述业务实体、属性和它们之间的关系。
-
高层次抽象:它不涉及具体的技术细节,如数据库表结构、数据类型等。
-
易于理解:概念模型通常使用图形化的表示方法(如实体-关系图),便于业务人员和技术人员共同理解。
-
独立于技术实现:概念模型不依赖于特定的数据库管理系统或技术平台。
组成部分
-
实体(Entity):表示业务中的关键概念或对象,如“客户”、“订单”、“产品”等。
-
属性(Attribute):描述实体的特征或属性,如“客户”实体可能有“姓名”、“地址”、“电话”等属性。
-
关系(Relationship):表示实体之间的关联,如“客户”与“订单”之间的关系可以是“客户下订单”。
作用
-
需求分析:帮助业务人员和技术人员共同理解和定义业务需求。
-
沟通工具:作为业务人员和技术人员之间的沟通桥梁,确保双方对业务需求的理解一致。
-
设计基础:为后续的逻辑模型和物理模型设计提供基础。
-
文档化:作为项目文档的一部分,记录业务需求和数据需求。
示例
在线商店的概念模型
-
实体:客户、订单、产品、支付。
-
属性:
-
客户:客户ID、姓名、地址、电话。
-
订单:订单ID、订单日期、总金额。
-
产品:产品ID、名称、价格、库存。
-
支付:支付ID、支付日期、支付金额。
-
-
关系:
-
客户与订单:一个客户可以有多个订单。1对多
-
订单与产品:一个订单可以包含多个产品。1对多
-
订单与支付:一个订单对应一个支付。1对1
-
示例:电脑租赁业务的概念模型

实体:采购管理, 库存管理, 设备管理, 客户关系管理, 合同管理, 统计分析, 系统管理
属性:
-
采购管理:采购订单、供应商信息、采购日期、采购金额等。
-
库存管理:库存数量、库存位置、库存状态、入库日期、出库日期等。
-
设备管理:设备ID、设备名称、设备状态、维护记录、购买日期等。
-
客户关系管理:客户ID、客户姓名、联系方式、客户等级、历史交易等。
-
合同管理:合同ID、合同日期、合同金额、合同状态、相关客户等。
-
统计分析:分析类型、分析日期、分析结果、相关数据等。
-
系统管理:系统日志、用户权限、系统配置、维护记录等。
关系:
-
采购管理与库存管理:采购的物品需要入库,库存管理需要根据采购订单调整库存。
-
库存管理与设备管理:设备可能作为库存的一部分进行管理,设备出库和入库需要记录。
-
库存管理与合同管理:库存管理需要根据合同需求调整库存,合同管理需要确保合同中的物品有足够库存。
-
客户关系管理与合同管理:合同管理需要与客户关系管理相结合,以确保合同的执行和客户满意度。
-
统计分析与各个管理模块:统计分析需要从各个管理模块收集数据,进行分析以支持决策。
-
系统管理与各个管理模块:系统管理负责维护整个系统的运行,确保各个管理模块的数据安全和系统稳定。
注意
注重全局的理解
需要对整体架构做思考
通常是自上而下的模式,与业务反复沟通澄清需求
划定系统边界,避免方向性错误
业务主导
用一页纸整体展示
逻辑模型
逻辑模型是一种详细的数据模型,用于描述系统中的数据结构、关系和约束,而不涉及具体的物理存储细节。逻辑模型是概念模型和物理模型之间的桥梁,它更详细地定义了数据的组织方式,但仍然独立于特定的数据库管理系统(DBMS)或技术平台。
逻辑模型在整个的模型设计过程中所占的工作量是最高的,达到60%~70%,
1.充分分析业务流程,将业务对象的数据属性和数据关系分析清晰, 业务对象和逻辑实体并不一定是一一对应的,往往是1对多的关系
2.逻辑模型需要继承自概念模型, 即基于概念模型来设计逻辑模型, 也要考虑后面物理模型的设计(考虑物理模型的物理数据库的存储情况来做属性微调和管理变更, )
3.对概念模型里面多对多的关系进行拆分
特点
-
详细的数据结构:逻辑模型详细描述了实体、属性、关系和约束。
-
独立于技术实现:虽然逻辑模型比概念模型更详细,但它仍然不涉及具体的物理存储细节,如文件组织、索引等。
-
规范化:逻辑模型通常遵循规范化原则,以减少数据冗余和提高数据完整性。
-
易于转换:逻辑模型可以相对容易地转换为物理模型,适用于不同的数据库管理系统。
组成部分
-
实体(Entity):表示业务中的关键概念或对象,如“客户”、“订单”、“产品”等。
-
属性(Attribute):描述实体的特征或属性,如“客户”实体可能有“客户ID”、“姓名”、“地址”、“电话”等属性。
-
关系(Relationship):表示实体之间的关联,如“客户”与“订单”之间的关系可以是“客户下订单”。
-
约束(Constraints):定义数据的规则和限制,如主键、外键、唯一性约束等
作用
-
详细设计:在概念模型的基础上,进一步详细设计数据结构。
-
规范化:通过规范化过程,减少数据冗余和提高数据完整性。
-
沟通工具:作为业务人员、数据架构师和开发人员之间的沟通工具,确保对数据结构的理解一致。
-
转换基础:为物理模型的设计和实现提供基础。
示例
在线商店的逻辑模型
-
实体:客户、订单、产品、支付。
-
属性:
-
客户:客户ID(主键)、姓名、地址、电话。
-
订单:订单ID(主键)、客户ID(外键)、订单日期、总金额。
-
产品:产品ID(主键)、名称、价格、库存。
-
支付:支付ID(主键)、订单ID(外键)、支付日期、支付金额。
-
-
关系:
-
客户与订单:一个客户可以有多个订单(一对多关系)。
-
订单与产品:一个订单可以包含多个产品,一个产品可以属于多个订单(多对多关系,通常通过关联表实现)。
-
订单与支付:一个订单对应一个支付(一对一关系)。
-
示例: 电脑租赁业务的逻辑模型

1. 实体及其属性
订单详细信息
-
订单编号:唯一标识一个订单。
-
产品编号:唯一标识一个产品。
-
产品名称
-
产品类型
-
产品数量
-
租赁周期
订单基本信息
-
订单编号:唯一标识一个订单。
-
客户编号:唯一标识一个客户。
-
联系人姓名
-
订单日期
-
订单状态
-
订单金额
-
优惠金额
合同基本信息
-
合同编号:唯一标识一个合同。
-
签订人名称
-
签订日期
-
合同开始日期
-
合同结束日期
-
合同状态
-
合同金额
-
合同质量
-
合同押金
合同历史信息
-
合同编号:唯一标识一个合同。
-
变更项目
-
合同变更时间
-
变更后合同状态
-
变更后合同开始日期
-
变更后合同结束日期
合同结算信息
-
合同编号:唯一标识一个合同。
-
结算状态:合同的结算状态。
-
结算金额:合同的结算金额。
-
结算时间:合同结算的时间。
合同订单信息
-
合同编号:唯一标识一个合同。
-
订单编号:唯一标识一个订单。
-
订单顺序号:可能与订单在合同中的顺序有关
2. 实体之间的关系
-
订单与合同:通过“合同订单信息”实体关联,表示一个合同可以包含多个订单。
-
合同历史:通过“合同历史信息”实体记录合同的变更历史。
-
合同结算:通过“合同结算信息”实体记录合同的结算情况。
3. 逻辑模型的作用
-
数据组织:该模型详细描述了订单和合同相关的数据结构,包括各个实体的属性及其关系。
-
数据完整性:通过定义主键和外键(如订单编号、合同编号),确保数据的完整性和一致性。
-
业务规则:通过定义各种状态(如订单状态、合同状态)和金额字段,支持业务规则的实施。
-
历史记录:通过“合同历史信息”实体,记录合同的变更历史,支持审计和跟踪。
注意
-
使用标准业务术语
-
遵守模型设计规范
-
先范式建模、再逆规范化
-
定义需完整且准确
-
应用成熟的建模模式
-
一定程度抽象,保证模型弹性
-
重要数据关系需强制建立
-
使用建模工具
-
与概念模型保持一致,拆分概念模型中的多对多关系
建模工具
专业术语
与逻辑模型相关的常见专业术语
实体(Entity)
-
表示业务中的关键概念或对象,如“客户”、“订单”、“产品”等。
属性(Attribute)
-
描述实体的特征或属性,如“客户”实体可能有“客户ID”、“姓名”、“地址”、“电话”等属性。
关系(Relationship)
-
描述实体之间的关联和依赖。,如“客户”与“订单”之间的关系可以是“客户下订单”。
主键(Primary Key)
-
实体的唯一标识确保每个实体实例的唯一性, 如“客户ID”可以作为“客户”实体的主键。
外键(Foreign Key)
-
在一个实体中引用另一个实体的主键,建立实体之间的关系。如“订单”实体中的“客户ID”可以作为外键,引用“客户”实体的主键。
规范化(Normalization)
-
通过分解实体和属性,减少数据冗余, 提高数据完整性和一致性。
约束(Constraints)
-
定义数据的规则和限制,确保数据的完整性和一致性。如主键约束、外键约束、唯一性约束等。
实体-关系图(Entity-Relationship Diagram, ERD)
-
用图形化表示实体、属性和关系的图表, 帮助理解和沟通数据模型。
数据字典(Data Dictionary)
-
描述数据模型中所有实体、属性、关系和约束的文档。
范式(Normal Forms)
-
规范化过程中的不同级别,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
多对多关系(Many-to-Many Relationship)
-
两个实体之间的关联,其中一个实体的实例可以与另一个实体的多个实例相关联,反之亦然。通常通过关联表实现。
一对一关系(One-to-One Relationship)
-
两个实体之间的关联,其中一个实体的一个实例只能与另一个实体的一个实例相关联。
一对多关系(One-to-Many Relationship)
-
两个实体之间的关联,其中一个实体的一个实例可以与另一个实体的多个实例相关联(常见)
关联实体(Associative Entity)
-
用于解决多对多的实体关系,通常包含两个外键,分别引用相关实体的主键。
派生属性(Derived Attribute)
-
通过计算或其他属性派生出来的属性,如“年龄”可以通过“出生日期”计算得出。减少数据冗余,提高数据一致性。
域(Domain)
-
属性的取值范围或数据类型,如“年龄”属性的域可以是0到120的整数。
候选键(Candidate Key)
-
能够唯一标识实体实例的属性或属性组合,如“客户ID”和“身份证号”都可以作为“客户”实体的候选键。
复合键(Composite Key)
-
由多个属性组成的主键,在需要多个属性唯一标识实体时使用。如“订单ID”和“产品ID”可以组合成“订单明细”实体的复合键。
弱实体(Weak Entity)
-
依赖于另一个实体存在的实体,如“订单明细”依赖于“订单”存在。
递归关系(Recursive Relationship)
-
实体与自身之间的关系,描述实体内部的层次结构。
示例

遵守规范
设计逻辑模型时应遵守的规范
业务驱动
-
理解需求:确保模型满足业务需求,与业务目标一致。
-
业务术语:使用业务熟悉的术语命名实体和属性。
规范化
-
范式应用:遵循规范化原则(如1NF、2NF、3NF)以减少冗余和依赖。
-
平衡:在规范化和性能之间找到平衡,避免过度规范化。
1NF(第一范式)确保每列的原子性,即每个字段不可再分。要求每行数据唯一,通常通过主键实现2NF(第二范式)在1NF的基础上,非主键字段完全依赖于主键3NF(第三范式)在2NF的基础上,消除传递依赖,确保非主键字段之间没有依赖关系
一致性
-
命名规范:统一命名实体、属性和关系,保持一致性。
-
数据类型:统一相同属性的数据类型和格式。
可扩展性
-
灵活设计:确保模型能适应未来业务变化。
-
模块化:采用模块化设计,便于扩展和维护。
模块化设计是一种将复杂系统分解为独立、可管理和可重用模块的方法。
1. 理解业务需求
分解业务功能:将业务需求分解为独立的功能模块,每个模块对应一个特定的业务领域或功能。识别核心数据实体:确定业务中的核心数据实体(如客户、订单、产品等)并围绕这些实体设计模块2. 划分模块
按业务领域划分:根据业务领域(如销售、财务、库存等)划分模块,每个模块负责一个
业务领域的
数据处理。按功能划分:根据功能(如数据采集、数据清洗、数据存储、数据分析等)划分模块,每个模块
专注于一个功能。3. 定义模块边界
明确模块职责:为每个模块定义清晰的职责和范围,确保模块之间职责不重叠。模块接口设计:定义模块之间的交互接口(如输入、输出、调用方式),确保模块间的通信标准化。4. 数据模型分层
分层设计:将数据模型分为不同的层次(如数据源层、数据存储层、数据处理层、数据服务层等),
每个层次负责特定的功能。层次解耦:确保各层次之间的依赖最小化,便于单独修改和扩展某一层次。5. 模块独立性
低耦合:尽量减少模块间的依赖,确保一个模块的修改不会影响其他模块。高内聚:确保每个模块内部的功能高度相关,提高模块的独立性和可维护性。6. 使用标准化组件
通用组件:识别和设计可重用的通用组件(如数据验证、数据转换、日志记录等),减少重复开发。组件库:建立和维护一个组件库,便于在多个项目中复用。7. 数据流设计
明确数据流向:设计清晰的数据流,确保数据在不同模块间的流动是高效和可控的。数据接口标准化:使用标准化的数据格式(如JSON、Avro、Parquet等)和协议(如REST、gRPC等)
进行模块间的数据交换。8. 测试与验证
单元测试:为每个模块编写单元测试,确保模块的功能正确性。集成测试:进行模块间的集成测试,确保模块间的交互正常。9. 文档化
模块文档:为每个模块编写详细的设计文档,包括功能描述、接口规范和使用示例。数据字典:维护数据字典,记录每个模块中的数据字段定义和业务含义。10. 版本控制与变更管理
版本控制:对每个模块进行版本控制,便于追踪变更和管理不同版本。变更管理:建立变更管理流程,确保模块的修改经过充分测试和验证。11. 持续改进
反馈机制:建立反馈机制,收集模块使用中的问题和改进建议。迭代优化:根据反馈和业务变化,持续优化和调整模块设计。示例:模块化设计在数据仓库中的应用数据源模块:负责从不同数据源(如数据库、API、文件)提取数据。数据清洗模块:负责数据清洗、去重、格式转换等。数据存储模块:负责将清洗后的数据存储到数据仓库或数据湖中。数据分析模块:负责从存储层读取数据并进行业务分析。数据服务模块:提供API或数据接口,供其他系统或应用使用。
数据完整性
-
主键和外键:使用主键确保唯一性,外键维护关系完整性。
-
约束:通过约束(如唯一性、非空)保证数据质量。
性能优化
-
索引:合理使用索引提升查询性能。
-
分区:对大表进行分区,优化查询和管理。
文档化
-
模型文档:详细记录模型设计、实体、属性和关系。
-
数据字典:维护数据字典,说明每个字段的含义和来源。
安全性
-
数据权限:设计时考虑数据访问权限,确保敏感数据安全。
-
加密:对敏感数据进行加密存储和传输。
版本控制
-
版本管理:对模型设计进行版本控制,便于追溯和回滚。
-
变更记录:记录每次变更的原因和内容。
数据治理
-
数据质量:确保数据准确性、一致性和完整性。
-
元数据管理:有效管理元数据,支持数据发现和使用。
测试与验证
-
模型验证:通过测试确保模型符合业务需求。
-
数据验证:验证模型中的数据是否准确和完整。
先范式建模、再逆规范化
1. 先范式建模
-
目标:通过规范化设计,确保数据结构的合理性、减少冗余、提高数据一致性。
-
步骤:
-
1NF(第一范式):确保每列的原子性,消除重复组。
-
2NF(第二范式):消除部分依赖,确保非主键字段完全依赖于主键。
-
3NF(第三范式):消除传递依赖,确保非主键字段之间没有依赖关系。
-
更高范式(可选):如BCNF(巴斯-科德范式)、4NF(第四范式)等,进一步优化数据结构。
-
2. 再逆规范化
-
目标:在范式模型的基础上,通过引入冗余或合并表来优化查询性能。
-
常见逆规范化技术:
-
合并表:将多个规范化的表合并为一个表,减少查询时的表连接操作。
-
增加冗余字段:在表中添加冗余字段,避免频繁的表连接。
-
预计算字段:存储预计算的结果(如总和、平均值),避免实时计算。
-
分区表:将大表按某种规则分区,提高查询效率。
-
物化视图:创建物化视图,存储复杂查询的结果,提升查询性能。
-
为什么先范式建模、再逆规范化?
-
规范化是基础:
-
范式建模确保数据结构的合理性和一致性,是逻辑建模的基础。
-
只有在规范化的基础上,才能准确识别哪些地方需要逆规范化。
-
-
逆规范化是优化:
-
逆规范化是在范式模型的基础上,针对性能瓶颈进行的优化。
-
通过逆规范化,可以在不牺牲数据一致性的前提下,显著提升查询性能。
-
应用示例
-
电商订单系统的数据模型
-
步骤:
-
范式建模:
-
订单表(
Orders):存储订单基本信息。 -
订单明细表(
OrderDetails):存储每个订单的商品明细。 -
商品表(
Products):存储商品信息。 -
用户表(
Users):存储用户信息。
-
-
逆规范化:
-
在
Orders表中增加冗余字段(如TotalAmount,预计算订单总金额)。 -
创建物化视图,存储用户订单历史,避免频繁查询多表连接。
-
将
Orders和OrderDetails合并为宽表,减少查询时的表连接操作。
-
-
成熟的建模模式

抽象和模型弹性
-
抽象:将具体业务细节提炼为通用概念,避免过度依赖特定业务规则或流程。例如,用“客户”代替“VIP客户”或“普通客户”。
-
模型弹性:模型能够适应业务变化,如新增需求或规则调整,而无需大规模重构。
示例:
-
抽象:用“订单状态”代替“待付款、已发货”等具体状态。
-
弹性:通过配置表管理状态变化,避免频繁修改代码。
重要数据关系的强制建立
重要数据关系是指对业务逻辑和数据分析至关重要的实体之间的关联。
这些关系是业务规则的核心,必须在逻辑模型中明确体现。
(1)主键与外键约束
-
为每个实体定义唯一标识(主键)。
-
在关联实体中通过外键引用主键,确保关系明确。
-
例如:订单表中包含客户ID(外键),强制关联到客户表的主键。
(2)关系基数约束
-
明确关系的基数(1:1、1:N、M:N)。
-
例如:一个客户可以有多个订单(1:N),但一个订单只能属于一个客户。
(3)非空约束
-
强制要求关键字段(如外键)不能为空。
-
例如:订单表中的客户ID字段必须非空。
(4)业务规则校验
-
在数据录入或处理时,通过业务逻辑校验强制建立关系。
-
例如:创建订单时,必须验证客户ID是否存在。
(5)数据模型设计工具
-
使用ER图(实体关系图)等工具,明确标识重要关系。
-
在设计阶段就确保这些关系被纳入模型。
物理模型
物理模型是数据建模的最终阶段,它将逻辑模型转化为具体的、可实现的数据库结构。物理模型定义了数据在数据库中的实际存储方式,包括表结构、字段类型、索引、分区等细节
物理模型的设计步骤
(1)基于逻辑模型
-
将逻辑模型中的实体转化为表,属性转化为字段,关系转化为外键。
(2)选择数据库平台
-
根据项目需求选择合适的数据库管理系统(如 MySQL、PostgreSQL、Oracle 等)。
(3)优化设计
-
根据性能需求优化表结构,如添加索引、分区、冗余字段等。
(4)生成DDL脚本
-
根据物理模型生成数据库的DDL(数据定义语言)脚本,用于创建表、索引等。
(5)测试与调整
-
在测试环境中验证物理模型的性能,并根据测试结果进行调整。

示例

注意
-
使用建模工具自动生成
-
标准术语自动转换字段名称
-
表空间、索引、视图、主键等
-
根据数据环境设计分区
-
DBA深度介入
-
与数据库DDL保持一致
-
版本管理
相关文章:
数据建模流程: 概念模型>>逻辑模型>>物理模型
数据建模流程 概念模型 概念模型是一种高层次的数据模型,用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求,而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识,确保对业务需…...
光谱仪与光谱相机的核心区别与协同应用
一、核心功能与数据维度 光谱仪 功能定位:专注单点或线状区域的光谱分析,通过色散元件(光栅/棱镜)分离波长,生成一维或二维光谱曲线,用于量化光强、吸收率等参数。 数据维度:输…...
路由工程师大纲-2:结合AI技术构建路由拓扑与BGP异常检测的知识链体系
一、领域交叉技术图谱 1. 路由拓扑测绘: 图神经网络(GNN):建模网络结构,预测链路稳定性。复杂网络分析:计算节点中心性(如PageRank)、社区发现(Louvain算法)。可视化工具:Gephi/NetworkX + PyTorch Geometric(图嵌入)。2. BGP异常检测: 时间序列模型:LSTM/Tran…...
运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5
运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5 文章目录 运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与…...
再次理解 Spring 中的 IOC、DI、AOP 与多态
目录 引言 1. IOC(控制反转) 1.1 什么是 IOC? 1.2 IOC 的核心思想 1.3 IOC 的实现 2. DI(依赖注入) 2.1 什么是 DI? 2.2 DI 的实现方式 2.3 DI 的核心作用 3. AOP(面向切面编程&#x…...
rocky linux 与centos系统的区别
Rocky Linux 和 CentOS 都是基于 Red Hat Enterprise Linux(RHEL)的社区发行版,但两者在目标定位、更新策略和社区管理上有显著差异。以下是核心区别的详细对比: 一、背景与定位 特性Rocky LinuxCentOS起源由 CentOS 联合创始人…...
操作系统导论——第13章 抽象:地址空间
一、早期系统 从内存来看,早期的机器并没有提供多少抽象给用户。基本上,机器的物理内存如图13.1所示 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始)&…...
C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台
一、系统环境 操作系统:win10,win11 运行环境:dotnet8 工具:命令行,powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…...
织梦DedeCMS如何获得在列表和文章页获得顶级或上级栏目名称
获得顶级或二级栏目的名称,都需要修改php文件,修改的文件【/include/common.func.php】将代码插入到这个文件的最下面即可; 一、获得当前文章或栏目的【顶级栏目】名称 1、插入顶级栏目代段 //获取顶级栏目名 function GetTopTypename($id…...
深度学习仓库代码结构认识
规范化深度学习代码仓库的目录结构和文件组织方式,以便于代码的管理、协作和复现性。 一种供参考的目录树结构: . ├── README.md ├── requirements.txt ├── data/ ├── docs/ ├── logs/ └── src/├── configs/│ └── config.y…...
C#基于MVC模式实现TCP三次握手,附带简易日志管理模块
C#基于MVC模式实现TCP三次握手 1 Model1.1 ServerModel1.2 ClientModel1.3 配置参数模块1.4 日志管理模块1.4.1 数据结构1.4.1 日志管理工具类1.4.1 日志视图展示1.4.1.1 UcLogManage.cs1.4.1.2 UcLogManage.Designer.cs 2 视图(View)2.1 ViewServer2.1.…...
6、linux c 线程 -下
1. 线程的取消 意义 随时终止一个线程的执行。 函数 #include <pthread.h> int pthread_cancel(pthread_t thread); pthread_t thread:要取消的线程 ID。 返回值 成功时返回 0。 失败时返回非零错误码。 注意 线程的取消需要有取消点,…...
分布式算法:Paxos Raft 两种共识算法
1. Paxos算法 Paxos算法是 Leslie Lamport(莱斯利兰伯特)在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法(前提是不存在恶意节点)。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…...
什么是数据库监控
数据库监控是一个综合的过程,涉及观察、分析和优化组织内数据库的性能、运行状况和可用性。通过持续跟踪查询执行时间、CPU使用率、内存消耗和存储I/O等指标,数据库监控使管理员能够主动识别和解决潜在问题。这种对数据库操作的实时可见性对于确保应用程…...
Java学习总结-泛型
什么是泛型? 定义 类、接口、方法时,同时声明了一个或多个类型变量(如:<E>),称为泛型类、泛型接口、泛型方法、他们统称为泛型。public class ArrayList<E>{ }。 有什么作用呢…...
基于深度学习的相位调制算法步骤
1.构建网络结构 2.制作数据集 3.训练网络 4.引入评价指标 5.迭代优化 总结 通过以上步骤,可以实现基于深度学习的相位调制算法: 使用 U-Net 构建神经网络。 生成数据集并训练网络。 使用训练好的网络预测相位分布。 通过相关系数 γ 评估调制效果&…...
curl使用报错error LNK2001: 无法解析的外部符号 __imp__CertCloseStore@8
使用curl静态库libcurl_a.lib 时报错,内容如下: 1>libcurl_a.lib(openssl.obj) : error LNK2001: 无法解析的外部符号 __imp__CertCloseStore8 1>libcrypto.lib(libcrypto-lib-e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertClose…...
Go语言的基础类型
一基础数据类型 一、布尔型(Bool) 定义:表示逻辑真 / 假,仅有两个值:true 和 false内存占用:1 字节使用场景:条件判断、逻辑运算 二、数值型(Numeric) 1. 整数类型&…...
动力保护板测试仪:电池安全的坚实守护者
在新能源技术日新月异的今天,电池作为各类电子设备的心脏,其安全性与可靠性成为了行业内外关注的焦点。而动力保护板,作为电池系统中的重要组成部分,承担着精准调控电池充放电、防止电池过充、过放、短路等危险情况的重任。然而&a…...
Lineageos 22.1(Android 15)制定应用强制横屏
一、前言 有时候需要系统的某个应用强制衡平显示,不管他是如何配置的。我们只需要简单的拿到top的Task下面的ActivityRecord,并判断包名来强制实现。 二、调整wms com.android.server.wm.DisplayRotation /*** Given an orientation constant, return…...
【Python】【PyQt5】设置事件绑定(例为按钮点击显示提示框)
前言 上篇文章我们讲了如何创作一个UI界面,并将其使用代码显示出来,这篇文章我们来讲讲事件的绑定 为增加文章趣味性,此篇文章我们将以点击窗口中的按钮来后并显示一个提示框 修改上次代码(优化) 上篇文章我所讲的要…...
node-ddk, electron组件, 自定义本地文件协议,打开本地文件
node-ddk 文件协议 https://blog.csdn.net/eli960/article/details/146207062 也可以下载demo直接演示 http://linuxmail.cn/go#node-ddk 安全 考虑到安全, 本系统禁止使用 file:/// 在主窗口, 自定义文件协议,可以多个 import main, { NODEDDK } from "node-ddk/m…...
SpringBoot-3-JWT令牌
目录 引入 引入依赖 拦截器 创建工具类 创建拦截器的包及拦截器 注册拦截器 修改一下登录成功后token的代码 测试 引入 试想一下,以上我们的访问都是直接访问对应的接口。比如说用户登录的时候就访问登录的接口。 那么如果有人他不访问你的登录接口&#…...
ChatGPT vs DeepSeek vs Copilot vs Claude:谁将问鼎AI王座?
李升伟 整理 2025年的人工智能领域创新涌动,ChatGPT、DeepSeek、Copilot和Claude四大模型各领风骚。这些AI系统各具特色,分别专注于编程、创意写作、技术推理和AI伦理等不同领域。本文将深入解析这些AI模型的功能特性及其优势领域。 核心AI模型解析 C…...
git使用经验(一)
git使用经验(一) 我之前已经下载了别人的代码,我想在此基础上进行修改,并移动到自己的私有仓库,方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码,删除有关git的隐藏文件 进入到自己的…...
文件上传的小点总结
1.文件上传漏洞 服务器端脚本语言对上传文件没有严格的验证和过滤,就可以给攻击者上传恶意脚本文件的可能。 文件上传检测绕过: 简单思路:(这里以前端上传图片为例) ①开启phpstudy,启动apache即可&…...
基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合视频会议接入方案
智能融合视频会议系统方案—多协议、多场景、全兼容的一站式视频协作平台 OvMeet,LiveMeet针对用户核心痛点实现功能与用户价值 ,Web平台实现MCU多协议,H265/H264等不同编码监控,直播,会议,调度资源统一融合在一套界…...
Python常用库全解析:从数据处理到机器学习
适合人群:Python初学者 | 数据分析师 | 机器学习爱好者 目录 一、NumPy:科学计算的核心库 1. 核心功能 2. 应用领域 3. 常用方法示例 二、Pandas:数据分析的瑞士军刀 1. 核心功能 2. 应用领域 3. 常用方法示例 三、Matplotlib&#…...
基于漂浮式海上风电场系统的浮式风力发电机matlab仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于漂浮式海上风电场系统的浮式风力发电机matlab仿真,通过MATLAB数值仿真对浮式风力发电机的性能做模拟与仿真。 2.系统仿真结果 3.核心程序与模型 版本&#x…...
深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件
在ArkUI框架中,组件化开发是提升代码复用性和维护性的关键手段。随着项目复杂度的增加,开发者常常面临如何在保持组件封装性的同时,灵活处理组件内部逻辑的问题。传统的Builder装饰器虽然提供了强大的自定义构建能力,但在某些场景…...
