MySQL 8.0:性能优化与新功能

引言


MySQL 8.0是MySQL数据库管理系统的最新主要版本,带来了许多性能优化和新功能。本博客将探讨MySQL 8.0的性能提升以及一些使用技巧,助力你更好地利用这一强大的数据库系统。

新特性概览


MySQL 8.0相对于先前版本(如MySQL 5.7及更早版本)带来了一系列的显著改进,包括新功能引入、性能提升、安全性增强等方面。以下是MySQL 8.0的一些主要改进:

  1. 窗口函数和通用表达式 (CTE)
  2. JSON 支持的增强
  3. 数据字典的引入
  4. 查询执行计划的改进
  5. InnoDB 存储引擎的改进
  6. 自适应哈希索引
  7. 并发控制的改进
  8. 全文搜索引擎 InnoDB
  9. 加密选项的增强
  10. 用户认证与权限管理的改进

新功能引入


窗口函数和通用表达式 (CTE)

窗口函数和通用表达式(CTE)是MySQL 8.0引入的两个重要的查询功能,它们提供了更灵活和强大的数据处理和分析工具。下面分别介绍它们的使用方法:

1.窗口函数的使用

窗口函数允许在查询结果集内执行计算,而不需要对整个表进行汇总。它通常与OVER子句结合使用,以定义窗口范围。以下是一个简单的窗口函数的例子:

SELECTemployee_id,salary,AVG(salary) OVER (PARTITION BY department_id) AS avg_salary
FROMemployees;

在这个例子中,AVG(salary) OVER (PARTITION BY department_id)是一个窗口函数,它计算每个部门的平均工资,PARTITION BY子句定义了窗口的分区,即计算平均值的范围。

常见的窗口函数包括:

  • ROW_NUMBER():返回每行的排名。
  • RANK():返回排名,并在并列项之间跳过相同排名。
  • DENSE_RANK():返回排名,并在并列项之间跳过相同排名。
  • SUM(),AVG(),MIN(),MAX():聚合函数可以用于窗口。
2.通用表达式(CTE)的使用

通用表达式是一种创建可重用临时结果集的方式,通过WITH语句定义。CTE可以在查询中引用,提高了查询的可读性和维护性。以下是一个简单的CTE的例子:

WITH department_avg AS (SELECTdepartment_id,AVG(salary) AS avg_salaryFROMemployeesGROUP BYdepartment_id
)SELECTe.employee_id,e.salary,d.avg_salary
FROMemployees e
JOINdepartment_avg d ON e.department_id = d.department_id;

在这个例子中,WITH department_avg AS (...) 定义了一个CTE,它计算每个部门的平均工资。然后,我们在主查询中引用了这个CTE,通过JOIN将结果集与员工表关联。

CTE的主要优势在于它可以在一个查询中定义,然后在同一查询中多次引用,从而避免了嵌套子查询,提高了查询的可读性。


JSON 支持的增强

MySQL 8.0引入了对JSON的增强支持,包括新的JSON函数和对JSON路径表达式的改进。下面介绍一些常见的JSON功能以及它们的使用方法:

1.JSON函数
  • JSON_TABLE 函数用于将JSON数据转换为关系型数据,生成表格形式的输出。

示例:

SELECT *
FROM my_table,JSON_TABLE(json_column, '$.items[*]' COLUMNS (item_id INT PATH '$.id',item_name VARCHAR(50) PATH '$.name')) AS jt;

  • JSON_ARRAYAGG 函数用于将行聚合为JSON数组。

示例:

SELECT department, JSON_ARRAYAGG(employee) AS employees
FROM employees
GROUP BY department;

  • JSON_OBJECT 函数用于将键值对转换为JSON对象。

示例:

SELECT JSON_OBJECT('id', id, 'name', name) AS employee_json
FROM employees;

2. JSON 路径表达式:
  • ->->> 运算符:
    • -> 运算符用于访问JSON对象的属性,返回JSON对象或数组。
    • ->> 运算符用于访问JSON对象的属性,但返回文本而不是JSON对象。

示例:

SELECT json_column->'$.name' AS name,json_column->>'$.age' AS age
FROM my_table;

  • JSON_SEARCH 函数用于查找JSON数据中的指定值,并返回对应的JSON路径。

示例:

SELECT JSON_SEARCH(json_column, 'one', 'John') AS path
FROM my_table;

  • JSON_MODIFY 函数用于在JSON数据中进行插入、更新或删除操作。

示例:

UPDATE my_table
SET json_column = JSON_MODIFY(json_column, '$.age', 30)
WHERE id = 1;


数据字典的引入

MySQL 8.0引入了数据字典,作为一个中心化的存储系统,用于存储和管理数据库的元数据。数据字典提供了一致的元数据视图,包括表、列、索引、存储过程、触发器等对象的信息。以下是一些关于MySQL 8.0数据字典的使用方法:

1.查询表信息
  • 查看所有表:
SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'your_database';
  • 查看表的列信息:
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'your_database';
2.查看索引信息
  • 查看表的索引:
SELECT table_name, index_name, index_type
FROM information_schema.statistics
WHERE table_schema = 'your_database';
  • 查看索引列信息:
SELECT table_name, index_name, column_name
FROM information_schema.statistics
WHERE table_schema = 'your_database';
3.查看存储过程和触发器信息:
  • 查看存储过程:
SELECT routine_name, routine_type
FROM information_schema.routines
WHERE routine_schema = 'your_database';
  • 查看触发器:
SELECT trigger_name, event_object_table
FROM information_schema.triggers
WHERE trigger_schema = 'your_database';
4.查看其他对象信息:
  • 查看视图信息:
SELECT table_name, view_definition
FROM information_schema.views
WHERE table_schema = 'your_database';
  • 查看事件信息:
SELECT event_name, event_definition
FROM information_schema.events
WHERE event_schema = 'your_database';
5.注意事项:
  • 表名称大小写敏感: 在MySQL中,表名称是大小写敏感的。因此,请确保在查询时使用正确的大小写。
  • 权限: 查询数据字典需要相应的权限。确保用户具有SELECT权限来访问information_schema数据库。

性能优化


查询执行计划的改进

MySQL 8.0对查询执行计划进行了改进,引入了一些新特性和优化,以提高查询执行的效率。以下是一些主要的改进和相关信息:

1.Cost Model的引入:

MySQL 8.0引入了 Cost Model优化器,用于评估和选择执行计划的成本模型。Cost Model 考虑了不同执行计划的成本,并根据估算的成本选择最优的执行路径。

优势:

  • 通过更智能的成本估算,MySQL 8.0能够更准确地选择最优的执行计划。
  • 优化器可以更好地适应查询的复杂性和数据分布,提高查询性能。
2.索引选择的改进:
  • 自适应哈希索引:引入了自适应哈希索引,用于加速等值查询。动态调整哈希索引以适应查询模式和数据分布,提高了查询性能。
  • 离散数据分布的优化:MySQL 8.0优化了处理离散数据分布的能力,更好地利用索引进行查询。
3.字符串查询的性能提升:
  • utf8mb4 字符集的性能改进:MySQL 8.0在 utf8mb4 字符集的查询性能上进行了优化,特别是在排序和范围查询方面。
4.统计信息的改进:
  • 直方图和统计信息的优化:MySQL 8.0引入了直方图和统计信息的优化,帮助优化器更好地理解数据分布,提高对范围查询和不等值查询的优化效果。
5.适用场景和提升效率:
  • 适用场景:这些改进特别适用于大型数据库和复杂查询场景,其中成本估算的准确性对性能至关重要。
  • 提升效率:具体的性能提升取决于查询的复杂性、数据分布以及数据库的具体配置。在某些场景下,这些改进可以显著提高查询性能。

InnoDB存储引擎的改进

MySQL 8.0对InnoDB存储引擎进行了多方面的改进,主要涉及到表空间管理和多版本并发控制(MVCC)的性能优化。以下是对这些改进的深入探讨:

1.表空间管理的改进:
  • 系统表空间和共享表空间的优化:MySQL 8.0对系统表空间和共享表空间进行了优化,提高了表空间的管理效率。
  • InnoDB 数据字典表的存储方式优化:数据字典表(如SYS_TABLESSYS_COLUMNS等)的存储方式进行了优化,减少了元数据的存储空间和访问成本。
2.多版本并发控制(MVCC)的性能优化:
  • 新的Read-View的管理:引入了新的Read-View的管理机制,提高了MVCC的效率。Read-View用于读取一致性快照,以支持读取未提交的事务和避免阻塞。
  • Read-View 的并发性优化:优化了多个事务同时使用Read-View的场景,提高了并发性能。
  • Purge 线程的优化:改进了Purge线程的执行方式,加速了对过期版本的清理,提高了系统的稳定性。
3.空间表的支持:
  • 支持空间数据类型:MySQL 8.0引入了对空间数据类型(如PointLineString等)的支持,使得InnoDB存储引擎更适合处理地理信息和GIS应用。
4.性能提升的具体效果:

这些改进使得InnoDB存储引擎在以下方面获得性能提升:

  • 并发性能: 优化了MVCC机制,提高了并发读取的性能,特别是在高并发事务环境下。
  • 事务处理和回滚: 表空间管理的优化以及Undo表空间和Redo日志的改进,加速了事务处理和回滚的性能。
  • 元数据查询: 数据字典表的存储方式优化,减少了元数据查询的成本。

自适应哈希索引

自适应哈希索引是MySQL 8.0引入的一个重要特性,用于优化等值查询的性能。它通过动态调整哈希索引以适应查询模式和数据分布的变化,从而提高查询性能。以下是自适应哈希索引的原理和如何利用它提高查询性能的介绍:

1.自适应哈希索引的原理:
哈希索引简介:

哈希索引是一种在内存中维护的数据结构,通过使用哈希函数将键值映射到索引位置,以实现快速的等值查询。哈希索引通常对于等值查询非常高效,但在范围查询和排序等操作上可能性能不如B树索引。

动态调整哈希索引:

自适应哈希索引的关键在于其能够动态调整索引结构。当系统检测到某个查询模式频繁使用哈希索引时,自适应哈希索引会相应地调整索引结构以提高性能。

2. 如何利用自适应哈希索引提高查询性能:
在适用场景使用哈希索引:
  • 自适应哈希索引特别适用于等值查询的场景,例如WHERE column = value。在这种情况下,MySQL会根据查询模式和数据分布自动选择是否使用哈希索引。
监控自适应哈希索引性能:
  • 可以通过MySQL的性能监控工具来监控自适应哈希索引的性能。例如,通过查看性能模式(Performance Schema)的相关表来获取有关哈希索引的信息。
适时分析和调整:
  • 定期分析查询性能和哈希索引的使用情况。如果发现哈希索引在某些查询模式下性能表现良好,可以进一步利用它。如果发现性能下降,可能需要考虑调整索引结构或者考虑其他索引类型。
3.示例:

假设有一个表users,其中有一个列username,我们希望查询特定的用户名。自适应哈希索引可以在以下情况下发挥作用:

-- 创建表,MySQL 8.0 会自动检测并选择是否使用哈希索引
CREATE TABLE users (id INT PRIMARY KEY,username VARCHAR(255)
);-- 查询
SELECT * FROM users WHERE username = 'john_doe';

在这个例子中,如果MySQL检测到username列的等值查询频繁发生,它可能会选择自适应哈希索引来提高查询性能。


并发控制的改进

MySQL 8.0在并发控制方面进行了一些重要的改进,旨在提高事务隔离性和系统的并发性能。以下是MySQL 8.0中对并发控制的改进,包括事务隔离级别的优化:

1.Read-View 的并发性优化:
  • 引入了新的Read-View管理机制,提高了并发读取的性能。多个事务可以同时使用Read-View,从而降低了在高并发环境下的竞争。
2.InnoDB 读事务的性能优化:
  • 优化了InnoDB的读事务,使其在Read-Committed和Repeatable-Read隔离级别下的性能更好。这包括更有效地管理Read-View和减少锁竞争。
3.Consistent Snapshot Reads:
  • 引入了Consistent Snapshot Reads,这是一种针对InnoDB存储引擎的优化,提高了在某些情况下的事务读取性能。
4.其他并发控制方面的改进:
  • InnoDB事务的锁分离:对InnoDB事务的锁分离进行了优化,降低了事务间的锁竞争,提高了并发性能。
  • Purge 线程的优化:改进了Purge线程的执行方式,加速了对过期版本的清理,提高了系统的稳定性。
  • InnoDB 死锁检测的优化:优化了InnoDB的死锁检测机制,减少了死锁检测的开销,提高了系统在并发环境下的稳定性。
5. 性能提升的具体效果:
  • 这些改进使得MySQL 8.0在处理大量并发事务时具有更好的性能表现,尤其是在高并发读取的情况下。
  • 优化了事务隔离级别下的读事务性能,降低了锁的争用,提高了并发性。
  • Consistent Snapshot Reads的引入为一致性快照读取提供了更高的效率,尤其在读取大量数据时性能更为显著。

这些改进使得MySQL 8.0在处理复杂事务和高并发环境下更加健壮,提高了数据库的整体性能和可靠性。在实际应用中,开发者可以通过监控和性能测试来评估这些改进对特定工作负载的影响,以更好地利用MySQL 8.0带来的性能优势。


全文搜索引擎InnoDB

MySQL 8.0引入了InnoDB全文搜索引擎,使得在InnoDB存储引擎上的表上实现全文搜索功能成为可能。以下是InnoDB全文搜索引擎的使用方法和如何实现全文搜索功能的介绍:

1. 使用方法:

创建全文索引:在InnoDB表上创建全文索引,可以使用FULLTEXT索引类型。

CREATE TABLE my_table (id INT PRIMARY KEY,content TEXT,FULLTEXT (content)
) ENGINE=InnoDB;

执行全文搜索查询:使用MATCH AGAINST语句执行全文搜索查询。

SELECT * FROM my_table
WHERE MATCH(content) AGAINST('search term');

全文搜索函数:使用全文搜索函数进行更高级的全文搜索。

SELECT * FROM my_table
WHERE MATCH(content) AGAINST('search term' IN BOOLEAN MODE);
2.全文搜索功能的实现:
  • 创建表时定义全文索引:在创建表时,通过使用FULLTEXT索引类型为表的某个列定义全文索引。
  • 使用MATCH AGAINST进行全文搜索:使用MATCHAGAINST语句执行全文搜索。这允许你指定搜索的列和搜索的词语。
  • BOOLEAN MODE:使用BOOLEAN MODE进行更高级的全文搜索,支持布尔运算符、通配符和其他高级搜索语法。
  • 调整全文搜索配置:MySQL提供了一些系统变量,如ft_min_word_leninnodb_ft_sort_pll_degree,可以用于调整全文搜索的配置。
3.示例:
-- 创建表并定义全文索引
CREATE TABLE articles (id INT PRIMARY KEY,title VARCHAR(255),content TEXT,FULLTEXT (title, content)
) ENGINE=InnoDB;-- 执行全文搜索查询
SELECT * FROM articles
WHERE MATCH(title, content) AGAINST('MySQL' IN BOOLEAN MODE);

在这个例子中,表articles包含titlecontent列,通过FULLTEXT索引定义了全文索引。查询使用MATCH AGAINST语句执行全文搜索,可以指定要搜索的列和搜索的词语,并可以使用BOOLEAN MODE进行更高级的搜索。


安全性与最佳实践


加密选项的增强

MySQL 8.0引入了一些新的加密选项,以进一步加强数据库的安全性。这些加密选项涵盖了数据的传输、存储和用户认证等方面。以下是MySQL 8.0中提供的一些新的加密选项:

1. 传输层加密:

MySQL Enterprise TDE(Transparent Data Encryption):

  • MySQL Enterprise Edition提供了Transparent Data Encryption(透明数据加密)功能,用于加密在磁盘上存储的表空间数据,确保数据在磁盘上的存储是加密的。
2. 加密算法的增强:

新的加密插件:

  • MySQL 8.0引入了新的加密插件,如caching_sha2_password插件,用于改进用户认证的安全性。这是默认的认证插件,支持SHA-256算法,提供更强的密码安全性。

SHA-256 和 SHA-2 加密:

  • MySQL 8.0支持SHA-256算法,用于加密用户密码。这提高了密码哈希的安全性,与之前版本的MySQL中的SHA-1相比更为强大。
3. SSL/TLS 支持的增强:

支持 OpenSSL 1.1:

  • MySQL 8.0支持OpenSSL 1.1,提供了更先进的SSL/TLS加密支持。

X509 证书认证:

  • MySQL 8.0增强了SSL/TLS支持,包括对X509证书认证的更好支持。这可以提高连接的安全性。
4. 用户认证和权限管理的改进:

密码过期策略:

  • 引入了密码过期策略,可以要求用户在一定时间后更改密码,提高了密码的定期更新。

强化的角色管理:

  • 引入了更灵活和强大的角色管理,使得用户权限的管理更加细粒度。
5. Audit Log 插件:

审计日志插件:

  • MySQL 8.0引入了审计日志插件,允许管理员记录数据库服务器的活动,包括连接、查询、错误等,以加强对数据库安全性的监控。

用户认证与权限管理


MySQL 8.0对用户认证和权限管理进行了一系列改进,以提高数据库的安全性。以下是MySQL 8.0中改进的用户认证和权限管理机制的主要特点:

1. 新的加密插件和密码管理:

caching_sha2_password 插件:

MySQL 8.0引入了新的默认加密插件 caching_sha2_password,该插件使用SHA-256算法进行密码加密,提供更强大的安全性。与之前的mysql_native_password插件相比,提供了更好的密码存储和传输安全性。

b. 密码过期策略:

MySQL 8.0引入了密码过期策略,允许管理员设置密码的过期时间,从而强制用户定期更改密码,增加了数据库的安全性。

2. 角色管理的改进:

更灵活的角色授权:

MySQL 8.0引入了更灵活的角色管理机制,允许管理员创建和管理角色,通过角色对用户进行权限授权。这提高了权限管理的细粒度。

默认角色:

引入了默认角色的概念,用户登录时可以自动关联到一个或多个默认角色,简化了权限管理。

3. 用户账户管理:

REQUIRE ISSUER 选项:

新增了 REQUIRE ISSUER 选项,可用于限制连接的用户证书必须由特定的证书颁发者(Issuer)签发,增强了SSL/TLS证书认证的安全性。

强化的账户锁定机制:

引入了更强大的账户锁定机制,支持失败登录尝试次数和锁定时长的配置,以防范暴力破解。

4. Audit Log 插件:

审计日志插件:

MySQL 8.0引入了审计日志插件,可以用于记录数据库服务器的活动,包括用户登录、权限变更、查询执行等,提高了对数据库安全性的监控和审计能力。

5. 用户认证和权限管理的 SQL 接口改进:

SET ROLE 语句:

引入了 SET ROLE 语句,用于在会话中设置用户的角色,使得在会话中更灵活地管理用户的权限。

ALTER USER 语句的增强:

ALTER USER 语句进行了增强,支持修改密码、设置密码过期策略、设置默认角色等操作。

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

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

相关文章

如何解决 Critical dependency: the request of a dependency is an expression ?

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: ruoyi-nbcio: nbcio-boot的若依版本,基于ruoyi-flowable-plus和flowable6.7.2,目前处于开发功能完善阶段,目标是打造一个最好的若依平台上flowable流程管理系统开源版本&…

CRM按行业细分的重要性

很多企业和销售会诟病CRM系统不够贴合行业、功能也不够细分和实用。因为各行各业的业务千差万别,所以功能完备、使用满意度高的CRM一定是与不同行业业务场景高度匹配的,是深度行业化的。因此行业化是CRM发展的重要趋势之一,为什么CRM一定要走…

【JS】鉴别项目是否处于嵌入模式

文章目录 是否嵌入可以通过url的搜索参数去判断&#xff0c;例如新增参数embed <!-- 正常嵌入 --> <iframesrc"https://test.com/#/main?id66"width"100%"height"100%"frameBorder{0} /> <!-- 添加参数判断 --> <iframes…

竞赛选题 疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据全国疫情数据分析与3D可视化 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff0…

Apache Airflow (十一) :HiveOperator及调度HQL

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

【MySQL--->视图】

文章目录 [TOC](文章目录) 一、概念二、操作三、视图特性 一、概念 视图是一个由插叙结果组成的虚拟表,基于表查询结果得到的表叫做视图,被查询的表叫做基表.基表和视图进行更新操作会互相影响. 二、操作 创建视图 将dept和emp两个基表的查询结果作为视图 更新基表会影响视…

文具办公产品展示预约小程序的作用如何

从整体来看&#xff0c;文具办公品牌/门店的生意来源于线下自然流量或线上自营商城/入驻第三方商城的的流量&#xff0c;线上多数情况都是以直接销售配送为主&#xff0c;但其实对文具品牌/门店而言还有信息展示、服务预约、在线咨询、产品介绍等需求。 虽然小区周边的消费者需…

ETCD中MVCC的运用

MVCC 并发与锁从来都是密不可分的两个东西&#xff0c;在一个请求的过程中&#xff0c;难免会操作各种各样的资源&#xff0c;那么在多个请求同时到来的时候&#xff0c;各个请求处理资源是无序的&#xff0c;肯定就会造成干扰&#xff0c;那么普遍的做法就是加锁。 但是&#…

一些损失函数的学习

CrossEntropy loss 交叉熵是用来衡量两个概率分布之间的差异性或不相似性的度量交叉熵定义为两个概率分布p和q之间的度量。其中&#xff0c;p通常是真实分布&#xff0c;而q是模型预测的分布 交叉熵还等于信息熵 相对熵 这里&#xff0c;x遍历所有可能的事件&#xff0c;p(x)…

OpenAI与微软合作,构建 ChatGPT 5 模型;10天准确天气预报

&#x1f989; AI新闻 &#x1f680; OpenAI与微软合作&#xff0c;构建 ChatGPT 5 模型&#xff0c;下一代人工智能或拥有超级智能 摘要&#xff1a;OpenAI首席执行官 Sam Altman 在接受采访时表示&#xff0c;OpenAI正在与微软合作构建下一代人工智能模型 ChatGPT 5&#x…

1、谈谈你对Spring的理解

什么是spring Spring是一个生态&#xff1a;可以构建java应用所需的一切基础设施通常Spring指的就是Spring Framework 核心解释 1、spring是一个轻量级的开源容器框架。 2、spring是为了解决企业级应用开发的业务逻辑层和其他各层对象和对象直接的耦合问题 3、spring是一个I…

element UI表格中设置文字提示(tooltip)或弹出框(popover)时候注意的地方

在表格中自定义内容的时候需要使用标签&#xff0c;否则无法正常显示 文档中有两种写法&#xff1a;1、使用 slot“reference” 的具名插槽&#xff0c;2、使用自定义指令v-popover指向 Popover 的索引ref。 使用tooltip 时用具名 slot 分发content&#xff0c;替代tooltip中…

牧童

《牧童》 作者&#xff0f;罗光记 青草地上牧童行&#xff0c; 黄牛耳边语轻轻。 夕阳西下归家去&#xff0c; 一曲笛声入晚庭。

如何将文字、图片、视频、链接等内容生成一个二维码?

通过二维彩虹的【H5编辑】功能&#xff0c;就可以将文字、图片、视频、文件、链接等多种格式的内容编辑在一个页面&#xff0c;然后生成一个自定义的二维码——H5编辑二维码。扫描后&#xff0c;即可查看二维码中的详细图文视频等内容了。这个功能大受欢迎&#xff01; 这个H5…

html主页框架,前端首页通用架构,layui主页架构框架,首页框架模板

html主页框架 前言功能说明效果使用初始化配置菜单加载主题修改回调 其他非iframe页面内容使用方式iframe页面内容使用方式 前言 这是一个基于layui、jquery实现的html主页架构 平时写的系统后台可以直接套用此框架 由本人整合编写实现&#xff0c;简单上手&#xff0c;完全免…

潮玩宇宙大逃杀游戏开发源码说明

潮玩宇宙大逃杀游戏是一款简单而刺激的游戏。玩家在倒计时结束前从8个房间中选择一个房间并投入宝石。倒计时结束后&#xff0c;系统会自动生成一个敌人&#xff0c;然后随机挑选一个房间并清除这个房间内的人。其余7个房间内的玩家就可以按照投入比例获得被清除掉玩家的宝石。…

接口测试基础与接口测试用例设计思路详解

接口测试简介 1.什么是接口 接口就是内部模块对模块&#xff0c;外部系统对其他服务提供的一种可调用或者连接的能力的标准&#xff0c;就好比usb接口&#xff0c;他是系统向外接提供的一种用于物理数据传输的一个接口&#xff0c;当然仅仅是一个接口是不能进行传输的&#x…

【数据结构】栈

1.58.33 栈 栈栈的概念及基本结构栈的存储栈的基本操作栈的置空初始化---StackInit()栈的初始化2.0---给栈开辟一点空间StackInit1()栈的销毁---StackDestory()入栈----StackPush()出栈----StackPop()获取栈中元素的数量---StackSize()判断栈是否为空---StackEmpty()获取栈顶元…

自动化测试系列 —— UI自动化测试

UI 测试是一种测试类型&#xff0c;也称为用户界面测试&#xff0c;通过该测试&#xff0c;我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要&#xff0c;通过执行 UI 测试…

值得学习的演示文稿制作范例

1,在第一张幻灯片前插入1张新幻灯片,设置幻灯片大小为“全屏显示(16:9) ”;为整个演示文稿应用“离子会议室”主题,放映方式为“观众自行浏览”;除了标1题幻灯片外其它每张幻灯片中的页脚插入“晶泰来水晶吊坠”七个字。 2,第一张幻灯片的版式设置为“标题幻灯片”,主标题为“…