MySQL:TABLE_SCHEMA及其应用

news2024/9/20 6:03:01
MySQL
TABLE_SCHEMA及其应用

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/140308112
HuaWei:https://bbs.huaweicloud.com/blogs/XXXXXXXXXX

【介绍】:在MySQL数据库管理系统中,TABLE_SCHEMA代表了数据库的逻辑结构和组织方式。TABLE_SCHEMA通常指的是数据库的名称,是MySQL中用于组织和管理表、视图、存储过程等数据库对象的顶层结构。本文总结TABLE_SCHEMA,以及其应用。

在这里插入图片描述


1. 概述

MySQL中,INFORMATION_SCHEMA是一个特殊的数据库,它包含了关于MySQL服务器所维护的所有其他数据库的信息。通过查询INFORMATION_SCHEMA,我们可以获取关于TABLE_SCHEMA的详细信息,包括表的结构、索引、约束等。

TABLE_SCHEMA的应用范围非常广泛。在日常的数据库管理工作中,我们可以利用它来监控数据库的大小、表的行数、最近的修改时间等。在性能优化方面,TABLE_SCHEMA可以帮助我们识别大表、分析索引使用情况,从而找出潜在的性能瓶颈。在安全审计方面,我们可以通过TABLE_SCHEMA来检查用户权限、识别敏感数据列,以及审计表结构的变更。

在接下来的章节中,我们将深入探讨INFORMATION_SCHEMA的概念、TABLE_SCHEMA的结构和内容、以及如何在实际工作中应用TABLE_SCHEMA来进行数据库管理、性能优化和安全审计。我们还将讨论使用TABLE_SCHEMA时的最佳实践和注意事项,以确保在充分利用其功能的同时,避免可能出现的问题。

通过本文,读者将能够全面理解TABLE_SCHEMA的概念和应用,从而在MySQL数据库管理和开发工作中更加得心应手。无论您是数据库管理员、开发人员还是对数据库感兴趣的学习者,相信本文都能为您提供有价值的见解和实用技巧。

2. TABLE_SCHEMA的结构和内容

2.1 TABLE_SCHEMA中的主要表介绍

MySQLINFORMATION_SCHEMA 数据库中,TABLE_SCHEMA 代表了数据库的名称。INFORMATION_SCHEMA 包含了多个与 TABLE_SCHEMA 相关的表格,这些表格提供了丰富的元数据信息。以下是 TABLE_SCHEMA 中的主要表格及其功能:

表名描述主要用途
TABLES包含所有表的信息获取表的名称、行数、数据长度、索引长度等基本信息
COLUMNS包含所有列的信息了解列名、数据类型、是否可为空、默认值等表结构详情
TABLE_CONSTRAINTS包含表约束信息理解表的主键、外键和唯一约束,确保数据完整性
KEY_COLUMN_USAGE包含键列的使用情况分析表之间的关系,了解约束名称、列名和引用情况
STATISTICS包含索引统计信息查询优化和性能调优,了解索引的基数和选择性
SCHEMATA包含数据库信息了解数据库的基本配置,如字符集和排序规则
VIEWS包含视图信息管理和维护视图,了解视图的定义和属性
ROUTINES包含存储过程和函数信息管理数据库中的程序化对象,了解定义和参数
TRIGGERS包含触发器信息理解和管理数据库中的自动化操作,了解触发器定义和关联表

通过查询这些表格,我们可以获取丰富的数据库元数据信息。例如,要查询数据库中最大的表,我们可以使用以下 SQL 语句:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_ROWS,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
ORDER BY 
    SIZE_MB DESC
LIMIT 10;

这个查询会返回数据库中最大的 10 个表,包括它们的 schema 名称、表名、估计的行数和大小(以 MB 为单位)。

通过合理利用这些表格中的信息,数据库管理员和开发人员可以全面了解数据库的结构和配置,从而更好地进行数据库管理、性能优化和安全审计。

2.2 每个表格的用途和包含的信息

TABLES表的主要用途是提供表级别的元数据。它包含的重要字段有TABLE_SCHEMA(数据库名)、TABLE_NAME(表名)、ENGINE(存储引擎)、TABLE_ROWS(估计的行数)、DATA_LENGTH(数据长度)和INDEX_LENGTH(索引长度)等。这些信息对于监控表的大小、估算查询性能和进行容量规划非常有用。

COLUMNS表的主要用途是提供列级别的元数据。它包含的重要字段有TABLE_SCHEMATABLE_NAMECOLUMN_NAME(列名)、DATA_TYPE(数据类型)、IS_NULLABLE(是否可为空)、COLUMN_DEFAULT(默认值)等。这些信息对于理解表结构、验证数据类型和确保数据完整性非常重要。

TABLE_CONSTRAINTS表的主要用途是提供表约束的信息。它包含的重要字段有CONSTRAINT_SCHEMATABLE_NAMECONSTRAINT_NAME(约束名)、CONSTRAINT_TYPE(约束类型)等。这些信息对于理解表的完整性规则和表之间的关系很有帮助。

KEY_COLUMN_USAGE表的主要用途是提供键列的使用情况。它包含的重要字段有CONSTRAINT_SCHEMATABLE_NAMECOLUMN_NAMEREFERENCED_TABLE_SCHEMA(被引用的数据库名)、REFERENCED_TABLE_NAME(被引用的表名)等。这些信息对于分析表之间的关系和理解外键约束非常有用。

STATISTICS表的主要用途是提供索引统计信息。它包含的重要字段有TABLE_SCHEMATABLE_NAMEINDEX_NAME(索引名)、COLUMN_NAMECARDINALITY(基数)等。这些信息对于优化查询性能和设计索引策略非常重要。

SCHEMATA表的主要用途是提供数据库级别的信息。它包含的重要字段有SCHEMA_NAME(数据库名)、DEFAULT_CHARACTER_SET_NAME(默认字符集)、DEFAULT_COLLATION_NAME(默认排序规则)等。这些信息对于了解数据库的基本配置和确保字符集一致性很有帮助。

VIEWS表的主要用途是提供视图的元数据。它包含的重要字段有TABLE_SCHEMATABLE_NAMEVIEW_DEFINITION(视图定义)、IS_UPDATABLE(是否可更新)等。这些信息对于管理和维护视图,以及理解视图的结构和行为非常有用。

ROUTINES表的主要用途是提供存储过程和函数的信息。它包含的重要字段有ROUTINE_SCHEMAROUTINE_NAMEROUTINE_TYPE(例如,PROCEDURE或FUNCTION)、ROUTINE_DEFINITION(定义)等。这些信息对于管理和维护存储过程和函数,以及理解它们的行为和参数非常重要。

TRIGGERS表的主要用途是提供触发器的信息。它包含的重要字段有TRIGGER_SCHEMATRIGGER_NAMEEVENT_MANIPULATION(触发事件类型)、ACTION_STATEMENT(触发器动作)等。这些信息对于理解和管理数据库中的自动化操作,以及追踪数据变更的逻辑非常有帮助。

通过合理利用这些表格中的信息,数据库管理员和开发人员可以全面了解数据库的结构和配置,从而更好地进行数据库管理、性能优化和安全审计。

3. 使用TABLE_SCHEMA进行数据库管理

MySQL数据库管理中,TABLE_SCHEMA是一个强大的工具,可以帮助我们高效地管理和监控数据库。本节将详细介绍如何利用TABLE_SCHEMA进行各种数据库管理任务。

3.1 查询数据库基本信息

要获取数据库的基本信息,我们可以查询INFORMATION_SCHEMA.SCHEMATA表。这个表包含了所有数据库(即schema)的基本信息。以下是一个查询示例:

SELECT 
    SCHEMA_NAME,
    DEFAULT_CHARACTER_SET_NAME,
    DEFAULT_COLLATION_NAME
FROM 
    INFORMATION_SCHEMA.SCHEMATA
WHERE 
    SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

这个查询会返回所有用户创建的数据库的名称、默认字符集和默认排序规则。通过这些信息,我们可以快速了解数据库的基本配置,确保字符集和排序规则的一致性。

3.2 监控表大小和行数

监控表的大小和行数是数据库管理的重要任务。我们可以使用INFORMATION_SCHEMA.TABLES表来获取这些信息。以下是一个查询示例:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_ROWS,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
ORDER BY 
    SIZE_MB DESC
LIMIT 10;

这个查询会返回数据库中最大的10个表,包括它们的schema名称、表名、估计的行数和大小(以MB为单位)。通过定期运行这个查询,我们可以跟踪表的增长情况,及时发现异常增长的表。

3.3 识别没有主键的表

主键对于表的性能和数据完整性非常重要。我们可以使用以下查询来识别没有主键的表:

SELECT 
    t.TABLE_SCHEMA,
    t.TABLE_NAME
FROM 
    INFORMATION_SCHEMA.TABLES t
LEFT JOIN 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
ON 
    c.TABLE_SCHEMA = t.TABLE_SCHEMA
    AND c.TABLE_NAME = t.TABLE_NAME
    AND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
WHERE 
    t.TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND c.CONSTRAINT_NAME IS NULL;

这个查询会列出所有没有主键的表。对于这些表,我们应该考虑添加适当的主键,以提高查询性能并确保数据的唯一性。

3.4 查找特定列名的表

有时我们需要查找包含特定列名的所有表。以下查询可以帮助我们实现这个目标:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    COLUMN_NAME LIKE '%user_id%'
    AND TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

这个查询会返回所有包含"user_id"(不区分大小写)的列,以及它们所在的表和数据类型。这对于理解数据模型和查找特定数据非常有用。

3.5 跟踪表的最近修改时间

跟踪表的最近修改时间可以帮助我们了解数据的新鲜程度和变化频率。以下查询可以帮助我们获取这些信息:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    UPDATE_TIME
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND UPDATE_TIME IS NOT NULL
ORDER BY 
    UPDATE_TIME DESC
LIMIT 20;

这个查询会返回最近修改的20个表,包括它们的schema名称、表名和最后更新时间。通过这些信息,我们可以识别最活跃的表,这对于性能优化和数据备份策略的制定都很有帮助。

通过使用这些查询,数据库管理员可以更好地了解数据库的结构和状态,从而做出更明智的管理决策。然而,需要注意的是,在大型数据库中,这些查询可能会消耗较多资源。因此,建议在非高峰时段执行这些查询,或者考虑将结果缓存起来,以减少对数据库的影响。

4. TABLE_SCHEMA在性能优化中的应用

MySQL数据库的性能优化过程中,TABLE_SCHEMA提供了丰富的元数据信息,可以帮助我们识别潜在的性能问题并进行针对性的优化。本节将详细探讨如何利用TABLE_SCHEMA进行性能优化。

4.1 识别大表和频繁更新的表

大表和频繁更新的表往往是性能瓶颈的主要来源。通过查询INFORMATION_SCHEMA.TABLES,我们可以轻松识别这些表。

以下查询可以帮助我们找出数据库中最大的表:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB,
    TABLE_ROWS
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
ORDER BY 
    SIZE_MB DESC
LIMIT 10;

这个查询会返回数据库中最大的10个表,包括它们的大小和估计的行数。对于这些大表,我们可能需要考虑分区、归档或者优化查询策略。

要识别频繁更新的表,我们可以使用以下查询:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    UPDATE_TIME,
    TABLE_ROWS
FROM 
    INFORMATION_SCHEMA.TABLES
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND UPDATE_TIME IS NOT NULL
ORDER BY 
    UPDATE_TIME DESC
LIMIT 10;

这个查询会返回最近更新的10个表。频繁更新的表可能需要更多的关注,例如优化索引、调整缓存策略等。

4.2 分析索引使用情况

索引对查询性能有着重要影响。通过INFORMATION_SCHEMA.STATISTICS,我们可以分析索引的使用情况。

以下查询可以帮助我们找出可能存在问题的索引:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    INDEX_NAME,
    COLUMN_NAME,
    CARDINALITY
FROM 
    INFORMATION_SCHEMA.STATISTICS
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND CARDINALITY / TABLE_ROWS < 0.01
    AND TABLE_ROWS > 10000
ORDER BY 
    CARDINALITY / TABLE_ROWS;

这个查询会返回选择性较低(小于1%)的索引,这些索引可能不会被查询优化器使用,反而会占用额外的存储空间和影响写入性能。

5.3 查找潜在的性能瓶颈

除了大表和低效索引外,还有一些其他因素可能导致性能问题。例如,没有主键的表可能会影响某些操作的性能。

以下查询可以帮助我们找出没有主键的表:

SELECT 
    t.TABLE_SCHEMA,
    t.TABLE_NAME
FROM 
    INFORMATION_SCHEMA.TABLES t
LEFT JOIN 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
ON 
    c.TABLE_SCHEMA = t.TABLE_SCHEMA
    AND c.TABLE_NAME = t.TABLE_NAME
    AND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
WHERE 
    t.TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND c.CONSTRAINT_NAME IS NULL
    AND t.TABLE_ROWS > 1000;

这个查询会返回所有没有主键且行数超过1000的表。对于这些表,我们应该考虑添加适当的主键。

另一个潜在的性能问题是使用了不恰当的数据类型。例如,使用VARCHAR存储固定长度的数据可能会导致额外的开销。我们可以使用以下查询来检查这种情况:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE,
    CHARACTER_MAXIMUM_LENGTH
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
    AND DATA_TYPE = 'varchar'
    AND CHARACTER_MAXIMUM_LENGTH <= 10;

这个查询会返回所有长度小于等于10的VARCHAR列。对于这些列,我们可能需要考虑是否可以改用CHAR类型。

通过利用TABLE_SCHEMA提供的这些信息,我们可以全面分析数据库的结构和使用情况,从而识别潜在的性能问题。然而,需要注意的是,这些查询本身也可能会消耗较多资源,特别是在大型数据库中。因此,建议在非高峰时段执行这些查询,或者考虑将结果缓存起来,以减少对数据库的影响。

在进行性能优化时,我们还应该结合实际的查询日志和性能监控数据,全面评估数据库的性能状况。TABLE_SCHEMA提供的信息是重要的参考,但不应该是我们做出优化决策的唯一依据。我们还需要考虑实际的业务需求、查询模式和硬件资源等因素,制定全面的优化策略。

5. TABLE_SCHEMA在安全审计中的应用

在数据库安全管理中,TABLE_SCHEMA提供了丰富的元数据信息,可以帮助我们进行全面的安全审计。本节将详细探讨如何利用TABLE_SCHEMA进行用户权限检查、敏感数据识别以及表结构变更审计。

5.1 检查用户权限

用户权限管理是数据库安全的核心。通过查询INFORMATION_SCHEMA中的相关表,我们可以全面了解用户的权限分配情况。

以下查询可以帮助我们检查特定用户的权限:

SELECT 
    GRANTEE,
    TABLE_SCHEMA,
    PRIVILEGE_TYPE
FROM 
    INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE 
    GRANTEE LIKE '%用户名%'
ORDER BY 
    TABLE_SCHEMA, PRIVILEGE_TYPE;

这个查询会返回指定用户在各个数据库中的权限。我们可以通过这个查询来验证用户是否只拥有必要的权限,从而遵循最小权限原则。

对于更细粒度的权限检查,我们可以查询TABLE_PRIVILEGES表:

SELECT 
    GRANTEE,
    TABLE_SCHEMA,
    TABLE_NAME,
    PRIVILEGE_TYPE
FROM 
    INFORMATION_SCHEMA.TABLE_PRIVILEGES
WHERE 
    GRANTEE LIKE '%用户名%'
ORDER BY 
    TABLE_SCHEMA, TABLE_NAME, PRIVILEGE_TYPE;

这个查询可以显示用户在特定表上的权限,有助于我们识别可能存在的过度授权情况。

5.2 识别敏感数据列

识别和保护敏感数据是数据库安全管理的重要任务。我们可以通过查询INFORMATION_SCHEMA.COLUMNS表来识别可能包含敏感信息的列。

以下查询可以帮助我们找出可能包含敏感信息的列:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    COLUMN_NAME LIKE '%password%'
    OR COLUMN_NAME LIKE '%credit_card%'
    OR COLUMN_NAME LIKE '%ssn%'
    OR COLUMN_NAME LIKE '%email%'
    OR COLUMN_NAME LIKE '%phone%'
ORDER BY 
    TABLE_SCHEMA, TABLE_NAME;

这个查询会返回列名中包含"password"、“credit_card”、“ssn”、"email"或"phone"的所有列。这些列可能包含敏感信息,需要特别注意其访问控制和加密措施。

对于识别出的敏感数据列,我们应该检查其访问权限、是否加密存储,以及是否有相应的审计日志记录其访问情况。

5.3 审计表结构变更

表结构的变更可能会影响数据的完整性和应用程序的正常运行。通过监控表结构的变更,我们可以及时发现潜在的安全风险。

遗憾的是,INFORMATION_SCHEMA并不直接提供表结构变更的历史记录。但是,我们可以通过定期查询表结构并与之前的结果比较来实现这一目标。

以下查询可以帮助我们获取表的当前结构:

SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    ORDINAL_POSITION,
    COLUMN_DEFAULT,
    IS_NULLABLE,
    DATA_TYPE,
    CHARACTER_MAXIMUM_LENGTH,
    NUMERIC_PRECISION,
    NUMERIC_SCALE
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
ORDER BY 
    TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;

通过定期运行这个查询并比较结果,我们可以发现表结构的变化,包括新增列、删除列、修改列定义等。

为了更好地实现表结构变更审计,我们可以考虑以下策略:

  1. 创建一个专门的表来存储表结构信息的快照。
  2. 定期运行上述查询,并将结果与存储的快照进行比较。
  3. 如果发现差异,记录变更详情并更新快照。
  4. 设置告警机制,当发现未经授权的表结构变更时及时通知相关人员。

通过这种方式,我们可以建立一个完整的表结构变更审计机制,有助于维护数据库的安全性和稳定性。

在进行安全审计时,利用TABLE_SCHEMA提供的信息可以帮助我们全面了解数据库的安全状况。但需要注意的是,安全审计应该是一个持续的过程,而不是一次性的工作。我们应该定期进行权限检查、敏感数据识别和表结构变更审计,并结合其他安全措施,如访问日志分析、漏洞扫描等,构建全面的数据库安全防护体系。

此外,在进行安全审计时,我们还应该注意保护INFORMATION_SCHEMA本身的安全。虽然INFORMATION_SCHEMA中的信息对于数据库管理和安全审计非常有用,但这些信息如果落入恶意用户手中,也可能被用来规划攻击。因此,我们应该严格控制对INFORMATION_SCHEMA的访问权限,只允许必要的用户查询这些信息。

6. 总结

在本文中,我们探讨了MySQL数据库中TABLE_SCHEMA的概念及其在数据库管理、性能优化和安全审计中的应用。
TABLE_SCHEMA作为INFORMATION_SCHEMA数据库的核心组成部分,为数据库管理员和开发人员提供了丰富的元数据信息,使我们能够全面了解数据库的结构、状态和配置。

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

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

相关文章

持久化存储与设备环境查询的最佳实践

ArkUI框架中的PersistentStorage和Environment 在ArkUI框架中&#xff0c;持久化存储和设备环境查询是应用开发中不可或缺的两个重要功能。在本文中&#xff0c;我们将深入了解框架提供的PersistentStorage和Environment&#xff0c;它们的用途、限制条件以及在应用开发中的使…

SDIO CMD 数据部分 CRC 计算规则

使用的在线 crc 计算工具网址&#xff1a;http://www.ip33.com/crc.html CMD CRC7 计算 如下图为使用逻辑分析仪获取的SDIO读写SD卡时&#xff0c;CMD16指令发送的格式&#xff0c;通过逻辑分析仪总线分析&#xff0c;可以看到&#xff0c;该部分的CRC7校验值得0x05,大多数情况…

二战架构师,拿下

前言 已经许久更新文章了&#xff0c;并不是因为我懒了&#xff0c;而是在备考系统架构师考试。个人感觉还是比较幸运的&#xff0c;低分飘过。现阶段任务也算完成了&#xff0c;记录一下感受。 什么是软考 软考&#xff0c;全称“计算机技术与软件专业技术资格&#xff08…

Agent如何帮助大模型“增强记忆”?

Agent如何帮助大模型“增强记忆”&#xff1f; 原创 格林 神州问学 2024年07月08日 17:50 日本 记忆反馈 >规划&#xff1f; 来源|神州问学 引言 去年6月份&#xff0c;Lilian发布了关于LLM驱动的Agent的结构和组件&#xff0c;其中包括规划、行动、工具还有记忆&#xff…

去除Win32 Tab Control控件每个选项卡上的深色对话框背景

一般情况下&#xff0c;我们是用不带边框的对话框来充当Tab Control的每个选项卡的内容的。 例如&#xff0c;主对话框IDD_TABBOX上有一个Tab Control&#xff0c;上面有两个选项卡&#xff0c;第一个选项卡用的是IDD_DIALOG1充当内容&#xff0c;第二个用的则是IDD_DIALOG2。I…

C++相关概念和易错语法(17)(适配器模式、仿函数)

1.stack和queue stack和queue的相关接口如下&#xff1a; stack queue 我们发现不管是stack还是queue&#xff0c;它们都有push和pop&#xff0c;不区分push_back和push_front&#xff0c;这是由它们的入栈特定顺序特性决定的&#xff0c;并且它们都没有迭代器&#xff0c;st…

【系统架构设计】计算机组成与体系结构(一)

计算机组成与体系结构 计算机系统组成计算机硬件组成控制器运算器主存储器辅助存储器输入设备输出设备 计算机系统结构的分类存储程序的概念Flynn分类 复杂指令集系统与精简指令集系统总线 存储器系统流水线 兜兜转转&#xff0c;最后还是回到了4大件&#xff0c;补基础&#x…

【力扣】数组中的第K个最大元素

一、题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…

图片像素坐标转实际坐标的一种转换方案

原图 红色的点是我们标注的像素点&#xff0c;这些红色的点我们知道它的像素坐标&#xff0c;以及以右下角相机位置为原点的x y 实际坐标数值 通过转换&#xff0c;可以得到整个图片内部其余像素点的实际坐标&#xff0c; 这些红色的点是通过转换关系生成的&#xff0c;每隔一米…

python破解密码·筛查和选择

破解密码时可能遇到的几种情况 ① 已知密码字符&#xff0c;破排序 ② 已知密码位数&#xff0c;破字符 ③ 已知密码类型&#xff0c;破字位 ④ 已知部分密码&#xff0c;破未知 ⑤ 啥都不知道&#xff0c;盲破&#xff0c;玩完 ⑥ 已知位数、字符、类型、部分密码中的几个&am…

2024全网最全面及最新且最为详细的网络安全技巧五 之 SSRF 漏洞EXP技巧,典例分析以及 如何修复 (下册)———— 作者:LJS

五.SSRF 漏洞EXP技巧&#xff0c;典例分析以及 如何修复 (下册) 目录 五.SSRF 漏洞EXP技巧&#xff0c;典例分析以及 如何修复 (下册) 5.4gopher 协议初探 0x01 Gopher协议 0x02 协议访问学习 复现环境 centos7 kali 2018 发送http get请求 发送http post请求 5.5 SSRF…

☺初识c++(语法篇)☺

目录 一命名空间&#xff08;namespace&#xff09;&#xff1a; 二cout与cin简述&#xff1a; 三缺省参数&#xff1a; 四函数重载&#xff1a; 五引用&#xff1a; 六内联函数: 七c中的nullptr简述&#xff1a; 一命名空间&#xff08;namespace&#xff09;&#xff1…

Chromium编译指南2024 Linux篇-同步Chromium第三方库(四)

1.引言 在成功拉取Chromium源码并创建新分支后&#xff0c;我们需要进一步配置开发环境。这包括拉取必要的第三方库以及设置hooks&#xff0c;以确保我们能够顺利进行编译和开发工作。以下步骤将详细介绍如何进行这些配置。 2.拉取第三方库以及hooks Chromium 使用了大量的第…

2024第六届上海国际新材料展览会-12月精彩呈现

2024第六届上海国际新材料展览会 The 6th shanghai International New Materials Exhibition in 2024 时 间&#xff1a;2024年12月18-20日 地 点&#xff1a;上海新国际博览中心 CIME 2024专业、权威&#xff0c;涵盖整个新材料行业的国际盛会。 期待与您在CIME 2024现场相…

24-7-9-读书笔记(九)-《爱与生的苦恼》[德]叔本华 [译]金玲

文章目录 《爱与生的苦恼》阅读笔记记录总结 《爱与生的苦恼》 《爱与生的苦恼》叔本华大佬的名书&#xff0c;里面有其“臭名昭著”的《论女人》&#xff0c;抛开这篇其他的还是挺不错的&#xff0c;哲学我也是一知半解&#xff0c;这里看得也凭喜好&#xff0c;这里记录一些自…

大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数

用语言介绍一下Transformer的整体流程 1. 输入嵌入&#xff08;Input Embedding&#xff09; 输入序列&#xff08;如句子中的单词&#xff09;首先通过嵌入层转化为高维度的向量表示。嵌入层的输出是一个矩阵&#xff0c;每一行对应一个输入单词的嵌入向量。 2. 位置编码&…

Qt 创建的窗口一闪而过【已解决】

Qt 创建的窗口一闪而过 引言一、详细的解决方案 - 附代码二、参考博文 引言 创建的窗口一闪而过&#xff0c;就是创建完立马被销毁了&#xff0c;常见情况是在一个函数中创建窗口并show() - 即创建在了栈上&#xff0c;函数结束局部变量(窗口)自动被释放。主流的解决方法有两种…

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U

概述 本篇文章主要介绍: 如何使用STM32CubeMX创建stm32F407+freertos+usb host的基础工程。USB-HOST-CDC驱动运行过程。如何根据4G模块的具体信息修改usb相关代码。MCU如何通过usb与4G模块通信,收发数据。调试过程中遇到的问题以及解决办法。 整个过程中在网上搜罗了很多参考…

机场的出租车问题折线图

分析并可视化机场离场车辆数数据 本文将详细介绍如何使用Python的正则表达式库re和绘图库matplotlib对机场离场车辆数数据进行分析和可视化。以下是具体步骤和代码实现。 数据资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rU-PRhrVSXq-8YdR6obc6Q?pwd1234 提…

干货:高水平论文写作思路与方法

前言:Hello大家好,我是小哥谈。高水平论文的写作需要扎实的研究基础和严谨的思维方式。同时,良好的写作技巧和时间管理也是成功的关键。本篇文章转载自行业领域专家所写的一篇文章,希望大家阅读后可以能够有所收获。🌈 目录 🚀1.依托事实/证据,通过合理的逻辑,…