关于如何更好管理好数据库的一点思考

news2024/10/10 18:26:35

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。

一、数据库范式

以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。

示例:学生课程登记系统

初始表格如下:

学生ID学生姓名课程ID课程名称教师教师办公室
1张三101数学王老师101室
2李四102英语李老师102室
3王五101数学王老师101室
4赵六103物理陈老师103室

1. 第一范式(1NF)

要求:所有属性值必须是原子值,即每个单元格只能包含一个值,不能包含集合或重复的组。

分析:初始表格已经满足1NF,因为每个字段的值都是单一且不可再分的。

2. 第二范式(2NF)

要求:在满足1NF的基础上,所有非主属性必须完全依赖于主键(消除部分依赖)。

分析:初始表格的主键是(学生ID,课程ID)组合,但“学生姓名”只依赖于“学生ID”,“课程名称”和“教师”依赖于“课程ID”。

转换

学生表

学生ID学生姓名
1张三
2李四
3王五
4赵六

课程表

课程ID课程名称教师教师办公室
101数学王老师101室
102英语李老师102室
103物理陈老师103室

登记表

学生ID课程ID
1101
2102
3101
4103

3. 第三范式(3NF)

要求:在满足2NF的基础上,所有非主属性必须直接依赖于主键,消除传递依赖。

分析:在课程表中,“教师办公室”依赖于“教师”,不是直接依赖于主键“课程ID”。

转换

课程表

课程ID课程名称教师
101数学王老师
102英语李老师
103物理陈老师

教师表

教师教师办公室
王老师101室
李老师102室
陈老师103室

4. 博依斯-科得范式(BCNF)

要求:在满足3NF的基础上,所有决定因素必须是候选键。

分析:目前的表结构已经符合BCNF,因为所有的决定因素都是候选键,没有非候选键的决定因素。

5. 第四范式(4NF)

要求:在满足BCNF的基础上,不存在多值依赖。

分析:我们需要确保表中不存在单个记录的多值依赖。在目前的表中,没有多值依赖的情况,已经满足4NF。

6. 第五范式(5NF)

要求:在满足4NF的基础上,所有的连接依赖都是由候选键隐含的。

分析:我们确保所有数据分解后的重组不会产生冗余数据。在目前的表中已经没有这样的连接依赖,所以满足5NF。

最终规范化结果

学生表

学生ID学生姓名
1张三
2李四
3王五
4赵六

课程表

课程ID课程名称教师
101数学王老师
102英语李老师
103物理陈老师

登记表

学生ID课程ID
1101
2102
3101
4103

教师表

教师教师办公室
王老师101室
李老师102室
陈老师103室

通过这些范式的逐步应用,我们可以看到如何通过规范化过程减少冗余,提高数据的一致性和完整性。每个范式都有其具体的要求和目的,确保数据库设计在不同层次上达到最佳状态。

二、ER图详解

ER图(实体-关系图,Entity-Relationship Diagram)是数据库设计中的一种重要工具,用于直观地表示数据及其关系。ER图由实体、属性和关系构成,帮助设计者理解和组织数据库结构。

1. 基本组件

  1. 实体(Entity):表示现实世界中的对象或概念,可以是物理的(如“学生”、“课程”)也可以是抽象的(如“部门”、“项目”)。

  2. 属性(Attribute):描述实体的特性或性质(如“学生”的姓名、学号)。

  3. 关系(Relationship):表示实体之间的关联(如“学生”选“课程”)。

2. 图示表示

  • 实体:用矩形表示,矩形内写实体名。

  • 属性:用椭圆形表示,椭圆形与实体矩形相连。

  • 关系:用菱形表示,菱形与相关的实体矩形相连。

  • 主键(Primary Key):用下划线标识的属性,唯一标识实体中的每一个实例。

3. 示例:学生课程登记系统

实体和属性
  1. 学生(Student)

  • 学生ID(StudentID) 主键

  • 姓名(Name)

  • 年级(Grade)

  1. 课程(Course)

  • 课程ID(CourseID) 主键

  • 课程名称(CourseName)

  • 学分(Credits)

  1. 教师(Teacher)

  • 教师ID(TeacherID) 主键

  • 姓名(Name)

  • 办公室(Office)

  1. 选课(Enrollment)

  • 学生ID(StudentID) 外键

  • 课程ID(CourseID) 外键

  • 成绩(Grade)

关系
  1. 选课(Enrollment)

  • 关系类型:学生和课程之间的多对多关系。

  • 属性:成绩。

  1. 授课(Teaches)

  • 关系类型:教师和课程之间的一对多关系。

  • 无额外属性。

4. ER图表示

+-----------------+                 +-----------------+
 |     学生        |                 |     课程        |
 |-----------------|                 |-----------------|
 | +学生ID (PK)    |<--------------->| +课程ID (PK)    |
 |  姓名           |                 |  课程名称       |
 |  年级           |                 |  学分           |
 +-----------------+                 +-----------------+
           ^                              ^
           |                              |
           |                              |
           |                              |
 +-----------------+                 +-----------------+
 |   选课          |                 |    教师         |
 |-----------------|                 |-----------------|
 | +学生ID (FK)    |                 | +教师ID (PK)    |
 | +课程ID (FK)    |                 |  姓名           |
 |  成绩           |                 |  办公室         |
 +-----------------+                 +-----------------+
           ^                              ^
           |                              |
           |                              |
           |                              |
           |                              |
           +------------------------------+
                    授课

5. 详细解释

  1. 学生实体(Student)

  • 属性:学生ID、姓名、年级。

  • 主键:学生ID唯一标识每个学生。

  1. 课程实体(Course)

  • 属性:课程ID、课程名称、学分。

  • 主键:课程ID唯一标识每门课程。

  1. 教师实体(Teacher)

  • 属性:教师ID、姓名、办公室。

  • 主键:教师ID唯一标识每个教师。

  1. 选课关系(Enrollment)

  • 外键:学生ID、课程ID。

  • 属性:成绩。

  • 多对多关系:一个学生可以选多门课程,一门课程可以有多个学生选修。

  1. 授课关系(Teaches)

  • 外键:教师ID、课程ID。

  • 一对多关系:一个教师可以授多门课程,但一门课程由一个教师授课。

6. ER图符号详解

  • 矩形(实体):表示一个实体,包含实体的名字。

  • 椭圆(属性):表示一个属性,包含属性的名字。主键属性在属性名下加下划线。

  • 菱形(关系):表示一个关系,包含关系的名字。

  • 连接线:实体、属性和关系之间用线连接,表明它们之间的关联。

  • 多对多关系:实体和关系之间的线标注为“n”和“m”。

  • 一对多关系:实体和关系之间的线标注为“1”和“n”。

  • 一对一关系:实体和关系之间的线标注为“1”和“1”。

7. 实践应用

ER图广泛用于数据库设计的初期阶段,它帮助设计者:

  • 明确系统中涉及的实体和它们的属性。

  • 理解实体之间的关系及其性质。

  • 提供直观的图形化表示,便于与利益相关者沟通。

  • 确定主键和外键,为后续的数据库表设计打下基础。

通过ER图的使用,可以将复杂的数据库设计过程简化为多个直观的组件和关系,确保设计的数据库结构既高效又符合业务需求。

三、如何避免数据库过度设计

在实际应用中,设计一个良好的数据库需要遵循一系列数据库理论和最佳实践,同时避免过度设计。这些理论和实践帮助确保数据库设计高效、灵活、易于维护,并且能满足业务需求。以下是一些关键的理论和原则:

1. 正规化理论(Normalization Theory)

目的:通过将数据分解成更小的、彼此独立的关系,减少数据冗余,避免数据异常。

常用范式

  • 第一范式(1NF):确保每个属性值都是原子值。

  • 第二范式(2NF):在1NF的基础上,消除非主键字段对主键的部分依赖。

  • 第三范式(3NF):在2NF的基础上,消除非主键字段对主键的传递依赖。

  • 博依斯-科得范式(BCNF):在3NF的基础上,所有决定因素必须是候选键。

  • 第四范式(4NF):在BCNF的基础上,消除多值依赖。

  • 第五范式(5NF):在4NF的基础上,确保每个连接依赖都由候选键隐含。

实际应用

  • 遵循3NF:通常,遵循到第三范式就能满足大部分业务需求,减少数据冗余和异常。

  • 平衡性能与正规化:在某些情况下,高度正规化的数据库可能导致复杂的查询和性能问题,因此需要在正规化和性能之间找到平衡。

2. 反规范化(Denormalization)

目的:在满足性能需求的前提下,对正规化的数据库进行适当的反规范化,减少查询的复杂度和提高性能。

实际应用

  • 适当反规范化:在实际应用中,为了提高查询性能,可以适当反规范化,例如通过增加冗余字段或预计算字段。

  • 基于使用场景:反规范化应基于实际使用场景和性能需求,不宜过度。

3. 数据完整性(Data Integrity)

目的:确保数据库中的数据准确、一致、可靠。

实际应用

  • 实体完整性:每个表都有唯一的主键。

  • 参照完整性:使用外键维护表与表之间的关系,确保引用的有效性。

  • 域完整性:确保每个列的数据类型和取值范围正确。

4. 数据库索引(Indexing)

目的:提高数据库查询性能。

实际应用

  • 创建索引:为常用的查询字段、主键和外键创建索引。

  • 平衡索引数量:避免创建过多索引,因为索引会增加写操作的开销。

5. 事务管理(Transaction Management)

目的:确保数据库操作的一致性和可靠性,支持原子性、一致性、隔离性和持久性(ACID)。

实际应用

  • 使用事务:在涉及多表操作或复杂操作时,使用事务管理,确保操作的完整性。

  • 隔离级别:根据业务需求设置合适的隔离级别,避免数据并发问题。

6. 数据库安全(Database Security)

目的:保护数据库免受未授权访问和攻击。

实际应用

  • 访问控制:为不同用户和角色设置不同的权限。

  • 数据加密:对敏感数据进行加密存储和传输。

  • 审计日志:记录数据库操作日志,监控和审计数据库访问。

7. 数据库备份与恢复(Backup and Recovery)

目的:保护数据免受丢失或损坏。

实际应用

  • 定期备份:定期备份数据库,确保数据的安全性。

  • 恢复测试:定期进行恢复测试,确保备份数据可用。

8. 数据库设计原则

实际应用

  • 理解业务需求:在设计数据库之前,深入了解业务需求,确保设计符合实际业务场景。

  • 灵活性和扩展性:设计时考虑未来可能的变化和扩展需求。

  • 避免过度设计:遵循“KISS”(Keep It Simple, Stupid)原则,避免不必要的复杂性。

  • 文档和沟通:保持良好的文档记录,确保团队成员之间的有效沟通。

综合应用实例

示例:电子商务系统数据库设计

  1. 理解业务需求:需要管理用户、产品、订单和库存。

  2. 初步设计实体和关系

  • 用户(User):用户ID、用户名、密码、电子邮件。

  • 产品(Product):产品ID、名称、描述、价格、库存数量。

  • 订单(Order):订单ID、用户ID、订单日期、总金额。

  • 订单明细(OrderDetail):订单ID、产品ID、数量、单价。

  1. 应用正规化

  • 用户表(User):满足3NF。

  • 产品表(Product):满足3NF。

  • 订单表(Order):满足3NF。

  • 订单明细表(OrderDetail):满足3NF。

  1. 性能优化和反规范化

  • 根据查询频率和性能需求,适当反规范化,例如在订单表中增加总金额字段,减少计算开销。

  1. 索引和事务管理

  • 为用户ID、产品ID、订单ID等字段创建索引。

  • 使用事务管理订单创建和订单明细插入操作,确保操作的原子性。

  1. 数据完整性和安全

  • 使用外键维护用户、产品和订单之间的参照完整性。

  • 设置不同用户角色的访问权限,保护敏感数据。

通过遵循这些数据库理论和最佳实践,可以设计出高效、可靠且符合业务需求的数据库,同时避免过度设计。

四、常用的数据库GUI管理工具

常用的数据库GUI设计及管理工具在数据库开发、管理和维护中起着至关重要的作用。这些工具提供直观的用户界面,帮助开发人员和数据库管理员更有效地进行数据库设计、查询、调优和管理。以下是一些常用的数据库GUI设计及管理工具:

1. MySQL Workbench

特点

  • 支持数据库设计和建模,包括ER图设计。

  • 提供查询和脚本编辑器。

  • 支持数据库迁移和数据导入导出。

  • 提供性能监控和调优功能。

适用数据库:MySQL

优点

  • 丰富的功能,适用于MySQL数据库的各种任务。

  • 跨平台支持(Windows, macOS, Linux)。

2. phpMyAdmin

特点

  • 基于Web的MySQL和MariaDB管理工具。

  • 提供直观的用户界面,支持常见的数据库操作。

  • 支持SQL查询、数据库导入导出和权限管理。

适用数据库:MySQL, MariaDB

优点

  • 易于使用,适合新手和中小型项目。

  • 无需安装客户端,只需在服务器上配置。

3. pgAdmin

特点

  • 专为PostgreSQL设计的管理工具。

  • 支持复杂的SQL查询和脚本执行。

  • 提供数据库设计、监控和调优功能。

  • 支持可视化分析和数据导入导出。

适用数据库:PostgreSQL

优点

  • 强大的功能集,专注于PostgreSQL。

  • 跨平台支持(Windows, macOS, Linux)。

4. SQL Server Management Studio (SSMS)

特点

  • 微软SQL Server的官方管理工具。

  • 提供数据库设计、查询、调优和监控功能。

  • 支持集成报表和分析服务。

适用数据库:SQL Server, Azure SQL Database

优点

  • 完全集成的环境,适合企业级应用。

  • 丰富的功能,支持SQL Server的各种管理任务。

5. Oracle SQL Developer

特点

  • Oracle数据库的官方管理工具。

  • 支持数据库设计、查询和调优。

  • 提供数据导入导出和迁移工具。

适用数据库:Oracle

优点

  • 专为Oracle设计,功能全面。

  • 跨平台支持(Windows, macOS, Linux)。

6. DBeaver

特点

  • 支持多种数据库,包括MySQL, PostgreSQL, Oracle, SQL Server, SQLite等。

  • 提供数据库设计、查询和数据管理功能。

  • 开源且免费,社区版和企业版可选。

适用数据库:多种数据库

优点

  • 跨平台支持(Windows, macOS, Linux)。

  • 支持广泛的数据库,适合多种场景。

7. HeidiSQL

特点

  • 轻量级的MySQL, MariaDB和PostgreSQL管理工具。

  • 提供SQL查询、数据编辑和导入导出功能。

  • 支持数据库设计和ER图生成。

适用数据库:MySQL, MariaDB, PostgreSQL, SQL Server

优点

  • 易于使用,适合小型项目和个人使用。

  • 免费开源,社区支持。

8. DataGrip

特点

  • JetBrains出品的跨数据库管理工具。

  • 支持多种数据库,包括MySQL, PostgreSQL, Oracle, SQL Server等。

  • 提供智能SQL编辑、调试和查询分析功能。

适用数据库:多种数据库

优点

  • 强大的IDE功能,支持代码补全和调试。

  • 跨平台支持(Windows, macOS, Linux)。

9. Navicat

特点

  • 支持多种数据库,包括MySQL, PostgreSQL, Oracle, SQL Server, SQLite等。

  • 提供数据库设计、查询、调优和管理功能。

  • 支持数据同步和备份恢复。

适用数据库:多种数据库

优点

  • 丰富的功能,适合企业级应用。

  • 用户界面友好,易于使用。

10. Toad

特点

  • 提供强大的数据库管理和开发工具。

  • 支持SQL优化和调优。

  • 支持多种数据库,包括Oracle, SQL Server, MySQL, PostgreSQL等。

适用数据库:多种数据库

优点

  • 专业的数据库管理工具,功能强大。

  • 适合企业级应用和复杂数据库管理任务。

结论

选择合适的数据库GUI设计和管理工具取决于具体的需求、使用的数据库类型以及个人或团队的偏好。以上列出的工具都是业内常用且功能强大的工具,能够满足不同层次的数据库管理和开发需求。

五、数据库性能优化思考

数据库性能优化是一个多维度的过程,涉及多方面的考量和策略。下面从多个角度探讨数据库性能优化的方法:

1. 数据库设计和架构

1.1 正规化和反规范化

  • 正规化:减少数据冗余,确保数据一致性。遵循第三范式(3NF)通常是一个好的起点。

  • 反规范化:在读取性能成为瓶颈时,可以考虑适当反规范化,通过冗余数据来减少复杂查询的次数。

1.2 分区(Partitioning)

  • 将大型表划分成较小的部分,可以是水平分区(按行划分)或垂直分区(按列划分),提高查询性能和管理效率。

1.3 索引(Indexing)

  • 适当创建索引:为频繁查询的字段创建索引,如主键、外键和常用查询条件的列。

  • 避免过多索引:索引虽能加速读取,但会增加写入和更新的成本。

2. 查询优化

2.1 查询重写

  • 优化SQL查询语句,避免不必要的复杂查询,使用高效的查询方式,如避免SELECT *,只选择所需字段。

2.2 使用联合(JOIN)

  • 合理使用JOIN,避免嵌套循环(nested loop),可以使用哈希连接或合并连接(merge join)等更高效的连接方式。

2.3 查询计划(Query Plan)

  • 分析查询计划(EXPLAIN)以了解查询的执行过程,识别性能瓶颈,如全表扫描,使用适当的索引来优化查询路径。

3. 数据库配置

3.1 缓存配置

  • 数据库缓存:调整数据库缓存参数,如InnoDB缓冲池(MySQL),提高缓存命中率。

  • 查询缓存:启用查询缓存,将重复的查询结果缓存起来,减少数据库的计算负担。

3.2 连接池(Connection Pooling)

  • 配置适当的连接池大小,避免频繁创建和销毁连接,减少连接开销。

4. 硬件和系统优化

4.1 硬件升级

  • 内存:增加服务器内存,尤其是用于数据库缓存和缓冲。

  • 磁盘:使用SSD代替传统HDD,提供更快的数据读取和写入速度。

4.2 系统参数调整

  • 文件系统优化:选择适合数据库的文件系统,如XFS或EXT4。

  • 网络配置:优化网络设置,减少延迟,提高吞吐量。

5. 数据库集群和分布式系统

5.1 主从复制(Replication)

  • 设置主从复制,实现读写分离,主库负责写操作,从库负责读操作,提高读操作性能。

5.2 分片(Sharding)

  • 将数据分片存储在不同的数据库服务器上,每个分片只存储一部分数据,提高写入性能和扩展性。

5.3 分布式数据库

  • 使用分布式数据库系统(如Cassandra、CockroachDB),利用其横向扩展能力来应对高并发和大规模数据处理需求。

6. 日常维护和监控

6.1 定期维护

  • 定期进行数据库重组(REORGANIZE)、更新统计信息和索引重建,确保数据库的健康状态。

6.2 性能监控

  • 实时监控数据库性能指标(如慢查询日志、CPU使用率、内存使用率),及时发现和处理性能问题。

6.3 自动化脚本

  • 使用自动化脚本定期执行备份、清理日志和数据归档操作,保持数据库稳定运行。

7. 应用层优化

7.1 缓存策略

  • 应用层缓存:在应用层使用缓存机制(如Memcached、Redis),减少数据库的读取负担。

  • 前端缓存:利用CDN和浏览器缓存,减少对数据库的直接访问。

7.2 数据库连接管理

  • 优化应用程序的数据库连接管理,避免长时间保持空闲连接,合理使用连接池。

7.3 分批处理

  • 对大量数据操作进行分批处理,避免一次性操作大量数据导致性能下降。

结论

数据库性能优化是一个综合性的过程,需要从数据库设计、查询优化、配置调整、硬件升级、集群和分布式系统、日常维护以及应用层优化等多个方面进行考虑。通过系统性的方法,结合具体的业务需求和使用场景,可以有效提升数据库性能,确保系统的高效稳定运行。

六、数据库权限管理思考

数据库权限管理是确保数据安全、数据完整性和系统稳定性的关键方面。有效的权限管理策略能够防止未经授权的访问和操作,保护敏感信息,确保合法用户的正常操作。以下是从多个角度探讨数据库权限管理的方法和最佳实践:

1. 角色和用户管理

1.1 角色定义

  • 创建角色:根据不同的职责和权限要求创建角色。例如,创建数据库管理员(DBA)、开发者、读写用户和只读用户等角色。

  • 分配权限:为每个角色分配适当的权限,确保角色的权限满足其职责要求。

1.2 用户管理

  • 创建用户:为每个需要访问数据库的个体创建用户账号。

  • 分配角色:将用户分配给适当的角色,确保用户获得所需的权限。

2. 权限分配

2.1 最小权限原则

  • 限制权限:仅授予用户完成其工作所需的最小权限,避免不必要的权限暴露。

  • 细粒度控制:根据需要授予具体的权限,如表级、列级或行级权限。

2.2 权限层级

  • 系统权限:涉及数据库系统级的操作权限,如创建用户、备份恢复等。

  • 对象权限:涉及具体数据库对象的操作权限,如表、视图、存储过程等的查询、插入、更新和删除权限。

3. 审计和监控

3.1 日志记录

  • 操作日志:记录所有对数据库的操作,包括查询、插入、更新和删除操作。

  • 访问日志:记录用户的登录和退出操作,跟踪用户的活动。

3.2 审计策略

  • 设置审计策略:定义需要审计的操作和事件,如敏感数据访问、权限变更等。

  • 定期审计:定期审查审计日志,发现和处理异常操作和安全事件。

4. 数据加密

4.1 静态数据加密

  • 数据库加密:对数据库文件进行加密保护,防止未经授权的物理访问。

  • 字段级加密:对敏感字段进行加密,如用户密码、信用卡信息等。

4.2 传输数据加密

  • 使用SSL/TLS:确保客户端和服务器之间的数据传输加密,防止中间人攻击。

5. 安全策略和规范

5.1 密码策略

  • 强密码:要求用户设置强密码,避免简单易猜的密码。

  • 定期更换:要求用户定期更换密码,提高安全性。

5.2 账号策略

  • 锁定策略:对多次失败登录尝试进行账号锁定,防止暴力破解。

  • 过期策略:设置用户账号过期时间,定期审核和清理不再使用的账号。

6. 数据库管理工具

6.1 使用安全工具

  • 数据库防火墙:部署数据库防火墙,防止SQL注入和其他攻击。

  • 安全扫描工具:定期使用安全扫描工具检查数据库漏洞和不安全配置。

6.2 自动化管理

  • 权限管理工具:使用权限管理工具自动化权限分配和管理,简化管理过程。

  • 审计和监控工具:使用专业的审计和监控工具,提高操作透明度和安全性。

7. 教育和培训

7.1 安全意识培训

  • 用户培训:定期对用户进行安全意识培训,提高用户的安全意识和操作规范。

  • 管理员培训:对数据库管理员进行安全培训,掌握最新的安全技术和最佳实践。

实践案例

案例:金融机构数据库权限管理

  1. 角色和用户管理

  • 定义角色:创建如DBA、开发者、数据分析师、审计员等角色。

  • 创建用户:为每个员工创建数据库账户,根据其职责分配适当的角色。

  1. 权限分配

  • 最小权限原则:仅授予开发者读写开发数据库的权限,生产数据库仅由DBA和审计员访问。

  • 细粒度控制:对客户信息表的敏感字段(如社会保障号码)仅允许特定用户查询和修改。

  1. 审计和监控

  • 启用审计日志,记录所有对客户信息表的查询和修改操作。

  • 定期审查审计日志,检查是否有异常访问和操作。

  1. 数据加密

  • 使用数据库提供的加密功能对客户信息表进行加密存储。

  • 配置SSL/TLS,确保所有客户端和服务器之间的通信加密。

  1. 安全策略和规范

  • 强制使用强密码策略,要求每季度更换一次密码。

  • 对连续三次失败登录尝试进行账号锁定,需要管理员解锁。

  1. 数据库管理工具

  • 部署数据库防火墙,防止SQL注入攻击。

  • 定期使用安全扫描工具检查数据库配置和权限设置。

  1. 教育和培训

  • 对所有用户进行年度安全意识培训。

  • 对DBA进行季度安全培训,更新最新的安全技术和最佳实践。

通过这些措施,金融机构可以确保其数据库系统的安全性和稳定性,有效防止未经授权的访问和操作,保护客户的敏感信息。

f4b49f7f1a4bedd08036da4e4412eb15.png

希望对您有用!关注锅总,可及时获得更多花里胡哨的运维实用操作!

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

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

相关文章

汽车零部件制造企业如何选择合适的ESOP电子作业指导书系统

随着汽车产业的不断发展&#xff0c;汽车零部件制造企业在提高生产效率和产品质量方面面临着越来越大的挑战。为了解决这些问题&#xff0c;越来越多的汽车零部件制造企业开始采用ESOP电子作业指导书系统&#xff0c;以帮助他们管理和优化生产流程。但是&#xff0c;在选择合适…

win7使用vue-cli创建vue3工程

1.创建名为test的项目 vue create test 回车以后选择第三个,进行手动选择 2.选择配置 向下箭头表示下一个&#xff0c;空格表示*选中&#xff0c;按照我的选择来选即可&#xff0c;选完后回车 3.选择vue.js版本 上线箭头进行选择&#xff0c;选择后回车 4.选择不同的配置&#…

一个实例配置多个服务名

更改参数实现配置多个服务名 需求背景 在做案例模拟的时候发现博主的环境配置的是3个服务名&#xff0c;通常都是一个服务名&#xff0c;服务名就是数据库名&#xff0c;出于好奇进行了以下实验。 环境&#xff1a;Oracle 11.2.0.4 单点 配置多个服务名的意义 可以通过服务…

【CT】LeetCode手撕—72. 编辑距离

目录 题目1- 思路动规五部曲 2- 实现⭐72. 编辑距离——题解思路 3- ACM 实现 题目 原题连接&#xff1a;72. 编辑距离 1- 思路 模式识别&#xff1a;编辑举例 ——> 动态规划 动规五部曲 1.dp数组的含义 int[][] dp new int[word1.length()][word2.length()];以 i-1 …

正则表达式;grep、sed、awk、soft、uniq、tr 详解

正则表达式 概念 正则表达式&#xff08;Regular Expression&#xff0c;常简写为regex、regexp或RE&#xff09;是一种强大的文本处理工具&#xff0c;它使用一种特殊的字符序列来帮助用户检查一个字符串是否与某种模式匹配。 标准正则表达式 首先安装正则表达式pcre库 创…

10--7层负载均衡集群

前言&#xff1a;动静分离&#xff0c;资源分离都是在7层负载均衡完成的&#xff0c;此处常被与四层负载均衡比较&#xff0c;本章这里使用haproxy与nginx进行负载均衡总结演示。 1、基础概念详解 1.1、负载均衡 4层负载均衡和7层负载均衡是两种常见的负载均衡技术&#xff…

黑马程序员——Spring框架——day08——maven高级

目录&#xff1a; 分模块开发与设计 分模块开发的意义 问题导入模块拆分原则分模块开发&#xff08;模块拆分&#xff09; 问题导入创建Maven模块书写模块代码通过maven指令安装模块到本地仓库&#xff08;install指令&#xff09;依赖管理 依赖传递 问题导入可选依赖 问题导入…

这就是人性的丑恶,很残酷但很现实

这些年我喜欢跟垃圾撕破脸&#xff0c;包括垃圾亲戚&#xff0c;我是不会跟你讲什么感情的&#xff0c;该滚蛋就滚蛋。我最不喜欢听什么今日留一线&#xff0c;日后好相见。 之前我还不懂事的时候&#xff0c;就有那种亲戚叫我帮他介绍工作&#xff0c;我照做了。 结果&#xf…

实现批量自动化电商数据采集|商品详情页面|店铺商品信息|订单详情数据

电商数据采集是指通过技术手段获取电商平台上的商品信息、店铺信息和订单信息等数据。这些数据可以用于市场分析、竞品分析、用户行为分析等。 商品详情页面是指电商平台上展示商品详细信息的页面&#xff0c;包括商品名称、价格、图片、描述、评价等信息。通过采集商品详情页…

Word如何在页眉中插入和删除横线

你平常是否遇见到Word的页眉中有一条横线&#xff0c;怎么也删不了&#xff01;&#xff01;&#xff01; 今天刘小生分享如何在页眉中插入和删除横线&#xff0c;我们一起操练起来吧&#xff01; 1、Word页眉插入横线 选择【插入】-【页眉页脚】&#xff0c;在“页眉页脚”…

【arm扩容】新硬盘挂载操作说明

背景&#xff1a; 未经过扩容的arm设备不满足移植大镜像的条件。 需求&#xff1a; 我们要对arm设备扩容&#xff0c;现在要将一个500G的硬盘挂进去。而且要按照老arm设备的挂法&#xff0c;保持相同的目录结构。配置这台机器。 下面老arm设备的硬盘挂载相关信息。 lsblk …

Open3D 点云的体素化

目录 一、概述 1.1概念 1.2 应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2体素化后点云 一、概述 1.1概念 体素化&#xff08;Voxelization&#xff09;是将三维空间数据&#xff08;例如点云&#xff09;转换为体素网格&#xff08;Voxel Grid&#xff09;的过…

<电力行业> - 《第2课:电力行业的一会两网》

1 一会 一会指的是电监会&#xff0c;全称是国家电力监管委员会。根据国务院批准《国家电力监管委员会职能配置内设机构和人员编制规定》&#xff0c;国家电力监管委员会按照国务院授权&#xff0c;行使行政执法职能&#xff0c;依照法律、法规统一履行全国电力监管职责。 2 …

使用 Splashtop REST API 简化远程管理

Splashtop 的 REST API 可无缝提高生产力和简化集成&#xff0c;使用户能够自动执行任务、定制工作流程&#xff0c;轻松与现有系统集成。 在与客户的合作中&#xff0c;我们对其需求和痛点有了更深入的了解&#xff0c;尤其在有利于实现自动化的领域。在本文中&#xff0c;我…

手机照片回收站无法恢复图片怎么办?2个措施,找回丢失的相册

我们的照片和视频存储在各种设备中&#xff0c;其中包括我们的智能手机&#xff0c;但有时候我们可能会不小心删除这些重要的数据。这时&#xff0c;手机照片回收站就显得尤为重要。然而&#xff0c;即使有回收站&#xff0c;我们也可能遇到一些问题&#xff0c;例如回收站中的…

【PyQt5】一文向您详细介绍 setSpacing() 的作用

【PyQt5】一文向您详细介绍 setSpacing() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&am…

滑轨平行度和光路平行分别对测径仪的影响?

关键字:测径仪滑轨平行度,测径仪平行光路,测径仪发射器,测径仪接收器, 测径仪是一种用于测量物体直径的精密仪器&#xff0c;通常应用于工业自动化领域&#xff0c;比如钢铁、电缆、塑料管材等生产线上的在线尺寸监测。测径仪的测量精度会受到多种因素的影响&#xff0c;其中包…

数据结构-顺序表的交换排序

顺序表的初始化 const int M 505;typedef struct{int key; //关键元素int others; //其他元素 }info;typedef struct{info r[M1]; int length(); //表长 }SeqList,*PSeqList; 冒泡排序 分析&#xff1a; 顺序表的冒泡排序和数组的冒泡排序的…

XSS漏洞—XSS平台搭建与打cookie

一、跨站脚本攻击漏洞接收平台 推荐两个&#xff1a; 1&#xff09;xsser &#xff1a; XSS平台 - &#xff08;支持http/https&#xff09;XSS Platform 2&#xff09;蓝莲花 &#xff1a;GitHub - firesunCN/BlueLotus_XSSReceiver xsser&#xff1a; BlueLotus&#xff…

Deepl网页版使用方法

Deepl网页版科学使用方法 Deepl 网页版使用方法重要链接使用方式一、在没有使用插件前的Deepl界面二、安装DeepL.Crack.v1.2.7插件三、插件安装后打开[Deepl官网](https://www.deepl.com/zh/translator)即可四、在翻译整篇文章的权限怎么设置 Deepl 网页版使用方法 重要链接 …