【SQL学习笔记】
Pycharm社区版的页面中无database选项?
1、进入Setting-Pluggins窗口,输入database navigator
2、安装后,重启即可
MySQL 的架构共分为两层:Server 层和存储引擎层
1、Server 层负责建⽴连接、分析和执⾏ SQL
2、存储引擎层负责数据的存储和提取, ⽀持 InnoDB、MyISAM、Memory 等多个存储引擎, 现在最常⽤的存储引擎是 InnoDB,其⽀持索引类型是 B+ 树索引。
数据库
创建数据库
CREATE DATABASE [ IF NOT EXISTS] 库名;
此处添加 [ IF NOT EXISTS] 时,若存在同名数据库,不会创建库且不会报错;
不添加会报错提示,下同。
查看数据库
SHOW DATABASES;
必须是databases,复数形式。
删除数据库
DROP DATABASE 库名;
连接到数据库(需要进入特定数据库)
USE 库名;
修改数据库编码集
ALTER DATABASE 库名 CHARACTER SET = charset_name;
如:ALTER DATABASE XXX CHARACTER SET=utf8;关闭再打开数据库后,数据库编码改变。
表格
创建表
CREATE TABLE [ IF NOT EXISTS] 表名(
列名 数据类型 约束,
列名 数据类型 约束
)[ENGINE=engine_name]|[DEFAULT] CHARACTER SET[= charset_name];
如:CREATE TABLE XXX(
id INT,
name VARCHAR(50),
age INT
) DEFAULT CHARACTER SET utf-8;
查看数据库所有的表
SHOW TABLES;
查看具体表
SHOW CREATE TABLE 表名;
删除表
通过外键约束连接在一起的表不能被删除。删除表之前,需先删除约束。
DROP TABLE 表名;
复制表
CREATE TABLE 新表名 AS (SELECT * FROM 旧表名);
只复制表结构,不需要数据
CREATE TABLE 新表名 LIKE 旧表名;
修改表名
ALTER TABLE 旧表名 RENAME [TO|AS] 新表名;
添加列
ALTER TABLE 表名 ADD [COLUMN] 列定义;
如:ALTER TABLE XXX ADD COLUMN ip VARCHAR(50);
修改列名
ALTER TABLE 表名 CHANGE [COLUMN] 原列名 新列名 列定义;
如:ALTER TABLE XXX ADD COLUMN ip ip_person VARCHAR(50);
修改列类型
ALTER TABLE 表名 MODIFY [COLUMN] 列名 列定义;
ALTER TABLE XXX MODIFY COLUMN ip_person VARCHAR(20);
删除列
ALTER TABLE 表名 DROP [COLUMN] 列名;
插入数据行
INSERT INTO 表名 [(列名)] VALUES (值列表);
如:INSERT INTO XXX (id,name) VALUES (1,'aki');
注意:
1、每次插入一行,不能只插入半行或几列。
2、数据值的数据类型、精度与对应列匹配,否则MySQL可能作自动处理。
3、若列是自增列,一般不手动指定该列指定值。
4、设计表的时候指定了某列NOT NULL,但插入数据时未提供值,MySQL自动处理为一个默认值。
一次插入多行
INSERT INTO 表名 [(列名)] VALUES (值列表1), (值列表1),(值列表1);
更新数据行
UPDATE 表名 SET 列名=新值 [WHERE 条件];
如:
更新列单个元素
UPDATE XXX SET name='googole' WHERE name='aki';
更新列部分元素
UPDATE XXX SET id= id + 5 WHERE id <= 10;
更新列全部元素
UPDATE XXX SET name='googole';
删除数据行
DELETE FROM 表名 [WHERE 条件];
如:
删除所有数据
DELETE FROM;
删除符合条件数据
DELETE FROM XXX WHERE name='aki';
删除表所有数据
TRUNCATE TABLE 表名
功能类似语句DELETE FROM;
注意:
1、不能用于有外键约束的表。
2、表结构、列、约束不被改动。
3、标识列重新开始编号。
4、DELETE 按条删除数据行,TRUNCATE一次性删除数据表。
5、DELETE手动提交事务、可在事务中回滚,TRUNCATE自动提交事务、无法回滚。
查询语句
SELECT 列名|* FROM 表名 [WHERE 查询条件] [ORDER BY 排序的列名 [ASC|DESC]];
如:SELECT name FROM XXX;
注意:
1、大小写不敏感。
2、可写为一行或多行;但关键字不能跨行。
3、子语句独立行编写
计算
如:SELECT id, id+5 FROM XXX
定义列的别名
若别名中存在空格,需要使用引号
如:
SELECT name AS 姓名, FROM XXX;
SELECT name 姓名, FROM XXX;
SELECT name AS '姓 名', FROM XXX;
使用DISTINCT关键字删除重行
如:SELECT DISTINCT name FROM XXX;
不能使用DISTINCT多列排除重复
如:SELECT DISTINCT name, idcard FROM XXX;
以上语句表名name,idcard组合无重复,不能保证单列无重复
限制查询行数
SELECT 列名1,列名2,…… FROM LIMIT OFFSET,COUNT;
OFFSET指定要返回的第一行的偏移量。默认第一行偏移量为0。
COUNT指定返回最大行数。
如:
SELECT * FROM XXX LIMIT 5,6; 从偏移量为5的行开始取6行。
SELECT * FROM XXX LIMIT 6 = SELECT * FROM XXX LIMIT 0,6; 默认第一行偏移量为0。
查询条件
预算符 | 含义 |
BETWEEN …… AND…… | 两值之间(包含) |
IN(list) | 匹配列出的值 |
LIKE | 匹配一个字符模式 |
IS NULL | 空值 |
= | 相等 |
AND | 组合条件and |
OR | 组合条件or |
NOT | 条件为假返回真值 |
如:
SELECT idnumber FROM XXX WHERE idnumber BETWEEN 10023 AND 50023;
SELECT idnumber FROM XXX WHERE idnumber IN(10023,20023,30023,40023,50023);
SELECT idnumber FROM XXX WHERE idnumber IS NULL;
LIKE执行通配查询
查询条件可包含文字字符或数字。
% 表示0或多个字符。
_ 表示1个字符。
如:
SELECT idnumber FROM XXX WHERE idnumber LIKE ‘50023%’;
以上返回以50023开头的idnumber
SELECT idnumber FROM XXX WHERE idnumber LIKE ‘_0023%’;
以上返回第2-4位字符为0023的idnumber
排序
ASC:升序,默认升序
DESC:降序
ORDER BY语句必须放在SELECT语句整体最后
如:SELECT name, idnumber FROM XXX ORDER BY idnumber DESC;
可使用别名排序
SELECT name, id+5 id_re FROM XXX ORDER BY id_re;
可使用多列排序
先排序第一个条件,再在基础上排序第二个条件,由此进行。
SELECT name, id, idnumber, idcard FROM XXX ORDER BY idnumber ASC, idcard DESC;
聚合分组
聚合函数针对进行运算的所有记录返回唯一一个结果。
分组函数group by对记录进行分组。分组函数会省略列中的空值
COUNT:返回结果集中行的数目
COUNT(*)返回表中记录数
COUNT(列名)返 回非空记录数
SELECT COUNT(计数范围) FROM 表名;
SUM:返回结果集中所有值的总和
AVG:返回结果集中所有值的平均值
MAX:返回结果集中所有值的最大值,可用于日期类型
MIN:返回结果集中所有值的最小值,可用于日期类型
IFNULL函数强制分组函数包括空值
如:SELECT AVG(IFNULL(id, 0)) 使用0代替空值进行计算
SELECT后出现聚合函数,该位置只能出现其他聚合函数和分组依据列,普通列仅显示第一行值。
如:SELECT idcard,name, AVG(id) FROM XXX GROUP BY idcard
此处普通列name仅显示第一行值,无具体意义
HAVING子句对分组进行过滤
放在GROUP BY后面,ORDER BY 之前
SELECT idcard, AVG(id) FROM XXX GROUP BY idcard HAVING SUM(idcard) > 1000;
语句执行顺序
SELECT AVG(列名) FROM XXX
WHERE 条件
GROUP BY 列名
HAVING 条件
ORDER BY 列名 ASC/DESC
LIMIT OFFSET,COUNT
①先执行FROM子句,从表中加载数据,在内存形成一张虚拟表
②若有WHERE子句,根据条件,在虚拟表中去掉不满足条件行
③根据GROUP BY子句指定的分组列,进行分组
④计算分组中SELECT子句中聚合函数值,并为每组生成查询结果中的一行
⑤若有HAVING子句,根据条件,分组计算、聚合计算的结果再次过滤
⑥若有ORDER BY子句,根据列,对结果排序
多行子查询
运算符 | 解释 |
IN | 在子查询中 |
ANY | 其中一个值满足条件返回True |
ALL | 其中任意值满足条件返回True |
多表连接查询
类型
内连接INNER JOIN
外连接LEFT JOIN 和 RIGHT JOIN
内连接
在WHERE子句或者JOIN ON中写连接条件。利用主键与外键相等的特性。
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column = table2.column;
SELECT table1.column, table2.column
FROM table1 INNER JOIN table2
ON table1.column = table2.column;
连接查询必须指定连接条件,否则会形成笛卡尔积结果。
多表连接必须限定列名,即table.column。
外连接
LEFT JOIN中,会返回左表的所有行,即使坐标中有不符合连接条件的记录,也会在查询结果中显示。RIGHT JOIN相似。
约束
数据类型
类型 | 精度范围与格式 | 用途 | |
INT(n) | (-2147483648, 2147483647) | (0,4294967295) | 整数 |
CHAR(n) | 0 - 255 | 字符型 | 定长字符 |
VARCHAR(n) | 0 - 65535 | 字符型 | 不定长字符 |
FLOAT | (-3.40E-38,3.40E+38) | 7位小数 | 单精度浮点数 |
TEXT | 0 - 65535 | 文本型 | 大容量文本 |
BLOB | 65K | 二进制文件 | 二进制大对象 |
定长字符串:长度固定;实际字符不足时,空格补齐;
变长字符串:最长长度固定;实际长度根据实际存储值确定;
日期和时间类型
类型 | 格式 | 范围 |
YEAR | YYYY | 1901-2155 |
DATE | YYYY-MM-DD | 1000-01-01 - 9999-12-31 |
TIME | HH:MM:SS | -835:59:59 - 838:59:59 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 - 2038 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 - 9999-12-31 23:59:59 |
日期和时间类型插入示例
CREAT TABLE XXX(
id INT AUTO_INCREMENT PRIMARY_KEY,
reg_datetime DATETIME,
reg_time TIME,
reg_date DATE,
reg_year YEAR
);
INSERT INTO XXX VALUES(1,'2000-01-01 23:23:23','09:09:09','2000-01-02','2000');
创建主键
1、直接在字段定义后面声明主键
CREATE TABLE XXX(
id INT PRIMARY KEY,
……
);
2、用constraint声明主键
CREATE TABLE XXX(
id INT,
name VARCHAR(10) NOT NULL,
……
CONSTRAINT XXX_namep PRIMARY KEY (id,name)
或者简写成 PRIMARY KEY (id,name)
);
3、用alter语句补充声明主键
ALTER TABLE XXX ADD CONSTRAINT XXX_namep PRIMARY KEY(id,name);
删除主键
ALTER TABLE XXX DROP PRIMARY KEY;
创建外键
用于强制引用完整性。
CREATE TABLE XXX_DEMO(
cid INT,
sid INT,
……
FOREIGN KEY (sid) REFERENCES XXX (sid)
);
指定外键删除或更新的行为
1、若子表试图创建一个父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作
2、若父表试图UPDATE或DELETE任何子表中存在的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。
InnoDB支持四种不同的动作(MyISAM),若没有指定ON UPDATE和ON DELETE,默认动作RESTRICT。
CASCADE:父表删除或更新对应行,同时自动删除或更新子表匹配的行
SET NULL:父表删除或更新对应行,同时子表外键列设为空,仅外键列未设置为NOT NULL生效;否则报错
NO ACTION:InnoDB拒绝删除或者更新父表
RESTRICT:拒绝删除或者更新父表
CREATE TABLE XXX_DEMO(
cid INT,
sid INT,
……
FOREIGN KEY (sid) REFERENCES XXX (sid) ON UPDATE CASCADE [ON DELETE RESTRICT]
);
通过alter + constraint补充添加外键
ALTER TABLE XXX_DEMO ADD CONSTRAINT xxx_namef FOREIGN KEY(sid) REFERENCES XXX(sid) ON UPDATE CASCADE ON DELETE CASCADE;
删除外键
ALTER TABLE XXX_DEMO DROP FOREIGN KEY xxx_namef;
创建自增长
设定自增的列必须为主键,且一张表只能有一个自增列
CREAT TABLE XXX(
id INT AUTO_INCREMENT PRIMARY_KEY,
name VARCHAR(10)
);
INSERT INTO XXX VALUES(DEFAULT,'123');
创建唯一约束
CREAT TABLE XXX(
dicard VARCHAR(10) UNIQUE,
……
);
创建非空约束
CREAT TABLE XXX(
name VARCHAR(10) NOT NULL,
……
);
创建检查约束
Mysql原生并不支持检查越苏,对于离散值可使用set和enum方式解决;对于连续值只能通过触发器解决。
CREAT TABLE XXX(
sex SET('man','female'),
arrangement ENUM('now','later')
……
);
创建默认值
CREAT TABLE XXX(
tel VARCHAR(60) DEFAULT '13313313313',
……
);
高级特性、存储过程
变量
设置用户自定义变量
1、以@开始,形式为“@变量名”
SET @demo="hello";
查询变量
SELECT @demo;
2、通过SELECT语句定义
①SELECT @demo:="hello"
②SELECT ''hello" INTO @demo
使用变量
SELECT name FROM XXX WHERE name = @demo;
存储过程
存储在数据库目录中的一段声明性SQL语句。
优点
·有助于提高应用程序性能。
·有助于减少应用程序和数据库服务器间流量,不必发送冗长的SQL语句到数据库,只需要传递存储过程的名称和参数。
·对任何应用程序都是可重用的和透明的。
·存储的程序是安全的,支持权限控制
定义存储过程
创建成功后,若使用Navicat工具,函数一栏中会出现存储过程名。
DELIMITER //
CREATE PROCEDURE 存储过程名字()
BEGIN
___代码
END //
DELIMITER;
如:
DROP PROCEDURE IF EXISTS getname; 若存在同名存储过程名,则删除
DELIMITER //
CREATE PROCEDURE getname()
BEGIN
SELECT name FROM XXX;
END //
DELIMITER;
CALL getname; 调用存储过程
声明变量
DECLARE var_name datatype(size) DEFAULT default_value;
变量赋值
SET 变量名 = 变量值 注:此处无@
SELECT 变量值 INTO 变量名 FROM XXX
带参数的存储过程
三种模式
IN——默认模式。调用存储过程时,必须将参数传递给存储过程。IN参数值不能被改变。
OUT——可以更改OUT参数值
INOUT——可以传递参数,并在存储过程中修改INOUT参数
如:
DROP PROCEDURE IF EXISTS getname;
DELIMITER //
CREATE PROCEDURE getname(IN idnum INT(10), OUT demo_name VARCHAR)
BEGIN
SELECT name INTO demo_name FROM XXX WHERE id > idnum;
END //
DELIMITER;
在存储过程中定义的参数,MYSQL中自动生成以下划线命名的参数
CALL getname(10,@_demo);
SELECT @_demo;
流程控制
可以在存储过程中加入流程控制
IF判断
IF 表达式1 THEN
……
ELIF 表达式2 THEN
……
ELSE
……
END IF;
CASE条件
CASE 表达式
WHEN 表达式1 THEN ……
……
ELSE ……
END CASE;
循环
REPEAT
循环体
UNTIL 条件
END REPEAT;
WHILE 条件 DO
循环体
END WHILE;
循环跳出
ITERATE:类似continue
LEAVE:类似break
flag: WHILE 条件 DO
ITERATE flag;
LEAVE flag;
END WHILE flag;
触发器
一种特殊的存储过程,不由用户直接调用。主要用于强制复杂的业务规则或要求。
特点
·与表紧密相连,可以看作表定义的一部分。·不能通过名称直接调用,不允许带参数;当用户对表中数据进行修改时,自动执行。
·可以用于MySQL约束、默认值和规则完整性检查,实施更为复杂的数据完整性约束。
创建
CREATE TRIGGER 名
trigger_time trigger_event ON 表名 FOR EACH ROW
BEGIN
__代码
END
trigger_time:{BEFORE|AFTER}
trigger_event:{INSERT|UPDATE|DELETE}
注意:
不能有返回值和返回结果集
MYSQL的触发器不能对本表进行INSERT\UPDATE\DELETE操作,以免递归循环触发
old和new的使用
使用INSERT时,原表无数据,插入数据后,新插入数据是new。
使用UPDATE时,修改原表数据的时候,原表数据是old;修改后的数据是new。
使用DELETE时,删除的那一条数据是old。
删除
DROP TRIGGER [IF EXISTS] 名;
查看触发器
SHOW TRIGGERS;
示例:
向emp表插入新数据时,若com大于sal,则将com设置为和sal一样的值。
CREATE TRIGGER trigger_demo BEFORE INSERT ON emp FOR EACH ROW
BEGIN
IF new.com > new.sal THEN
SET new.com = new.sal
END IF;
END
删除dept表中还有员工的部门,提示错误提示信息
CREATE TRIGGER delete_demo BEFORE DELETE ON dept FOR EACH ROW
BEGIN
IF old.deptno<>40 THEN
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = "不能删除还有员工的部门"
END IF;
END
数据库事务
事务是作为单个逻辑单元执行的一系列操作。
多个操作 作为一个整体向系统提交,要么执行、要么都不执行,事务是一个不可分割的工作逻辑单元。
特别适用多用户同时操作的数据通信系统。
InnoDB:不能结构化编程,只能通过标记开启、提交或回滚事务。
MyISAM:不支持事务,用于只读程序提高性能。
事务的特性
原子性:
事务是不可分割的最小单元。针对操作本身
一致性:
事务处理执行前后,数据库一致的。针对操作结果
隔离性:
一个事务处理对另一个事务处理没有影响。
持久性:
事务处理的效果能被永久存储。
反过来说,事务能承受所有的失败,包括服务器、进程、通信以及媒体失败等。
事务控制语句
开始事务
START TRANSACTION;
或者
BEGIN;
提交事务
COMMIT;
对于数据库的修改是永久性的,无法回滚。
事务回滚
ROLLBACK;
相关文章:

【SQL学习笔记】
Pycharm社区版的页面中无database选项? 1、进入Setting-Pluggins窗口,输入database navigator 2、安装后,重启即可 MySQL 的架构共分为两层:Server 层和存储引擎层 1、Server 层负责建⽴连接、分析和执⾏ SQL 2、存储引擎层负…...

contact form 7设置方法与详细步骤
Contact Form 7(CF7)是WordPress中非常流行的表单插件,用于创建和管理网站上的联系表单。以下是Contact Form 7的设置方法与详细步骤: 一、安装Contact Form 7插件 从WordPress后台安装: 登录WordPress后台,进入“插件”菜单下…...

第170天:应急响应-战中溯源反制对抗上线CSGoby蚁剑Sqlmap等安全工具
目录 案例一:溯源反制-Webshell工具-Antsword 案例二:溯源反制-SQL注入工具-SQLMAP 案例三:溯源反制-漏洞扫描工具-Goby 案例四:溯源反制-远程控制工具-CobaltStrike 反制Server,爆破密码(通用&#x…...

5-容器管理工具Docker
├──5-容器管理工具Docker | ├──1-容器管理工具Docker | | ├──1-应用部署容器化演进之路 | | ├──2-容器技术涉及Linux内核关键技术 | | ├──3-Docker生态架构及部署 | | ├──4-使用容器运行Nginx及docker命令介绍 | | ├──5-容器镜像介…...

OCR+PDF解析配套前端工具开源详解!
目录 一、项目简介 TextIn为相关领域的前端开发提供了优秀的范本。 目前项目已在Github上开源! 二、性能特色 三、安装使用 安装依赖启动项目脚本命令项目结构 四、效果展示 面对日常生活和工作中常见的OCR识别、PDF解析、翻译、校对等场景,配套的…...

【操作系统】引导(Boot)电脑的奇妙开机过程
🌹😊🌹博客主页:【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见:【C语言专项】 目录 什么是操作系统的引导? 操作系统的引导(开机过程) Windows操作系…...

国产云桌面迁移对接信创AD域控方案
在前文《替换AD域时,网络准入场景如何迁移对接国产身份域管?》中,根据 AD 在企业中的应用程度,我们将企业分为了轻度、中度及深度三类微软 AD 用户。 轻度AD用户:仅部分应用对接 AD 。替换 AD 时,可能会直接…...

ESP32—C3实现DS18B20(温度传感器)检测温度(Arduino IED )
1源代码(DS18B20) #include <OneWire.h> // 引入OneWire库,用于与单总线设备通信 #include <DallasTemperature.h> // 引入DallasTemperature库,用于读取DS18B20温度传感器数据// 定义连接到DS18B20数据引脚的GPIO编…...

Linux系统中安装KenLM步骤及注意事项
一、前言: Kenlm模型:本项目基于Kenlm统计语言模型工具训练了中文NGram语言模型,结合规则方法、混淆集可以纠正中文拼写错误,方法速度快,扩展性强,效果一般 二、安装步骤: 1、安装依赖项 Ke…...

xss-labs靶场第六关测试报告
目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.…...

传智杯 第六届—E
题目描述: leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”。 leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列? 定义: abb 型字符串满足以下条件: 字符…...

2024.10月12日--- SpringMVC异常处理
异常处理 SpringMVC处理异常的方式有三种,当然也可以使用AOP面向编程,自定义一个类进入切入。 第一种:使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver <!--SpringMVC提供的异常处理器类型:SimpleMappingE…...

边缘人工智能(Edge Intelligence)
边缘人工智能(Edge AI)是指在边缘设备上直接运行人工智能(AI)和机器学习(ML)算法的技术。机器学习是一个广泛的领域,近年来取得了巨大的进步。它所基于的原则是,计算机可以通过从数据…...

C++20主要特性
Concepts(概念): Concepts 是一种新的语言特性,允许程序员明确定义类型的要求,从而提高了模板代码的可读性和错误消息的质量。 template <typename T> concept Integral std::is_integral_v<T>;template…...

IterComp: 从模型图库中迭代合成感知反馈学习,用于文本到图像的生成
我们从多个模型中收集组成感知模型偏好,并采用迭代反馈学习方法,使基础扩散模型和奖励模型都能逐步自我完善。 我们提出了一种迭代反馈学习方法,通过多次迭代,使基础扩散模型和奖励模型逐步自我完善,从而以闭环方式增…...

6.Python 函数进阶(函数多返回值、函数多种传参方式、匿名函数)
一、函数多返回值 1、具体实现 def test_return():return 1, 2x, y test_return()print(x) print(y)输出结果 1 22、解析 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号(,)隔开 支持返回不同类型的数据 二、函…...

视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置
EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力,在构建视频监控系统中展现出了独特的优势。 EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP…...

【Spring】获取 Cookie和Session
回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态:默认情况下,HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后ÿ…...

MyBatis-Plus 的核心插件及其使用介绍
MyBatis-Plus 是基于 MyBatis 的增强工具,为简化 MyBatis 的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了 CRUD(Create, Read, Update, Delete)操作的简化方法以及多种实用插件。以下是 MyBatis-Plus 的…...

雷池社区版本SYSlog使用教程
雷池会对恶意攻击进行拦截,但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢? 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…...

Leetcode 下一个排列
首先理解整数的字典序,字典序排列总是优先让“较小的”元素出现在前面。字典序的排列规则类似于字典中的单词排列方式,从左到右逐位比较,较小的数字优先出现。按照正整数元素排列的字典序,如果将每个排列视为一个整数值࿰…...

WPF中的布局
布局原则 1、不显式设置元素大小。 2、不使用绝对定位。 元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷,但扩展性比较差。一旦显示器尺寸或分辨率发生改变,界面的显示效果可能会达不到预期的效果。 3、布局容器可以嵌套使用 常…...

【Spring】Spring和SpringMVC为什么需要父子容器
Spring和Spring MVC使用父子容器的设计模式,主要是为了实现更好的模块化和隔离,提高系统的灵活性和可维护性。具体来说,Spring应用通常包含两个层次的容器:根容器(Root WebApplicationContext)和子容器&…...

Origin制图——双轴线图实现
1.在我们平常的画图中,我们会遇到属于差别比较的两个数据,但是画两个图又太占地方了(难以实现对数据的比较工作),我们想把它画在一个图上,那么怎么实现呢。首先我们输入导入,可以选择excal文件导…...

【算法系列-哈希表】两个集合的交集问题
【算法系列-哈希表】两个集合的交集问题 文章目录 【算法系列-哈希表】两个集合的交集问题1. 两个集合的交集问题(LeetCode 349)1.1 思路分析🎯1.2 代码示例🌰 2.两个集合的交集问题II(LeetCode 350)2.1 思路分析🎯2.2 代码示例🌰…...

linux 效率化 - zsh + tmux
文章目录 简介涉及的资料/代码仓库让我们开始吧1. Oh my Zsh!2. 终端主题 - powerlevel10k (赋能优雅终端界面)3. Oh my Tmux!安装完成,再加点料1. tmux2. zsh 结语参考资料 简介 来看一段操作演示(全程键盘,没有鼠标…...

Python学习-函数
函数 文章目录 函数定义与调用参数传递内存分析返回值参数定义默认值参数个数可变的参数关键字参数 变量的作用域 匿名函数基本语法示例lambda与排序高阶函数map函数reduce函数filter函数 多关键字排序 定义与调用 函数可以嵌套用 先定义后调用 def calc(a,b):cabreturn cre…...

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务
一、隐藏敏感信息 之前我们对 /user/me 路径,直接返回了登录的所有用户信息,其中的 passward 等敏感信息也会被返回到前端,这是很危险的,故我们需要选择性的返回用户信息,隐藏敏感用户信息 我们可以创建一个 UserDTO…...

Redis异步实现解析
目录 1. Redis 异步方式1.1 同步连接优点缺点示例:访问 Redis,并对 counter 实现自增1000次,统计用时 1.2 异步连接优点缺点1.2.1 Redis 驱动1.2.2 示例第1步:实现 Reactor第2步:实现 Redis 适配器第3步:实…...

matlab 相关
1、xcorr 本质上是两个函数做内积运算 相关算法有两种: 在Matlab上既可以 1.用自带的xcorr函数计算互相关,2.通过在频域上乘以共轭复频谱来计算互相关; 网友验证程序 clc;clear;close all; % s1,s2为样例数据 s1 [-0.00430297851562500;-…...