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

MySQL:TABLE_SCHEMA及其应用

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_SCHEMAAND c.TABLE_NAME = t.TABLE_NAMEAND 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.01AND 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_SCHEMAAND c.TABLE_NAME = t.TABLE_NAMEAND c.CONSTRAINT_TYPE = 'PRIMARY KEY'
WHERE t.TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')AND c.CONSTRAINT_NAME IS NULLAND 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数据库的核心组成部分,为数据库管理员和开发人员提供了丰富的元数据信息,使我们能够全面了解数据库的结构、状态和配置。

相关文章:

MySQL:TABLE_SCHEMA及其应用

MySQL TABLE_SCHEMA及其应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…...

【MySQL】4.MySQL 的数据类型

MySQL 的数据类型 一.数据类型分类在这里插入图片描述二.注意点1.char VS varchar2.datetime VS timestamp3.enum 和 set 的使用方法 一.数据类型分类 二.注意点 1.char VS varchar char 的意义是直接开辟固定大小的空间&#xff0c;浪费磁盘空间&#xff0c;但是效率高varcha…...

STM32中断(NVIC和EXIT)

CM3 内核支持 256 个中断&#xff0c;其中包含了 16 个内核中断和 240个外部中断&#xff0c;并且具有 256 级的可编程中断设置。但STM32 并没有使用CM3内核的全部东西&#xff0c;而是只用了它的一部分。STM32有 76 个中断&#xff0c;包括16 个内核中断和 60 个可屏蔽中断&am…...

哈弗架构和冯诺伊曼架构

文章目录 1. 计算机体系结构 2. 哈弗架构&#xff08;Harvard Architecture&#xff09; 3. 改进的哈弗架构 4. 冯诺伊曼架构&#xff08;Von Neumann Architecture&#xff09; 5. 结构对比 1. 计算机体系结构 计算机体系结构是指计算机系统的组织和实现方式&#xff0c…...

Python实现动态迷宫生成:自动生成迷宫的动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义迷宫生成类主循环 完整代码 引言 迷宫生成算法在游戏开发和图形学中有着广泛的应用。它不仅可以用于创建迷宫游戏&#xff0c;还可以用于生成有趣的图案。在这篇博客中&#xff0c;我们将使用Python…...

大学生暑假“三下乡”社会实践工作新闻投稿指南请查收!

近年来&#xff0c;大学生暑期“三下乡”社会实践工作方兴未艾&#xff0c;越来越多的大学生通过参与“三下乡”实践工作&#xff0c;走出校园&#xff0c;深入基层&#xff0c;体验农村生活&#xff0c;服务农民&#xff0c;促进农村经济社会发展&#xff0c;实现了理论与实践…...

MySQL InnoDB存储引擎

MySQL InnoDB存储引擎 InnoDB 存储引擎的优点&#xff1a;由于 InnoDB 存储引擎存储的数据量大&#xff0c;性能高&#xff0c;可以有效的保证数据安全等优点&#xff0c;在 MySQL 5.5 后称为了默认的存储引擎。 InnoDB 内存结构&#xff1a; 缓冲池&#xff08;buffer poll&…...

无头单向非循环链表实现 and leetcode刷题

无头单向非循环链表实现 1. 单链表的模拟实现IList.java接口&#xff1a;MySingleList.java文件&#xff1a; 2. leetcode刷题2.1 获取链表的中间节点2.2 删除链表中所有值为value的元素2.3 单链表的逆置2.4 获取链表倒数第k个节点2.5 给定 x, 把一个链表整理成前半部分小于 x,…...

Ubuntu系统上安装Apache和WordPress

** 第一步跟新系统包 ** 首先跟新系统包 sudo apt update sudo apt upgrade第二步下载安装apache sudo apt install apache2 ##查看apache的状态是否启动成功 sudo systemctl status apache2 ##查看服务器的ip地址 sudo ip a通过ip地址进行访问apache页面 第三步下载安装…...

Doze和AppStandby白名单配置方法和说明

机制 配置路径 配置案例 说明 影响机制 调试命令 Doze /platform/frameworks/base /data/etc/platform.xml allow-in-power-save 【系统应用Doze白名单配置】 Doze\Job\AppStandby\Alarm\WakeLock\Sync 查看Doze白名单:adb shell dumpsys deviceidle 添加Doze白名单…...

坑2.Date类型的请求参数

前端 <el-form-item label"结束日期" prop"endTime"><el-date-pickerv-model"dataForm.endTime"type"date"value-format"yyyy-MM-dd HH:mm:ss"placeholder"选择日期"></el-date-picker></el…...

javaweb ajax maven mybatis spring springmvc 在项目中有什么用, 举例说明

JavaWeb是一种基于Java语言的Web开发技术&#xff0c;可以用来开发动态网站和Web应用程序。 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在Web开发中用于实现异步通信的技术&#xff0c;可以在不刷新整个网页的情况下更新部分页面内容&#xff0c;提升…...

Python编程学习笔记(4)--- 字典

目录 1 什么是字典 2 使用字典 2.1 访问字典中的值 2.2 添加键值对 2.3 创建空字典 2.4 修改字典中的值 2.5 删除键值对 2.6 类似键值对组成的字典 2.7 使用get&#xff08;&#xff09;来访问值 3 遍历字典 3.1 遍历所有键值对 3.2 遍历字典中的所有键 3.3 按照特…...

会员运营体系设计及SOP梳理

一些做会员的经验和方法分享给大家&#xff0c;包括顶层思考、流程的梳理、组织的建立&#xff0c;后续会做成系列&#xff0c;最近几期主要围绕顶层策略方面&#xff0c;以下是核心内容的整理&#xff1a; 1、会员运营体系设计 顶层设计与关键业务定位&#xff1a;建立客户运营…...

SQL 自定义函数

概念 自定义函数是用户根据自己的业务逻辑或计算需求创建的函数。这些函数可以接收一个或多个输入参数&#xff0c;执行一系列的操作&#xff08;如计算、数据处理、逻辑判断等&#xff09;&#xff0c;并最终返回一个值或结果集。自定义函数可以被多次重用&#xff0c;提高了…...

C# 下sendmessage和postmessage的区别详解与示例

文章目录 1、SendMessage2、PostMessage3、两者的区别&#xff1a; 总结 在C#中&#xff0c;SendMessage和PostMessage是两个用于Windows编程的API&#xff0c;它们用于向窗口发送消息。这两个方法都位于System.Windows.Forms命名空间中&#xff0c;通常用于自动化Windows应用程…...

Transformer重要论文与书籍 - Transformer教程

近年来&#xff0c;人工智能领域中的Transformer模型无疑成为了炙手可热的研究对象。从自然语言处理&#xff08;NLP&#xff09;到计算机视觉&#xff0c;Transformer展现出了前所未有的强大能力。今天&#xff0c;我们将探讨Tra在当今的人工智能和机器学习领域&#xff0c;Tr…...

android13 rom 开发总纲说明

1. 这里是文章总纲&#xff0c;可以在这里快速找到需要的文章。 2. 文章一般是基于标准的android13&#xff0c;有一些文章可能会涉及到具体平台&#xff0c;例如全志&#xff0c;瑞芯微等一些平台。 3.系统应用 3.1系统应用Launcher3桌面相关&#xff1a; 3.2系统应用设置S…...

2.线性回归

简化的房价模型 假设1&#xff1a;影响房价的关键因素时卧室个数&#xff0c;卫生间和居住面积&#xff0c;记为 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​ 假设2&#xff1a;成交价时关键因素的加权和&#xff1a; y w 1 x 1 w 2 x 2 w 3 x 3 b y w_1x_1w_2x_2w_3x…...

一文了解java中Optional

文章目录 1. Optional简介2. 常用的接口2.1 常用接口简单使用2.1.1 创建的常用方法2.1.2 获取值的常用方法2.1.3 判定的常用方法2.1.4 判定后的操作方法2.2 map方法介绍 2.2 其他方法2.2.1 Filter 方法2.2.2 FlatMap 方法 3. 常用的实例4. 总结 1. Optional简介 Optional是在ja…...

提示词工程(Prompt Engineering)是什么?

一、定义 Prompt Engineering 提示词工程&#xff08;Prompt Engineering&#xff09;是一项通过优化提示词&#xff08;Prompt&#xff09;和生成策略&#xff0c;从而获得更好的模型返回结果的工程技术。 二、System message 系统指令 System message可以被广泛应用在&am…...

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上&#xff0c;比如需要在请求之前展示loading效果&#xff0c;或者在登录的时候判断身份信息&#xff08;token&#xff09;等信息有没有过期&#xff0c;再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前&#xff0c;之后做的一…...

快速测试electron环境是否安装成功

快速测试electron环境是否安装成功 测试代码正确运行的效果运行错误的效果v22.4.1 版本无法使用v20.15.1版本无法使用v18.20.4 版本无法使用 终极解决办法 测试代码 1.npx create-electron-app my-electron-app 2.cd my-electron-app 3.npm start 正确运行的效果 环境没问题…...

数电设计提问求帮助,出租车计费器。

&#x1f3c6;本文收录于《CSDN问答解惑-》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…...

xcode项目添加README.md文件并进行编辑

想要给xcode项目添加README.md文件其实还是比较简单的&#xff0c;但是对于不熟悉xcode这个工具的人来讲&#xff0c;还是有些陌生&#xff0c;下面简单给大家讲一下流程。 选择“文件”>“新建”>“文件”&#xff0c;在其他&#xff08;滚动到工作表底部&#xff09;下…...

基于 cookiecutter 的 python 项目模板

Cookiecutter 介绍 使用 Python 这种动态语言进行 web 开发&#xff0c;团队中经常会遇到的问题就是代码的质量比较难控制。Python 语言本身灵活性比较高&#xff0c;不加控制的情况下代码质量可能最后很难维护。而且代码的各方面的标准&#xff0c;比如提示的 lint&#xff0…...

如何玩转澳大利亚Facebook直播?

近年来&#xff0c;直播带货已经成为国内最赚钱的行业之一&#xff0c;各种玩法也越来越成熟。然而&#xff0c;在海外市场&#xff0c;尤其是澳大利亚&#xff0c;直播带货仍然是一片蓝海。作为社交媒体营销的主阵地&#xff0c;Facebook的直播功能却常常被卖家忽视。那么&…...

C# IOC容器、依赖注入和控制反转

控制反转&#xff08;Inversion of Control, IoC&#xff09; 定义&#xff1a;控制反转是一种设计原则&#xff0c;它反转了传统编程中的控制流程。在传统的编程模式中&#xff0c;组件之间的依赖关系是由组件自身在内部创建和维护的。而在控制反转模式中&#xff0c;这种依赖…...

论文学习_An Empirical Study of Deep Learning Models for Vulnerability Detection

1. 引言 研究背景:近年来,深度学习漏洞检测工具取得了可喜的成果。最先进的模型报告了 0.9 的 F1 分数,并且优于静态分析器。结果令人兴奋,因为深度学习可能会给软件保障带来革命性的变化。因此,IBM、谷歌和亚马逊等行业公司非常感兴趣,并投入巨资开发此类工具和数据集。…...

ctfshow-web入门-文件上传(web166、web167)(web168-web170)免杀绕过

目录 1、web166 2、web167 3、web168 4、web169 5、web170 1、web166 查看源码&#xff0c;前端只让传 zip 上传 zip 成功后可以进行下载 随便搞一个压缩包&#xff0c;使用记事本编辑&#xff0c;在其内容里插入一句话木马&#xff1a; 上传该压缩包&#xff0c;上传成功…...