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

MySQL系列—8.存储结构

目录

1.系统表空间 ibdata

2.通用表空间 .ibd

3.独立表空间

4.Undo 表空间

5.临时表空间

6.Redo Log File


1.系统表空间 ibdata

系统表空间由参数innodb_data_file_path定义路径、初始化大小、自动扩展策略

如: innodb_data_file_path=/dayta/mysql/ibdata1:100M:autoextend

存放:

Change Buffer(insert buffer)

Lock System

Data Dictionary

Foreign key constaint system tables

User data (innodb_file_per_table=0,不使用独立表空间的时候,用户数据会存储共享表空 间中,有可能会存放在系统表空间。)

2.通用表空间 .ibd

类似于Oracle的表空间概念,多个Table放在同一个表空间中。

mysql> create tablespace tbs add datafile 'tbs.ibd';
Query OK, 0 rows affected (0.01 sec)mysql>  select * from information_schema.innodb_tablespaces;
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| SPACE      | NAME             | FLAG  | ROW_FORMAT           | PAGE_SIZE | ZIP_PAGE_SIZE | SPACE_TYPE | FS_BLOCK_SIZE | FILE_SIZE | ALLOCATED_SIZE | AUTOEXTEND_SIZE | SERVER_VERSION | SPACE_VERSION | ENCRYPTION | STATE  |
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| 4294967294 | mysql            | 18432 | Any                  |     16384 |             0 | General    |          4096 |  27262976 |       27262976 |               0 | 8.0.39         |             1 | N          | normal |
| 4294967293 | innodb_temporary |  4096 | Compact or Redundant |     16384 |             0 | System     |          4096 |  12582912 |       12582912 |               0 | 8.0.39         |             1 | N          | normal |
| 4294967279 | innodb_undo_001  |     0 | Undo                 |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.0.39         |             1 | N          | active |
| 4294967278 | innodb_undo_002  |     0 | Undo                 |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.0.39         |             1 | N          | active |
|          1 | sys/sys_config   | 16417 | Dynamic              |     16384 |             0 | Single     |          4096 |    114688 |         114688 |               0 | 8.0.39         |             1 | N          | normal |
|          2 | tbs              | 18432 | Any                  |     16384 |             0 | General    |          4096 |    114688 |         114688 |               0 | 8.0.39         |             1 | N          | normal |
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
6 rows in set (0.00 sec)
mysql> create table t2 (id int) tablespace tbs;
Query OK, 0 rows affected (0.01 sec)
mysql> show create table t2;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------+
| t2    | CREATE TABLE `t2` (`id` int DEFAULT NULL
) /*!50100 TABLESPACE `tbs` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

3.独立表空间

每个table都有各自的.ibd文件

删除大表的一个技巧(释放文件名)

为数据文件建立硬链接,然后删除原数据文件名,待到空闲时间再清理链接的文件数据

innodb_file_per_table

为1时(默认),启用独立表空间

为0时,启用共享表空间,用户数据存储在系统表空间ibdata*文件中,或者自定义的通用表空间general tablespace中。

为1时,启用独立表空间,每个表有各自的.ibd文件

4.Undo 表空间

实例初始化时,默认创建两个Undo表空间,最大支持127个Undo表空间。

innodb_rollback_segments:于定义每个undo表空间中的回滚段rollback segment的 数量,默认是128个

一个回滚段rollback segment默认最大只有128 个,实例初始化后默认2个undo表空间:128*2个undo tbs= 256个并发事务。所以高并发需求 时需要注意增加undo表空间。

全局Undo表空间

mysql> show global variables like '%undo%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| innodb_max_undo_log_size | 1073741824 |
| innodb_undo_directory    | ./         |
| innodb_undo_log_encrypt  | OFF        |
| innodb_undo_log_truncate | ON         |
| innodb_undo_tablespaces  | 2          |
+--------------------------+------------+
5 rows in set (0.00 sec)

查看当前的Undo表空间

mysql> select * from information_schema.innodb_tablespaces where space_type='undo';
+------------+-----------------+------+------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| SPACE      | NAME            | FLAG | ROW_FORMAT | PAGE_SIZE | ZIP_PAGE_SIZE | SPACE_TYPE | FS_BLOCK_SIZE | FILE_SIZE | ALLOCATED_SIZE | AUTOEXTEND_SIZE | SERVER_VERSION | SPACE_VERSION | ENCRYPTION | STATE  |
+------------+-----------------+------+------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| 4294967279 | innodb_undo_001 |    0 | Undo       |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.0.39         |             1 | N          | active |
| 4294967278 | innodb_undo_002 |    0 | Undo       |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.0.39         |             1 | N          | active |
+------------+-----------------+------+------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
2 rows in set (0.01 sec)

查看Undo表空间数据文件

mysql> select file_id,file_type,tablespace_name,file_name,status from files;
+------------+------------+------------------+----------------------+--------+
| FILE_ID    | FILE_TYPE  | TABLESPACE_NAME  | FILE_NAME            | STATUS |
+------------+------------+------------------+----------------------+--------+
| 4294967294 | TABLESPACE | mysql            | ./mysql.ibd          | NORMAL |
|          0 | TABLESPACE | innodb_system    | ./ibdata1            | NORMAL |
| 4294967293 | TEMPORARY  | innodb_temporary | ./ibtmp1             | NORMAL |
| 4294967279 | UNDO LOG   | innodb_undo_001  | ./undo_001           | NORMAL |
| 4294967278 | UNDO LOG   | innodb_undo_002  | ./undo_002           | NORMAL |
|          1 | TABLESPACE | sys/sys_config   | ./sys/sys_config.ibd | NORMAL |
|          2 | TABLESPACE | tbs              | ./tbs.ibd            | NORMAL |
|          3 | TABLESPACE | test/t           | ./test/t.ibd         | NORMAL |
+------------+------------+------------------+----------------------+--------+
8 rows in set (0.00 sec)

8.0.14后,可以在线手动创建新的Undo表空间

create undo tablespace undo_name add datafile 'undo_name.ibu';

删除Undo表空间

--首先设置Undo为inactive
alter undo tablespace undo_name set inactive;--然后再删除
drop undo tablespace undo_name;

自动清理Undo表空间

innodb_undo_log_truncate = 1 时会自动清理undo表空间

超过innodb_max_undo_log_size 时会触发

或者purge线程执行了innodb_purge_rseg_truncate_frequency() 128次

5.临时表空间

innodb_temp_data_file_path:定义路径、大小等,初始值12MB

实例关闭后,临时表文件会被删除,实例启动后,临时表文件(ibtmp1)重新创建

用户自己的临时表放在#innodb_temp/*.ibt,session会话退出后,临时段自动回收。

8.0以前, 有个严重问题,就是ibtmp1,用户执行过程中产生大量临时存在ibtmp1

文件被撑爆后也无法回缩的。

改进后只有innodb内部线程自己生成的临时表才会放在ibtmp1文件里。

用户运行过程中产生的临时表都会放在innodb_temp目录中

innodb_temp_tablespaces_dir:设置会话级用户临时表空间存储路径

会话级临时表空间初始共有10个,会随着用户连接数及创建临时表的情况按需增加,实例重 启后会删除这些文件。每个session最多分配两个临时表空间,一个用于存储用户主动创建的临时表(create temporary table),另一个用于存储用户执行SQL过程中生成的内部(磁盘)临时表,session断开后,会话级用户临时表空间会直接释放,不用再担心撑爆磁盘。

查看会话级临时表空间的使用情况:

select * from information_schema.innodb_session_temp_tablespaces;

查看全局临时表空间的情况:

 select * from files where tablespace_name like '%temp%'\G

创建session级别临时表,通过实验来观察临时表的分配、查看及回收:

mysql> create temporary table k1 like bigints;
Query OK, 0 rows affected (0.04 sec)
mysql> desc k1;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| dtl | varchar(200) | YES | | NULL | NULL |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
mysql> insert into k1 select * from bigints;
Query OK, 2621440 rows affected (25.30 sec)
Records: 2621440 Duplicates: 0 Warnings: 0
--换一个session查询
mysql> select * from information_schema.innodb_temp_table_info;
+----------+--------------+--------+------------+
| TABLE_ID | NAME | N_COLS | SPACE |
+----------+--------------+--------+------------+
| 1089 | #sql4c_19_13 | 5 | 4294501264 |
+----------+--------------+--------+------------+
1 row in set (0.00 sec)
mysql> select * from information_schema.innodb_session_temp_tablespaces;
+----+------------+----------------------------+-----------+----------+-----
| ID | SPACE | PATH | SIZE | STATE | PURPOSE |
+----+------------+----------------------------+-----------+----------+-----
| 13 | 4294501265 | ./#innodb_temp/temp_9.ibt | 98304 | ACTIVE | INTRINSI
| 29 | 4294501263 | ./#innodb_temp/temp_7.ibt | 134217728 | ACTIVE | USER
| 0 | 4294501257 | ./#innodb_temp/temp_1.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501258 | ./#innodb_temp/temp_2.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501259 | ./#innodb_temp/temp_3.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501260 | ./#innodb_temp/temp_4.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501261 | ./#innodb_temp/temp_5.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501262 | ./#innodb_temp/temp_6.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501264 | ./#innodb_temp/temp_8.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501266 | ./#innodb_temp/temp_10.ibt | 81920 | INACTIVE | NONE
+----+------------+----------------------------+-----------+----------+-----
10 rows in set (0.00 sec)
[17:34:49] root@ms85:#innodb_temp # ll -h
total 129M
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_10.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_1.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_2.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_3.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_4.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_5.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_6.ibt
-rw-r----- 1 mysql mysql 128M Jul 7 17:35 temp_7.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 17:31 temp_8.ibt
-rw-r----- 1 mysql mysql 96K Jul 7 17:23 temp_9.ibt
--断开前一个session
mysql> exit;
Bye
--再次查询,发现临时表已经被释放
mysql> select * from information_schema.innodb_temp_table_info;
Empty set (0.00 sec)
mysql> select * from information_schema.innodb_session_temp_tablespaces;
+----+------------+----------------------------+-------+----------+---------
| ID | SPACE | PATH | SIZE | STATE | PURPOSE |
+----+------------+----------------------------+-------+----------+---------
| 12 | 4294501266 | ./#innodb_temp/temp_10.ibt | 81920 | ACTIVE | INTRINSIC
| 13 | 4294501265 | ./#innodb_temp/temp_9.ibt | 98304 | ACTIVE | INTRINSIC
| 0 | 4294501257 | ./#innodb_temp/temp_1.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501258 | ./#innodb_temp/temp_2.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501259 | ./#innodb_temp/temp_3.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501260 | ./#innodb_temp/temp_4.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501261 | ./#innodb_temp/temp_5.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501262 | ./#innodb_temp/temp_6.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501264 | ./#innodb_temp/temp_8.ibt | 81920 | INACTIVE | NONE |
| 0 | 4294501263 | ./#innodb_temp/temp_7.ibt | 81920 | INACTIVE | NONE |
+----+------------+----------------------------+-------+----------+---------
10 rows in set (0.00 sec
[17:36:08] root@ms85:#innodb_temp # ll
total 336K
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_10.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_1.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_2.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_3.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_4.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_5.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 11:39 temp_6.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 17:36 temp_7.ibt
-rw-r----- 1 mysql mysql 80K Jul 7 17:31 temp_8.ibt
-rw-r----- 1 mysql mysql 96K Jul 7 17:23 temp_9.ibt

6.Redo Log File

从 MySQL 8.0.30 开始, innodb_redo_log_capacity系统变量控制 redo log 总的大小。

当 设置 参数 innodb_redo_log_capacity时 ,系统会忽略 innodb_log_files_in_group
innodb_log_file_size。否则,这些设置用于计算 innodb_redo_log_capacity

设置 ( innodb_log_files_in_group* innodb_log_file_size= innodb_redo_log_capacity)

redo 日志位置

redo log 文件存放的位置由参数 innodb_log_group_home_dir控制,如果没有指定具体目录,系统默认会将redo log存储到 data 目录的#innodb_redo目录。innodb_log_group_home_dir指定的文件夹下必须创建 #innodb_redo目录。

在 MySQL 8.0.30  版本中,MySQL会生成32个 redo log 文件,每个文件的大小等于 1/32 * innodb_redo_log_capacity,redo log 有两种:正在使用的和未被使用的,分别使用  #ib_redoNN
#ib_redoNN_tmp,其中NN是重做日志文件编号。

redo信息查看

mysql> select * from performance_schema.innodb_redo_log_files;
+---------+--------------------------+-----------+----------+---------------+---------+----------------+
| FILE_ID | FILE_NAME                | START_LSN | END_LSN  | SIZE_IN_BYTES | IS_FULL | CONSUMER_LEVEL |
+---------+--------------------------+-----------+----------+---------------+---------+----------------+
|       7 | ./#innodb_redo/#ib_redo7 |  22931456 | 26206208 |       3276800 |       0 |              0 |
+---------+--------------------------+-----------+----------+---------------+---------+----------------+
1 row in set (0.00 sec)

日志块(log block)

在 InnoDB 存储引擎中,redo log是以块为单位进行存储的,每个块占 512 字节,这称为redo log block。所以不管是log buffer中还是os buffer中以及redo log file on disk中,都是这样以 512 字节的块存储的。

每个redo log block由 3 部分组成:日志块头、日志块尾和日志主体。

日志块头包含 4 部分:

  • log_block_hdr_no:占 4 字节,表示该日志块在redo log buffer中的位置 ID。

  • log_block_hdr_data_len:占 2 字节,表示该log block中已记录的log大小,写满该log block时为0x200,表示 512 字节。

  • log_block_first_rec_group:占 2 字节,表示该log block中第一个log的开始偏移位置。

  • log_block_checkpoint_no:占 4 字节,表示该log block写入检查点信息的位置。

关于log block块头的第三部分log_block_first_rec_group,因为有时候一个数据页产生的日志量超出了一个日志块,这是需要用多个日志块来记录该页的相关日志。例如,某一数据页产生了 552 字节的日志量,那么需要占用两个日志块,第一个日志块占用 492 字节,第二个日志块需要占用 60 个字节,那么对于第二个日志块来说,它的第一个log的开始位置就是73字节(60+12)。如果该部分的值和log_block_hdr_data_len相等,则说明该log block中没有新开始的日志块,即表示该日志块用来延续前一个日志块。

日志尾只有一个部分:log_block_trl_no,该值和块头的log_block_hdr_no相等。

相关文章:

MySQL系列—8.存储结构

目录 1.系统表空间 ibdata 2.通用表空间 .ibd 3.独立表空间 4.Undo 表空间 5.临时表空间 6.Redo Log File 1.系统表空间 ibdata 系统表空间由参数innodb_data_file_path定义路径、初始化大小、自动扩展策略 如: innodb_data_file_path/dayta/mysql/ibdata1:…...

vue2、vue3生成二维码

Vue2版&#xff1a; 工具&#xff1a;使用 qrcodejs插件来生成二维码 安装&#xff1a;npm install qrcodejs2 qrcodejs官网地址&#xff1a; https://davidshimjs.github.io/qrcodejs/https://davidshimjs.github.io/qrcodejs/ 代码示例&#xff1a; <template><…...

Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题

Hystrix线程隔离 在微服务框架中&#xff0c;可能一个服务需要调用多个微服务&#xff0c;在tomcat中运行时&#xff0c;tomcat只是分配了100个线程&#xff0c;由于多个服务之间调用的时间消耗过长&#xff0c;可能会导致线程耗尽&#xff0c;而在Hystrix中存在线程隔离&…...

网络编程项目(云词典项目)

目录 一、功能要求 服务器 用户客户端 二、演示效果 1.登录、注册功能 2. 查单词功能 3.查看历史纪录功能 三、项目代码 1.头文件 2.服务器 3.用户端 一、功能要求 仿照云词典的原理&#xff0c;实现云词典功能&#xff0c;用户可以查询输入的单词的英文解释&…...

Java Spring Boot 项目中的密码加密与验证开发案例手册

本手册主要针对Java项目中的账号密码加密与验证进行详细的步骤讲解和代码示例。适用于开发登录认证、用户管理等功能的场景。文档包含工具类的创建、数据库配置、服务层和控制器层的集成等常见操作。 1. 常用加密操作 在实现安全的登录功能时&#xff0c;密码加密与验证是不可…...

VueSax-解决Vue3报错问题,并支持typescript

以下为坑点 根据官方提示&#xff0c;本人在vue3typescript的项目中添加了vuesax的组件依赖 根据正常的导入依赖思路编写代码&#xff0c;发现typescript一直报 查询vuesax的目录文件发现存在ts文件&#xff0c;于是乎觉得是自己的问题&#xff0c;就查阅gpt与网上资料&#x…...

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…...

[数据集][目标检测]电动车入梯进电梯电单车入梯检测数据集VOC+YOLO格式7106张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7106 标注数量(xml文件个数)&#xff1a;7106 标注数量(txt文件个数)&#xff1a;7106 标注…...

大数常用API

package API;public class BigNum {//如果普通的long和double的精度不足以满足要求&#xff0c;那么可以使用java.math包中的两个类//BigInteger和BigDecimal//前者实现任意精度的整数运算&#xff0c;后者实现任意精度的浮点数运算//BigInteger add(BigInteger other)//BigInt…...

Gartner发布ASCA自动化安全控制评估创新洞察:三年后40%的综合安全厂商都将提供ASCA功能

复杂的安全控制网络、技能差距和快速变化的攻击技术使维持技术安全控制的最佳配置的问题更加复杂。安全和风险管理领导者可以通过自动化安全控制评估来改善他们的安全状况。 主要发现 技术安全控制配置错误是与安全漏洞相关的长期问题。薄弱的安全默认值、配置漂移、为减少误报…...

使用lspci命令获取加速卡型号

文章目录 前言一、lspci -nn 获取具体厂商及设备ID二、使用步骤三、使用3080Ti再查询一下 前言 新到的实验机器和加速卡&#xff0c;安装好之后发现lspci命令没有显示型号&#xff0c;这里记录下使用 Vendor ID和Device ID 通过网页查询获取加速卡具体型号的过程。 一、lspci …...

php代码实例强制下载文件代码例子

php代码实例强制下载文件代码例子 $filename $_GET[file]; //Get the fileid from the URL // Query the file ID $query sprintf("SELECT * FROM tableName WHERE id %s",mysql_real_escape_string($filename)); $sql mysql_query($query); if(mysql_num_rows…...

Opencv中的直方图(3)直方图比较函数compareHist()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较两个直方图。 函数 cv::compareHist 使用指定的方法比较两个密集或两个稀疏直方图。 该函数返回 d ( H 1 , H 2 ) d(H_1, H_2) d(H1​,H2​…...

压力测试(内存、磁盘、网络、cpu)

压力测试 1. 内存压力测试工具stressmemtester 2. 磁盘压力测试工具fio (Flexible I/O Tester)dd (Data Duplicator) 3. 网络压力测试工具iperf3speedtest-cli 4. CPU压力测试工具stress-ng 为了满足更详细的需求&#xff0c;以下是针对内存、磁盘和网络压力测试工具的更深入介…...

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 原生代码实现动态扩散效果

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 原生代码实现动态扩散效果 核心代码完整代码&#xff1a;在线示例 ArcGIS Maps SDK for JavaScript 从 4.29 开始增加 RenderNode 类&#xff0c;可以添加数据以及操作 FBO&#xff08;ManagedFBO&#xff09;&#…...

Java 设计模式-代理模式

目录 概述 一. 什么是代理模式 1. 举例说明 二. 代理模式作用 1. 保护代理 2. 增强功能 3. 代理交互 4. 远程代理&#xff1a; 三. 代理模式3个角色 四. 静态代理 1. 代码示例&#xff1a; 五. JDK动态代理 1. 代码示例&#xff1a; 六. CGLIB 动态代理 1.代码示…...

CTF靶场之BUUCTF介绍

最后开始关注CTF&#xff0c;我们先了解一下什么CTF:CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式,最后以夺取FLAG为成功。 从网上找了一个免费的靶场——BUUCTF&#xf…...

学会分析问题,画出分析图,解释问题过程,找出规律 ;整数数组分为左右2个部分,左边位奇数右边偶数

// 整数数组左边是奇数右边是偶数.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include<stdio.h> void swap(int& a,int& b) {int tempa;ab;btemp; } int main(int argc, char* argv[]) {int a[7]{1,2,3,4,5,…...

数学基础 -- 线性代数正交多项式之勒让德多项式展开推导

勒让德多项式展开的详细过程 勒让德多项式是一类在区间 [ − 1 , 1 ] [-1, 1] [−1,1] 上正交的多项式&#xff0c;可以用来逼近函数。我们可以将一个函数表示为勒让德多项式的线性组合。以下是如何推导勒让德多项式展开系数 a n a_n an​ 的详细过程。 1. 勒让德展开的基本…...

Redis实战宝典:从主从模式、哨兵模式、集群模式一步步理解Redis集群

目录标题 Redis 集群的三种模式主从复制主从复制概念主从复制原理主从复制优缺点 哨兵集群哨兵概念哨兵功能下线判断主库选举故障转移哨兵模式优缺点 Cluser 集群Redis 集群的数据分片 Redis 集群的三种模式 在生产环境中&#xff0c;我们使用 Redis 通常采用集群模式&#xf…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分&#xff1a;PyQuery 框架介绍 1. PyQuery 是什么&#xff1f; PyQuery 是一个 Python 的 HTML/XML 解析库&#xff0c;它采用了 jQuery 的语法风格&#xff0c;让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...