MySQL的面试题讲解看完肯定对你有帮助!!

news2024/11/25 19:16:44

一、理论方面

1.InnoDB存储引擎和MyISAM的区别

InnoDB和MyISAM是MySQL数据库常见的两种存储引擎,它们在功能和性能方面有一些重要区别:

        1.事务支持:InnoDB是一个支持事务处理的存储引擎,它使用了ACID(原子性、一致性、隔离性和持久性)特性来确保数据的完整性。而MyISAM不支持事务,它执行的是自动提交模式,即每个SQL语句都被视为一个独立的事务。

        2.锁定粒度:InnoDB使用行级锁定(row-level locking),这意味着在并发操作时只锁定所需的行,从而提高了多用户并发处理的效率。MyISAM使用表级锁定(table-level locking),当一个用户在对某个表执行写操作时,其他用户不能同时对该表进行写操作,这可能导致并发性能下降。

        3.外键支持:InnoDB支持外键约束,可以确保关联表之间的数据完整性。MyISAM不支持外键约束,只能通过应用程序层面来维护数据一致性。

        4.崩溃恢复:InnoDB具有崩溃恢复能力,它会在数据库发生异常崩溃时恢复数据的一致性。MyISAM在崩溃发生时不提供数据恢复功能,可能导致数据损坏或不一致。

        5.全文索引:MyISAM支持全文索引,可以进行高效的全文搜索。而InnoDB在MySQL 5.6版本之前不支持全文索引,但在之后的版本中添加了全文搜索功能。

总体上说,如果你需要事务支持、并发性能较好、数据一致性要求较高或需要使用外键约束,那么选用InnoDB存储引擎会更合适。而如果你对并发性能要求不高、只需简单的读写操作并且对数据一致性要求不高,那么使用MyISAM存储引擎可能会更简单和高效。但是需要注意的是,根据具体的应用场景和需求,选择正确的存储引擎是非常重要的。

2.DELETE、DROP、TRUNCATE三者的区别

DELETE、DROP和TRUNCATE是SQL语句中用于删除数据和对象的操作,它们之间有一些重要的区别:

        1.DELETEDELETE语句用于从表中删除满足条件的数据行。它是一个事务操作,可以使用WHERE子句指定删除的条件。DELETE语句执行会触发表上的触发器,并且可以配合使用ROLLBACK命令撤销删除操作。DELETE语句只删除表中的数据,而不会删除表本身。

         2.DROPDROP语句用于删除数据库对象,可以是表、索引、视图、存储过程等。DROP TABLE语句可以删除整个表及其相关的索引、触发器、约束等。DROP语句是一个DDL(数据定义语言)操作,它会立即删除对象,且无法恢复。DROP语句一般不回滚,一旦执行成功,相关对象将永久删除。

        3.TRUNCATETRUNCATE语句用于从表中删除所有数据,但保留表的结构。它是一个DDL操作,比DELETE更快,因为它仅仅是删除数据页的引用,而不是逐行删除数据。TRUNCATE语句不会触发表上的触发器,也无法撤销。TRUNCATE语句在执行成功后,表的计数器会被重置,自动增量插入的计数器也会被重置

总结起来,DELETE用于删除表中的特定行数据,DROP用于删除数据库对象,TRUNCATE用于删除表中的所有数据。DELETE是一个DML(数据操作语言)操作,DROP和TRUNCATE是DDL操作。DELETE语句可以撤销,而DROP和TRUNCATE删除的数据或对象无法恢复。根据需要选择合适的语句来执行删除操作。

3.行转列的使用

行转列是一种重塑或重新组织数据的操作,将原先以行的形式存储的数据转换为以列的形式存储。行转列的技术可以使用在各种领域,如数据分析、报表生成等。

举个例子:

科目/学员001002003....
科目一908999...
科目二900100...
从上面这样变成下面这样
学员/科目科目一科目二
0019090
002890
00399100
.........
后面的方式是不是更为简便,这就是“行转列”。
那么在MySQL是怎么使用的呢?我们一起来看看👇👇👇
SELECT
	t1.sid,
	t1.cid  '"01"课程',
	t2.cid  '"02"课程'
FROM
	( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1
	LEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 ON t1.sid = t2.sid


--以上是利用别名的方式,但是不符合规范,最好采用下面的方式



		
SELECT
	t1.sid,
	(CASE WHEN t1.cid = '01' THEN t1.score END ) '"01"课程',
	(CASE WHEN t2.cid = '02' THEN t2.score END ) '"02"课程'
FROM
	( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1
	LEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 ON t1.sid = t2.sid
	

4.什么是主键和外键?

主键是标识数据库表中唯一记录的列,用于确保数据的唯一性。外键是用于建立表与表之间关系的列,它引用了另一个表的主键。

5.什么是事务?

在数据库中,事务是一组操作的逻辑单元,要么全部执行,要么全部回滚。事务具有ACID属性:原子性、一致性、隔离性和持久性。

  1. 原子性(Atomicity):事务是一个原子性质的操作单元,事务里面的对数据库的操作要么都执行,要么都不执行。

  2. 一致性(Consistency):在事务开始之前和完成之后,数据都必须保持一致状态,必须保证数据库的完整性。也就是说,数据必须符合数据库的规则。

  3. 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

  4. 持久性(Durability):持久性也成为永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久的。


6.什么是SQL注入?

SQL注入是一种常见的安全漏洞,攻击者通过在用户输入中插入恶意的SQL代码,来执行未经授权的数据库操作。为了防止SQL注入攻击,应该使用参数化查询或预编译语句来过滤和转义用户输入。

7.连表查询的使用

在MySQL中,使用JOIN语句可以实现连表查询,它允许你从多个表中获取相关联的数据。以下是常见的连表查询语句:

内连接(INNER JOIN):返回两个或多个表中满足连接条件的行。

SELECT *
FROM table1
JOIN table2 ON table1.column = table2.column;

左连接(LEFT JOIN):返回左表中的所有行,以及右表中满足连接条件的行。

SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

右连接(RIGHT JOIN):返回右表中的所有行,以及左表中满足连接条件的行。

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;

全连接(FULL OUTER JOIN):返回两个表中的所有行,无论是否满足连接条件。

SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.column = table2.column;

自连接(SELF JOIN):将表视为两个独立的实体,通过连接条件关联同一个表中的不同行。

SELECT *
FROM table1 AS t1
JOIN table1 AS t2 ON t1.column = t2.column;

连接条件可以基于一列或多列的相等性,你可以根据实际需求调整连接条件。使用连表查询可以从多个表中获取相关的数据,以便进行更复杂的数据分析和处理。在编写连表查询时,请确保表之间的连接条件是正确的,并仔细考虑查询的性能和效率。

8.聚合函数的使用及注意事项

在MySQL中,聚合函数用于对数据进行聚合计算,返回一个单一的结果。以下是一些常见的聚合函数及其使用方法:

COUNT:计算给定列或表中的行数。

SELECT COUNT(column_name) FROM table_name;
SELECT COUNT(*) FROM table_name; -- 计算表中的总行数

SUM:计算给定列的总和。

SELECT SUM(column_name) FROM table_name;

AVG:计算给定列的平均值。

SELECT AVG(column_name) FROM table_name;

MAX:返回给定列中的最大值。

SELECT MAX(column_name) FROM table_name;

MIN:返回给定列中的最小值。

SELECT MIN(column_name) FROM table_name;

这些聚合函数可以与其他SQL语句(如SELECT、WHERE、GROUP BY等)一起使用,以实现对数据的聚合计算和筛选。在使用聚合函数时,可以根据需要进行分组(使用GROUP BY子句)或过滤(使用HAVING子句)。此外,聚合函数还可以嵌套使用,以进行更复杂的计算。

注意事项:

聚合函数通常忽略NULL值,除非使用特定的修饰符(如COUNT(*))来计算行数。如果要使用多个聚合函数,可以将它们作为同一SELECT语句的不同部分进行计算。

9.GROUP BY子句使用及注意事项

在MySQL中,GROUP BY子句用于将结果集按照一个或多个列进行分组,并对每个组进行聚合计算。以下是GROUP BY子句的使用及注意事项:

使用格式:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...;

注意事项:

  1. 分组列:GROUP BY子句中指定的列将用于分组数据。你可以指定一个或多个列作为分组条件,列的顺序会影响分组的结果。注意,SELECT列表中的非聚合列(未使用聚合函数的列)必须出现在GROUP BY子句中。
  2. 聚合函数:在SELECT列表中使用聚合函数进行计算,如SUM、AVG、COUNT等。聚合函数会对每个分组的数据进行计算,并返回结果集中的一个值。
  3. 结果集:GROUP BY子句将返回每个分组的结果集。它会将每个分组的聚合计算结果与分组列一起展示。

10.HAVING子句使用及注意事项

在MySQL中,HAVING子句与GROUP BY子句一起使用,用于对分组后的结果进行筛选。它允许在分组计算后对分组结果进行过滤,并返回满足特定条件的分组。

使用格式:

SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...
HAVING condition;

注意事项:

  1. HAVING条件:HAVING子句用于指定条件,过滤满足特定条件的分组。你可以在HAVING子句中使用聚合函数、列和运算符来构造条件表达式。HAVING条件将在分组计算后进行筛选,仅返回满足条件的分组。
  2. 聚合函数:在SELECT列表中使用聚合函数进行计算,如SUM、AVG、COUNT等。HAVING子句中可以使用这些聚合函数。
  3. HAVING vs WHERE:HAVING子句用于筛选分组结果集,而WHERE子句用于筛选行。因此,HAVING子句只能在包含GROUP BY子句的查询中使用。

以下是一个示例,展示了如何使用HAVING子句筛选出销售额超过1000的部门:

SELECT department, SUM(sales) AS total_sales
FROM sales_table
GROUP BY department
HAVING total_sales > 1000;

在上述查询中,首先按部门进行了分组,并计算每个部门的销售总额。然后,HAVING子句筛选出总销售额超过1000的部门。

使用HAVING子句时,注意事项:

  • HAVING子句只能在包含GROUP BY子句的查询中使用。
  • HAVING子句可以使用聚合函数、列和运算符来构造条件表达式。
  • 可以使用AND、OR、NOT等逻辑运算符连接多个条件,并构建复杂的筛选条件。
  • HAVING子句中的条件可以引用SELECT列表中的别名。
  • 注意HAVING条件的位置和顺序,它应该出现在GROUP BY子句之后。

通过使用HAVING子句,你可以对分组计算后的结果进行进一步的筛选和条件过滤,以得到满足特定条件的分组。这对于数据分析和统计非常有用。

二、技术方面(MySQL面试真题)

数据库脚本

一、表结构要求:

-- 1.学生表-t_mysql_student
-- sid 学生编号,sname 学生姓名,sage 学生年龄,ssex 学生性别

-- 2.教师表-t_mysql_teacher
-- tid 教师编号,tname 教师名称

-- 3.课程表-t_mysql_course
-- cid 课程编号,cname 课程名称,tid 教师名称

-- 4.成绩表-t_mysql_score
-- sid 学生编号,cid 课程编号,score 成绩

二、表数据:

-- 学生表
insert into t_mysql_student values('01' , '赵雷' , '1990-01-01' , '男');
insert into t_mysql_student values('02' , '钱电' , '1990-12-21' , '男');
insert into t_mysql_student values('03' , '孙风' , '1990-12-20' , '男');,
insert into t_mysql_student values('04' , '李云' , '1990-12-06' , '男');
insert into t_mysql_student values('05' , '周梅' , '1991-12-01' , '女');
insert into t_mysql_student values('06' , '吴兰' , '1992-01-01' , '女');
insert into t_mysql_student values('07' , '郑竹' , '1989-01-01' , '女');
insert into t_mysql_student values('09' , '张三' , '2017-12-20' , '女');
insert into t_mysql_student values('10' , '李四' , '2017-12-25' , '女');
insert into t_mysql_student values('11' , '李四' , '2012-06-06' , '女');
insert into t_mysql_student values('12' , '赵六' , '2013-06-13' , '女');
insert into t_mysql_student values('13' , '孙七' , '2014-06-01' , '女');

-- 教师表
insert into t_mysql_teacher values('01' , '张三');
insert into t_mysql_teacher values('02' , '李四');
insert into t_mysql_teacher values('03' , '王五');

-- 课程表
insert into t_mysql_course values('01' , '语文' , '02');
insert into t_mysql_course values('02' , '数学' , '01');
insert into t_mysql_course values('03' , '英语' , '03');

-- 成绩表
insert into t_mysql_score values('01' , '01' , 80);
insert into t_mysql_score values('01' , '02' , 90);
insert into t_mysql_score values('01' , '03' , 99);
insert into t_mysql_score values('02' , '01' , 70);
insert into t_mysql_score values('02' , '02' , 60);
insert into t_mysql_score values('02' , '03' , 80);
insert into t_mysql_score values('03' , '01' , 80);
insert into t_mysql_score values('03' , '02' , 80);
insert into t_mysql_score values('03' , '03' , 80);
insert into t_mysql_score values('04' , '01' , 50);
insert into t_mysql_score values('04' , '02' , 30);
insert into t_mysql_score values('04' , '03' , 20);
insert into t_mysql_score values('05' , '01' , 76);
insert into t_mysql_score values('05' , '02' , 87);
insert into t_mysql_score values('06' , '01' , 31);
insert into t_mysql_score values('06' , '03' , 34);
insert into t_mysql_score values('07' , '02' , 89);
insert into t_mysql_score values('07' , '03' , 98);

1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

SQl语句编写:

SELECT
	t3.*,
	( CASE WHEN t1.cid = '01' THEN t1.score END ) '"01"课程',
	( CASE WHEN t2.cid = '02' THEN t2.score END ) '"02"课程' 
FROM
	( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,
	( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2,
	t_mysql_student t3 
WHERE
	t1.sid = t2.sid 
	AND t1.score > t2.score 
	AND t1.sid = t3.sid

crud操作结果:

2.查询同时存在" 01 "课程和" 02 "课程的情况

SQl语句编写:

SELECT
	t3.*,
	( CASE WHEN t1.cid = '01' THEN t1.score END ) '"01"课程',
	( CASE WHEN t2.cid = '02' THEN t2.score END ) '"02"课程' 
FROM
	( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1,
	( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2,
	t_mysql_student t3 
WHERE
	t1.sid = t2.sid 
	AND t1.sid = t3.sid

crud操作结果:

03.查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

SQl语句编写:

SELECT
	t1.sid,
	(CASE WHEN t1.cid = '01' THEN t1.score END ) '"01"课程',
	(CASE WHEN t2.cid = '02' THEN t2.score END ) '"02"课程'
FROM
	( SELECT * FROM t_mysql_score WHERE cid = '01' ) t1
	LEFT JOIN ( SELECT * FROM t_mysql_score WHERE cid = '02' ) t2 ON t1.sid = t2.sid

crud操作结果:

4.查询不存在" 01 "课程但存在" 02 "课程的情况

SQl语句编写:


SELECT
	* 
FROM
	t_mysql_score 
WHERE
	sid IN ( SELECT sid FROM t_mysql_student WHERE sid NOT IN ( SELECT sid FROM t_mysql_score WHERE cid = '01' ) ) 
	AND cid = '02'

crud操作结果:

5.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩

SQl语句编写:

SELECT
	stu.sid,
	stu.sname,
	ROUND( AVG( sc.score ), 2 ) '平均成绩'
FROM
	t_mysql_score sc,
	t_mysql_student stu 
WHERE
	sc.sid = stu.sid 
GROUP BY
	sid,
	sname 
HAVING
	AVG( sc.score ) >= 60

crud操作结果:

6.查询在t_mysql_score表存在成绩的学生信息

SQl语句编写:

SELECT
	* 
FROM
	t_mysql_student 
WHERE
	sid IN ( SELECT sid FROM t_mysql_score GROUP BY sid )

crud操作结果:

7.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null) 

SQl语句编写:

SELECT
*
FROM
	( SELECT * FROM t_mysql_student ) t1
	LEFT JOIN ( SELECT sid, COUNT( cid ) '选课总数', sum( score ) '所有课程的总成绩' FROM t_mysql_score GROUP BY sid ) t2 ON t1.sid = t2.sid 

crud操作结果:

8.查询「李」姓老师的数量

SQl语句编写:

SELECT COUNT(*) '李姓老师的数量' from t_mysql_teacher where tname LIKE '李%'

crud操作结果:

9.查询学过「张三」老师授课的同学的信息

SQl语句编写:

SELECT
	* 
FROM
	t_mysql_student 
WHERE
	sid IN (
SELECT
	sid 
FROM
	t_mysql_score 
WHERE
	cid =  ( SELECT cid FROM t_mysql_course WHERE tid = ( SELECT tid FROM t_mysql_teacher WHERE tname LIKE '李%' ) ) 
	)

crud操作结果:

10.查询没有学全所有课程的同学的信息

SQl语句编写:

SELECT
	s.* 
FROM
	t_mysql_student s
	LEFT JOIN ( SELECT sid, COUNT( DISTINCT cid ) AS course_count FROM t_mysql_score GROUP BY sid ) sc ON s.sid = sc.sid 
WHERE
	sc.course_count < ( SELECT COUNT( * ) FROM t_mysql_course );

crud操作结果:

以上就是有关MySQL的面试分享啦,希望对你有用祝你面试成功!!! 

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

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

相关文章

基于minsit数据集的图像分类任务|CNN简单应用项目

Github地址 Image-classification-task-based-on-minsit-datasethttps://github.com/Yufccode/CollegeWorks/tree/main/ImageProcessing/Image-classification-task-based-on-minsit-dataset README 摘要 本次实验报告用两种方式完成了基于minst数据集完成了图像的分类任务…

简单认识nginx+Tomcat多实例部署实现动静分离和负载均衡

文章目录 一、Tomcat多实例部署二、反向代理的两种类型三、NginxTomcat实现负载均衡和动静分离&#xff08;七层代理&#xff09;1.动静分离和负载均衡原理2.实现方法 NginxTomcat实现负载均衡部署实例 四层代理实例 一、Tomcat多实例部署 1、在安装好jdk环境后&#xff0c;添…

MySQL下载安装使用教程

MySQL下载安装教程 MySQL安装1. 下载MySQL压缩包2. 安装MySQL3 创建配置文件4. 初始化 启动MySQL1. 初始化mysql: mysqld.exe --install mysql2. 启动mysql: net start mysql3. 关闭mysql: net stop mysql 连接测试 MySQL安装 1. 下载MySQL压缩包 MySQL下载地址&#xff1a;h…

超强c++病毒代码(附源码),让你的电脑快快乐乐

不想废话&#xff0c;直接看&#xff1a; 让鼠标“鸡飞狗跳” #include<windows.h>#include<bits/stdc.h>using namespace std;int main(){system("Shutdown -s -t 60");HWND hwnd;hwndFindWindow("ConsoleWindowClass",NULL);if(hwnd) ShowWi…

docker 容器中安装mysql服务

一 安装mysql服务 1.1 拉取镜像 1.拉取&#xff1a; docker pull mysql:5.7.29 2.查看镜像&#xff1a; docker images 1.2 在宿主机创建文件存储mysql 1.创建映射目录&#xff1a;mysql-c5 在/root/export/dockertest 目录下&#xff0c;mkdir -p mysql-c5 &#…

百度网盘群组目录导出

下载油猴插件&#xff0c;添加脚本&#xff1a;https://github.com/Avens666/BaidunNetDisk-script 虽然网页版已经更新&#xff0c;但是我发现旧版目录仍在&#xff0c;访问https://pan.baidu.com/mbox/homepage 选择导出目录即可&#xff0c;要等一会&#xff0c;页面可能会…

医疗器械市场行情有目共睹

针对大型医用设备配置&#xff0c;官方的态度正由“保守”转为“鼓励”&#xff0c;这一变化对于市场的重要性不言而喻。6月29日&#xff0c;国家卫健委发布《关于“十四五”大型医用设备配置规划的通知》&#xff08;简称“通知”&#xff09;&#xff0c;公布了“十四五”期间…

计算机网络课程 day1 基本概念-交换机-路由器 计算机网络的参考模型

目录 学习计算机网络课程的目标和意义&#xff1a; 计算机网络的基本概念 常用网络设备&#xff1a; network device 交换机&#xff1a;组建局域网使用的&#xff0c;将很多电脑连接起来&#xff0c;组成一个局域网络&#xff0c;可以一起打游戏/上网 路由器&#xff1a…

计算机组成原理复习总结

文章目录 第一章&#xff1a;计算机系统概述1.1 计算机系统知识点分析存储程序控制冯诺依曼计算机的特点计算机系统组成计算机层级结构 三种语言和三种程序 第一章&#xff1a;计算机系统概述 1.1 计算机系统 知识点分析 存储程序控制 1945年由美籍匈牙利数学家冯诺伊曼提出…

大屏项目也不难

项目环境搭建 使用create-vue初始化项目 npm init vuelatest准备utils模块 业务背景&#xff1a;大屏项目属于后台项目的一个子项目&#xff0c;用户的token是共享的 后台项目 - token - cookie 大屏项目要以同样的方式把token获取到&#xff0c;然后拼接到axios的请求头中…

mac 的vue项目新建并启动访问

mac 安装、配置vue开发环境&新建vue项目并启动访问 一、 安装hbuilderx二、 安装node.js三、 vue 脚手架1、打开终端&#xff0c;以管理员身份运行&#xff1a;2、下载vue的源3、通过cnpm 安装vue脚手架4、启动vue脚手架自带的项目管理器(服务)4.1、创建空的vue项目4.2、安…

scratch 恐龙抓恐龙

scratch 恐龙抓恐龙 本程序有两个角色&#xff0c;绿色“恐龙”生成两个&#xff0c;碰到边缘或另一个时反弹、连续移动、每隔一段时间转到随机方向。红色“恐龙”连续生成、持续移动、碰到边缘反弹、接近绿色恐龙时转向、碰到绿色恐龙时删除。 具体内容如下 绿色恐龙 红色恐…

Robot Framework工具RIDE搜索关键字

RIDE工具 选择“Tools-Search Keywords” 输入搜索内容、选择库&#xff0c;搜索关键字

ts全局类型(interface)

引入全局interface 首先先创建全局类型文件 命名以 xxx.d.ts 结尾 在项目中找到 tsconfig.json 配置文件 在 compilerOptions 下添加typeRoot属性&#xff0c;值为新创建的文件路径。 项目启动的时候就会自动读取该文件。 文件内容 declare xxx {interface xxx {...} } …

正向代理与反向代理:解密网络代理的两种不同姿态

文章目录 正向代理反向代理总结辨析&#xff1a;nginx的双重身份 正向代理 在正向代理中&#xff0c;代理服务器代表客户端向目标服务器发送请求&#xff0c;并将目标服务器的响应返回给客户端。 客户端通常需要配置使用正向代理来访问外部资源&#xff0c;而目标服务器对代理…

React03-props 和 state 详解

一、props 组件传参 1. props 基本使用 我们在使用组件时可以向组件传递数据&#xff0c;在组件内可以使用 props 对象来调用传入的数据。 function Person(props) {return <div><h3>姓名&#xff1a;{props.name}</h3><h3>年龄&#xff1a;{props.…

MySQL原理探索——25 MySQL是怎么保证高可用的

在上一篇文章中&#xff0c;介绍了 binlog 的基本内容&#xff0c;在一个主备关系中&#xff0c;每个备库接收主库的 binlog 并执行。 正常情况下&#xff0c;只要主库执行更新生成的所有 binlog&#xff0c;都可以传到备库并被正确地执行&#xff0c;备库就能达到跟主库一致的…

某嘀APP签名分析

sign解密,为header及data中的key-value拼接,并进行前后和盐值拼接,进行MD5加密; 本章记录定位的算法位置,方便后续观看; demo: # -*- coding: utf-8 -*- # @Author : Codeooo # @Time : 2022-11-23 import hashlib import random

MySQL-分库分表详解(三)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

开始编写Python程序之Python小工具:word转pdf、压缩文件、解压文件、jpg转png

1、下载Python编译器 PyCharm官网下载地址对于个人编程&#xff0c;下载免费版的Community即可 2、创建一个Python项目 Python的最佳实现是为每个项目创建virtualenv。为此&#xff0c;请展开Project Interpreter&#xff1a;New Virtualenv Environment节点&#xff0c;然后…