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

Mysql-学习笔记

文章目录

    • 1. 数据库
        • 1.1 Mysql安装及常用代码
        • 1.2 SQL介绍
        • 1.3 SQL分类
          • 1. DDL-操作数据库,表
          • 2. DML-对表中的数据进行增删改
          • 3. DQL-对表中的数据进行查询
            • 条件查询
            • 模糊查询
            • 排序查询
            • 分组查询
            • 分页查询
          • 4. DCL-对数据库进行权限控制
            • 外键约束
            • 表关系-多对多
            • 多表查询
            • 事务

1. 数据库

1.1 Mysql安装及常用代码

https://blog.csdn.net/meini32/article/details/129047472

1.2 SQL介绍

数据库

  • 存储数据的仓库,数据是有组织的进行存储
  • 英文:DataBase,简称DB

数据库管理系统

  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称DBMS

结构化查询语言

  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准
  • 英文: Structured Query Language,简称SQL。

关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库
优点
1.都是使用表结构,格式一致,易于维护。
2.使用通用的SQL语言操作,使用方便,可用于复杂查询。
3.数据存储在磁盘中,安全。

常见的关系型数据库管理系统

  • Oracle:收费的大型数据库
  • MySQL:开源免费中小型数据库
  • SQL Server:收费中型

1.3 SQL分类

  1. DDL(Data Definition Language)数据定义语言
    用来定义数据库对象:数据库,表,列等
  2. DML(Data Manipulation Language)数据操作语言
    用来对数据库中表的数据进行增删改
  3. DQL(Data Query Language)数据查询语言
    用来查询数据库中表的记录(数据)
  4. DCL(Data Control Language)数据控制语言
    用来定义数据库的访问权限和安全级别,及创建用户
1. DDL-操作数据库,表

DDL-操作数据库

1.查询
SHOW DATABASES;#2.创建
CREATE DATABASE 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称;   (判断)3.删除
DROP DATABASE 数据库名称;
DROP DATABASE IF EXITS 数据库名称;     (判断)4.使用数据库
SELECT DATABASE();                 (查看当前数据库名称)
USE 数据库名称;                           (使用)

DDL-操作数据表

# 1.创建
CREATE TABLE 表名(字段1 数据类型1,字段2 数据类型2,字段3 数据类型3,字段4 数据类型4);#2.查询
SHOW TABLES;             (查看当前数据库的所以表)
DESC 表名称;              (查看表结构)3.修改
ALTER TABLE 表名 RENAME TO 新的表名;             (修改表名)
ALTER TABLE 表名 ADD 列名 数据类型;			    (添加一列)
ALTER TABLE 表名 MODIFY 列名 新数据类型;          (修改列的数据类型)
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;    (修改列明和数据类型)
ALTER TABLE 表名 DROP 列名;                       (删除列)4.删除
DROP TABLE 表名;                     (直接删除)
DROP TABLE IF EXITSTS 表名;           (判断)

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

2. DML-对表中的数据进行增删改

1添加数据

1.给指定列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES (1,2...);2.给全部列添加数据
INSERT INTO 表名VALUES(1,2,...);3.批量添加数据
INSERT INTO 表名 (列名1,列名2..VALUES(1,2...),(1,2...),(1,2) ...;
INSERT INTO 表名 VALUES (1,2....),(1,2,...),(1,2... ..;

2 修改表数据

UPDATE 表名SET列名1=1,列名2=2,... [ WHERE 条件];

3 删除表数据

DELETE FROM 表名 [WHERE 条件] ;

4 创建一个学生表并添加数据

-- 删除stu表
drop table if exists stu;-- 创建stu表
CREATE TABLE stu (id int, -- 编号name varchar(20), -- 姓名age int, -- 年龄sex varchar(5), -- 性别address varchar(100), -- 地址math double(5,2), -- 数学成绩english double(5,2), -- 英语成绩hire_date date -- 入学时间
);-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) 
VALUES 
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');

在这里插入图片描述

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

3. DQL-对表中的数据进行查询
------------------查询语法-------------------SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
HAVING condition
ORDER BY column1, column2, ... ASC|DESC;
LIMIT 分页限定;
  • SELECT:指定要检索的列名。.
  • FROM:指定要检索数据的表名。.
  • WHERE:指定检索数据的条件。
  • GROUP BY:按指定的列对结果进行分组。
  • HAVING:指定分组的条件。
  • ORDER BY:按指定的列对结果进行排序。
1.查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;2.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;3.起别名
AS: AS也可以省略
条件查询
SELECT * FROM stu;-- 条件查询 =====================-- 1.查询年龄大于20岁的学员信息
-- 2.查询年龄大于等于20岁的学员信息
-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息
-- 5. 查询年龄等于18岁的学员信息
-- 6. 查询年龄不等于18岁的学员信息
-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
-- 8. 查询英语成绩为 null的学员信息  
-- 注意: null值的比较不能使用 = != 。需要使用 is  is not
SELECT * FROM stu;-- 条件查询 =====================-- 1.查询年龄大于20岁的学员信息
SELECT * FROM stu WHERE age>20;-- 2.查询年龄大于等于20岁的学员信息SELECT * FROM stu WHERE age>=20;-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
SELECT * FROM stu WHERE age>=20 AND age<=30;
SELECT * FROM stu WHERE age>=20 && age<=30;
SELECT * FROM stu WHERE age BETWEEN 20 AND 30;-- 4.查询入学日期在'1998-09-01''1999-09-01'  之间的学员信息
SELECT * FROM stu WHERE hire_date BETWEEN '1998-09-01' AND '1999-09-01';-- 5. 查询年龄等于18岁的学员信息
SELECT * FROM stu WHERE age = 18;-- 6. 查询年龄不等于18岁的学员信息
SELECT * FROM stu WHERE age != 18;
SELECT * FROM stu WHERE age <> 18;-- 7. 查询年龄等于18岁  或者 年龄等于22岁的学员信息
SELECT * FROM stu WHERE age = 18 OR age=22;
SELECT * FROM stu WHERE age = 18 || age=22;
SELECT * FROM stu WHERE age in (18,22);-- 8. 查询英语成绩为 null的学员信息
SELECT * FROM stu WHERE english is null;
SELECT * FROM stu WHERE english is not null;-- 注意: null值的比较不能使用 = != 。需要使用 is  is not
模糊查询
-- 模糊查询 like =====================
/*通配符:(1)_:代表单个任意字符(2)%:代表任意个数字符
*/-- 1. 查询姓'马'的学员信息
-- 2. 查询第二个字是'花'的学员信息   
-- 3. 查询名字中包含 '德' 的学员信息
SELECT * FROM stu;-- 1. 查询姓'马'的学员信息
SELECT * FROM stu WHERE name like '马%';-- 2. 查询第二个字是'花'的学员信息   
SELECT * FROM stu WHERE name like '_花%';-- 3. 查询名字中包含 '德' 的学员信息SELECT * FROM stu WHERE name like '%德%';
排序查询
/*排序查询:* 语法:SELECT 字段列表 FROM 表名  ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;* 排序方式:* ASC:升序排列(默认值)* DESC:降序排列
*/-- 1.查询学生信息,按照年龄升序排列 
-- 2.查询学生信息,按照数学成绩降序排列
-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
-- 1.查询学生信息,按照年龄升序排列 
SELECT * FROM stu ORDER BY age ASC;-- 2.查询学生信息,按照数学成绩降序排列
SELECT * FROM stu ORDER BY math DESC;-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
SELECT * FROM stu ORDER BY math DESC,english ASC;
分组查询
/*分组函数SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;
*/
-- 1. 查询男同学和女同学各自的数学平均分(注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意)
-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数
-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
-- 4.查询男同学和女同学各自的数学平均分,以及各自人数(要求:分数低于70分的不参与分组,分组之后人数大于2个的。)
-- 1. 查询男同学和女同学各自的数学平均分
SELECT sex '性别', AVG(math) '数学平均分' FROM stu GROUP BY sex;-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数
SELECT sex '性别', AVG(math) '数学平均分',COUNT(*) '人数' FROM stu GROUP BY sex;-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex '性别', AVG(math) '数学平均分',COUNT(*) '人数' FROM stu  WHERE math>=70 GROUP BY sex;-- 4.查询男同学和女同学各自的数学平均分,以及各自人数
-- (要求:分数低于70分的不参与分组,分组之后人数大于2个的。)
SELECT sex '性别', AVG(math) '数学平均分',COUNT(*) '人数' FROM stu  WHERE math>=70 GROUP BY sex HAVING COUNT(*)>2;
分页查询
SELECT * FROM stu;/*分页查询:SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数* 起始索引:从0开始*/
-- 1. 从0开始查询,查询3条数
-- 2. 每页显示3条数据,查询第1页数据
-- 3. 每页显示3条数据,查询第2页数据
-- 4. 每页显示3条数据,查询第3页数据
-- 起始索引 = (当前页码 - 1) * 每页显示的条数
-- 1.0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;-- 2. 每页显示3条数据,查询第1页数据
SELECT * FROM stu LIMIT 0,3;-- 3. 每页显示3条数据,查询第2页数据
SELECT * FROM stu LIMIT 3,3;-- 4. 每页显示3条数据,查询第3页数据
SELECT * FROM stu LIMIT 6,3;-- 起始索引 = (当前页码 - 1* 每页显示的条数
4. DCL-对数据库进行权限控制

约束的概念

约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性

约束的分类

约束名称描述关键字
非空约束保证列中所有数据不能有null值NOT NULL
唯一约束保证列中所有数据各不相同UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
检查约束保证列中的值满足某—条件CHECK
默认约束保存数据时,未指定值则采用默认值DEFAULT
外键约束外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性FOREIGN KEY
DROP TABLE IF EXISTS emp;-- 员工表
CREATE TABLE emp (id INT PRIMARY KEY auto_increment, -- 员工id,主键且自增长ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一joindate DATE NOT NULL , -- 入职日期,非空salary DOUBLE(7,2) NOT NULL , -- 工资,非空bonus DOUBLE(7,2) DEFAULT 0 -- 奖金,如果没有奖金默认为0);
外键约束
/*外键约束:* 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性* -- 创建表时添加外键约束CREATE TABLE 表名(列名 数据类型,…[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名) ); -- 建完表后添加外键约束ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);-- 删除约束ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;*/
-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;-- 部门表
CREATE TABLE dept(id int primary key auto_increment,dep_name varchar(20),addr varchar(20)
);
-- 员工表 
CREATE TABLE emp(id int primary key auto_increment,name varchar(20),age int,dep_id int,-- 添加外键 dep_id,关联 dept 表的id主键CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id));-- 删除外键
alter table emp drop FOREIGN key fk_emp_dept;-- 建完表后,添加外键
alter table emp add CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id);
表关系-多对多
/*多对多:* 如:订单 和 商品* 一个商品对应多个订单,一个订单包含多个商品实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
*/
-- 删除表
DROP TABLE IF EXISTS tb_order_goods;
DROP TABLE IF EXISTS tb_order;
DROP TABLE IF EXISTS tb_goods;-- 订单表
CREATE TABLE tb_order(id int primary key auto_increment,payment double(10,2),payment_type TINYINT,status TINYINT
);-- 商品表
CREATE TABLE tb_goods(id int primary key auto_increment,title varchar(100),price double(10,2)
);-- 订单商品中间表
CREATE TABLE tb_order_goods(id int primary key auto_increment,order_id int,goods_id int,count int
);-- 建完表后,添加外键
alter table tb_order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES tb_order(id);
alter table tb_order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES tb_goods(id);
多表查询
select * from emp;-- 多表查询select * from emp , dept;-- 笛卡尔积 : 有 A ,B两个集合 取 A,B所有的组合情况-- 消除无效数据-- 查询emp 和 dept 的数据 ,emp.dep_id = dept.didselect * from emp , dept where emp.dep_id = dept.did;
----------------- -------------连接----------------------------------------
1. 查询 emp的 name, gender,dept表的dname
SELECTemp. NAME,emp.gender,dept.dname
FROMemp,dept
WHEREemp.dep_id = dept.did;
--------------------------------------------------------------------------
2. 给表 起别名
SELECTt1. NAME,t1.gender,t2.dname
FROMemp t1,dept t2
WHEREt1.dep_id = t2.did;
-------------------------------显示内连接---------------------------------
3.显式内连接select * from emp inner join dept on emp.dep_id = dept.did;
select * from emp  join dept on emp.dep_id = dept.did;-----------------------------------外连接------------------------------------
-- 左外连接
-- 查询emp表所有数据和对应的部门信息select * from emp left join dept on emp.dep_id = dept.did;-- 右外连接
-- 查询dept表所有数据和对应的员工信息
select * from emp right join dept on emp.dep_id = dept.did;
select * from dept left join emp on emp.dep_id = dept.did;----------------------------------子查询---------------------------------------
select * from emp;-- 1. 查询猪八戒的工资
select salary from emp where name = '猪八戒';-- 2. 查询工资高于猪八戒的员工信息
select * from emp where salary > 3600;
select * from emp where salary > (select salary from emp where name = '猪八戒');-- 查询 '财务部''市场部' 所有的员工信息
-- 查询 '财务部' 所有的员工信息select did from dept where dname = '财务部' or dname = '市场部';
select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');-- 查询入职日期是 '2011-11-11' 之后的员工信息和部门信息
-- 查询入职日期是 '2011-11-11' 之后的员工信息select * from emp where join_date > '2011-11-11' ;
select * from (select * from emp where join_date > '2011-11-11' ) t1, dept where t1.dep_id = dept.did;

案例分析


-- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
/*分析:1. 员工编号,员工姓名,工资 信息在emp 员工表中2. 职务名称,职务描述 信息在 job 职务表中3. job 职务表 和 emp 员工表 是 一对多的关系 emp.job_id = job.id*/
-- 隐式内连接
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description
FROMemp,job
WHEREemp.job_id = job.id;SELECT*
FROMemp;SELECT*
FROMjob;-- 显式内连接
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description
FROMemp
INNER JOIN job ON emp.job_id = job.id;-- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
/*分析:1. 员工编号,员工姓名,工资 信息在emp 员工表中2. 职务名称,职务描述 信息在 job 职务表中3. job 职务表 和 emp 员工表 是 一对多的关系 emp.job_id = job.id4. 部门名称,部门位置 来自于 部门表 dept5. dept 和 emp 一对多关系 dept.id = emp.dept_id*/-- 隐式内连接
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
FROMemp,job,dept
WHEREemp.job_id = job.idand dept.id = emp.dept_id
;-- 显式内连接
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
FROMemp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON dept.id = emp.dept_id
;-- 3.查询员工姓名,工资,工资等级
/*分析:1. 员工姓名,工资 信息在emp 员工表中2. 工资等级 信息在 salarygrade 工资等级表中3. emp.salary >= salarygrade.losalary  and emp.salary <= salarygrade.hisalary*/SELECTemp.ename,emp.salary,t2.*
FROMemp,salarygrade t2
WHEREemp.salary >= t2.losalary
AND emp.salary <= t2.hisalary-- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级/*分析:1. 员工编号,员工姓名,工资 信息在emp 员工表中2. 职务名称,职务描述 信息在 job 职务表中3. job 职务表 和 emp 员工表 是 一对多的关系 emp.job_id = job.id4. 部门名称,部门位置 来自于 部门表 dept5. dept 和 emp 一对多关系 dept.id = emp.dept_id6. 工资等级 信息在 salarygrade 工资等级表中7. emp.salary >= salarygrade.losalary  and emp.salary <= salarygrade.hisalary
*/
SELECTemp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc,t2.grade
FROMemp
INNER JOIN job ON emp.job_id = job.id
INNER JOIN dept ON dept.id = emp.dept_id
INNER JOIN salarygrade t2 ON emp.salary BETWEEN t2.losalary and t2.hisalary;-- 5.查询出部门编号、部门名称、部门位置、部门人数
/*分析:1. 部门编号、部门名称、部门位置 来自于部门 dept 表2. 部门人数: 在emp表中 按照dept_id 进行分组,然后count(*)统计数量3. 使用子查询,让部门表和分组后的表进行内连接
*/
select * from dept;select dept_id, count(*) from emp group by dept_id;SELECTdept.id,dept.dname,dept.loc,t1.count
FROMdept,(SELECTdept_id,count(*) countFROMempGROUP BYdept_id) t1
WHEREdept.id = t1.dept_id
事务

事务的特点:一致性、原子性、隔离性、永久性;

select * from account;-- 开启事务
BEGIN;
-- 转账操作
-- 1. 查询李四账户金额是否大于500-- 2. 李四账户 -500
UPDATE account set money = money - 500 where name = '李四';-- 出现异常了...
-- 3. 张三账户 +500
UPDATE account set money = money + 500 where name = '张三';-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;-- 查看事务的默认提交方式
SELECT @@autocommit;
-- 1 自动提交  0 手动提交
-- 修改事务提交方式
set @@autocommit = 0;

相关文章:

Mysql-学习笔记

文章目录 1. 数据库1.1 Mysql安装及常用代码1.2 SQL介绍1.3 SQL分类1. DDL-操作数据库&#xff0c;表2. DML-对表中的数据进行增删改3. DQL-对表中的数据进行查询条件查询模糊查询排序查询分组查询分页查询 4. DCL-对数据库进行权限控制外键约束表关系-多对多多表查询事务 1. 数…...

【雕爷学编程】Arduino动手做(187)---1.3寸OLED液晶屏模块2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…...

Windows用户如何安装新版本cpolar内网穿透

Windows用户如何安装新版本cpolar内网穿透 文章目录 Windows用户如何安装新版本cpolar内网穿透 在科学技术高度发达的今天&#xff0c;我们身边充斥着各种电子产品&#xff0c;这些电子产品不仅为我们的工作带来极大的便利&#xff0c;也让生活变得丰富多彩。我们可以使用便携的…...

MacBookPro安装Win10,Wifi不能用了,触控板不能用了(2)

一、问题 去年在MacBookPro上装过Win10&#xff0c;当初只分配了60G空间。各方面原因需要重装系统&#xff0c;上个月装了一晚上&#xff0c;也无法连接Wifi&#xff0c;触控板只能当鼠标左键用。 后来发现是没有相关驱动造成的&#xff0c;于是从Mac系统联网找到网卡驱动&am…...

理解C++中变量的作用域

理解C中变量的作用域 常规变量&#xff08;如前面定义的所有变量&#xff09;的作用域很明确&#xff0c;只能在作用域内使用它们&#xff0c;如果您在作用域外使用它们&#xff0c;编译器将无法识别&#xff0c;导致程序无法通过编译。在作用域外面&#xff0c;变量是未定义的…...

vue+element-ui给全局请求设置一个loading样式

老项目后台管理&#xff0c;要在每个页面请求的时候都添加一个loading&#xff0c;为了统一和防止一个页面多次请求页面出现闪烁的情况同意在request.js中添加了一个全局loading。 想要的效果&#xff1a; 1.在请求的时候创建一个loading样式&#xff0c;请求结束是关闭。 2…...

传球游戏

题目描述 上体育课的时候&#xff0c;小蛮的老师经常带着同学们一起做游戏。这次&#xff0c;老师带着同学们一起做传球游戏。 游戏规则是这样的&#xff1a;n个同学站成一个圆圈&#xff0c;其中的一个同学手里拿着一个球&#xff0c;当老师吹哨子时开始传球&#xff0c;每个…...

智能卡通用安全检测指南 思度文库

范围 本标准规定了智能卡类产品进行安全性检测的一般性过程和方法。 本标准适用于智能卡安全性检测评估和认证。 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件&#xff0c;仅注日期的版本适用于本文件。凡是不注日期的引用文件&#xff0c;…...

Maven设置阿里云路径(防止加载过慢)

<?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding …...

JavaScript原型链污染漏洞复现与防范

目录 什么是原型链污染漏洞&#xff1f; 复现原型链污染漏洞 防范原型链污染漏洞 什么是原型链污染漏洞&#xff1f; 原型链污染是JavaScript中的一种安全漏洞&#xff0c;利用该漏洞可以修改对象的原型&#xff0c;从而影响对象及其属性的行为。攻击者可以通过修改原型链来…...

初识MySQL数据库之用户管理

目录 一、用户管理 二、用户 1. 用户信息 2. 创建用户 3. 用户登录测试 4. 删除用户 5. 设置用户远端登录 6. 修改密码 6.1 修改当前用户的密码 6.2 root用户修改指定用户的密码 三、权限 1. 数据库中的各个权限含义 2. 给用户授权 3. 查看用户拥有权限 4. 授权…...

JVM 类文件结构(class文件)

JVM 本文链接&#xff1a;https://blog.csdn.net/feather_wch/article/details/132116849 类文件结构 1、class文件的组成 无符号数&#xff1a;基本数据类型 u1 u2 u3 u4 描述 数字字符串索引引用 表&#xff1a;复合数据类型&#xff0c;无符号数 表组&#xff0c; _inf…...

PAT乙题1011

答案 #include<iostream> #include<cstdio> using namespace std; typedef long long int ll; int main() {int n,cnt1;cin >> n;while (n--){ll a, b, c; cin >> a >> b >> c;printf("Case #%d: ", cnt);a b > c ? puts(…...

【并发专题】单例模式的线程安全(进阶理解篇)

目录 背景前置知识类加载运行全过程 单例模式的实现方式一、饿汉式基本介绍源码分析 二、懒汉式基本介绍源码分析改进 三、懒汉式单例终极解决方案&#xff08;静态内部类&#xff09;&#xff08;推荐使用方案&#xff09;基本介绍源码分析 感谢 背景 最近学习了JVM之后&…...

无涯教程-Perl - if...elsif...else语句函数

if 语句后可以跟可选的 elsif ... else 语句&#xff0c;这对于使用单个if ... elsif语句测试各种条件非常有用。 if...elsif...else - 语法 Perl编程语言中的 if ... elsif...else语句的语法是- if(boolean_expression 1) {# Executes when the boolean expression 1 is tr…...

uniapp 实现滑动元素并下方有滚动条显示

用uniapp实现下图的样式 代码如下&#xff1a; <template><view class"content"><view class"data-box" ref"dataBox" touchend"handleEnd"><view class"data-list"><view class"data-ite…...

QT充当客户端模拟浏览器等第三方客户端对https进行双向验证

在 ssl单向证书和双向证书校验测试及搭建流程 文章中&#xff0c;已经做了基于https的单向认证和双向认证&#xff0c;&#xff0c;&#xff0c; 在进行双向认证时&#xff0c;采用的是curl工具或浏览器充当客户端去验证。 此次采用QT提供的接口去开发客户端向服务器发送请求&a…...

【JVM】 垃圾回收篇——自问自答(1)

Q什么是垃圾&#xff1a; 运行程序中&#xff0c;没用任何指针指向的对象。 Q为什么需要垃圾回收&#xff1f; 内存只分配&#xff0c;不整理回收&#xff0c;迟早会被消耗完。 内存碎片的整理&#xff0c;为新对象腾出空间 没有GC程序无法正常进行。 Q 哪些区域有GC&#…...

Image Line FL Studio v21.0.3.3517 Producer版全插件版WIN免费下载完整版

FL Studio 21&#xff0c;也称为 Fruity Loops 21&#xff0c;是一款功能强大的数字音频工作站&#xff0c;被世界各地的音乐制作人和 DJ 使用。无论您是新手还是经验丰富的制作人&#xff0c;FL Studio 21都能为您提供创作专业品质音乐所需的工具。在这篇博文中&#xff0c;我…...

PHP8条件控制语句-PHP8知识详解

我们昨天说了流程控制的结构有顺序结构、选择结构和循环结构。选择结构就是条件结构。 条件控制语句就是对语句中不同条件的值进行判断&#xff0c;进而根据不同的条件执行不同的语句。 在本文中&#xff0c;学习的是if语句、if…else语句、if…elseif语句和switch语句。 1、…...

【PHP代码审计】ctfshow web入门 php特性 93-104

ctfshow web入门 php特性 93-104 web 93web 94web 95web 96web 97web 98web 99web 100web 101web 102web 103web 104 web 93 这段PHP代码是一个简单的源码审计例子&#xff0c;让我们逐步分析它&#xff1a; include("flag.php");: 这行代码将flag.php文件包含进来。…...

CSS元素的显示模式

1、现在我想做成小米左侧边栏这样的效果&#xff0c;该怎么做呢&#xff1f; 2、小米商城触碰之后会显示出新的商品案例 3、一碰到之后会出现这个列表 4、这里涉及到了元素显示模式&#xff1a; 5、用人进行划分可以分为男人和女人&#xff0c;根据男人和女人的特性进行相应的…...

Go strings.Title方法被废弃(Deprecated)

strings.Title的使用 在传统中&#xff0c;我们可以通过如下形式将每个单词的首字母变成大写字母&#xff0c;示例如下&#xff1a; func TestTitle(t *testing.T) { fmt.Println(strings.Title("hello world")) fmt.Println(strings.Title("hell golang&qu…...

vuejs源码分析之全局API(vm.$off)

vue在初始化的时候会给vue对象本身挂载一些全局的api。今天我们一个一个来看这些api。 vm.$off方法 这个方法是用来移除自定义事件监听器。 他的用法 vm.$off(event, calback)第一个参数event取值可以是string字符串&#xff0c;也可以是Array<string>也就是说既可以删…...

elasticSearch常见的面试题

常见的面试问题 描述使用场景 es集群架构3个节点&#xff0c;根据不同的服务创建不同的索引&#xff0c;根据日期和环境&#xff0c;平均每天递增60*2&#xff0c;大约60Gb的数据。 调优技巧 原文参考&#xff1a;干货 | BAT等一线大厂 Elasticsearch面试题解读 - 掘金 设计阶…...

第一课-前提-Stable Diffusion 教程

学习 SD 的前提是电脑配置! SD 参考配置: 建议选择台式机 i5 CPU, 内存16GB,N卡 RTX3060, 8G显存以上的配置(最低配) 在此基础上的配置越高越好。 比如,cpu i7 更好,显卡能有 RTX4090 更好,32显存要能有最好,嘿嘿嘿。 如何查看自己的显卡配置? Win+R 输入 “dxdiag…...

Python 开发工具 Pycharm —— 使用技巧Lv.2

pydoc是python自带的一个文档生成工具&#xff0c;使用pydoc可以很方便的查看类和方法结构 本文主要介绍&#xff1a;1.查看文档的方法、2.html文档说明、3.注释方法、 一、查看文档的方法 **方法1&#xff1a;**启动本地服务&#xff0c;在web上查看文档 命令【python3 -m…...

代码随想录第39天 | 62. 不同路径、63.不同路径II

62. 不同路径 动态规划五部曲&#xff1a; dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路径。想要求dp[i][j]&#xff0c;只能有两个方向来推导出来&#xff0c;即dp[i - 1][j] 和 dp[i][j - 1]。dp[i]…...

QMT入门—初识QMT

对于普通投资者来说&#xff0c;每天实时盯盘实在是无聊又无趣&#xff0c;特别是临时有事还会错过行情。如果能把自己的投资策略用代码实现&#xff0c;通过程序来自动买卖股票那该有多好&#xff0c;这样就不会错过行情也不会不按交易纪律来操作了。 解决办法有两种&#xf…...

C 语言的 return 语句

有返回值的函数要带 return 语句, return 后面是一个表达式, return 语句将表达式的值返回给主调函数. 一个函数也可以有多个 return 语句, 比如存在于不同的分支中, 但只能有一条 return 语句被执行, 然后程序的控制权就从被调函数传到主调函数. 对于有返回值但没有带 retur…...