MySQL数据库---笔记5

news2024/12/25 23:55:09

MySQL数据库---笔记5

  • 一、锁
    • 1.1、介绍
    • 1.2、全局锁
      • 1.2.1、全局锁介绍
      • 1.2.2、一致性数据备份
    • 1.3、表级锁
      • 1.3.1、表锁
      • 1.3.2、元数据锁(meta data lock , MDL)
      • 1.3.3、意向锁
    • 1.4、行级锁
      • 1.4.1、介绍
      • 1.4.2、行锁
      • 1.4.3、间隙锁/临建锁
  • 二、InnoDB引擎
    • 2.1、逻辑存储结构
    • 2.2、架构
      • 2.2.1、内存架构
      • 2.2.2、磁盘结构
      • 2.2.3、后台线程
    • 2.3、事务原理
      • 2.3.1、概述
      • 2.3.2、redo log
      • 2.3.3、undo log
    • 2.4、MVCC
      • 2.4.1、基本概念
      • 2.4.2、隐式字段
      • 2.4.3、undo log日志
      • 2.4.4、readView
      • 2.4.5、原理分析(RC级别)
      • 2.4.6、原理分析(RR级别)
  • 三、MySQL管理
    • 3.1、系统数据库介绍
    • 3.2、常用工具
      • 3.2.1、mysql
      • 3.2.2、mysqladmin
      • 3.2.3、mysqlbinlog
      • 3.2.4、mysqlshow
      • 3.2.5、mysqldump
      • 3.2.6、mysqlimport/source

一、锁

1.1、介绍

  • 概述

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

  • 分类
    MySQL中的锁,按照锁的粒度分,分为以下三类:
    1. 全局锁: 锁定数据库中的所有表。
    2. 表级锁: 每次操作锁住整张表。
    3. 行级锁: 每次操作锁住对应的行数据。

1.2、全局锁

1.2.1、全局锁介绍

  • 介绍

全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。

其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。

在这里插入图片描述
在这里插入图片描述

  • 加入了全局锁之后,只能读,不能修改数据

  • 加全局锁

    flush tables with read lock;
    
  • 备份数据

    mysqldump -h指定主机地址 -uroot -p密码 需要备份的数据库 > 需要备份到的SQL文件;
    
  • 解锁

    unlock tables;
    

1.2.2、一致性数据备份

  • 特点

数据库中加全局锁,是一个比较重的操作,存在以下问题:

  1. 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。
  2. 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟。

在InnoDB引擎中,我们可以在备份时加上参数--single-transaction参数来完成不加锁的一致性数据备份。

mysqldump --single-transaction -uroot-p密码 需要备份的数据库 > 需要备份到的SQL文件;

1.3、表级锁

表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。

对于表级锁,主要分为以下三类:

  1. 表锁
  2. 元数据锁( meta data lock,MDL)
  3. 意向锁

1.3.1、表锁

对于表锁,分为两类:

  1. 表共享读锁( read lock )
  2. 表独占写锁( write lock )

语法:

  1. 加锁:lock tables 表名... read/write。
  2. 释放锁:unlock tables/ 客户端断开连接。
  • 读锁
    在这里插入图片描述

  • 写锁在这里插入图片描述
    读锁不会阻塞其他客户端的读,但是会阻塞写。写锁既会阻塞其他客户端的读,又会阻塞其他客户端的写。

1.3.2、元数据锁(meta data lock , MDL)

MDL加锁过程是系统自动控制,无需显式使用,在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。为了避免DML与DDL冲突,保证读写的正确性。

在MySQL5.5中引入了MDL,当对一张表进行增删改查的时候,加MDL读锁(共享);当对表结构进行变更操作的时候,加MDL写锁(排他)。

对应SQL锁类型说明
lock tables xxx read / writeSHARED_READ_ONLY / SHARED_NO_READ_WRITE
select 、select … lock in share modeSHARED_READ与SHARED_READ、SHARED_WRITE兼容,与EXCLUSIVE互斥
insert 、update、delete、select … for updateSHARED_WRITE与SHARED_READ、SHARED_WRITE兼容,与EXCLUSIVE互斥
alter table …EXCLUSIVE与其他的MDL都互斥

查看元数据锁:

select object type,object_ schema,object_ name,lock_type,lock_duration from performance schema.metadata_locks;

1.3.3、意向锁

  1. 意向共享锁(IS):由语句select...lock in share mode 添加
    表锁共享锁(read)兼容,与表锁排它锁(write)互斥
  2. 意向排他锁(IX):由insert、 update、delete.select ... for update添加。
    表锁共享锁(read)及排它锁(write)都互斥意向锁之间不会互斥
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

1.4、行级锁

1.4.1、介绍

行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。

InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级锁,主要分为以下三类:

  1. 行锁(Record Lock)︰锁定单个行记录的锁,防止其他事务对此行进行update和delete。在RC、RR隔离级别下都支持。
    在这里插入图片描述
  2. 间隙锁(Gap Lock)∶锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行insert,产生幻读。在RRA隔离级别下都支持。
    在这里插入图片描述
  3. 临键锁(Next-Key Lock)∶行锁和间隙锁组合,同时锁住数据,并锁住数据前面的间隙Gap。在RR隔离级别下支持。
    在这里插入图片描述

1.4.2、行锁

lnnoDB实现了以下两种类型的行锁:

  1. 共享锁(S)︰允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。
  2. 排他锁(X)∶允许获取排他锁的事务更新数据,阻止其他事务获得相同数据集的共享锁和排他锁。
S(共享锁)X(排他锁)
S(共享锁)兼容冲突
X(排他锁)冲突冲突
SQL行锁类型说明
INSERT …排他锁自动加锁
UPDATE…排他锁自动加锁
DELETE …排他锁自动加锁
SELECT(正常)不加任何锁
SELECT …LOCK IN SHARE MODE共享锁需要手动在SELECT之后加LOCK IN SHARE MODE
SELECT … FOR UPDATE排他锁需要手动在SELECT之后加FOR UPDATE

默认情况下,InnoDB在REPEATABLE READ事务隔离级别运行,InnoDB使用next-key锁进行搜索和索引扫描,以防止幻读。

  1. 针对唯一索引进行检索时,对已存在的记录进行等值匹配时,将会自动优化为行锁。
  2. InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。

可以通过以下SQL,查看意向锁及行锁的加锁情况:

select object_schema,object_name,index_name,ock_type.lock mode,lock data from performance_schema.data_locks;

1.4.3、间隙锁/临建锁

默认情况下,InnoDB在 REPEATABLE READ事务隔离级别运行,InnoDB使用next-key锁进行搜索和索引扫描,以防止幻读。

  1. 索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁。
  2. 索引上的等值查询(普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock退化为间隙锁。
  3. 索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止。

注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。

在这里插入图片描述

二、InnoDB引擎

2.1、逻辑存储结构

在这里插入图片描述

2.2、架构

MySQL5.5版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。下面是/nnoDB架构图,左侧为内存结构,右侧为磁盘结构。

在这里插入图片描述

2.2.1、内存架构

  • Buffer Pool 缓冲池

在这里插入图片描述

  • Change Buffer 更改缓冲区

在这里插入图片描述

  • 自适应Hash

在这里插入图片描述

  • 日志缓冲区

在这里插入图片描述

2.2.2、磁盘结构

  • 系统表空间 独立表空间

在这里插入图片描述

  • 通用表空间 撤销表空间 临时表空间

在这里插入图片描述

  • 双写缓冲区 重做日志

在这里插入图片描述

2.2.3、后台线程

在这里插入图片描述

  1. Master Thread

核心后台线程,负责调度其他线程,还负责将缓冲池中的数据异步刷新到磁盘中,保持数据的一致性,还包括脏页的刷新、合并插入缓存、undo页的回收。

  1. IO Thread

在InnoDB存储引擎中大量使用了AIO来处理O请求,这样可以极大地提高数据库的性能,而IOThread主要负责这些lO请求的回调。

线程类型默认个数职责
Read thread4负责读操作
Write thread4负责写操作
Log thread1负责将日志缓冲区刷新到磁盘
Insert buffer thread1负责将写缓冲区内容刷新到磁盘
  1. Purge Thread

主要用于回收事务已经提交了的undo log,在事务提交之后,undo log可能不用了,就用它来回收。

  1. Page Cleaner Thread

协助Master Thread 刷新脏页到磁盘的线程,它可以减轻Master Thread的工作压力,减少阻塞。

2.3、事务原理

2.3.1、概述

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

特性:

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(lsolation)∶数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

在这里插入图片描述

2.3.2、redo log

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性

该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file) ,前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。

在这里插入图片描述

2.3.3、undo log

回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚和MVCC(多版本并发控制)。
undo logredo log记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。

Undo log销毁: undo log在事务执行时产生,事务提交时,并不会立即删除undo log,因为这些日志可能还用于MVCC。

Undo log存储: undo log采用段的方式进行管理和记录,存放在前面介绍的rollback segment 回滚段中,内部包含1024个undo logsegment。

2.4、MVCC

2.4.1、基本概念

  • 当前读

读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select...lock in share mode(共享锁), select ... for updateupdateinsertdelete(排他锁)都是一种当前读。

  • 快照读

简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。

  • Read Committed:每次select,都生成一个快照读。

  • Repeatable Read:开启事务后第一个select语句才是快照读的地方。

  • Serializable:快照读会退化为当前读。

  • MVCC

全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MysQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现,还需要依赖于数据库记录中的三个隐式字段undo log日志readView

2.4.2、隐式字段

  • 记录中的隐式字段

在这里插入图片描述

隐藏字段含义
DB_TRX_ID最近修改事务ID,记录插入这条记录或最后一次修改该记录的事务ID。
DB_ROLL_PTR回滚指针,指向这条记录的上一个版本,用于配合undo log,指向上一个版本。
DB_ROW_ID隐藏主键,如果表结构没有指定主键,将会生成该隐藏字段。

2.4.3、undo log日志

回滚日志,在insert update.delete的时候产生的便于数据回滚的日志。

当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。

而update、delete的时候,产生的undo log日志不仅在回滚时需要,在快照读时也需要,不会立即被删除。

  • undo log 版本链

在这里插入图片描述
不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成一条记录版本链表,链表的头部是最新的旧记录,链表尾部是最早的旧记录。

2.4.4、readView

ReadView(读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录并维护系统当前活跃的事务(未提交的) id。
ReadView中包含了四个核心字段:

字段含义
m_ids当前活跃的事务ID集合
min_trx_id最小活跃事务ID
max_trx_id预分配事务ID,当前最大事务ID+1(因为事务ID是自增的)
creator_trx_idReadView创建者的事务ID

在这里插入图片描述

不同的隔离级别,生成ReadView的时机体不同:

  • READ COMMITTED∶在事务中每一次执行快照读时生成ReadView。
  • REPEATABLE READ:仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。

2.4.5、原理分析(RC级别)

RC隔离级别下,在事务中每一次执行快照读时生成ReadView。
在这里插入图片描述

2.4.6、原理分析(RR级别)

  • RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、MySQL管理

3.1、系统数据库介绍

Mysql数据库安装完成后,自带了一下四个数据库,具体作用如下:

数据库含义
mysql存储MySQL服务器正常运行所需要的各种信息(时区、主从、用户、权限等)
information_schema提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等
performance_schema为MySQL服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数
sys包含了一系列方便DBA和开发人员利用performance_schema性能数据库进行性能调优和诊断的视图

3.2、常用工具

3.2.1、mysql

该mysql不是指mysql服务,而是指mysql的客户端工具。

语法:
	mysql [options] [database]
选项:
	-U, --user=name 		#指定用户名
	-p,--password[=name]    #指定密码
	-h, --host=name			#指定服务器IP或域名
	-P, --port=port		    #指定连接端口
	-e,--execute=name		#执行SQL语句并退出

-e选项可以在Mysql客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种方式尤其方便。

示例:
	mysql-uroot -p123456 db01 -e "select * from stu";

3.2.2、mysqladmin

mysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态
创建并删除数据库等。

指令

mysqladmin --help

在这里插入图片描述

3.2.3、mysqlbinlog

由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog日志管理工具。

语法:
	mysqlbinlog [options] log-files1 log-files2 ...
选项:
	-d, --database=name			指定数据库名称,只列出指定的数据库相关操作。
	-O, --offset=#				忽略掉日志中的前n行命令。
	-r, --result-file=name		将输出的文本格式日志输出到指定文件。
	-s, --short-form			显示简单格式,省略掉一些信息。
	--start-datatime=date1 --stop-datetime=date2	指定日期间隔内的所有日志。
	--start-position=pos1 --stop-position=pos2		指定位置间隔内的所有日志。

3.2.4、mysqlshow

mysqlshow客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。

语法:
	mysqlshow [options] [db_name [table_name [col_name]
选项:
	--count		显示数据库及表的统计信息(数据库,表均可以不指定)
	-i			显示指定数据库或者指定表的状态信息
示例:
	#查询每个数据库的表的数量及表中记录的数量
	mysqlshow-uroot-p2143 --count
	
	#查询test库中每个表中的字段书,及行数
	mysqlshow-uroot-p2143 test --count
	
	#!查询test库中book表的详细情况
	mysqlshow-uroot-p2143 test book --count

3.2.5、mysqldump

mysqldump客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,及插入表的SQL语句。

语法:
	mysqldump [options] db_name [tables]
	mysqldump [options] --database/-B db1 [db2 db3..]
	mysqldump [options] --all-databases/-A
连接选项:
	-u, --USer=name				指定用户名
	-p,--password[=name]		指定密码
	-h, --host=name				指定服务器ip或域名
	-P, --port=#				指定连接端口
输出选项:
	--add-drop-database			在每个数据库创建语句前加上drop database语句
	--add-drop-table			在每个表创建语句前加上 drop table语句,默认开启;不开启(--skip-add-drop-table)
	-n, --no-create-db			不包含数据库的创建语句
	-t, --no-create-info		不包含数据表的创建语句
	-d --no-data				不包含数据
	-T, --tab=name				自动生成两个文件:一个.sql文件,创建表结构的语句;一个.txt文件,数据文件
  • 使用-T指令需要生成到其信任的路径下

在这里插入图片描述

3.2.6、mysqlimport/source

mysqlimport是客户端数据导入工具,用来导入mysqldump加-T参数后导出的文本文件。

  • 需要在其信任的路径下进行导入
语法:
	mysqlimport [options] db_name textfile1 [textfile2...]
示例:
	mysqlimport-uroot-p2143 test /tmp/city.bxt

如果需要导入sql文件,可以使用mysql中的source指令:

语法:
	source /root/xooox.sql

在这里插入图片描述

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

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

相关文章

vue和node使用websocket实现数据推送,实时聊天

需求:node做后端根据websocket,连接数据库,数据库的字段改变后,前端不用刷新页面也能更新到数据,前端也可以发送消息给后端,后端接受后把前端消息做处理再推送给前端展示 1.初始化node,生成pac…

STM32杂记之单片机复位状态

参考源码 概况 复位后,器件从内部高速振荡器 (HSI 8MHz) 运行,FLASH 0 等待状态,FLASH预取缓冲区使能,除内部 SRAM、FLASH和 JTAG 外,所有外设均关闭。高速 (AHB) 和低…

LLaMA模型微调版本:斯坦福 Alpaca 详解

项目代码:https://github.com/tatsu-lab/stanford_alpaca 博客介绍:https://crfm.stanford.edu/2023/03/13/alpaca.html Alpaca 总览 Alpaca 是 LLaMA-7B 的微调版本,使用Self-instruct[2]方式借用text-davinct-003构建了52K的数据&#x…

三相一次重合闸程序逻辑原理(二)

在手动合闸至故障线路或手动分闸及保护或自动装置要求不允许重合闸(如母线、变压器保护及低频减载动作)等情况下,闭锁重合闸的输入开关量触点接通,H4输出“1”,非门Z4输出“0”,计数器清零(CD0&…

健身戴哪种耳机好、适合健身运动的耳机推荐

随着越来越多的人加入运动健身的行列,市场上涌现出越来越多适用于跑步的运动耳机。对于喜欢运动的朋友们来说,一副优秀的运动耳机成为了必不可少的装备。当进行力量训练时,佩戴耳机可以帮助提升训练的专注度;而在进行有氧运动时&a…

部署 kubeadm 1.20

目录 一、环境准备二、所有节点安装docker三、所有节点安装kubeadm,kubelet和kubectl四、部署K8S集群 硬件准备 master(2C/4G,cpu核心数要求大于2) 192.168.154.10 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08…

oracle dblink mysql查询text无法显示问题

帮客户做了一个oracle到mysql的dblink之后,客户反馈发现有的表查询字段不全,通过select * 查询,mysql中有个字段INTERVENTION字段没有显示,首先想到的就是可能不支持查询,检查这个字段类型为text,猜测可能是…

LeetCode刷题 | 139. 单词拆分

139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode"…

直播预约|湘江公益直播大讲堂:以低代码助力中小企业数字化转型

在当今数字时代,中小企业面临着前所未有的机遇和挑战。在激烈的商业竞争环境中,如何快速、高效地实现数字化转型并提升企业的竞争力成为中小企业亟需解决的关键问题。 低代码平台的兴起,为中小企业的数字化转型带来了全新的解决方案。 6月29日…

企业级ChatGPT开发的三大核心内幕及案例实战(二)

2.2 企业级ChatGPT开发的三大核心剖析 Gavin老师:NLP_Matrix_Space 本节讲解LangChain官方提供的一个项目,跟大家展示企业级开发的核心元素,如图2-1所示,是项目的架构示意图。 图2- 1 LangChain项目架构示意图 一个基本原则是你的提示词和模型进行交互,作为和模型交互的…

如何用rust实现一个异步channel

目录 前言思路实现功能代码实现 测试先引测试版包测试代码结果与分析思考 尾语 前言 使用通信来共享内存,而不是通过共享内存来通信 上面这句话,是每个go开发者在 处理多线程通信时 的座右铭,go甚至把实现这个理念的channel直接焊在编译器里&…

台灯太亮会影响视力吗?选灯一定要注意这几个点!

灯太亮对眼睛有没有影响,取决于灯“亮”的程度和使用的时间。如果是偶尔有需求,灯过于亮,使用时间不长的话对眼睛倒是没有太大的影响。但如果是长时间使用的,就不能使用过亮的灯了,容易导致睫状肌代偿性收缩、导致眼睛…

RISC-V处理器的设计与实现(三)—— 上板验证

文章目录 RISC-V处理器的设计与实现(一)—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(二)—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(三)—— 上板验…

人机混合智能概述

人机混合智能是指将人类的智能和计算机的智能结合起来,实现更加智能化的决策和行动。人机混合智能的发展历史可以追溯到20世纪50年代早期,当时计算机还是庞大的机器,只能由专业人员操作。但随着计算机技术的不断发展,出现了更为普…

JavaScript之鼠标事件、坐标轴、定位、clientXY、offsetXY、layerXY、pageXY、screenXY

文章目录 MouseEvent的事件类别阻止鼠标的默认事件去除单击右键菜单阻止图像默认拖拽阻止文字的拖拽和选择阻止表单提交及重置打印输出MouseEvent对象内容clientX和clientY与x和yoffsetXYlayerXYpageXYscreenXY总结 MouseEvent的事件类别 序号事件描述1mousedown鼠标按下2mouse…

多元回归预测 | Matlab鲸鱼算法(WOA)优化极限学习机ELM回归预测,WOA-ELM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab鲸鱼算法(WOA)优化极限学习机ELM回归预测,WOA-ELM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清空环…

【C/C++】使用类和对象 设计立方体案例

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

6.2.2 复制、删除与移动: cp, rm, mv

要复制文件&#xff0c;使用cp(copy)指令&#xff0c;移动目录与文件&#xff0c;使用mv(move)&#xff0c;这个指令直接拿来作更名的动作&#xff08;rename&#xff09;&#xff0c;移除是rm(remove)。 cp &#xff08;复制文件或目录&#xff09; 复制&#xff08;cp&#…

(07)装拆箱,自定义泛型,泛型约束,foreach,枚举器,迭代器,文件目录操作,TreeView,递归

一、作业问题 1.CompareTo是按什么规则标准进行比较的&#xff1f; 当前区域性执行单词 (区分大小写和区分区域性) 比较。 有关单词、字符串和序号排序 的详细信息&#xff0c;请参阅 System.Globalization.CompareOptions。 并不是按照…

每天一点Python——day42

#第四十二天 #判断字典中关键字是否存在in 存在返回Ture&#xff1b;反之为False not in 不存在返回True&#xff1b;反之为False#例&#xff1a; b{师傅:1000,师祖:10000,徒弟:500} print(师傅in b) print(师傅 not in b) #字典元素的删除del 字典名[健名]#例 a{张三:100,李四…