MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
文章目录
- MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
- General tablespaces(通用表空间/一般表空间)
- 通用表空间的功能
- 通用表空间的限制
- 创建通用表空间(一般表空间)
- 创建语法
- 创建通用表空间
- 例1:不指定数据文件路径
- 例2: 省略add datafile语句
- 例3:创建datadir路径外的表空间
- innodb_directories变量参数
- 例:创建datadir路径外的表空间
- 修改innodb_directories变量参数
- 创建datadir路径外的表空间
- 例4:创建InnoDB通用表空间的限制
- 通用表空间中的表
- 例1:创建表指定通用表空间
- 例2:修改表的表空间
- 例2-1:修改到不同的通用表空间中
- 例2-2:修改表从独立表空间或系统表空间到通用表空间
- 例2-3:修改表从通用表空间或系统表空间到独立表空间
- 例2-4:修改表从通用表空间或独立表空间到系统表空间
- 参考
【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)
MySQL 8.0 OCP (1Z0-908) 考点概要
MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量
【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
【MySQL】MySQL系统变量(system variables)列表(SHOW VARIABLES 的结果例)
MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点3:EXPLAIN ANALYZE
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点4:慢速查询日志(slow query log)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点5:表连接算法(join algorithm)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点6:InnoDB Tablespaces之系统表空间(System Tablespace)
MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)
MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
InnoDB表空间是MySQL中用于存储InnoDB存储引擎表数据和索引的物理文件。
InnoDB表空间根据用途可以分成多种类型:
- 数据表空间:
- System tablespace(系统表空间)
- File-per-table tablespaces(单独表空间)
- General tablespaces(通用表空间/一般表空间)
- Undo 表空间
- 临时表空间(Temporary table tablespaces)
General tablespaces(通用表空间/一般表空间)
通用表空间具有如下功能和限制。
通用表空间的功能
通用表空间具有如下功能:
- 使用CREATE TABLESPACE语法创建的共享InnoDB表空间(与Oracle的表空间很相似)。
- 类似于系统表空间,通用表空间是共享表空间,可以存储多个表的数据。 与独立表空间相比,通用表空间具有潜在的内存优势。(通用表空间中多个表共享一个表空间,所以消耗更少的内存用于表空间元数据,独立表空间需要更多内存用于表空间元数据。)
- 数据文件可以放置在与MySQL数据目录( MySQL data directory)相关或独立的目录中。
- 通用表空间支持所有的表行格式和相关功能(REDUNDANT, COMPACT, DYNAMIC, COMPRESSED)。 CREATE
- TABLE语句可以使用TABLESPACE选项在通用表空间、独立表空间或系统表空间中创建表。 ALTER
- TABLE语句可以使用TABLESPACE选项在通用表空间、独立表空间或系统表空间之间移动表。
- 创建通用表空间时候会生成相应的.ibd数据文件。 通用表空间不属于特定的数据库。
通用表空间的限制
通用表空间具有如下限制:
- 无法将现有的表空间更改为通用表空间。
- 不支持创建临时通用表空间。
- 通用表空间不支持临时表。
- 与系统表空间类似,truncate 或者drop通用表空间中的表,仅释放系统表空间中的空间,不会返回给操作系统。
- 表复制的ALTER TABLE操作可能会增加表空间使用的空间量。
- 不支持表分区(table partitions)放置在通用表空间中
- 源和副本位于同一主机上的复制环境中,不支持使用ADD DATAFILE子句。
- MySQL 8.0.21开始,由datadir、innodb_data_home_dir和innodb_directories变量定义的目录以外,无法在撤销表空间目录(innodb_undo_directory)中创建通用表空间。
创建通用表空间(一般表空间)
创建语法
通用表空间/一般表空间创建语法如下:
CREATE [UNDO] TABLESPACE tablespace_nameInnoDB and NDB:[ADD DATAFILE 'file_name'][AUTOEXTEND_SIZE [=] value]InnoDB only:[FILE_BLOCK_SIZE = value][ENCRYPTION [=] {'Y' | 'N'}]NDB only:USE LOGFILE GROUP logfile_group[EXTENT_SIZE [=] extent_size][INITIAL_SIZE [=] initial_size][MAX_SIZE [=] max_size][NODEGROUP [=] nodegroup_id][WAIT][COMMENT [=] 'string']InnoDB and NDB:[ENGINE [=] engine_name]Reserved for future use:[ENGINE_ATTRIBUTE [=] 'string']
创建通用表空间
例1:不指定数据文件路径
可以不指定数据文件路径创建通用表空间,这时候数据文件会默认创建在datadir路径下。
创建表空间:
mysql> create tablespace test_tbs1 add datafile 'test_tbs1.ibd';
Query OK, 0 rows affected (0.01 sec)mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)mysql> select * from-> information_schema.innodb_tablespaces t-> join information_schema.innodb_datafiles d-> on t.SPACE=d.SPACE-> where t.NAME ='test_tbs1'\G
*************************** 1. row ***************************SPACE: 81NAME: test_tbs1FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x3831PATH: test_tbs1.ibd
1 row in set (0.00 sec)mysql>
查看数据文件:
root@mysql-vm:/var/lib/mysql# ls -l test_tbs*
-rw-r----- 1 mysql mysql 114688 Dec 20 20:32 test_tbs1.ibd
例2: 省略add datafile语句
MySQL 8.0.14版本之后,创建表空间时可以省略add datafile语句。这时MySQL会隐式创建具有唯一文件名的表空间数据文件。
- 文件名是一个128位的UUID,格式为五组用破折号分隔的十六进制数字(aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee)。
- 常规表空间数据文件包括一个.ibd文件扩展名。 在replication环境中,在源上创建的数据文件名与在复制副本上创建的文件名不同。
例:
mysql> create tablespace test_tbs2;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from-> information_schema.innodb_tablespaces t-> join information_schema.innodb_datafiles d-> on t.SPACE=d.SPACE-> where t.NAME ='test_tbs2'\G
*************************** 1. row ***************************SPACE: 82NAME: test_tbs2FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x3832PATH: af5bb7e2-9f34-11ee-8d33-525400b409f6.ibd
1 row in set (0.00 sec)mysql>
查看数据文件:
root@mysql-vm:/var/lib/mysql# ls -l af5bb7e2-9f34-11ee-8d33-525400b409f6.ibd
-rw-r----- 1 mysql mysql 114688 Dec 20 20:38 af5bb7e2-9f34-11ee-8d33-525400b409f6.ibd
root@mysql-vm:/var/lib/mysql#
例3:创建datadir路径外的表空间
通用表空间数据文件可以放置在数据目录之外的位置,但是路径必须是innodb_directories的值或者附加到innodb_directories值的变量(innodb_data_home_dir、innodb_undo_directory和datadir)之一。
innodb_directories变量参数
innodb_directories变量参数内容如下:
Command-Line Format | –innodb-directories=dir_name |
---|---|
System Variable | innodb_directories |
Scope | Global |
Dynamic | No |
SET_VAR Hint Applies | No |
Type | Directory name |
Default Value | NULL |
innodb_directories参数的默认值为NULL。但是innodb_data_home_dir、innodb_undo_directory和datadir定义的目录会会附加到innodb_directories参数值上。
例:
mysql> show variables like 'innodb_directories';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| innodb_directories | |
+--------------------+-------+
1 row in set (0.01 sec)mysql> show variables like 'innodb_data_home_dir';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_data_home_dir | |
+----------------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'innodb_undo_directory';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_undo_directory | ./ |
+-----------------------+-------+
1 row in set (0.01 sec)mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)mysql>
/var/lib/mysql-files
drwx------ 12 mysql mysql 4096 Dec 24 22:10 mysql
参考:
https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_directories
修改innodb_directories变量参数需要修改MySQL配置文件,并重新启动MySQL服务。
例:创建datadir路径外的表空间
如果在未定义路径中创建通用表空间,由于不是已知目录,会发生如下ERROR 3121 (HY000)错误。
mysql> show variables like 'innodb_directories';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| innodb_directories | |
+--------------------+-------+
1 row in set (0.01 sec)mysql> create tablespace sqlplusdb_tb1 add datafile '/var/lib/mysql-files/sqlplusdb_tb1.ibd';
ERROR 3121 (HY000): The DATAFILE location must be in a known directory.
mysql>
可以通过修改innodb_directories变量参数添加已知目录。
修改innodb_directories变量参数
添加如下内容(innodb_directories=/var/lib/mysql-files)到MySQL配置文件中。
例:innodb_directories=/var/lib/mysql-files
root@mysql-vm:/etc/mysql# vi /etc/mysql/mysql.conf.d/mysqld.cnf
root@mysql-vm:/etc/mysql# systemctl stop mysql
root@mysql-vm:/etc/mysql# systemctl start mysql
创建datadir路径外的表空间
查看变量并创建datadir路径外的表空间的表空间
mysql> show variables like 'innodb_directories';
+--------------------+----------------------+
| Variable_name | Value |
+--------------------+----------------------+
| innodb_directories | /var/lib/mysql-files |
+--------------------+----------------------+
1 row in set (0.00 sec)mysql> create tablespace test_tb3 add datafile '/var/lib/mysql-files/test_tb3.ibd';
Query OK, 0 rows affected (0.02 sec)
mysql>
mysql> select * from-> information_schema.innodb_tablespaces t-> join information_schema.innodb_datafiles d-> on t.SPACE=d.SPACE-> where t.NAME ='test_tb3'\G
*************************** 1. row ***************************SPACE: 92NAME: test_tb3FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x3932PATH: /var/lib/mysql-files/test_tb3.ibd
1 row in set (0.00 sec)mysql>
参考:
MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
例4:创建InnoDB通用表空间的限制
可以在数据目录(datadir)中创建通用表空间。
mysql> create tablespace sqlplusdb_tb1 add datafile '/var/lib/mysql/sqlplusdb_tb1.ibd';
Query OK, 0 rows affected (0.02 sec)
但是为了避免与隐式创建的每个表一个文件的表空间发生冲突,不支持在数据目录(datadir)的子目录中创建InnoDB通用表空间。
如果在数据目录(datadir)的子目录中创建InnoDB通用表空间会报ERROR 3121 (HY000)错误。
例:
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)mysql> create tablespace sqlplusdb_tb2 add datafile '/var/lib/mysql/testdb/sqlplusdb_tb1.ibd';
ERROR 3121 (HY000): The DATAFILE location cannot be under the datadir.
mysql>
通用表空间中的表
和Oracle一样,MySQL在创建表时可以指定表空间也可以修改表的表空间。
例1:创建表指定通用表空间
mysql> use testdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> CREATE TABLE test_t1 (c1 INT) TABLESPACE test_tbs1 ;
Query OK, 0 rows affected (0.01 sec)mysql>
mysql> SHOW CREATE TABLE test_t1;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_t1 | CREATE TABLE `test_t1` (`c1` int DEFAULT NULL
) /*!50100 TABLESPACE `test_tbs1` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)mysql>
mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name like '%test_t1%' \g
+----------------+------------+
| table_name | space_type |
+----------------+------------+
| testdb/test_t1 | General |
+----------------+------------+
1 row in set (0.08 sec)
例2:修改表的表空间
通过ALTER TABLE语句的TABLESPACE选项可以修改表的表空间,将表在通用表空间、独立表空间或系统表空间之间进行移动。
需要注意的是:
- ALTER TABLE ... TABLESPACE操作将导致对表进行全表重建(即使TABLESPACE属性未发生更改也会重建)。
- ALTER TABLE ... TABLESPACE语法不支持将表从临时表空间移动到持久表空间。
例2-1:修改到不同的通用表空间中
通过ALTER TABLE tbl_name TABLESPACE [=] tablespace_name修改表到不同的通用表空间中
例:
mysql> SHOW CREATE TABLE test_t1;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_t1 | CREATE TABLE `test_t1` (`c1` int DEFAULT NULL
) /*!50100 TABLESPACE `test_tbs1` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> ALTER TABLE test_t1 tablespace=sqlplusdb_tb1;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> SHOW CREATE TABLE test_t1;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_t1 | CREATE TABLE `test_t1` (`c1` int DEFAULT NULL
) /*!50100 TABLESPACE `sqlplusdb_tb1` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql>
例2-2:修改表从独立表空间或系统表空间到通用表空间
可以通过如下命令修改表从独立表空间或系统表空间到通用表空间。
ALTER TABLE tbl_name TABLESPACE [=] tablespace_name
例:修改表从独立表空间到通用表空间
mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable_tablespace' \g
+--------------------------------------+------------+
| table_name | space_type |
+--------------------------------------+------------+
| testdb/test_file_pertable_tablespace | Single |
+--------------------------------------+------------+
1 row in set (0.00 sec)mysql> alter table test_file_pertable_tablespace tablespace=test_tbs1;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable_tablespace' \g
+--------------------------------------+------------+
| table_name | space_type |
+--------------------------------------+------------+
| testdb/test_file_pertable_tablespace | General |
+--------------------------------------+------------+
1 row in set (0.00 sec)mysql>
例:修改表从系统表空间到通用表空间
mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | System |
+---------------------------+------------+
1 row in set (0.01 sec)mysql> alter table test_file_pertable tablespace=test_tbs1;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | General |
+---------------------------+------------+
1 row in set (0.00 sec)mysql>
例2-3:修改表从通用表空间或系统表空间到独立表空间
可以通过如下命令修改表从通用表空间或系统表空间到独立表空间。
ALTER TABLE tbl_name TABLESPACE [=] innodb_file_per_table;
例:修改表从通用表空间到独立表空间
mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | General |
+---------------------------+------------+
1 row in set (0.00 sec)mysql> alter table test_file_pertable tablespace=innodb_file_per_table;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | Single |
+---------------------------+------------+
1 row in set (0.01 sec)mysql>
例2-4:修改表从通用表空间或独立表空间到系统表空间
可以通过如下命令修改表从通用表空间或独立表空间到系统表空间。
ALTER TABLE tbl_name TABLESPACE [=] innodb_system;
例:修改表从独立表空间到系统表空间
mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | Single |
+---------------------------+------------+
1 row in set (0.00 sec)mysql>
mysql> alter table test_file_pertable tablespace=innodb_system;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> select-> name as 'table_name',-> space_type-> from-> information_schema.innodb_tables-> where-> name ='testdb/test_file_pertable' \g
+---------------------------+------------+
| table_name | space_type |
+---------------------------+------------+
| testdb/test_file_pertable | System |
+---------------------------+------------+
1 row in set (0.00 sec)
参考
15.6.3.3 General Tablespaces
https://dev.mysql.com/doc/refman/8.0/en/general-tablespaces.html
13.1.21 CREATE TABLESPACE Statement
https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html
Chapter 2 Server Error Message Reference
https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html
Error number: 3121; Symbol: ER_WRONG_FILE_NAME; SQLSTATE: HY000
Message: Incorrect File Name ‘%s’.
相关文章:
MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
文章目录 MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)General tablespaces(通用表空间/一般表空间)通用表空间的功能通用表空间的限制 创建通用表空间(一般表空间)创建语法…...
循环生成对抗网络(CycleGAN)
一、说明 循环生成对抗网络(CycleGAN)是一种训练深度卷积神经网络以执行图像到图像翻译任务的方法。网络使用不成对的数据集学习输入和输出图像之间的映射。 二、基本介绍 CycleGAN 是图像到图像的翻译模型,就像Pix2Pix一样。Pix2Pix模型面临…...
数组--53.最大子数组和/medium
53.最大子数组和 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连…...
centos 编译安装 python 和 openssl
安装环境: centos 7.9 : python 3.10.5 和 openssl 3.0.12 centos 6.10 : python 3.10.5 和 openssl 1.1.1 两个环境都能安装成功,可以正常使用。 安装 openssl 下载地址 下载后解压,进入到解压目录 执行…...
【nodejs】前后端身份认证
前后端身份认证 一、web开发模式 服务器渲染,前后端分离。 不同开发模式下的身份认证: 服务端渲染推荐使用Session认证机制前后端分离推荐使用JWT认证机制 二、session认证机制 1.HTTP协议的无状态性 了解HTTP协议的无状态性是进一步学习Session认…...
数据结构【线性表篇】(三)
数据结构【线性表篇】(三) 文章目录 数据结构【线性表篇】(三)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、双链表二、循环链表三、静态链表 结语 前言 为什么突然想学算法了? > 用较为“官方…...
Python装饰器的专业解释
装饰器,其实是用到了闭包的原理来进行操作的。 单个装饰器: 以下是一个简单的例子: def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result func(*args, **kwargs)p…...
vue3框架笔记
Vue Vue 是一个渐进式的前端开发框架,很容易上手。Vue 目前的版本是 3.x,但是公司中也有很多使用的是 Vue2。Vue3 的 API 可以向下兼容 2,Vue3 中新增了很多新的写法。我们课程主要以 Vue3 为主 官网 我们学习 Vue 需要转变思想࿰…...
pytest --collectonly 收集测试案例
pytest --collectonly 是一条命令行指令,用于在运行 pytest 测试时仅收集测试项而不执行它们。它会显示出所有可用的测试项列表,包括测试模块、测试类和测试函数,但不会执行任何实际的测试代码。 这个命令对于查看项目中的测试结构和确保所有…...
dev express 15.2图表绘制性能问题(dotnet绘图表)
dev express 15.2 绘制曲线 前端代码 <dxc:ChartControl Grid.Row"1"><dxc:XYDiagram2D EnableAxisXNavigation"True"><dxc:LineSeries2D x:Name"series" CrosshairLabelPattern"{}{A} : {V:F2}"/></dxc:XYDi…...
WorkPlus:领先的IM即时通讯软件,打造高效沟通协作新时代
在当今快节奏的商业环境中,高效沟通和协作是企业成功的关键。而IM即时通讯软件作为实现高效沟通的利器,成为了现代企业不可或缺的一部分。作为一款领先的IM即时通讯软件,WorkPlus以其卓越的性能和独特的功能,助力企业打造高效沟通…...
学习SpringCloud微服务
SpringCloud 微服务单体框架微服务框架SpringCloud微服务拆分微服务差分原则拆分商品服务拆分购物车服务拆分用户服务拆分交易服务拆分支付服务服务调用RestTemplate远程调用 微服务拆分总结 服务治理注册中心Nacos注册中心服务注册服务发现 OpenFeign实现远程调用快速入门引入…...
WPF 显示气泡提示框
气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方,为了让用户更直观,快速了解提示信息,使用简洁、好看又方便的气泡提示框显得更加方便,更具人性化。如下面例子:(当用户未输入账号时࿰…...
L1-062:幸运彩票
题目描述 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。 输入格式: 输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行…...
python+vue高校体育器材管理信息系统5us4g
优秀的高校体育馆场地预订系统能够更有效管理体育馆场地预订业务规范,帮助管理者更加有效管理场地的使用,有效提高场地使用效率,可以帮助提高克服人工管理带来的错误等不利因素,所以一个优秀的高校体育馆场地预订系统能够带来很大…...
10 款顶级的免费U盘数据恢复软件(2024 年 更新)
你曾经遇到过U盘无法访问的情况吗?现在我们教你如何恢复数据。 在信息时代,数据丢失往往会造成巨大的困扰。而USB闪存驱动器作为我们常用的数据存储设备,其重要性不言而喻。但是,U盘也可能会出现各种问题,如无法访问、…...
C# json 转匿名对象及C#关键字的处理
调用第三方接口,返回的json字符串,为了方便使用转为C#匿名对象: /// <summary>/// json转为匿名对象/// </summary>/// <typeparam name"T"></typeparam>/// <param name"json"></para…...
关于彻底通过外网,自动批量下载Python的pip依赖包后到企业内网重安装的步骤-比单个包的要方便多了。
关于彻底通过外网,自动批量下载Python包后到企业内网重安装的步骤 前言: 哎,在本人的前面的博客中,分享的方法可能是不通用的。因为在一次实践中发现它不能总是通用且麻烦。所以本次记录分享一个更方便快速的方式。 上期前言&am…...
Oracle T4-4小型机上配置Ldom部署rac
Ldom控制域配置 (两台主机一样,以hydb1为例) roothydb1 # ldm add-vds primary-vds0 primary roothydb1 # ldm add-vcc port-range5000-5100 primary-vcc0 primary roothydb1 # ldm add-vsw net-devigb0 primary-vsw0 primary roothydb1 # ldm add-vsw net-devixgbe…...
【2023Hadoop大数据技术应用期末复习】填空题题型整理
大数据的 4V 特征包含()()()() 答案:大量、多样、高速、价值Hadoop 三大组件包含()()() 答案&…...
劫持 PE 文件:新建节表并插入指定 DLL 文件
PE格式简介 PE(Portable Executable)格式,是微软Win32环境可移植可执行文件(如exe、dll、vxd、sys和vdm等)的标准文件格式。PE格式衍生于早期建立在VAX(R)VMS(R)上的COFF(Common Object File Format)文件格式。 Portable 是指对于不同的Windows版本和不同的CPU类型上…...
HTTP分数排行榜
HTTP分数排行榜 介绍一、创建数据库二、创建PHP脚本三、上传下载分数四、测试 介绍 Unity中向服务器发送用户名和得分,并存入数据库,再讲数据库中的得分按照降序的方式下载到Unity中。 一、创建数据库 首先,我们要在MySQL数据库中建立一个…...
Android 实现 Slots 游戏旋转效果
文章目录 前言一、效果展示二、代码实现1.UI布局2.SlotAdapter2.SlotsActivity 总结 前言 slots游戏: Slots游戏是一种极具流行度的赌博和娱乐形式,通常被称为老虎机或水果机。它们在赌场、线上游戏平台和手机应用中广泛存在。一般这类游戏都使用Unity…...
AI产品经理 - 如何做一款软硬协同AI产品
【背景】从0做一款软硬协同的AI产品,以智能医药保温箱 1.以智能医药保温箱 2.调研定义市场方向 地点:医药、实验室 场景:长宽高/装箱/运输/实验室 3.需求挖掘 4.如何进行软硬件AI产品工作 软硬件产品设计:功能/硬件外观设计、…...
拒绝采样(算法)总结
先说说什么是拒绝采样算法:就类似于数学上的求阴影面积的方法,直接求求不出来,就用大面积 - 小面积 阴影面积的办法。 所谓拒绝 和 采样 :就像是撒豆子计个数,计算概率问题一样,大桶里面套小桶,…...
分布式数据库事务故障恢复的原理与实践
关系数据库中的事务故障恢复并不是一个新问题,自70年代关系数据库诞生之后就一直伴随着数据库技术的发展,并且在分布式数据库的场景下又遇到了一些新的问题。本文将会就事务故障恢复这个问题,分别讲述单机数据库、分布式数据库中遇到的问题和…...
Spark中的数据加载与保存
Apache Spark是一个强大的分布式计算框架,用于处理大规模数据。在Spark中,数据加载与保存是数据处理流程的关键步骤之一。本文将深入探讨Spark中数据加载与保存的基本概念和常见操作,包括加载不同数据源、保存数据到不同格式以及性能优化等方…...
2023-12-20 LeetCode每日一题(判别首字母缩略词)
2023-12-20每日一题 一、题目编号 2828. 判别首字母缩略词二、题目链接 点击跳转到题目位置 三、题目描述 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符…...
C# 事件(Event)
C# 事件(Event) C# 事件(Event)通过事件使用委托声明事件(Event)实例 C# 事件(Event) 事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移…...
2312d,d的sql构建器
原文 项目 该项目在我工作项目中广泛使用,它允许自动处理联接方式动态构建SQL语句. 还会自动直接按表示数据库行结构序化.它在dconf2022在线演讲中介绍了:建模一切. 刚刚添加了对sqlite的支持.该API还不稳定,但仍非常有用.这是按需构建,所以虽然有个计划外表,但满足了我的需要…...
兼职做页面的网站/谷歌排名优化
InnoDB中的多版本并发控制(MVCC) MVCC (Multiversion Concurrency Control),多版本并发控制。 顾名思义, MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一…...
找人做网站需要注意什么问题/百度帐号登录入口
给出如下结构体,要求全部在堆区开辟空间。有多个老师,每个老师有多个学生。 typedef struct {char *name;//老师int stu_num;//学生数char **stu_arr;//学生名字 }TEACHER; 需要注意以下问题: 此问题使用双层循环即可解决。外层循环处理这…...
网站开发合同知识产权/深圳网站seo
charles 校验 验证工具/validate 验证工具Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应。 验证报告在Charles中显示,并显示出与响应源中相应行的警告或错误(双击错误消息中的行号可以切换到源视图)。…...
西宁微网站建设多少钱/360网站安全检测
OkHttp是什么? 简介 OkHttp是一款优秀的HTTP框架,它支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用…...
贵阳培训网站建设/宣传推广方案范文
图片 Jietu20190404-1730282x.jpg介绍 Large jug with four grape-clusters symmetrically painted around the body grapes are a characteristic decorative motif in Theran pottery. 绘有四对象葡萄串的大水罐。 公元前16世纪 Akroteri on Thera 16th cent. BC. 年代&#…...
网站建设属于淘宝哪种类目/电子商务
项目里需要用到扫描二维码,自己实现,不会。 找到了两种解决方案: 通过reqrcode.js,这是一个前端解析二维码内容的js库。如果二维码比较清晰,用这种效果也不错调用微信扫一扫功能,这种效果很好。但是调试接口…...