当前位置: 首页 > news >正文

金仓数据库 KingbaseES 产品深度优化提案:迈向卓越的全面升级

在这里插入图片描述

文章目录

    • 一、引言
    • 二、性能优化
      • (一)查询性能提升
        • 1. 优化查询优化器
          • 引入基于代价的查询优化算法
          • 支持更多的查询优化提示
        • 2. 索引优化
          • 支持更多类型的索引
          • 优化索引的创建和维护策略
      • (二)并发处理能力增强
        • 1. 锁机制优化
          • 采用更细粒度的锁
          • 引入乐观锁机制
        • 2. 资源管理优化
          • 动态分配系统资源
          • 优化内存管理
    • 三、安全功能增强
      • (一)数据加密升级
        • 1. 引入国密算法
        • 2. 完善密钥管理机制
          • 安全存储密钥
          • 定期更新密钥
      • (二)访问控制细化
        • 1. 基于数据对象属性的权限管理
        • 2. 多因素认证
      • (三)审计功能完善
        • 1. 增加审计项和审计级别
        • 2. 审计报告生成和分析功能
    • 四、可扩展性提升
      • (一)分布式架构优化
        • 1. 引入分布式事务处理机制
        • 2. 优化分布式数据存储和管理策略
      • (二)集群管理功能增强
        • 1. 自动化部署和扩容
        • 2. 实时集群状态监控和性能分析
    • 五、生态建设加强
      • (一)与开源软件集成
        • 1. 与大数据处理框架集成
        • 2. 提供更多的开发工具和接口
      • (二)参与行业标准制定
    • 六、结论

一、引言

在当今数字化飞速发展的时代,数据库作为数据管理和存储的核心基础,其性能、功能和安全性直接影响着各个行业的信息化进程。金仓数据库 KingbaseES 凭借其在国产化数据库领域的深厚积累和卓越表现,已经在众多行业中得到了广泛应用。然而,随着技术的不断进步和市场需求的日益增长,为了使 KingbaseES 能够更好地适应复杂多变的业务场景,满足用户对高性能、高安全和高可扩展性的要求,对其进行全面且深入的优化显得尤为迫切。本文将从多个维度出发,详细阐述 KingbaseES 的产品优化提案,旨在助力其在激烈的市场竞争中脱颖而出,为各行业的信息化建设提供更加坚实的支撑。

二、性能优化

(一)查询性能提升

1. 优化查询优化器

查询优化器是数据库的核心组件之一,它的主要任务是将用户输入的查询语句转化为高效的执行计划。目前,虽然 KingbaseES 的查询优化器已经具备了一定的功能,但仍有进一步提升的空间。

引入基于代价的查询优化算法

传统的查询优化算法往往基于规则,缺乏对数据实际分布和查询代价的考虑。引入基于代价的查询优化算法,如动态规划算法、贪心算法等,可以根据数据的统计信息、索引分布和查询条件,对不同的执行计划进行代价评估,从而选择最优的执行计划。例如,对于一个涉及多个表连接的查询,基于代价的优化算法会考虑不同连接顺序的代价,选择代价最小的连接顺序,以提高查询效率。

为了实现这一优化,需要对查询优化器的内部架构进行改造。首先,要建立一个准确的数据统计信息收集机制,定期收集表的行数、列的分布情况、索引的使用频率等信息,并将这些信息存储在系统表中。然后,在查询优化过程中,查询优化器会根据这些统计信息计算不同执行计划的代价。以下是一个简单的 mermaid 流程图,展示了基于代价的查询优化器的工作流程:

用户查询语句
查询解析器
查询重写
统计信息收集
代价评估
选择最优执行计划
执行查询
支持更多的查询优化提示

为了让用户能够根据实际需求对查询进行更精细的优化,KingbaseES 应支持更多的查询优化提示。例如,用户可以通过提示指定使用特定的索引、强制使用某种连接算法或调整查询的并行度等。查询优化提示可以以注释的形式添加到查询语句中,查询优化器在解析查询语句时会识别这些提示,并根据提示进行优化。例如:

-- /*+ USE_INDEX(table_name, index_name) */
SELECT * FROM table_name WHERE column_name = 'value';

上述代码中,/*+ USE_INDEX(table_name, index_name) */ 是一个查询优化提示,告诉查询优化器在执行查询时使用指定的索引。

2. 索引优化

索引是提高查询性能的重要手段,合理的索引设计可以大大减少查询所需的时间。

支持更多类型的索引

除了现有的 B - 树索引,KingbaseES 应支持更多类型的索引,如位图索引、函数索引、空间索引等。位图索引适用于低基数列,即列中不同值的数量相对较少的情况。例如,在一个包含性别列的表中,性别只有“男”和“女”两种取值,使用位图索引可以显著提高查询效率。函数索引则允许用户在索引中使用函数,例如对列进行计算后再建立索引。以下是创建函数索引的示例:

CREATE INDEX idx_function ON table_name (UPPER(column_name));

上述代码创建了一个对 column_name 列进行大写转换后的函数索引。

优化索引的创建和维护策略

为了提高索引的使用效率,需要优化索引的创建和维护策略。首先,要根据数据的分布和查询模式自动选择合适的索引。例如,对于经常进行范围查询的字段,可以创建 B - 树索引;对于高基数的字段,可以考虑创建哈希索引。其次,要定期对索引进行维护,如重建索引、更新统计信息等,以保证索引的有效性。以下是一个简单的 mermaid 图,展示了索引创建和维护的流程:

数据分布分析
索引类型选择
创建索引
查询使用索引
定期维护
更新统计信息
重建索引

(二)并发处理能力增强

1. 锁机制优化

锁机制是保证数据一致性的重要手段,但不合理的锁机制会导致并发性能下降。

采用更细粒度的锁

目前,KingbaseES 可能采用了较粗粒度的锁,如表级锁,这会导致在高并发场景下锁的竞争激烈,影响并发性能。采用更细粒度的锁,如行级锁或页级锁,可以减少锁的竞争,提高并发访问的效率。例如,在一个多用户同时操作同一表的场景中,使用行级锁可以让不同用户同时操作不同的行,而不会相互阻塞。

为了实现行级锁,需要对数据库的存储引擎进行改造。在行级锁的实现中,每个数据行都会有一个锁标记,当一个事务需要访问某一行时,会先检查该行的锁标记,如果该行没有被其他事务锁定,则可以获取锁并进行操作;如果该行已经被其他事务锁定,则需要等待锁释放。以下是一个简单的 mermaid 图,展示了行级锁的并发处理流程:

客户端请求
锁管理器
行是否被锁定
获取行级锁
等待锁释放
执行操作
释放行级锁
引入乐观锁机制

对于一些读多写少的场景,可以引入乐观锁机制。乐观锁机制假设在大多数情况下,多个事务之间不会发生冲突,因此在事务开始时不会加锁,而是在提交事务时检查数据是否被其他事务修改过。如果数据没有被修改过,则事务可以正常提交;如果数据已经被修改过,则事务需要回滚并重试。乐观锁机制可以减少锁的使用,提高并发性能。以下是一个简单的示例,展示了乐观锁的实现:

-- 表结构
CREATE TABLE table_name (id INT PRIMARY KEY,data VARCHAR(100),version INT
);-- 读取数据
SELECT id, data, version FROM table_name WHERE id = 1;-- 更新数据
UPDATE table_name
SET data = 'new_value', version = version + 1
WHERE id = 1 AND version = <old_version>;

在上述示例中,version 字段用于实现乐观锁。在更新数据时,只有当 version 字段的值与读取时的值相同时,更新操作才能成功。

2. 资源管理优化

合理的资源管理是提高并发处理能力的关键。

动态分配系统资源

根据并发请求的数量和类型,动态分配系统资源,如 CPU、内存和磁盘 I/O 等。例如,对于高并发的查询请求,可以增加 CPU 和内存的分配,以提高查询处理速度;对于长时间运行的事务,可以适当限制其资源使用,避免影响其他请求的处理。为了实现动态资源分配,需要建立一个资源监控和调度机制,实时监测系统的资源使用情况,并根据预设的规则进行资源分配。以下是一个简单的 mermaid 图,展示了动态资源分配的流程:

并发请求
资源监控器
资源分析
资源分配规则
资源调度器
分配资源
处理请求
优化内存管理

内存管理对于数据库的性能至关重要。优化 KingbaseES 的内存管理机制,合理分配和使用内存,可以提高数据库的响应速度和并发处理能力。例如,采用内存池技术,预先分配一定数量的内存块,当需要使用内存时,直接从内存池中获取,避免频繁的内存分配和释放操作。同时,对内存的使用进行监控和调整,根据实际的业务需求动态调整内存的分配。

三、安全功能增强

(一)数据加密升级

1. 引入国密算法

在数据安全日益重要的今天,引入国密算法可以提高 KingbaseES 的数据加密安全性。国密算法是我国自主研发的密码算法,具有更高的安全性和可靠性。例如,SM2 算法用于非对称加密,SM3 算法用于哈希运算,SM4 算法用于对称加密。在 KingbaseES 中引入这些国密算法,可以对数据在传输和存储过程中进行更安全的加密保护。

为了实现国密算法的支持,需要对数据库的加密模块进行改造。首先,要集成国密算法的实现库,如 OpenSSL 等,并在数据库中提供相应的加密接口。然后,在数据传输和存储过程中,根据用户的配置选择合适的国密算法进行加密。以下是一个简单的 mermaid 图,展示了引入国密算法后的加密流程:

原始数据
加密算法选择
国密算法库
数据加密
加密后数据存储
数据读取
数据解密
解密后数据使用
2. 完善密钥管理机制

密钥管理是数据加密的核心环节,完善的密钥管理机制可以保证密钥的安全存储和定期更新。

安全存储密钥

采用安全的存储方式,如硬件安全模块(HSM),来存储加密密钥。HSM 是一种专门用于存储和管理密钥的硬件设备,具有高度的安全性和可靠性。将加密密钥存储在 HSM 中,可以防止密钥被非法获取和篡改。

定期更新密钥

为了提高数据的安全性,需要定期更新加密密钥。可以设置一个密钥更新周期,当达到更新周期时,自动生成新的密钥,并使用新的密钥对数据进行加密。同时,要保证在密钥更新过程中,数据的可用性不受影响。以下是一个简单的 mermaid 图,展示了密钥管理的流程:

达到更新周期
密钥生成
密钥存储
数据加密
定期检查
新密钥生成
密钥替换
使用新密钥加密数据

(二)访问控制细化

1. 基于数据对象属性的权限管理

除了基于用户角色的权限管理,引入基于数据对象属性的权限管理可以实现更细粒度的访问控制。例如,对于不同类型的数据对象,如数据表、视图、存储过程等,可以根据其属性设置不同的访问权限。对于敏感的数据表,可以限制只有特定的用户或角色才能访问;对于一些只读的数据视图,可以允许更多的用户进行查询操作。

为了实现基于数据对象属性的权限管理,需要在数据库中建立一个属性管理系统,对每个数据对象的属性进行定义和管理。然后,在用户进行访问时,根据数据对象的属性和用户的权限进行验证。以下是一个简单的 mermaid 图,展示了基于数据对象属性的权限管理流程:

允许访问
拒绝访问
用户请求
权限验证
数据对象属性检查
执行操作
返回错误信息
2. 多因素认证

支持多因素认证可以提高用户认证的安全性。多因素认证是指通过多种方式对用户进行身份验证,如密码、令牌、指纹等。例如,用户在登录数据库时,除了输入密码外,还需要输入一个动态生成的令牌码或使用指纹识别进行身份验证。

为了实现多因素认证,需要在数据库的认证模块中集成相应的认证方式。例如,可以与第三方认证服务提供商合作,引入令牌认证功能;或者集成指纹识别设备,实现指纹认证。以下是一个简单的 mermaid 图,展示了多因素认证的流程:

通过
通过
通过
失败
失败
失败
用户登录请求
密码验证
令牌验证
指纹验证
登录成功
登录失败

(三)审计功能完善

1. 增加审计项和审计级别

为了更全面地监控数据库的操作,需要增加更多的审计项和审计级别。除了对用户的登录、查询、插入、更新、删除等操作进行审计外,还可以对数据库的配置变更、系统事件等进行审计。同时,设置不同的审计级别,如详细审计、一般审计和简要审计,用户可以根据实际需求选择合适的审计级别。

2. 审计报告生成和分析功能

提供审计报告生成和分析功能,方便用户对审计数据进行统计和分析。可以定期生成审计报告,报告中包含数据库的操作统计信息、异常操作记录等。同时,提供数据分析工具,帮助用户发现潜在的安全风险和异常行为。例如,通过分析审计数据,用户可以发现某个用户在特定时间段内进行了大量的异常查询操作,从而及时采取措施进行防范。以下是一个简单的 mermaid 图,展示了审计报告生成和分析的流程:

审计数据收集
数据存储
报告生成
数据分析
发现异常
采取措施

四、可扩展性提升

(一)分布式架构优化

1. 引入分布式事务处理机制

在这里插入图片描述

随着数据量的不断增长和业务的不断扩展,分布式架构成为数据库发展的趋势。为了保证分布式环境下的数据一致性,需要引入分布式事务处理机制。例如,可以采用两阶段提交协议(2PC)或三阶段提交协议(3PC)来实现分布式事务。

两阶段提交协议是一种常用的分布式事务处理协议,它分为准备阶段和提交阶段。在准备阶段,协调者向所有参与者发送准备请求,参与者在收到请求后,执行事务操作并将结果反馈给协调者;在提交阶段,协调者根据所有参与者的反馈决定是否提交事务。以下是一个简单的 mermaid 图,展示了两阶段提交协议的流程:

全部成功
有失败
协调者
准备请求
参与者 1
参与者 2
参与者 3
执行事务
反馈结果
提交请求
回滚请求
提交事务
回滚事务
2. 优化分布式数据存储和管理策略

为了实现数据的高效分布和负载均衡,需要优化分布式数据存储和管理策略。例如,可以采用数据分片技术,将数据按照一定的规则划分成多个分片,存储在不同的节点上。同时,建立一个数据路由机制,根据查询条件自动将查询请求路由到相应的节点上。以下是一个简单的 mermaid 图,展示了分布式数据存储和管理的流程:

客户端查询请求
数据路由
节点 1
节点 2
节点 3
本地数据存储
数据查询
结果返回

(二)集群管理功能增强

1. 自动化部署和扩容

为了减少人工干预,提高集群的部署和扩容效率,实现集群的自动化部署和扩容功能。可以使用脚本或工具,根据用户的配置自动完成集群节点的安装、配置和启动。在扩容时,系统可以自动分配资源,将新节点加入到集群中,并进行数据的迁移和同步。以下是一个简单的 mermaid 图,展示了集群自动化部署和扩容的流程:

用户配置
自动化脚本
节点安装
节点配置
节点启动
集群初始化
数据同步
扩容请求
新节点安装
新节点配置
新节点加入集群
数据迁移
数据同步
2. 实时集群状态监控和性能分析

提供实时的集群状态监控和性能分析功能,帮助用户及时发现和解决集群中的问题。可以监控集群节点的 CPU、内存、磁盘 I/O 等资源使用情况,以及节点之间的网络连接状态。同时,对集群的性能指标进行分析,如查询响应时间、吞吐量等,为用户提供优化建议。以下是一个简单的 mermaid 图,展示了集群状态监控和性能分析的流程:

集群节点
监控数据收集
数据存储
性能分析
发现问题
提供优化建议
用户操作

五、生态建设加强

(一)与开源软件集成

1. 与大数据处理框架集成

为了实现数据的无缝对接和处理,加强 KingbaseES 与大数据处理框架的集成,如 Hadoop、Spark 等。可以开发相应的连接器,使得 KingbaseES 可以与这些大数据处理框架进行数据交互。例如,通过 Hadoop 连接器,KingbaseES 可以将数据导出到 Hadoop 分布式文件系统(HDFS)中,供 Hadoop 生态系统中的其他组件进行处理;通过 Spark 连接器,KingbaseES 可以与 Spark 进行数据共享和计算。以下是一个简单的 mermaid 图,展示了 KingbaseES 与大数据处理框架的集成架构:

KingbaseES 数据库
数据接口
Hadoop 生态系统
Spark 生态系统
数据存储与处理
数据计算与分析
2. 提供更多的开发工具和接口

为了方便用户进行二次开发和应用集成,提供更多的开发工具和接口。例如,开发可视化的数据库管理工具,让用户可以更方便地管理和操作 KingbaseES 数据库;提供 RESTful API 接口,使得其他应用程序可以通过 HTTP 请求与 KingbaseES 进行交互。

(二)参与行业标准制定

积极参与行业标准的制定可以提高 KingbaseES 的市场影响力和竞争力。加强与行业协会和相关部门的合作,参与数据库技术标准、接口标准、安全标准等的制定。通过参与标准制定,不仅可以推动国产数据库的规范化发展,还可以将 KingbaseES 的技术优势融入到标准中,提高其在行业内的话语权。例如,参与制定国产数据库的安全标准,将 KingbaseES 的安全功能和技术要求纳入标准中,使得其他国产数据库在安全方面向 KingbaseES 看齐。

六、结论

通过对金仓数据库 KingbaseES 在性能、安全、可扩展性和生态建设等方面进行全面且深入的优化,我们有望进一步提升其产品竞争力,满足用户不断变化的需求。在未来的发展中,KingbaseES 将凭借持续的优化和创新,在国产数据库市场中占据更加重要的地位,为各行业的信息化建设提供更加坚实的支持。同时,我们也期待 KingbaseES 能够不断适应技术的发展和市场的变化,为用户带来更多的价值和惊喜。

相关文章:

金仓数据库 KingbaseES 产品深度优化提案:迈向卓越的全面升级

文章目录 一、引言二、性能优化&#xff08;一&#xff09;查询性能提升1. 优化查询优化器引入基于代价的查询优化算法支持更多的查询优化提示 2. 索引优化支持更多类型的索引优化索引的创建和维护策略 &#xff08;二&#xff09;并发处理能力增强1. 锁机制优化采用更细粒度的…...

企业级智能合同管理解决方案升级报告:道本科技携手DeepSeek打造智能合同管理新标杆

当传统合同管理系统还在与堆积如山的纸质文档较劲时&#xff0c;道本科技与DeepSeek联合开发的智能合同平台已为国央企打开新视界。我们以某大型能源集团的实际应用为例&#xff0c;带您直观感受技术升级带来的管理变革。 一、技术升级的具象化呈现 在未接入DeepSeek技术前&a…...

C#并行编程极大提升集合处理速度,再也没人敢说你程序性能差了!

马工撰写的年入30万C#上位机项目实战必备教程&#xff08;点击下方链接即可访问文章目录&#xff09; 1、《C#串口通信从入门到精通》 2、《C#与PLC通信从入门到精通 》 3、《C# Modbus通信从入门到精通》 4、《C#Socket通信从入门到精通 》 5、《C# MES通信从入门到精通》 6、…...

[贪心_7] 最优除法 | 跳跃游戏 II | 加油站

目录 1.最优除法 题解 2.跳跃游戏 II 题解 3.加油站 题解 利用 单调性&#xff0c;可以实现 区间跳跃 1.最优除法 链接&#xff1a; 553. 最优除法 给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。 例如&#xff0c;nums [2,3,4]&#xff0c;我…...

【Rust】Rust中的枚举与模式匹配,原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

【CUDA 编译 bug】ld: cannot find -lcudart

我们使用 Conda 安装 pytorch 和 CUDA 环境之后&#xff0c;要用 Conda 的CUDA环境进行某个库编译时&#xff0c;出现了bug&#xff1a; /mnt/data/home/xxxx/miniforge3/envs/GAGAvatar/compiler_compat/ld: cannot find -lcudart: No such file or directorycollect2: error…...

MYSQL之数据类型

数据类型分类 数值类型 在MySQL中, 整型可以指定是有符号的和无符号的, 默认是有符号的. 可以通过 UNSIGNED 来说明某个字段是无符号的. tinyint类型 以tinyint为例, 其它的整型类型都只是数据范围的区别. 数据越界 创建一个 tinyint 类型的 num 的属性, 大小为 1 字节, 不…...

Asp.Net Core 异常筛选器ExceptionFilter

文章目录 前言一、异常筛选器的核心概念用途&#xff1a;实现接口&#xff1a;执行时机&#xff1a; 二、使用步骤1.创建自定义异常筛选器2.注册异常筛选器全局注册&#xff08;对所有 Controller 生效&#xff09;&#xff1a;局部注册&#xff08;通过特性标记特定的 **Contr…...

WebUI可视化:第2章:技术基础准备

学习目标 ✅ 掌握HTML/CSS基础语法 ✅ 理解JavaScript核心功能 ✅ 了解前后端交互原理 2.1 HTML基础:网页的骨架 2.1.1 基础结构 每个HTML文件都必须包含以下基本结构: html <!DOCTYPE html> <html> <head><title>我的第一个网页</title> …...

Java基础集合 面试经典八股总结 [连载ing]

序言 八股&#xff0c;怎么说呢。我之前系统学习的内容&#xff0c;进行梳理。通过问题的方式&#xff0c;表达出得当的内容&#xff0c;这件事本身就很难。面试时心态、状态、掌握知识的情况等。关于八股文&#xff0c;我不想有太多死记硬背的内容&#xff0c;更多的是希望自我…...

大数据运维面试题

华为大数据运维面试题可能涵盖多个方面&#xff0c;以下是一些可能的面试问题及解析&#xff0c;这些问题旨在考察应聘者的技术知识、问题解决能力和对大数据运维的理解&#xff1a; 一、技术知识类问题 简述大数据运维的主要职责和工作内容 回答示例&#xff1a;大数据运维工…...

OpenBMC:BmcWeb login认证

BmcWeb在include\login_routes.hpp中实现了/login用于完成web的登录: BMCWEB_ROUTE(app, "/login").methods(boost::beast::http::verb::post)(handleLogin);inline void handleLogin(const crow::Request& req,const std::shared_ptr<bmcweb::AsyncResp>…...

Python学习之路(五)-接口API

在 Python 中结合数据库开发接口 API 通常使用 Web 框架(如 Flask 或 Django)和 ORM(对象关系映射)工具(如 SQLAlchemy 或 Django ORM)。以下是使用 Flask 和 SQLAlchemy 的详细步骤,展示如何结合数据库开发一个简单的 API。 使用 Flask 和 SQLAlchemy 开发 API 1. 安…...

数据库+Docker+SSH三合一!深度评测HexHub的全栈开发体验

作为一名技术博主&#xff0c;我最近一直被各种开发工具切换搞得焦头烂额。数据库要用Navicat&#xff0c;服务器管理得开Termius&#xff0c;Docker操作还得切到命令行&#xff0c;每天光在不同工具间切换就浪费了大量时间。直到团队里的一位架构师向我推荐了HexHub这个一体化…...

涂料油墨制造数字化转型的关键技术与挑战

涂料油墨制造行业正处于数字化转型的关键时期&#xff0c;这一转型是提升生产效率、增强产品质量和降低成本的重要途径。以下是该行业在数字化转型中的关键技术与面临的挑战&#xff1a; 关键技术&#xff1a; 工业互联网技术&#xff1a;通过在生产设备上安装传感器&#xf…...

UE5 调整字体、界面大小

文章目录 方案一 5.4 版本及以上&#xff08;推荐&#xff09;方案二 5.3 版本及以下&#xff08;推荐&#xff09;方案三 使用插件&#xff08;不推荐&#xff09; 方案一 5.4 版本及以上&#xff08;推荐&#xff09; 进入 编辑 > 编辑器偏好设置&#xff0c;如下图所示&…...

【OpenCV图像处理实战】从基础操作到工业级应用

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;6个案例&#xff09;案例1&#xff1a;图像基本操作案例2&#xff1a;边缘检测案例3&…...

生成随机验证码-解析与优化

文章目录 代码功能解析潜在问题与优化建议1. 安全性问题2. 易混淆字符过滤3. 参数校验4. 性能优化 扩展功能示例1. 自定义字符集2. 批量生成验证码 完整优化代码关键总结 代码功能解析 import random import stringdef generate_code(length6):chars string.digits string.a…...

VMware 虚拟机镜像资源网站

常见的 VMware 虚拟机镜像资源网站 网站名称链接地址特点OSBoxes.orgOSBoxes - Virtual Machines for VirtualBox & VMware 提供 .vmx .vmdk&#xff0c;适合 VMware 和 VirtualBox&#xff0c;更新频率高&#xff0c;界面清晰LinuxVMImages.comLinux VM Images - Downlo…...

HTML5 详细学习笔记

1. HTML5 简介 HTML5 是最新的 HTML 标准&#xff0c;于 2014 年 10 月由 W3C 完成标准制定。它增加了许多新特性&#xff0c;包括语义化标签、多媒体支持、图形效果、离线存储等。 1.1 HTML5 文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <h…...

真.从“零”搞 VSCode+STM32CubeMx+C <1>构建

目录 前言 准备工作 创建STM32CubeMx项目 VSCode导入项目&配置 构建错误调试 后记 前言 去年10月开始接触单片机&#xff0c;一直在用树莓派的Pico&#xff0c;之前一直用Micropython&#xff0c;玩的不亦乐乎&#xff0c;试错阶段优势明显&#xff0c;很快就能鼓捣一…...

Pikachu靶场

本质是信任了不可信的客户端输入。防御核心&#xff1a; 永不信任客户端提交的权限参数&#xff08;如 user_id, role&#xff09;。强制服务端校验用户身份与操作权限。定期审计权限模型&#xff0c;避免业务迭代引入新漏洞。 水平越权 1&#xff0c;按照网站的提示要求登录 进…...

五、web自动化测试01

目录 一、HTML基础1、HTML介绍2、常用标签3、基础案例3.1 前端代码3.2 自动化测试 二、CSS定位1、css介绍2、案例3、代码优化 三、表单自动化1、案例2、元素属性定位 四、后台基础数据自动化1、登录1.1 id与class定位1.2 定位一组元素 2、商品新增 一、HTML基础 可参考学习 链…...

利用软件I2C驱动OLED,点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态

题目&#xff1a; 参考《I2C通信》的文档&#xff0c;自行连接电路&#xff0c;利用软件I2C驱动OLED&#xff0c;点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态。   可以优先实现: 软件I2C初始化函数,用于初始化IO引脚   再实现: 主机发起始位和停止位,主机发送1个字节,…...

数据结构——栈与队列

1.栈 1.1概念 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&#xff1a;栈…...

【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(3)

文章目录 4. 嵌入式系统I/O接口4.1 GPIO与PWM接口4.1.1 GPIO接口&#xff08;General-Purpose Input/Output&#xff09;4.1.2 PWM接口&#xff08;Pulse Width Modulation&#xff09; 4.2 A/D与D/A接口的基本原理与结构4.2.1 DA转换&#xff08;数模转换&#xff0c;Digital-…...

【网络安全】社会工程学策略

1. 社会工程学简介 社会工程攻击是威胁行为者常用的攻击方式。这是因为&#xff0c;诱骗人们提供访问权限、信息或金钱通常比利用软件或网络漏洞更容易。 您可能还记得&#xff0c;社会工程学是一种利用人为错误来获取私人信息、访问权限或贵重物品的操纵技术。它是一个涵盖性…...

ROS2---时间戳对齐

一、ROS2时间系统架构 时间模型 仿真时间&#xff08;Simulation Time&#xff09;&#xff1a;由/clock话题驱动&#xff0c;适用于离线仿真与调试。真实时间&#xff08;Real Time&#xff09;&#xff1a;基于系统硬件时钟&#xff0c;支持PTP协议&#xff08;IEEE 1588&…...

C语言教程(十五):C 语言函数指针与回调函数详解

一、函数指针 1.1 函数指针的概念 在 C 语言中&#xff0c;函数指针是指向函数的指针变量。每个函数在内存中都有一个起始地址&#xff0c;函数指针就存储了这个起始地址&#xff0c;通过函数指针可以调用相应的函数。 1.2 函数指针的定义 函数指针的定义语法如下&#xff1a;返…...

VSCode如何修改默认扩展路径和用户文件夹目录到其他盘以及微信开发工具如何修改扩展路径到其他盘

ps:因公司电脑c盘内存严重不足&#xff0c;而出本篇文章 1.Visual Studio Code 随着VsCode的使用时间的推移&#xff0c;安装的扩展以及数据逐步增多&#xff0c;导致c盘内存占用较大&#xff0c;所以这里将vscode的默认缓存路径等迁移到其他盘。 步骤如下 1.找到默认的存储…...

抽象类相关

抽象类的定义 抽象类 是一种特殊的类&#xff0c;它不能被实例化&#xff0c;只能作为基类来派生出具体类。抽象类至少包含一个纯虚函数 。纯虚函数是在函数原型前加上 0 的虚函数&#xff0c;表示该函数没有具体实现&#xff0c;必须由派生类来实现。 抽象类的作用 提供统…...

如何测试短信接口

目录 一、测试短信接口的基本流程 1. 了解短信接口文档 2. 使用工具测试短信接口 示例一&#xff1a;用 curl 测试 POST 请求 示例二&#xff1a;用 Postman 设置 POST 请求 3. 编写测试脚本&#xff08;Python 示例&#xff09; 二、测试类型和场景 ✅ 正常发送测试 …...

pycharm2024.3.2项目解释器选择问题

问题描述&#xff1a;已经选择了pyau虚拟环境的解释器&#xff0c;运行了conda activate pyau&#xff0c;但是为什么关闭pycharm2024.3.2软件重新启动后&#xff0c;打开终端是(base) PS D:\deepseektest> &#xff0c;为什么不是(pyau) PS D:\deepseektest> 解决问题&a…...

如何在 Dialog 中安全初始化 ECharts 并自动监听容器大小变化

如何在 Dialog 中安全初始化 ECharts 并自动监听容器大小变化 在使用 ECharts 的 Vue 项目中&#xff0c;我们常常会将图表放入弹窗&#xff08;如 Element UI 的 <el-dialog>&#xff09;中进行展示。但你是否遇到过以下问题&#xff1a; 图表初次显示尺寸异常&#x…...

如何借助ETL数据集成工具实现数据一致性?

主要可以从以下几个方面入手&#xff1a; 一、数据抽取阶段&#xff08;Extract&#xff09; 统一数据源连接方式&#xff1a;ETL工具通常支持多种数据源连接方式&#xff0c;如关系型数据库、非关系型数据库、文件系统、API接口等。在抽取数据时&#xff0c;要确保对各个数据…...

3.4/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Burden of Carbon Monoxide Poisoning in Asian Countries From 1990 to 2021 and Its Projection Until 2030: An Analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.2147/CLEP.S512786 中文标题&#xff1a;1990 年至 2021 年亚洲…...

【高中数学/古典概率】4红2黑六选二,求取出两次都是红球的概率

【问题】 袋子里装4只红球&#xff0c;2只黑球&#xff0c;大小完全相同&#xff0c;抽两次球&#xff0c;每次抽一只&#xff0c;抽出后不再放回&#xff0c;求取出的两次都是红球的概率。 【来源】 数林外传系列之《概率与期望》P20 单埻著 中国科学技术大学出版社 【数学…...

机器人操作中的生成式 AI:综述(上)

25年3月来自香港大学、香港理工、香港科大、浙大和清华大学的论文“Generative Artificial Intelligence in Robotic Manipulation: A Survey”。 本综述全面回顾机器人操作领域生成学习模型的最新进展&#xff0c;并探讨该领域的关键挑战。机器人操作面临着关键瓶颈&#xff…...

Spring AI 核心概念

本文是对Spring AI中涉及到的AI相关核心概念的介绍&#xff0c;笔者结合LangChain、LlamaIndex的使用经验&#xff0c;尝试尽可能清晰的把这些概念解释清楚. 读者也可以参考官方文档作为补充. 模型 提到AI模型&#xff0c;我们的第一印象一定是GPT,DeepSeek这样的大语言模型(…...

第53.5讲 | 小项目实战:用 SHAP 值解释农作物产量预测模型 [特殊字符][特殊字符]

目录 ✅ 项目背景 &#x1f4e6; 所用工具 &#x1f4c1; 数据字段&#xff08;模拟&#xff09; &#x1f9d1;‍&#x1f4bb; 代码实现步骤 &#x1f3af; 解读与启发 &#x1f9e0; 项目拓展建议 ✅ 项目背景 我们使用一个简化的玉米产量数据集&#xff08;可模拟实…...

Linux编译器-gcc/g++使用

1.预处理&#xff08;进行宏替换&#xff09; -E开始进行程序编译&#xff0c;在预处理做完的时候&#xff0c;停下来 2.编译&#xff08;生成汇编&#xff09; -S 开始编译&#xff0c;编译做完了就停下来 3.汇编&#xff08;生成机器可识别代码&#xff09; -c 开始翻译汇编…...

SEO的关键词研究与优化 第二章

回顾上一篇文章, 3. 关键词评估和选择 关键词评估和选择是SEO策略中至关重要的一步。这个过程不仅仅是选择搜索量最高的词&#xff0c;而是要在多个因素之间找到平衡&#xff0c;以确定最有价值的关键词。 3.1 搜索量分析 搜索量是评估关键词潜力的首要指标&#xff0c;但它不应…...

数据结构数组

数组特点 内存是连续的,所以地址可以偏移&#xff0c;支持下标访问。 优点 下标访问&#xff08;随机访问&#xff09;的时间复杂度是O(1)&#xff0c;末尾增加和删除元素的时间复杂度是O(1)。 访问元素前后相邻位置方便&#xff0c;因为数组每个位置内存是连续的&#xff…...

vscode插件系列-2、认识vscode

​ 这一章&#xff0c;我将带你重新认识vscode 一、工作区划分 1、活动条&#xff08;Activity Bar&#xff09; 活动条是一个核心的导航&#xff0c;扩展可以通过在View Containers中配置&#xff0c;从而渲染Views中的视图。 具体来说就是在package.json中配置如下&…...

Java学习手册:TCP 协议基础

一、TCP 协议概述 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;它在 IP 协议的基础上提供了可靠的 数据传输服务。TCP 通过三次握手建立连接&#xff0c;通过四次挥手…...

摘要 | 李录在北大光华管理学院的演讲《价值投资》

李录在北大光华管理学院的演讲《价值投资》是中文投资领域极具影响力的经典内容&#xff0c;尤其是2019年11月的演讲版本。该演讲视频时长90分钟&#xff0c;主要内容围绕价值投资的理论框架、实践难点以及在中国市场的应用展开。以下是该演讲的核心要点解析&#xff1a; 一、价…...

让Docker端口映射受Firewall管理而非iptables

要让Docker容器的端口映射受系统防火墙(如firewalld或ufw)管理&#xff0c;而不是直接通过iptables&#xff0c;可以按照以下步骤配置&#xff1a; 方法一&#xff1a;禁用Docker的iptables规则 &#xff08;1&#xff09;编辑Docker配置文件&#xff1a; vi /etc/docker/da…...

数据库数据删除与修改实验

数据库数据删除与修改实验 在数据库原理的学习中&#xff0c;数据的删除与修改是核心操作技能。通过“删除修改数据”实验&#xff0c;我系统实践了 SQL 中 UPDATE 和 DELETE 语句的多种应用场景&#xff0c;从基础语法到复杂业务逻辑处理&#xff0c;积累了丰富的实战经验。本…...

多回路电表如何革新电力监控?安科瑞技术深度解析

安科瑞顾强 安科瑞电气股份有限公司作为国内领先的能源管理方案提供商&#xff0c;其多回路智能电表系列&#xff08;如AMC200、AMC300L、ADW200-D10-4S等&#xff09;凭借多回路计量、高精度测量、无线物联等核心优势&#xff0c;在工业、商业及智能电网领域广泛应用。以下从…...

【云计算】云计算中IaaS、PaaS、SaaS介绍

0 随着云计算、大数据、人工智能发展迅速&#xff0c;布局“云”已经是互联网企业共识。云计算的服务类型分为三种&#xff0c;分别为IaaS、PaaS、SaaS&#xff0c;这三个分别是什么意思&#xff0c;今天做一个简单的介绍和了解。 一、云计算 云计算是用户需求通过Internet获…...