MySQL(常用函数、多表查询)

文章目录

    • 1.数据库函数
        • 1.count函数
          • 案例
          • 答案
          • count(*)与count(列)的区别
        • 2.sum函数
          • 案例
          • 答案
        • 3.avg函数
          • 案例
          • 答案
        • 4.max/min函数
          • 案例
          • 答案
        • 5.group by 分组统计
          • 案例
          • 答案
        • 6.字符串相关函数
          • 演示
          • 练习
        • 7.数学相关函数
          • 演示
        • 8.日期相关函数
          • 演示
        • 9.加密函数
          • 演示
        • 10.流程控制函数
          • 演示
    • 2.查询增强
        • 增强一
          • 案例
        • 增强二 order by
          • 案例
        • 增强三 分页查询
          • 案例
          • 求第几页的公式是
          • 练习
        • 增强四 group by
          • 案例
        • 增强五 数据分组总结
          • 案例
          • group by 细节
    • 3.多表查询
        • 1.笛卡尔积
          • 细节
          • 案例
        • 2.多表查询
          • 案例
        • 3.自连接
          • 案例
        • 4.多行子查询
          • 案例一
          • 案例二
        • 4.子查询临时表(非常管用)
        • 5.all和any操作符
          • all操作符案例
          • any操作符案例
        • 6.多列子查询
          • 案例一
          • 案例二
        • 7.子查询练习题
          • 练习一
          • 练习二
          • 练习三
        • 8.表复制和去重
          • 1.表的复制
          • 2.自我复制
          • 3.复制表结构
          • 4.去重
        • 9.合并查询
          • union all
          • union
        • 10.外连接
          • 左外连接
          • 右外连接
          • 练习
    • 4.查询与连接的WHERE区别

1.数据库函数

1.count函数

image-20240116092118888

案例

image-20240116092108309

答案
-- 统计一个班级共有多少学生
SELECT COUNT(*) FROM student;
-- 统计数学成绩大于90的有多少个
SELECT COUNT(*) FROM student WHERE math > 90;
-- 统计总分大于250的人数有多少人
SELECT COUNT(*) FROM STUDENT WHERE (MATH + CHINESE + ENGLISH) > 250;
count(*)与count(列)的区别
  1. count(*)会返回满足条件记录的行数
  2. count(列)会统计满足条件的某列有多少行但是会排除null
2.sum函数

image-20240116093428849

案例

image-20240116094245465

答案
-- 统计一个班级数学总成绩
SELECT SUM(MATH) FROM student;
-- 统计一个班级,语文,英语,数学各科的总成绩
SELECT SUM(CHINESE), SUM(ENGLISH), SUM(MATH) FROM student; 
-- 统计一个班级语文,英语,数学的成绩总和
SELECT SUM(CHINESE) + SUM(ENGLISH) + SUM(MATH) FROM student;
-- 统计一个班级语文成绩平均分
SELECT SUM(CHINESE) / COUNT(*) FROM student;

3.avg函数

image-20240116094408135

案例

image-20240116094401257

答案
-- 求一个班级的数学平均分
SELECT AVG(MATH) FROM STUDENT;
-- 求一个班级总分平均分
SELECT AVG(MATH + CHINESE + ENGLISH) FROM STUDENT;
4.max/min函数

image-20240116094826161

案例

image-20240116094836948

答案
-- 求班级最高分和最低分
SELECT MAX(MATH + CHINESE + ENGLISH) FROM STUDENT;
SELECT MIN(MATH + CHINESE + ENGLISH) FROM STUDENT;
5.group by 分组统计

image-20240116095328808

案例

image-20240116101836314

答案
-- 显示每个部门的平均工资和最高工资
SELECT AVG(SAL), MAX(SAL),DEPTNO FROM EMP GROUP BY DEPTNO;
-- 显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(SAL), MIN(SAL),DEPTNO,JOB FROM EMP GROUP BY DEPTNO, JOB;
-- 显示平均工资低于2000的部门号和他的平均工资,别名
SELECT DEPTNO, AVG(SAL) AS 平均工资 FROM EMP GROUP BY DEPTNO HAVING 平均工资 < 2000; 

6.字符串相关函数

image-20240116101923971

演示
-- 返回字符串的字符集
SELECT CHARSET(ENAME) FROM EMP;
-- 连接子串将多个列拼成一列
SELECT CONCAT(ENAME,'工作是',JOB) FROM EMP;
-- INSTR (string, substring) 返回substring在string中出现的位置,没有返回0
SELECT INSTR('hanshunping', 'ping') FROM DUAL;
-- 转换成大写
SELECT UCASE(ENAME) FROM EMP;
-- 转换成小写
SELECT LCASE(ENAME) FROM EMP;
-- LEFT(string2, length) 从string2中的左边起取length个字符
SELECT LEFT(ENAME, 3) FROM EMP;
-- LENGTH(str) str的长度,按照字节
SELECT LENGTH('孙显圣') FROM EMP;
-- REPLACE(str,from_str,to_str) 将str列的from_str,替换为to_str
SELECT REPLACE(JOB,'MANAGER','经理') FROM EMP;
-- STRCMP(expr1,expr2) 逐个字符比较两字符串大小
SELECT STRCMP('HSP','AHP') FROM DUAL;
-- SUBSTRING(str FROM pos FOR len) 从str的pos开始(从1开始)取出len个字符
SELECT SUBSTRING(ENAME, 1, 2) FROM EMP;
-- 去除空格
SELECT LTRIM('  韩顺平教育') FROM DUAL;
SELECT RTRIM('韩顺平教育 ') FROM DUAL;
练习

image-20240116104853698

-- 将第一个 字符取出来然后转为小写,与剩下的字符拼接
SELECT CONCAT(LCASE(SUBSTRING(ENAME, 1, 1)),SUBSTRING(ENAME, 2,LENGTH(ENAME) - 1))  FROM EMP; 
7.数学相关函数

image-20240116105708293

演示
-- ABS(X) 绝对值
SELECT ABS(-10) FROM DUAL;
-- BIN(N) 十进制转2进制
SELECT BIN(10) FROM DUAL;
-- CEILING(X) 向上取整
SELECT CEILING(10.3) FROM DUAL;
-- CONV(N,from_base,to_base) 进制转换
SELECT CONV(10,10,2) FROM DUAL;
-- FLOOR(X) 向下取整
SELECT FLOOR(10.3) FROM DUAL;
-- FORMAT(X,D) 保留小数位数
SELECT FORMAT(10.3234,2) FROM DUAL;
-- HEX(N_or_S) 转16进制
SELECT HEX(100) FROM DUAL; 
-- LEAST(value1,value2,...) 求最小值
SELECT LEAST(10,2,3) FROM DUAL;
-- MOD(N,M) 取余
SELECT MOD(5,2) FROM DUAL;
-- RAND() 取随机数,0到1,如果是带参数的则每次取出来的就是相同的随机数
SELECT RAND() FROM DUAL;
SELECT RAND(3) FROM DUAL;

8.日期相关函数

image-20240116133545045

演示
-- 显示所有新闻信息,发布时间只显示日期,不用显示时间
SELECT id, content, DATE(send_time) FROM mes;
-- 查询在10分钟内发布的帖子
SELECT * FROM mes WHERE DATE_ADD(send_time, INTERVAL 10 MINUTE) >= NOW();
SELECT * FROM mes WHERE DATE_SUB(NOW(),INTERVAL 10 MINUTE) <= send_time;
-- 求出2011-11-11 和 1990-1-1相差多少天
SELECT DATEDIFF('2011-11-11','1990-1-1') FROM DUAL;
-- 求出你活了多少天
SELECT DATEDIFF(CURRENT_DATE,'2002-12-8') FROM DUAL;
-- 如果能活80岁,还能活几天
SELECT  DATEDIFF(DATE_ADD('2002-12-8',INTERVAL 80 YEAR),CURRENT_DATE) FROM DUAL;
-- 返回1970年到现在的秒数
SELECT UNIX_TIMESTAMP() FROM DUAL;
-- 把unix_timestamp时间戳转换成指定格式的日期
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H-%i-%s') FROM DUAL;
-- 返回指定的年月日
SELECT YEAR('2023-12-8'), MONTH('2023-12-8'),DAY('2023-12-8') FROM DUAL;
9.加密函数

image-20240116144111098

演示
-- 查询用户
SELECT USER() FROM DUAL;
-- 查询当前使用数据库名称
SELECT DATABASE() FROM DUAL;
-- 为字符串算出一个MD5加密的字符串
SELECT MD5('SXS') FROM DUAL;
-- 演示在数据库中将密码使用md5加密并且查询
CREATE TABLE `user` (
	id INT,
	`name` VARCHAR(32) NOT NULL DEFAULT '',
	pwd CHAR(32) NOT NULL DEFAULT ''
)
-- 插入信息
INSERT INTO USER VALUES(1, 'root', MD5('123456'))
-- 查询MD5加密之后的数据
SELECT * FROM user WHERE name = 'root' AND pwd = MD5('123456')
10.流程控制函数

image-20240116145956987

演示
-- 查询emp表,如果comm是null,显示0.0,
SELECT ENAME, IF(COMM IS NULL, 0.0, COMM) FROM EMP;
SELECT ENAME, IFNULL(COMM,0.0) FROM EMP;
-- 如果emp表的job是clerk,则显示是职员,如果是manager则显示是经理,如果是saleman则显示销售人员
SELECT ename, (SELECT CASE 
	WHEN job = 'CLERK' THEN '职员'
	WHEN job = 'MANAGER' THEN '经理'
	WHEN job = 'SALESMAN' THEN '销售人员'
	ELSE job END) FROM emp;

2.查询增强

增强一

image-20240116153613006

案例
-- 在mysql中,日期类型可以直接比较,但是格式要相同
-- 查询1992.1.1之后入职的员工
SELECT * FROM EMP 
				WHERE HIREDATE > '1992-01-01';
-- 显示首字符为S的员工姓名和工资
SELECT ename, sal FROM emp 
	WHERE ename LIKE 'S%';
-- 显示第三个字符为大写的O的所有员工的姓名和薪资
SELECT ename, sal FROM emp 
	WHERE ename LIKE '__O%';
-- 显示没有上级的雇员的情况
SELECT * FROM emp 
	WHERE mgr IS NULL;
-- 查询表结构
DESC emp;

增强二 order by

image-20240116155047597

案例
-- 按照工资从低到高的顺序显示雇员的信息
SELECT * FROM emp 
	ORDER BY sal 
-- 按照部门号升序而雇员的工资降序排列,显示雇员信息
SELECT * FROM emp
	ORDER BY deptno , sal DESC;

增强三 分页查询

image-20240116155829604

案例
-- 按雇员的id升序取出,每页显示3条记录,请分别显示第1页,第2页,第3页
-- 第一页
SELECT * FROM emp 
ORDER BY empno ASC
LIMIT 0, 3
-- 第二页
SELECT * FROM emp 
ORDER BY empno ASC
LIMIT 3, 3
-- 第三页
SELECT * FROM emp 
ORDER BY empno ASC
LIMIT 6, 3
求第几页的公式是

每页显示记录数 * (第几页 - 1),每页显示记录数

练习

image-20240116161342779

-- 第三页
SELECT * FROM EMP 
ORDER BY EMPNO DESC
LIMIT 10, 5
-- 第五页
SELECT * FROM EMP 
ORDER BY EMPNO DESC
LIMIT 20, 5
增强四 group by
案例

image-20240116161749041

-- 显示每种岗位的雇员总数、平均工资
SELECT job,COUNT(*), AVG(SAL)
FROM EMP
GROUP BY job;

-- 显示雇员总数,以及获得补助的雇员数
SELECT COUNT(*),COUNT(COMM)
FROM EMP;
-- 没有获得补助的雇员数
SELECT COUNT(IF(COMM IS NULL,1,NULL))
FROM EMP

-- 显示管理者的总人数
SELECT  COUNT(DISTINCT MGR)
FROM EMP

-- 显示雇员工资的最大差额
SELECT MAX(SAL) - MIN(SAL)
FROM EMP

增强五 数据分组总结

image-20240116163731207

image-20240116163720593

案例

image-20240116163743973

group by 细节

HAVING 子句通常用于筛选聚合函数(如 AVG、SUM、COUNT 等)的结果。它不应直接用于筛选单个行的数据

并且select只能是group by中的元素或者被聚合函数包裹的元素

SELECT deptno, AVG(SAL) AS avg_total
FROM emp
-- 这里还可以添加where筛选单个子句
GROUP BY DEPTNO
HAVING avg_total > 1000
ORDER BY avg_total DESC
LIMIT 0,2;

3.多表查询

1.笛卡尔积

image-20240116170657386

细节
  1. 在两个表默认连接条件下会出现笛卡尔积
  2. 笛卡尔积就是将第一张表的一条记录与第二张表的所有记录依次连接
  3. 笛卡尔积生成的记录条数 = 第一张表的记录条数 * 第二张表的记录条数
  4. 多表查询的条件不能少于表的个数 - 1否则就会出现笛卡尔积
  5. 连接的条件一般是一个表的外码和另一个表的主码连接,这样生成的记录条数就是第一个表的记录条数
案例
-- 查出雇员名,雇员工资,以及所在部门的名字,还有部门编号
-- 注意部门编号是有两个表的虽然一样,但是也要指明哪个表
SELECT ename, sal, dname,emp.deptno
FROM EMP, DEPT
WHERE EMP.deptno = DEPT.deptno

image-20240116171529238

2.多表查询
案例

image-20240116181911401

-- 显示部门号为10的部门名,员工名和工资
SELECT dname, ename, sal
FROM EMP, DEPT
WHERE EMP.deptno =DEPT.deptno AND DEPt.deptno = 10

-- 显示各个员工的姓名,工资以及工资的级别
SELECT ename, sal, grade
FROM emp, salgrade
WHERE sal BETWEEN losal AND hisal
3.自连接

image-20240116182026266

案例

image-20240116182847392

-- 显示员工名字以及他上级的名字,必须使用别名来进行自连接
SELECT worker.ename, boss.ename
FROM emp worker, emp boss 
WHERE worker.mgr = boss.empno
4.多行子查询

image-20240116183010079

案例一

image-20240116185156918

-- 显示与SMITH同一部门的所有员工
-- 先得到SMITH的部门编号,然后将其当做子查询
SELECT *
FROM emp
WHERE DEPTNO IN (
	SELECT DEPTNO
	FROM emp
	WHERE ename = 'SMITH'
)
案例二

image-20240116183021092

-- 查询和部门10的工作相同的雇员的名字,岗位,工资,部门号,但是不含10自己的

SELECT ename, job, sal, deptno
FROM emp
WHERE job IN (
-- 查询部门10的工作
	SELECT job
	FROM emp
	WHERE deptno = 10
) AND ename NOT IN (
-- 查询部门10的名字
	SELECT ename
	FROM emp
	WHERE deptno = 10
)
-- 或者
SELECT ename, job, sal, deptno
FROM emp
WHERE job IN (
-- 查询部门10的工作
	SELECT job
	FROM emp
	WHERE deptno = 10
) AND deptno <> 10
-- <>是不等号
4.子查询临时表(非常管用)

image-20240116185312830

SELECT goods_id, temp.cat_id, goods_name, shop_price
FROM (
	-- 查出id分组中最高的价钱,并将其当做一个临时表
	SELECT cat_id, MAX(shop_price) as max
	FROM ecs_goods
	GROUP BY cat_id
) temp, ecs_goods
WHERE temp.cat_id = ecs_goods.cat_id AND temp.max = ecs_goods.shop_price
-- 连接条件是临时表中的id对应原表中的id,临时表中的最大值,对应原表中的最大值
5.all和any操作符
all操作符案例

image-20240116192927107

-- 显示工资比部门30的所有员工的工资都高的员工的姓名、工资和部门号
SELECT ename, sal, deptno
FROM emp
WHERE sal > all(
	-- 子查询查出部门30所有员工工资
	SELECT sal 
	FROM emp
	WHERE deptno = 30
)
any操作符案例

image-20240116193138514

-- 显示工资比部门30的其中一名员工的工资都高的员工的姓名、工资和部门号
SELECT ename, sal, deptno
FROM emp
WHERE sal > ANY(
	-- 子查询查出部门30所有员工工资
	SELECT sal 
	FROM emp
	WHERE deptno = 30
)
6.多列子查询

image-20240116193338320

案例一

image-20240116194210594

-- 查询与smith的部门和岗位完全相同的所有雇员并且不包含smith本人
SELECT *
FROM emp
-- 把要查询的元素也用括号括起来
WHERE (deptno, job) = (
	-- 子查询:查询smith的部门和岗位
	SELECT deptno, job
	FROM emp
	WHERE ename = 'SMITH'
) AND ename <> 'SMITH'
案例二

image-20240116194220339

-- 主查询:查询和宋江的数学,英语,语文,成绩完全相同的学生
SELECT *
FROM student
WHERE (math, english, chinese) = (
	-- 子查询:宋江的数学,英语,语文,成绩
	SELECT math, english, chinese
	FROM student
	WHERE `name` = '宋江'
)
7.子查询练习题
练习一

image-20240116194650410

-- 子查询当做临时表使用,查询每个部门工资高于本部门平均工资的人
SELECT *
FROM (
	-- 子查询:按照部门分组,求出本部门的平均工资
	SELECT deptno, AVG(sal) as avgsal
	FROM emp
	GROUP BY deptno
) temp, emp
WHERE temp.deptno = emp.deptno AND emp.sal > temp.avgsal 

练习二

image-20240116195615913

-- 查找每个部门工资最高的人的详细资料
SELECT *
FROM (
	-- 子查询:按照部门分组,查找到每组最高的工资
	SELECT deptno, MAX(sal) as max
	FROM emp
	GROUP BY deptno
) temp, emp
WHERE temp.deptno = emp.deptno AND temp.max = emp.sal

练习三

image-20240116200317407

-- 注意:表名.*可以显示这个表的所有列
SELECT temp.*, dname, loc
FROM (
	-- 子查询:根据部门进行分组,计算人员数量
	SELECT deptno, COUNT(*) as num
	FROM emp
	GROUP BY deptno
)temp, dept
WHERE temp.deptno = dept.deptno
8.表复制和去重
1.表的复制
CREATE TABLE my_tab01(
	id INT,
	name VARCHAR(32),
	sal DOUBLE,
	job VARCHAR(32),
	deptno INT
);
SELECT * FROM my_tab01

-- 将emp表的数据复制到my_tab01中去
INSERT INTO my_tab01(id, name, sal, job, deptno)
	SELECT empno, ename, sal, job, deptno FROM emp; 

2.自我复制

image-20240116202241248

-- 自我复制
INSERT INTO my_tab01
	SELECT * FROM my_tab01
3.复制表结构
-- 复制表结构来创建一个表
CREATE TABLE temp LIKE salgrade
4.去重
-- my_tab01是一个具有重复数据的表
-- 1.创建一个临时表temp其结构与my_tab01一样
CREATE TABLE temp like my_tab01
-- 2.将my_tab01的数据使用distinct处理并复制到表temp中
INSERT INTO temp
	SELECT DISTINCT * FROM my_tab01
-- 3.把my_tab01的数据删除
DELETE FROM my_tab01
-- 4.把temp表的数据复制到my_tab01中去
INSERT INTO my_tab01
	SELECT * FROM temp
-- 删除临时表
DROP TABLE temp
9.合并查询
union all

image-20240116205149236

union

image-20240116205228353

10.外连接

image-20240116210128659

image-20240117090520072

左外连接
-- 创建两个表,并实现外连接
CREATE TABLE STU (
	ID INT,
	NAME VARCHAR(32)
)

CREATE TABLE EXAM(
	ID INT,
	GRADE INT
);
-- 左外连接
SELECT *
FROM EXAM LEFT JOIN STU
ON EXAM.ID = STU.ID

image-20240117092048289

右外连接
-- 右外连接
SELECT * 
FROM EXAM RIGHT JOIN STU
ON EXAM.ID = STU.ID

image-20240117092105972

练习

image-20240117092934692

-- 列出部门名称和这些部门的员工信息(名字和工作),同时列出那些没有员工的部门名
-- 左外连接
SELECT DNAME, ENAME,JOB
FROM DEPT LEFT JOIN EMP
ON DEPT.deptno = EMP.deptno
-- 右外连接
SELECT DNAME, ENAME,JOB
FROM EMP RIGHT JOIN DEPT
ON EMP.deptno = DEPT.deptno

4.查询与连接的WHERE区别

image-20240117112635523

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

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

相关文章

即时配送行业吸引百万骑手就业,这个行业真的赚钱吗?

互联网浪潮的影响下&#xff0c;人们的就业模式开始呈现出多元化的发展趋势&#xff0c;新生代劳动者更加偏爱自由灵活的工作模式。在这样的背景下&#xff0c;同城配送服务的诞生&#xff0c;就为大量骑手创造了灵活的就业机会。据数据平台报告显示&#xff0c;2023年我国外卖…

linux Centos7 部署 nodejs服务

nodejs服务要有nodejs环境。所以要先安装nodejs 不会安装的可以看 Centos7 安装 npm 学习 安装pm2 cnpm install pm2 -g, 查看pm2是否安装成功 pm2 -v,如果报错&#xff0c;升级node版本 进入node项目目录,安装项目依赖 cnpm install 创建pm2任务 [rootlocalhost serv…

手写简易操作系统(二十)--实现堆内存管理

前情提要 前面我们实现了 0x80 中断&#xff0c;并实现了两个中断调用&#xff0c;getpid 和 write&#xff0c;其中 write 还由于没有实现文件系统&#xff0c;是个残血版&#xff0c;这一节我们实现堆内存管理。 一、arena 在计算机科学中&#xff0c;“arena” 内存管理通…

鸿蒙人才供需两旺、抓住职业“薪”机遇

鸿蒙生态崛起&#xff0c;人才需求旺盛&#xff01; 鸿蒙生态迅猛发展&#xff0c;人才供需均呈增长态势&#xff0c;鸿蒙开发工程师平均月薪显著领跑&#xff0c;显示出该领域的巨大潜力和吸引力&#xff0c;对于有志于鸿蒙开发的人才&#xff0c;这无疑是职业发展的黄金时期…

OpenHarmony实战:代码上库

前言 到达这一步好比临门一脚&#xff0c;意义很大&#xff01;您的代码被合入 OpenHarmony 平台&#xff0c;这是最后的一道关口&#xff0c;保证合入的是正确的&#xff0c;并且不会对系统造成意外。 避坑指南 1. 填写 ISSUE 和 PR 按照规范进行 ISSUE 和 PR 填写不规范会…

CentOs7.9中修改Mysql8.0.28默认的3306端口防止被端口扫描入侵

若你的服务器被入侵&#xff0c;可以从这些地方找到证据&#xff1a; 若有上述信息&#xff0c;300%是被入侵了&#xff0c;重装服务器系统以后再重装Mysql数据库&#xff0c;除了设置一个复杂的密码以外&#xff0c;还需要修改默认的Mysql访问端口&#xff0c;逃避常规端口扫描…

马斯克旗下xAI发布Grok-1.5,相比较开源的Grok-1,各项性能大幅提升,接近GPT-4!

本文原文来自DataLearnerAI官方网站&#xff1a;马斯克旗下xAI发布Grok-1.5&#xff0c;相比较开源的Grok-1&#xff0c;各项性能大幅提升&#xff0c;接近GPT-4&#xff01; | 数据学习者官方网站(Datalearner) 继Grok-1开源之后&#xff0c;xAI宣布了Grok-1.5的内测消息&…

Homebrew 镜像源配置

前言 当我们使用默认官方源时&#xff0c;经常会遇到以下问题 查看镜像配置 brew config 切换国内源 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 4.0 镜像配置 温馨提示&#xff1a;不要使用阿里云的 Homebrew 源&am…

使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件

一、使用CRXjs、Vite、Vue 开发 Chrome 多页面插件&#xff0c;手动配置 vite.config.ts 和 manifest.json 文件 一、创建 Vue 项目 1. 使用 Vite 创建 Vue 项目 npm create vitelatest # npm yarn create vite # yarn pnpm create vite # pnpm选择 Vue 和 TS 进入项目…

Spring IOC 容器循环依赖解决(三级缓存)

对于循环依赖的解决&#xff0c;首先得了解Spring IOC 容器的创建过程&#xff0c;在加载过程中&#xff0c;Bean 的实例化和初始化是分开的&#xff0c;所以在解决循环依赖的问题时&#xff0c;也是基于Bean 的实例化和初始化分开执行这一特点。 我们将实例化后的Bean 叫 半成…

【Web自动化】Selenium的使用(一)

目录 关于自动化测试selenium工作机制 selenium的使用selenium中常用API定位元素按id定位按名称定位按类名定位按标签名定位按CSS选择器定位按XPath定位示例 操作测试对象等待sleep休眠隐式等待显示等待 打印信息浏览器操作键盘事件鼠标事件切换窗口截图关闭浏览器 欢迎阅读本文…

Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用

博文目录 文章目录 Docker Desktop准备系统要求 (WSL 2 backend)在 Windows 上打开 WSL 2 功能先决条件开启 WSL 2 WSL下载安装启动配置使用镜像 Image卷积 Volumes容器 Containers 命令RedisMySQLPostGreSQL Docker Desktop Overview of Docker Desktop Docker Desktop 疑难解…

揭秘五五复制模式,助力平台用户快速裂变至百万级!

你是否时常为平台的用户增长缓慢而倍感压力&#xff1f;是否渴望找到一种方法&#xff0c;让平台用户迅速扩张&#xff0c;实现百万级用户量的突破&#xff1f;今天&#xff0c;我将为大家揭晓一种创新的商业模式——五五复制模式&#xff0c;它或许能成为你实现梦想的关键。 五…

位运算

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 目录 一.n的二进制表示中第k位x 二.通过lowbit操作返回x的最后一位1 1.lowbit实现&#xff1a;x & (-x) 2. lowbit具体作用 一.n的二进制表示中第k位x n 15 &#xff08;1111&#xff09;2 操作&#xff1a;1.x …

Redis主从同步机制

一、步骤如下&#xff1a;&#xff08;全量&#xff09; 1.从服务器向主服务器发送同步命令 sync&#xff1b; 2.主数据库接收到同步命令后&#xff0c;会执行 bgsave 命令&#xff0c;在后台生成一个 rdb 文件&#xff0c;并使用一个缓冲区记录从现在开始执行的所有写命令&a…

苏州金龙新V系客车创新打造,剑指新标杆

诞生于2004年的苏州金龙V系客车在20年时间里销售了6万多辆&#xff0c;用户超过5000家&#xff0c;用户的反复选择体现了它超强的产品力。3月下旬&#xff0c;全新打造的苏州金龙新V系客车震撼登场&#xff0c;拥趸们发现&#xff0c;该系列客车在智能化、网联化及设计语言方面…

如何使用剪映专业版剪辑视频

1.操作界面功能介绍 2.时间线的使用 拖动前端后端缩减时长&#xff0c;有多个素材可以拖动调节前后顺序拼接。 分割视频 删除

基于无迹卡尔曼滤波的路面附着系数估计算法

基于无迹卡尔曼滤波的路面附着系数估计算法 附赠自动驾驶学习资料和量产经验&#xff1a;链接 路面附着系数作为车辆底盘动力学反馈控制中的重要变量&#xff0c;对它的精确估计直接关系到控制系统的平稳运行和车辆行驶安全。但是由于无法通过直接测量获得某些状态参数或者测…

手册更新 | RK3588开发板适配Android13系统

iTOP-RK3588开发板使用手册更新&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 本次更新内容为《iTOP-3588开发板源码编译手册》&#xff0c;RK3588开发板适配了Android13系统&#xff0c;手册同步添加了And…

@所与人「要复现」文献调研与需求收集

鉴于上次的「下一个要知道什么」调查结果&#xff0c;我发现「复现文献」的呼声不是一般的高&#xff0c;那是相当的高呐&#xff01; 所以&#xff01;新的调查又来了&#xff01;文献数量和类型实在是太太太太太太庞大了&#xff01;所以我就想征询一下大家的需求&#xff0c…