如何查看mysql里面的锁(详细)

通过查询表统计信息查看

information_schema库下相关事务表和锁相关信息表介绍

innodb_trx

存储了当前正在执行的事务信息

trx_id:事务ID。

trx_state:事务状态,有以下几种状态:RUNNING、LOCK WAIT、ROLLING BACK 和 COMMITTING。

trx_started:事务开始时间。

trx_requested_lock_id:事务当前正在等待锁的标识,可以和 INNODB_LOCKS 表 JOIN 以得到更多详细信息。

trx_wait_started:事务开始等待的时间。

trx_mysql_thread_id:事务线程 ID,可以和 PROCESSLIST 表 JOIN。

trx_tables_locked:表示该事务目前加了多少个表级锁。

trx_lock_structs:表示该事务生成了多少个内存中的锁结构。

trx_lock_memory_bytes:事务锁住的内存大小,单位为 BYTES。

trx_rows_locked:表示该事务目前加了多少个行级锁。

innodb_locks

记录了锁信息

如果一个事务想要获取到某个锁但未获取到,则记录该锁信息

如果一个事务获取到了某个锁,但是这个锁阻塞了别的事务,则记录该锁信息

但是无法通过该表查询到谁被阻塞,谁持有未释放。

lock_id:锁 ID。

lock_trx_id:拥有锁的事务 ID。可以和 INNODB_TRX 表 JOIN 得到事务的详细信息。

lock_mode:锁的模式。

lock_type:锁的类型。RECORD 代表行级锁,TABLE 代表表级锁。

lock_table:被锁定的或者包含锁定记录的表的名称。

innodb_lock_waits

表明每个阻塞的事务是因为获取不到哪个事务持有的锁而被阻塞

requesting_trx_id:–获取不到锁而被阻塞的事务id(等待方)

requested_lock_id:-- 请求锁ID ,事务所等待的锁定的 ID。可以和 INNODB_LOCKS 表 JOIN。

blocking_trx_id: --获取到别的事务需要的锁而阻塞其事务的事务id(当前持有方,待释放)

blocking_lock_id: --这一事务的锁的 ID,该事务阻塞了另一事务的运行。可以和 INNODB_LOCKS 表 JOIN。

processlist

id:标识ID。这与在SHOW PROCESSLIST语句的Id列、Performance Schema threads表的PROCESSLIST_ID列中显示的值类型相同,并由CONNECTION_ID()函数返回

user:发出该语句的mysql用户。

host:发出该语句的客户机的主机名(系统用户除外,没有主机)。

db:默认数据库。

command:线程正在执行的命令的类型。

time:线程处于当前状态的时间(以秒为单位)。

state:指示线程正在执行的操作、事件或状态。

info:线程正在执行的语句,如果没有执行任何语句,则为NULL。

如何借助这几张表来定位到有行锁等待

(1)查看当前有无锁等待

mysql> show status like ‘innodb_row_lock%’;

在这里插入图片描述
(2)查看哪个事务在等待(被阻塞了)

mysql> select * from information_schema.INNODB_TRX WHERE trx_state='LOCK WAIT'\G

trx_state 表示该事务处于锁等待状态。

trx_query : 当前被阻塞的操作是select * from actor where actor_id=1 for update。

从trx_mysql_thread_id和trx_id可以看到这里查到当前被阻塞的事务的:

线程ID是 971,注意说的是线程id

事务ID是3934
在这里插入图片描述
(3)查询该事务被哪个事务给阻塞了 从innodb_trx获取到被阻塞的trx_id是3934,阻塞该事务的事务id是3933

mysql> SELECT * FROM performance_schema.threads WHERE processlist_id=970\G

在这里插入图片描述
(4)根据trx_id,从innodb_trx表可查询到trx_mysql_thread_id线程id为970

mysql> select * from information_schema.innodb_trx where trx_id=3933 \G

在这里插入图片描述
(5)根据线程id,查询表拿到thread_id为995

mysql> SELECT * FROM performance_schema.threads WHERE processlist_id=970\G

在这里插入图片描述
(6)根据thread_id,查询当前锁源的sql
在这里插入图片描述

整个流程如下:

(1)首先查询是否有锁,根据锁查到被锁的trx_id

(2)根据被锁的trx_id可以查到锁源的trx_id

(3)根据锁源的trx_id查到trx_mysql_thread_id

(4)再根据trx_mysql_thread_id查到thread_id

(5)最后,用thread_id查找到锁源的sql

此外,第一步发现锁的方式,也可直接获取到锁源trx_id和被锁trx_id
在这里插入图片描述
但是这种方法在mysql8.0已经被移除,介绍另外一张表

sys.innodb_lock_waits 表

locked_table : 哪张表出现的等待

waiting_trx_id: 等待的事务(与上个视图trx_id 对应)

waiting_pid : 等待的线程号(与上个视图trx_mysql_thread_id)

blocking_trx_id : 锁源的事务ID

blocking_pid : 锁源的线程号

mysql> select * from sys.innodb_lock_waits\G
在这里插入图片描述
获取到锁源的blocking_pid 976(=processlist表的id),根据此id找到thread_id,再根据thread_id找到对应的sql
在这里插入图片描述
总结:

两种找到锁源SQL步骤是一样的

锁源的事务trx_id -->pnformaction_schema.processlist表的线程id–>performance_schema.threads表的thread_id–>performance_schema.events_statements_current 或performance_schema.events_statements_history查看sql

注:下面所指的id含义相同

information_schema.innodb_trx(trx_mysql_thread_id)

information_schema.processlist(id)

sys.innodb_lock_waits(waiting_pid,blocking_pid)

sys.sys.innodb_lock_waits的应用
1)查看锁等待相关的(阻塞线程、被阻塞线程信息及相关用户、IP、PORT、locked_type锁类型)
SELECT locked_table,
       locked_index,
       locked_type,
       blocking_pid,
       concat(T2.USER,'@',T2.HOST) AS "blocking(user@ip:port)",
       blocking_lock_mode,
       blocking_trx_rows_modified,
       waiting_pid,
       concat(T3.USER,'@',T3.HOST) AS "waiting(user@ip:port)",
       waiting_lock_mode,
       waiting_trx_rows_modified,
       wait_age_secs,
       waiting_query
FROM sys.x$innodb_lock_waits T1
LEFT JOIN INFORMATION_SCHEMA.processlist T2 ON T1.blocking_pid=T2.ID
LEFT JOIN INFORMATION_SCHEMA.processlist T3 ON T3.ID=T1.waiting_pid;

在这里插入图片描述
2)等待的持续时间(单位秒>20s)

 SELECT trx_mysql_thread_id AS PROCESSLIST_ID,
       NOW(),
       TRX_STARTED,
       TO_SECONDS(now())-TO_SECONDS(trx_started) AS TRX_LAST_TIME ,
       USER,
       HOST,
       DB,
       TRX_QUERY
FROM INFORMATION_SCHEMA.INNODB_TRX trx
JOIN sys.innodb_lock_waits lw ON trx.trx_mysql_thread_id=lw.waiting_pid
JOIN INFORMATION_SCHEMA.processlist pcl ON trx.trx_mysql_thread_id=pcl.id
WHERE trx_mysql_thread_id != connection_id()
  AND TO_SECONDS(now())-TO_SECONDS(trx_started) >= 20 ;
show engine innodb status
将锁信息打印出来

mysql> set global innodb_status_output_locks =ON;

执行如下sql,fisrt_name上有普通二级索引

begin;

select * from actor where first_name >'A' and first_name <'B' for update; 查询得到该事务ID,方面后面观察验证

在这里插入图片描述
show engine innodb status看到的事务信息如下

我将注释写在#后面


TRANSACTIONS

Trx id counter 3957                                                          #下一个待分配的事务id
Purge done for trx's n:o < 3930 undo n:o < 0 state: running but idle
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:                                       #各个事务信息
---TRANSACTION 421799341399664, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 421799341400576, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 421799341403312, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 421799341398752, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 3956, ACTIVE 25 sec                                           #事务id为3956的事务,活跃时间253 lock struct(s), heap size 1136, 27 row lock(s)
MySQL thread id 991, OS thread handle 140323910289152, query id 10636 localhost root
TABLE LOCK table `sakila`.`actor` trx id 3956 lock mode IX                  #事务id为3956的事务,对`sakila`.`actor`加了表级别意向独占锁 IX
RECORD LOCKS space id 45 page no 5 n bits 272 index idx_actor_first of table `sakila`.`actor` trx id 3956 lock_mode X
Record lock, heap no 2 PHYSICAL RECORD: n_fields 2; compact format; info bits 0    #idx_actor_first 是二级索引,lock_mode X Record lock 表示X型的next_key 锁
 0: len 4; hex 4144414d; asc ADAM;;
 1: len 2; hex 0047; asc  G;;

Record lock, heap no 3 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 4144414d; asc ADAM;;
 1: len 2; hex 0084; asc   ;;

Record lock, heap no 4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 2; hex 414c; asc AL;;
 1: len 2; hex 00a5; asc   ;;

Record lock, heap no 5 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 414c414e; asc ALAN;;
 1: len 2; hex 00ad; asc   ;;

Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 414c42455254; asc ALBERT;;
 1: len 2; hex 007d; asc  };;

Record lock, heap no 7 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 414c42455254; asc ALBERT;;
 1: len 2; hex 0092; asc   ;;

Record lock, heap no 8 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 414c4543; asc ALEC;;
 1: len 2; hex 001d; asc   ;;

Record lock, heap no 9 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 414e47454c41; asc ANGELA;;
 1: len 2; hex 0041; asc  A;;

Record lock, heap no 10 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 414e47454c41; asc ANGELA;;
 1: len 2; hex 0090; asc   ;;

Record lock, heap no 11 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 8; hex 414e47454c494e41; asc ANGELINA;;
 1: len 2; hex 004c; asc  L;;

Record lock, heap no 12 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 414e4e45; asc ANNE;;
 1: len 2; hex 0031; asc  1;;

Record lock, heap no 13 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 415544524559; asc AUDREY;;
 1: len 2; hex 0022; asc  ";;

Record lock, heap no 14 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 6; hex 415544524559; asc AUDREY;;
 1: len 2; hex 00be; asc   ;;

Record lock, heap no 15 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 4; hex 42454c41; asc BELA;;
 1: len 2; hex 00c4; asc   ;;

RECORD LOCKS space id 45 page no 3 n bits 272 index PRIMARY of table `sakila`.`actor` trx id 3956 lock_mode X locks rec but not gap
Record lock, heap no 30 PHYSICAL RECORD: n_fields 6; compact format; info bits 0       # trx id 3956 聚簇索引PRIMARY ,lock_mode X locks rec but not gap Record lock 表示X型记录锁
 0: len 2; hex 001d; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b0228; asc     + (;;
 3: len 4; hex 414c4543; asc ALEC;;
 4: len 5; hex 5741594e45; asc WAYNE;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 35 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0022; asc  ";;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b025a; asc     + Z;;
 3: len 6; hex 415544524559; asc AUDREY;;
 4: len 7; hex 4f4c4956494552; asc OLIVIER;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 50 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0031; asc  1;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b02f0; asc     +  ;;
 3: len 4; hex 414e4e45; asc ANNE;;
 4: len 6; hex 43524f4e594e; asc CRONYN;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 66 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0041; asc  A;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b0390; asc     +  ;;
 3: len 6; hex 414e47454c41; asc ANGELA;;
 4: len 6; hex 485544534f4e; asc HUDSON;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 72 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0047; asc  G;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b03cc; asc     +  ;;
 3: len 4; hex 4144414d; asc ADAM;;
 4: len 5; hex 4752414e54; asc GRANT;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 77 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 004c; asc  L;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b03fe; asc     +  ;;
 3: len 8; hex 414e47454c494e41; asc ANGELINA;;
 4: len 7; hex 41535441495245; asc ASTAIRE;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 126 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 007d; asc  };;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b05e8; asc     +  ;;
 3: len 6; hex 414c42455254; asc ALBERT;;
 4: len 5; hex 4e4f4c5445; asc NOLTE;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 133 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0084; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b0631; asc     + 1;;
 3: len 4; hex 4144414d; asc ADAM;;
 4: len 6; hex 484f50504552; asc HOPPER;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 145 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0090; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b06b5; asc     +  ;;
 3: len 6; hex 414e47454c41; asc ANGELA;;
 4: len 11; hex 57495448455253504f4f4e; asc WITHERSPOON;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 147 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 0092; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b06cb; asc     +  ;;
 3: len 6; hex 414c42455254; asc ALBERT;;
 4: len 9; hex 4a4f48414e53534f4e; asc JOHANSSON;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 166 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 00a5; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b079c; asc     +  ;;
 3: len 2; hex 414c; asc AL;;
 4: len 7; hex 4741524c414e44; asc GARLAND;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 174 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 00ad; asc   ;;
 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b07f4; asc     +  ;;
 3: len 4; hex 414c414e; asc ALAN;;
 4: len 8; hex 4452455946555353; asc DREYFUSS;;
 5: len 4; hex 43f23ed9; asc C > ;;

Record lock, heap no 191 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 2; hex 00be; asc   ;;

 1: len 6; hex 000000000ef8; asc       ;;
 2: len 7; hex cf0000032b08af; asc     +  ;;
 3: len 6; hex 415544524559; asc AUDREY;;
 4: len 6; hex 4241494c4559; asc BAILEY;;
 5: len 4; hex 43f23ed9; asc C > ;;
从上我们可以看到此事务在表actor上,加上了

mysql> select * from actor where first_name >'A' and first_name <'B' for update;
+----------+------------+-------------+---------------------+
| actor_id | first_name | last_name   | last_update         |
+----------+------------+-------------+---------------------+
|       71 | ADAM       | GRANT       | 2006-02-15 04:34:33 |
|      132 | ADAM       | HOPPER      | 2006-02-15 04:34:33 |
|      165 | AL         | GARLAND     | 2006-02-15 04:34:33 |
|      173 | ALAN       | DREYFUSS    | 2006-02-15 04:34:33 |
|      125 | ALBERT     | NOLTE       | 2006-02-15 04:34:33 |
|      146 | ALBERT     | JOHANSSON   | 2006-02-15 04:34:33 |
|       29 | ALEC       | WAYNE       | 2006-02-15 04:34:33 |
|       65 | ANGELA     | HUDSON      | 2006-02-15 04:34:33 |
|      144 | ANGELA     | WITHERSPOON | 2006-02-15 04:34:33 |
|       76 | ANGELINA   | ASTAIRE     | 2006-02-15 04:34:33 |
|       49 | ANNE       | CRONYN      | 2006-02-15 04:34:33 |
|       34 | AUDREY     | OLIVIER     | 2006-02-15 04:34:33 |
|      190 | AUDREY     | BAILEY      | 2006-02-15 04:34:33 |
+----------+------------+-------------+---------------------+
13 rows in set (0.00 sec)| actor | 
CREATE TABLE `actor` (
  `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `first_name` varchar(45) NOT NULL,
  `last_name` varchar(45) NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`actor_id`),
  KEY `idx_actor_last_name` (`last_name`),
  KEY `idx_actor_first` (`first_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8mb4 |
这些行对应的二级索引idx_actor_first加上了X型next_key锁,在对应的聚簇索引上加上了Xrecord锁

lock_mode X locks gap before rec  表示X型gap锁
lock mode X                       表示X型next_key 锁
lock_mode X locks rec but no gap  表示Xrecord

以上就是mysql查询锁信息的两种方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shell变量的使用 rhce(25)

目录 1.总结变量的类型及含义&#xff1f; 2.实现课堂案例计算长方形面积&#xff1f;&#xff08;6种方式&#xff09; 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815&#xff08;通过多种方法实现&#xff09; &#xff08;1&#xff0…

企业级帮助中心编写方案

随着互联网的飞速发展&#xff0c;越来越多的企业开始将客户服务转向线上服务。在这个过程中&#xff0c;企业级帮助中心因其高效的自助服务和低成本的维护方式受到越来越多企业的青睐。下文将从如何编写一个高质量的企业级帮助中心入手&#xff0c;为您介绍具体步骤。 一、明…

Coursera—Andrew Ng机器学习—课程笔记 Lecture 5 Octave Tutorial

5.1 基本操作 参考视频: 5 - 1 - Basic Operations (14 控制输出格式的长短 min).mkv 5.1.1 简单运算 不等于符号的写法是这个波浪线加上等于符号 ( ~ )&#xff0c;而不是等于感叹号加等号( ! ) 1 1 1   % 判断相等 2 1 ~ 2   % 判断不等 3 1 && 0   …

jsp基于 JavaWeb+springboot 的校园快递驿站管理系统

不同的系统提供的服务也不相同&#xff0c;其对应的功能也不相同&#xff0c;所以&#xff0c;系统开工前&#xff0c;需要明确其用途&#xff0c;确定其功能。由此&#xff0c;才可以进行各个任务的开展。 校园驿站管理系统经过分析&#xff0c;确定了其需要设置管理员的角色&…

聚焦2023北京安博会,超高清安防应用将成潮流

&#xff08;1&#xff09;2023北京安博会 中国安全防范产品行业协会主办并承办的第十六届&#xff08;2023&#xff09;中国国际社会公共安全产品博览会&#xff08;Security China 2023&#xff09;&#xff0c;将于2023年6月7&#xff5e;10日在北京首钢会展中心开幕。安博…

前端vscode插件bito

GPT-4和ChatGPT越来越火&#xff0c;前端人员是否也能在日常工作中尝试体验其带来的乐趣呢&#xff1f; 答案是可以的&#xff01;安排&#xff01;&#xff01; 今天介绍一款vscode的插件 【bito】。 安装 安装后只需要自己注册一下&#xff0c;创建一个workspace就可以使用…

实验室信息系统源码,LIS源码

实验室信息系统源码&#xff0c;LIS源码 技术细节&#xff1a; SaaS架构的Client/Server应用 体系结构&#xff1a;Client/Server架构 客户端&#xff1a;WPFWindows Forms 服务端&#xff1a;C# .Net 数据库&#xff1a;Oracle 接口技术&#xff1a;RESTful API HttpW…

全面解析Linux指令和权限管理

目录 一.指令再讲解1.时间相关的指令2.find等搜索指令与grep指令3.打包和压缩相关的指令4.一些其他指令与热键二.Linux权限1.Linux的权限管理2.文件类型与权限设置3.目录的权限与粘滞位 一.指令再讲解 1.时间相关的指令 date指令: date 用法&#xff1a;date [OPTION]… [FOR…

如何在Linux中更改SSH端口?

SSH&#xff08;Secure Shell&#xff09;是一种安全的远程登录协议&#xff0c;它允许您通过网络远程连接到Linux系统并进行管理操作。默认情况下&#xff0c;SSH使用22端口进行通信。然而&#xff0c;为了增强系统的安全性&#xff0c;有时候我们需要更改SSH端口&#xff0c;…

linux 找回root密码(CentOS7.6)

linux 找回root密码(CentOS7.6) 首先&#xff0c;启动系统&#xff0c;进入开机界面&#xff0c;在界面中按“e”进入编辑界面。如图 2. 进入编辑界面&#xff0c;使用键盘上的上下键把光标往下移动&#xff0c;找到以““Linux16”开头内容所在的行数”&#xff0c;在行的最后…

C4D R26 渲染学习笔记 建模篇(2):手动建模

文章目录 前文回顾介绍篇建模篇 手动建模建模快捷键手动模型快捷键大全常用操作N系快捷键K系快捷键U系快捷键 结尾 前文回顾 介绍篇 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&am…

Dubbo高可用

1.zookeeper宕机与dubbo直连 1.1.现象&#xff1a;zookeeper注册中心宕机&#xff0c;还可以消费dubbo暴露的服务。 原因&#xff1a; 监控中心宕掉不影响使用&#xff0c;只是丢失部分采样数据数据库宕掉后&#xff0c;注册中心仍能通过缓存提供服务列表查询&#xff0c;但…

软考A计划-试题模拟含答案解析-卷十二

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

AB Test数学原理及金融风控应用

1 什么是AB Test AB测试是一种常用的实验设计方法&#xff0c;用于比较两个或多个不同处理或策略的效果&#xff0c;以确定哪个处理或策略在某个指标上表现更好。在AB测试中&#xff0c;将随机选择一部分用户或样本&#xff0c;将其分为两个或多个组&#xff0c;每个组应用不同…

Java: IO流

1.定义 IO流:存储和读取数据的解决方案 用于读写文件中的数据&#xff08;可以读写文件&#xff0c;或网络中的数据...) 2.IO流的分类 1.按着流的方向 1.输入流&#xff1a;读取 2.输出流&#xff1a;写出 2.按照操作文件类型 1.字节流&#xff1a;所有类型文件 体系&…

机器学习-5 朴素贝叶斯算法

朴素贝叶斯算法 算法概述数理统计学处理的信息古典学派和贝叶斯学派的争论贝叶斯定理朴素贝叶斯分类训练朴素贝叶斯&#xff1a;朴素假设案例&#xff1a;预测打网球拉普拉斯平滑技术小结 算法流程与步骤算法应用sklearn中的朴素贝叶斯朴素贝叶斯的使用算法实例 算法概述 数理…

【服务器】使用Nodejs搭建HTTP web服务器

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 1.安装Node.js环境 2.创建node.js服务 3. 访问node.js 服务 4.内网穿透 4.1 安装配置cpolar内网穿透 4.2 创建隧道映射本地端口 5.固定公网地址 [TOC] 转载自内网穿透…

一个完整的APP定制开发流程是怎样的?

随着移动互联网的发展&#xff0c;越来越多的 APP应用软件进入人们的生活&#xff0c;让我们的生活更便捷、更舒适。而随着互联网技术的进步&#xff0c;移动互联网应用软件开发行业也越来越成熟&#xff0c;为了适应市场需求&#xff0c;各种功能强大、性能良好的 APP应用软件…

C/C++ ---- 内存管理

目录 C/C内存分布 常见区域介绍 经典习题&#xff08;读代码回答问题&#xff09; 选择题 填空题 C语言内存管理方式 malloc/free calloc realloc C内存管理方式 new和delete操作内置类型 new和delete操作自定义类型 operator new和operator delete函数 new和dele…

C++11常用的一部分新特性

C11 统一的列表初始化&#xff5b;&#xff5d;初始化std::initializer_list 声明autodecltypenullptr STL中一些变化新容器已有容器的新接口 右值引用和移动语义左值引用和右值引用右值引用使用场景和意义右值引用引用左值及其一些更深入的使用场景分析完美转发 新的类功能默认…