17.8.1 InnoDB 启动配置

关于 InnoDB 配置的第一个决定涉及数据文件、日志文件、页面大小和内存缓冲区的配置,这些应该在初始化 InnoDB 之前配置。在初始化 InnoDB 之后修改配置可能需要一些复杂的步骤。

本节提供有关在配置文件中指定 InnoDB 设置、查看 InnoDB 初始化信息和重要存储注意事项的信息。

文章目录

  • 在 MySQL 选项文件中指定选项
  • 查看 InnoDB 初始化信息
  • 重要的存储注意事项
  • 系统表空间数据文件配置
  • InnoDB 双写缓冲文件配置
  • 重做日志配置
  • 撤消表空间配置
  • 全局临时表空间配置
  • 会话临时表空间配置
  • 页面大小配置
  • 内存配置


在 MySQL 选项文件中指定选项

由于 MySQL 使用数据文件、日志文件和页面大小设置来初始化 InnoDB, 因此建议在初始化 InnoDB 之前,在 MySQL 启动时读取的选项文件中定义这些设置。通常,InnoDB 在 MySQL server 首次启动时初始化。

您可以将 InnoDB 选项放在服务器启动时读取的任何选项文件的 [ mysqld] 组中。MySQL 选项文件的位置在第 6.2.2.2 节“使用选项文件”中进行了描述。

要确保 mysqld 仅从指定文件(和 mysqld auto.cnf) 读取选项,请在启动服务器时使用 --defaults-file 选项作为命令行上的第一个选项:

mysqld --defaults-file=path_to_option_file

查看 InnoDB 初始化信息

要在启动过程中查看 InnoDB 初始化信息,请从命令提示符启动 mysqld, 该命令提示器将初始化信息打印到控制台。

例如,在 Windows 上,如果 mysqld 位于 C:\Program Files\MySQL\MySQL Server 8.0\bin 中,则按如下方式启动 MySQL 服务器:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --console

在类 Unix 系统上,mysqld 位于 MySQL 安装的 bin 目录中:

$> bin/mysqld --user=mysql &

如果不将服务器输出发送到控制台,请在启动后检查错误日志,以查看启动过程中打印的 InnoDB 初始化信息。

有关使用其他方法启动 MySQL 的信息,请参阅 2.9.5 节“自动启动和停止 MySQL”。

注意
InnoDB 在启动时不会打开所有用户表和关联的数据文件。然而,InnoDB 会检查数据字典中引用的表空间文件是否存在。如果找不到表空间文件,InnoDB 会记录错误并继续启动序列。在为应用 redo 的崩溃恢复期间,可能打开重做日志中引用的表空间文件。

重要的存储注意事项

在继续进行启动配置之前,请查看以下与存储相关的注意事项。

  • 在某些情况下,可以通过将数据和日志文件放在单独的物理磁盘上来提高数据库性能。您还可以将原始磁盘分区(原始设备)用于 InnoDB 数据文件,这可能会加速 I/O。 请参阅 为系统表空间使用裸磁盘分区 。

  • InnoDB 是一个事务安全(符合 ACID) 存储引擎,具有提交、回滚和崩溃恢复功能,以保护用户数据。然而,如果底层操作系统或硬件不能像宣称的那样工作,则它不能这样做。许多操作系统或磁盘子系统可能会延迟或重新排序写入操作以提高性能。在某些操作系统上,应该等待直到文件的所有未写入数据都被刷新为止的 fsync() 系统调用实际上可能会在数据被刷新到稳定存储之前返回。因此,操作系统崩溃或断电可能会破坏最近提交的数据,或者在最坏的情况下,甚至会损坏数据库,因为写入操作已被重新排序。如果数据完整性对您很重要,请在生产中使用任何东西之前执行“断电”测试。在 macOS 上,InnoDB 使用特殊的 fcntl() 文件刷新方法。在 Linux 下,建议禁用写回缓存(Write-back Cache)。

    在 ATA/SATA 磁盘驱动器上,类似 hdparm -W0 /dev/hda 的命令可以用于禁用写回缓存。请注意,某些驱动器或磁盘控制器可能无法禁用写回缓存。

  • 关于保护用户数据的 InnoDB 恢复功能,InnoDB 使用一种文件刷新技术,涉及一种称为 双写缓冲(Doublewrite Buffer) 的结构,默认情况下启用( innodb_doublewrite=ON)。双写缓冲区在意外退出或断电后为恢复增加了安全性,并通过减少对 fsync() 操作的需要,提高了大多数 Unix 类型的性能。如果您关心数据完整性或可能的故障,建议保持启用 innodb_doublewrite 选项。有关双写缓冲区的信息,请参阅第 17.11.1 节,“ InnoDB 磁盘 I/O”。

  • 在将 NFS 与 InnoDB 一起使用之前,请查看 将 NFS 与 MySQL 一起使用 中概述的潜在问题。

系统表空间数据文件配置

innodb_data_file_path 选项定义 InnoDB系统表空间数据文件的名称、大小和属性。如果在初始化 MySQL Server 之前未配置此选项,默认行为是创建单个自动扩展数据文件,略大于 12MB, 名为 ibdata1

mysql> SHOW VARIABLES LIKE 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+-----------------------+------------------------+

完整数据文件规范语法包括文件名、文件大小、自动扩展属性和最大属性:

file_name:file_size[:autoextend[:max:max_file_size]]

通过将 K、M 或 G 附加到大小值,以 KB、MB 或 GB为单位指定文件大小。如果以 KB 为单位指定数据文件大小,则以 1024 的倍数进行指定。否则,千字节值将舍入到最接近的兆字节(MB)边界。文件大小的总和必须至少略大于 12MB 。

可以使用分号分隔的列表指定多个数据文件。例如:

[mysqld]
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

autoextendmax 属性只能用于最后指定的数据文件。

指定 autoextend 属性后,数据文件的大小会根据需要的空间自动增加 64MB。innodb_autoextend_increment 变量控制增量大小。

要指定自动扩展数据文件的最大大小,请在自动扩展属性之后使用 max 属性。仅在约束磁盘使用至关重要的情况下使用 max 属性。以下配置允许 ibdata1 增长到 500MB 的限制:

[mysqld]
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

为第一个系统表空间数据文件强制使用最小文件大小,以确保有足够的空间用于双写缓冲区页面(MySQL 8.0.20 以后双写缓冲改为独立存储了 --译者注)。下表显示了每个 InnoDB 页面大小的最小文件大小。默认 InnoDB 页面大小为 1638416KB)。

页大小 (innodb_page_size)最小文件大小
16384 (16KB) or less3MB
32768 (32KB)6MB
65536 (64KB)12MB

如果磁盘已满,则可以在另一个磁盘上添加数据文件。有关说明,请参见 调整系统表空间的大小 。

单个文件的大小限制由操作系统确定。在支持大文件的操作系统上,可以将文件大小设置为大于 4GB 。您还可以将裸磁盘分区用作数据文件。

InnoDB 不知道文件系统的最大文件大小,因此在最大文件大小为较小值(如 2GB)的文件系统上要小心。

默认情况下,在数据目录(datadir)中创建系统表空间文件。要指定其他位置,请使用innodb_data_home_dir 选项。例如,要在名为 myibdata 的目录中创建系统表空间数据文件,请使用以下配置:

[mysqld]
innodb_data_home_dir = /myibdata/
innodb_data_file_path=ibdata1:50M:autoextend

innodb_data_home_dir 指定值时需要以斜杠结尾。InnoDB不会创建目录,因此在启动服务器之前,请确保指定的目录存在。此外,请确保 MySQL server 具有在目录中创建文件的适当访问权限。

InnoDB 通过将 innodb_data_home_dir 的值文本连接到数据文件名,形成每个数据文件的目录路径。如果未定义 innodb_data_home_dir, 则默认值为“./”,即数据目录。( MySQL Server 在开始执行时将其当前工作目录更改为数据目录。)

或者,您可以为系统表空间数据文件指定绝对路径。以下配置相当于前面的配置:

[mysqld]
innodb_data_file_path=/myibdata/ibdata1:50M:autoextend

innodb_data_file_path 指定绝对路径时,该设置不会与 innodb_data_home_dir 设置串联。系统表空间文件是在指定的绝对路径中创建的。启动服务器之前,指定的目录必须存在。

InnoDB 双写缓冲文件配置

从 MySQL 8.0.20 开始,双写缓冲区存储区域驻留在双写文件中,这为双写页面的存储位置提供了灵活性。在以前的版本中,双写缓冲区存储区域驻留在系统表空间中。innodb_doublewrite_dir 变量定义 InnoDB 在启动时创建双写文件的目录。如果未指定目录,则在 innodb_data_home_dir 目录中创建双写文件,如果未指定,则默认为数据目录。

要在 innodb_data_home_dir 目录以外的位置创建双写文件,请配置 innodb_doublewrite_dir 变量。例如:

innodb_doublewrite_dir=/path/to/doublewrite_directory

其他双写缓冲区变量允许定义双写文件的数量、每个线程的页数和双写批处理大小。有关双写缓冲器配置的更多信息,请参阅 第 17.6.4 节“双写缓冲器” 。

重做日志配置

从 MySQL 8.0.30 开始,重做日志文件所占用的磁盘空间量由 innodb_redo_log_capacity 变量控制,该变量可以在启动或运行时设置;例如,要在选项文件中将变量设置为 8GB,请添加以下条目:

[mysqld]
innodb_redo_log_capacity = 8589934592

有关在运行时配置重做日志容量的信息,请参阅配置重做日志能力( MySQL 8.0.30 或更高版本)。

innodb_redo_log_capacity 变量取代了不推荐使用的 innodb_log_file_sizeinnodb_log_files_in_group 变量。当定义了 innodb_redo_log_capacity 设置时,innodb_log_file_sizeinnodb_log_files_in_group 设置被忽略;否则,这些设置将用于计算 innodb_redo_log_capacity 设置( innodb_log_files_in_group * innodb_log_file_size = innodb_redo_log_capacity)。 如果没有设置这些变量,则 innodb_redo_log_capacity 将设置为默认值,即 104857600 字节( 100MB)。 最大设置为 128GB

在 MySQL 8.0.30 中,InnoDB 尝试维护 32 个重做日志文件,每个文件等于 1/32 * innodb_redo_log_capacity。 重做日志文件位于数据目录中的 #innodb_redo 目录中,除非 innodb_log_group_home_dir 变量指定了不同的目录。如果定义了 innodb_log_group_home_dir, 则重做日志文件位于该目录中的 #innodb_redo 目录中。有关更多信息,请参阅 第 17.6.5 节“重做日志” 。

在 MySQL 8.0.30 之前,InnoDB 默认在数据目录中创建两个 5MB 的 redo 日志文件,分别命名为 ib_logfile0ib_logfile1。 在初始化 MySQL Server 实例时,可以通过配置 innodb_log_files_in_groupinnodb_log_file_size 变量来定义不同数量的重做日志文件和不同的重做日志大小。

  • innodb_log_files_in_group 定义日志组中日志文件的数量。默认值和建议值为 2
  • innodb_log_file_size 定义日志组中每个日志文件的大小(以字节为单位)。日志文件的总大小( innodb_log_files_in_group * innodb_log_file_size) 不能超过最大值,略小于 512GB 。 例如,一对 255 GB 的日志文件接近限制,但没有超过限制。默认日志文件大小为 48MB。 通常,日志文件的总大小应该足够大,以便服务器能够平滑工作负载活动的波峰和波谷,这通常意味着有足够的重做日志空间来处理一个小时以上的写入活动。更大的日志文件大小意味着缓冲池中的检查点刷新活动更少,从而减少了磁盘 I/O。 有关更多信息,请参阅 第 10.5.4 节“优化 InnoDB 重做日志记录” 。

innodb_log_group_home_dir 定义了 InnoDB日志文件的目录路径。您可以使用此选项将 InnoDB 重做日志文件放置在与 InnoDB 数据文件不同的物理存储位置,以避免潜在的 I/O 资源冲突(与 《高性能 MySQL 第三版》建议的相反);例如:

[mysqld]
innodb_log_group_home_dir = /dr3/iblogs

笔记
InnoDB 不创建目录,因此在启动服务器之前,请确保日志目录存在。使用 Unix 或 DOS mkdir 命令创建任何必要的目录。
确保 MySQL 服务器具有在日志目录中创建文件的适当访问权限。进一步说,服务器必须对需要创建文件的任何目录具有访问权限。

撤消表空间配置

默认情况下,撤消日志位于初始化 MySQL 实例时创建的两个撤消表空间中。
innodb_undo_directory 变量定义了 InnoDB 创建默认 undo 表空间的路径。如果该变量未定义,则在数据目录中创建默认的撤消表空间。innodb_undo_directory 变量不是动态的。配置它需要重新启动服务器。

撤消日志的 I/O 模式使撤消表空间成为 SSD 存储的良好候选者。

有关配置其他撤消表空间的信息,请参阅 第 17.6.3.4 节“撤消表空间” 。

全局临时表空间配置

全局临时表空间存储对用户创建的临时表所做更改的回滚段。

默认情况下,innodb_data_home_dir 目录中名为 ibtmp1 的单个自动扩展全局临时表空间数据文件。初始文件大小略大于 12MB

innodb_temp_data_file_path 选项指定全局临时表空间数据文件的路径、文件名和文件大小。文件大小以 KB、MB 或 GB 为单位,在大小值后附加 K、M 或 G。 文件大小或组合文件大小必须略大于 12MB

要为全局临时表空间数据文件指定其他位置,请在启动时配置 innodb_temp_data_file_path 选项。

会话临时表空间配置

在 MySQL 8.0.15 及更早版本中,当 InnoDB 被配置为内部临时表的磁盘存储引擎( internal_tmp_disk_storage_engine=InnoDB) 时,会话临时表空间存储用户创建的临时表和优化器创建的内部临时表。从 MySQL 8.0.16 开始,InnoDB 一直被用作内部临时表的磁盘存储引擎。

innodb_temp_tablespaces_dir 变量定义了 InnoDB 创建会话临时表空间的位置。默认位置是数据目录中的 #innodb_temp 目录。

要为会话临时表空间指定其他位置,请在启动时配置 innodb_temp_tablespaces_dir 变量。允许使用完全限定的路径或相对于数据目录的路径。

页面大小配置

innodb_page_size 选项指定 MySQL 实例中所有 InnoDB 表空间的页面大小。该值是在创建实例时设置的,之后保持不变。有效值为 64KB32KB16KB( 默认值)、 8KB4KB。 或者,您可以以字节( 65536, 32768, 16384, 8192, 4096) 为单位指定页面大小。

默认的 16KB 页面大小适用于各种工作负载,尤其是涉及表扫描的查询和涉及批量更新的 DML 操作。对于涉及许多小写入的 OLTP 工作负载,较小的页面大小可能更有效,当单个页面包含许多行时,争用可能是一个问题。对于通常使用小块大小的 SSD 存储设备(早期 4K 块大小的 SSD,现在诸如 16K 块大小的 SSD 已经很普遍了 --译者注,手册中其他位置也有类似说法),较小的页面也可以更高效。保持 InnoDB 页面大小接近存储设备块大小可以最大限度地减少重写到磁盘的未更改数据量。

重要提示
innodb_page_size 只能在初始化数据目录时设置。有关详细信息,请参阅此变量的描述。

内存配置

MySQL 将内存分配给各种缓存和缓冲区,以提高数据库操作的性能。在为 InnoDB 分配内存时,请始终考虑操作系统所需的内存、分配给其他应用程序的内存以及分配给其他 MySQL 缓冲区和缓存的内存。例如,如果使用 MyISAM 表,请考虑为键缓冲区分配的内存量( key_buffer_size)。 有关 MySQL 缓冲区和缓存的概述,请参阅 第 10.12.3.1 节“ MySQL 如何使用内存” 。

InnoDB 特有的缓冲区使用以下参数进行配置:

  • innodb_buffer_pool_size 定义缓冲池的大小,缓冲池是为 InnoDB 表、索引和其他辅助缓冲保存缓存数据的内存区域。缓冲池的大小对系统性能很重要,通常建议将 innodb_buffer_pool_size 配置为系统内存的 50% 到 75%。 默认缓冲池大小为 128MB。 有关其他指导,请参阅第 10.12.3.1 节“ MySQL 如何使用内存”。有关如何配置 InnoDB 缓冲池大小的信息,请参阅第 17.8.3.1 节“配置 InnoDB 缓冲器池大小”。缓冲池大小可以在启动时配置,也可以动态配置。

  • 在具有大量内存的系统上,可以通过将缓冲池划分为多个缓冲池实例来提高并发性。缓冲池实例的数量由 innodb_buffer_pool_instances 选项控制。默认情况下,InnoDB 创建一个缓冲池实例。可以在启动时配置缓冲池实例的数量。有关更多信息,请参阅第 17.8.3.2 节“配置多个缓冲池实例”。

  • innodb_log_buffer_size 定义了 InnoDB 用来写入磁盘上日志文件的缓冲区的大小。默认大小为 16MB。 大的日志缓冲区使大型事务能够运行,而无需在事务提交之前将日志写入磁盘。如果有更新、插入或删除多行的事务,可以考虑增加日志缓冲区的大小以节省磁盘 I/O 。 可以在启动时配置 innodb_log_buffer_size。 有关信息,请参阅第 10.5.4 节“优化 InnoDB 重做日志记录”。

警告
在 32 位 GNU/Linux x86 上,如果内存使用率设置过高,glibc 可能会允许进程堆(process heep)增长到溢出线程堆栈,从而导致服务器故障。如果为全局和每线程(per-thread)缓冲区和缓存分配给 mysqld 进程的内存接近或超过 2GB, 则存在风险。
可以使用类似于以下计算 MySQL 全局和每个线程内存分配的公式来估计 MySQL 的内存使用情况。您可能需要修改公式,以考虑 MySQL 版本和配置中的缓冲区和缓存。有关 MySQL 缓冲区和缓存的概述,请参阅第 10.12.3.1 节“ MySQL 如何使用内存”。

innodb_buffer_pool_size
+ key_buffer_size
+ max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)
+ max_connections*2MB

每个线程使用一个堆栈(通常为 2MB,但在 Oracle 公司提供的 MySQL 二进制文件中只有 256KB),在最坏的情况下,还使用 sort_buffer_size + read_buffer_size 额外的内存。

在 Linux 上,如果内核支持大页面,InnoDB 可以使用大页面为其缓冲池分配内存。请参阅第 10.12.3.3 节“启用大页面支持”。

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

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

相关文章

数据结构 之 链表LinkedList

目录 1. ArrayList的缺陷: 2. 链表: 2.1 链表的概念及结构: 3. 链表的使用和模拟实现: 3.1 构造方法: 3.2 模拟实现: 4. 源码分享: 在我学习顺序表之后,我就立马开始了链表的学…

JavaScript:ES至今发展史简说

ECMAScript(简称ES)是JavaScript的标准,它的发展史经历了多个版本的迭代,以下是主要里程碑: ES1 (1997年6月):首个正式发布的ECMAScript标准,基于当时的JavaScript(由Netscape公司开…

鸿蒙开发:从入门到精通的全方位学习指南

随着华为鸿蒙HarmonyOS生态系统的迅速扩展,越来越多的开发者渴望深入了解并掌握这一前沿技术。本文旨在为鸿蒙开发新手提供一份详尽且实用的学习教程,助您从零开始,逐步迈向鸿蒙开发的巅峰。 一、鸿蒙开发环境搭建 DevEco Studio安装&#x…

非接触型红外线(IR)温度传感器 为AI NB打造更舒适工作环境

生成式AI掀起全球热潮,各大计算机厂纷纷推出AI NB/PC新品,不过AI新机也同时面临的电源相关热处理的难题,众智光电科技于今日(19号)提出最佳创新解决方案,以非接触型红外线(IR)温度感测芯片突破NB应用,能让使用者有全新体验,打造更舒适的工作环境。 在现今科技迅速发展的时代,高…

Linux报错排查-安装PHP的remi库报错

Linux运维工具-ywtool 目录 一.BC-Linux系统1.1 报错提示1.2 解决 二.CentOS/CentOS Steam系统2.1 报错提示2.2 解决 一.BC-Linux系统 测试系统用的是:BigCloud Enterprise Linux release 8.2 1.1 报错提示 [rootecs-11973640 ~/php]# yum install -y /usr/local/ywtools/r…

力扣--深度优先算法/回溯算法90.子集Ⅱ

思路分析&#xff1a; 成员变量&#xff1a; result: 用于存储最终的子集结果。path: 用于存储当前正在构建的子集。 DFS函数&#xff1a; dfs(vector<int>& nums, int start): 递归地生成子集。 从给定的start索引开始遍历数组。如果当前元素与前一个元素相同&#…

spring boot 使用 webservice

spring boot 使用 webservice 使用 java 自带的 jax-ws 依赖 如果是jdk1.8,不需要引入任何依赖&#xff0c;如果大于1.8 <dependency><groupId>javax.jws</groupId><artifactId>javax.jws-api</artifactId><version>1.1</version&g…

前端的数据标记协议

文章目录 数据标记协议是什么数据标记协议的作用常见的数据标记协议Open Graph protocol 开放图谱协议基本元数据协议可选元数据结构化属性 —— 元数据的属性多个相同的元数据标签类型元数据的使用方法全局类型使用自定义类型使用对象类型使用歌曲对象类型视频对象类型文章对象…

实现复制导入excel数据与前端导出excel

import {utils, write } from xlsx import Papa from papaparse// 获取合并头部的数据 level: 头部分有几行 function mergeHeader(worksheet, cellList, level = 3) {// 并获取 列名const colName = []for (const key of Object.keys(worksheet)) {// 根据第一行的数据if (key…

webgl instance 绘制

webgl instance 绘制 效果: key1: 创建实例缓存 function createMesh() {for (let i 0; i < NUM_CUBE; i) {const angle i * 2 * Math.PI / NUM_CUBE;const x Math.sin(angle) * RADIUS;const y 0;const z Math.cos(angle) * RADIUS;cubes[i] {scale: new THREE.V…

Rust 使 Python 函数速度提高 5000%

大家应该都听说过&#xff0c;Rust 因其卓越的性能和安全性&#xff0c;正被越来越多的科技巨头采用&#xff0c;推荐开发者使用Rust来构建关键软件。 今天&#xff0c;来深入学习一下&#xff0c;如何利用 Rust 来大幅提升你的 Python代码性能&#xff01; 寻找第N个质数&…

Node.js作用

Node.js可以开发应用 开发服务器应用 开发工具类应用 开发桌面端应用

mysql 在ubantu系统安装、命令大全以及指令没反应问题

安装 docker search mysqldocker pull mysqldocker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 mysqldocker exec -it mysql-test bashmysql --versionmysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)mysql -u root -p mys…

Linux查看磁盘命令df-h详解

df -h 是一个常用的 Linux 命令&#xff0c;用于查看文件系统的磁盘使用情况并以易于阅读的方式显示。以下是 df -h 命令的详细解释&#xff1a; -h&#xff1a;以人类可读的格式显示磁盘空间大小。例如&#xff0c;使用 GB、MB、KB 等单位代替字节。 执行 df -h 命令后&…

【webrtc】m122:PacingController 源码阅读

PacingController 关系与BitrateProber 关系更为密切PacingController 内置BitrateProber G:\CDN\signalapp_webrtc\modules\pacing\pacing_controller.hPacingControllerBitrateProber prober_;PacingController 关系与BitrateProber 关系更为密切,在整个系统中的地位也更重要…

阿里云2核4G服务器ECS规格清单、CPU性能详解和租用价格表

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

QT UI设计

在QT中添加VTK 在main函数中初始化 //VTK的初始化语句 #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL); VTK_MODU…

C++关于socket中收发数据不完整问题

1、socket缓冲区 每一个socket在被创建之后&#xff0c;系统都会给它分配两个缓冲区&#xff0c;即输入缓冲区和输出缓冲区。 &#xff08;1&#xff09;send函数并不是直接将数据传输到网络中&#xff0c;而是负责将数据写入输出缓冲区&#xff0c;数据从输出缓冲区发送到目标…

【电路笔记】-晶体管作为开关

晶体管作为开关 文章目录 晶体管作为开关1、概述2、截止区域3、饱和区域4、示例5、晶体管开关类型及应用5.1 数字逻辑晶体管开关5.2 PNP晶体管开关5.3 达林顿晶体管开关6、总结1、概述 晶体管开关可用于通过使用处于饱和或截止状态的晶体管来打开或关闭低压直流设备(例如 LED…

python 蓝桥杯 之 字符串

文章目录 题目一find(str,start,end) 函数 题目一 find(str,start,end) 函数 在Python中&#xff0c;find()函数用于在字符串中查找子字符串&#xff0c;并返回第一次出现的子字符串的索引。如果找不到子字符串&#xff0c;则返回-1。find()函数的语法如下&#xff1a; str.f…