Mysql:重点且常用的操作和理论知识整理 ^_^

目录

1 基础的命令操作

2 DDL 数据库定义语言

2.1 数据库操作

2.2 数据表操作

2.2.1 创建数据表

2.2.2 修改和删除数据表

2.2.3 添加外键

3 DML 数据库操作语言

3.1 插入语句(INSERT)

3.2 修改语句(UPDATE)

3.3 删除语句

3.3.1 DELETE命令

3.3.2 TRUNCATE命令

4 DQL 数据库查询语言

4.1 SELECT语句的简单使用

4.2 WHERE条件子句

4.3 连接查询

4.3.1 内连接查询

4.3.2 左连接查询

4.3.3 右连接查询

4.3.4 自连接查询

4.3.5 子连接查询

4.4 分页和排序

4.4.1 分页

4.4.2 排序

4.5 聚合函数

4.6 分组查询

4.7 HAVING筛选

 5 MD5加密

6 事务的ACID原则

6.1 原子性(Atomicity)

6.2 一致性(Consistency)

6.3 持久性(Durability)

6.4 隔离性(Isolation)

6.5 事务的隔离级别

                6.5.1 脏读:

                6.5.2 不可重复读:

                6.5.3 虚读(幻读)

7 数据库的备份

8 规范数据库设计


1 基础的命令操作

mysql -uroot -p123  -- 连接数据库SHOW DATABASES;  -- 展示所有的数据库CREATE DATABASE school;  -- 创建一个数据库USE school;  -- 使用数据库SHOW TABLES;  -- 展示所有的数据表EXIT;  -- 退出连接DESC shopping.address;   -- 显示表的结构SHOW CREATE TABLE shopping.address;    -- 查看创建数库表的语句SHOW CREATE DATABASE shopping;    -- 查看创建数据库的语句SELECT VERSION();  -- 查询数据库版本

2 DDL 数据库定义语言

2.1 数据库操作

-- 1.创建数据库
CREATE DATABASE school;
CREATE DATABASE IF NOT EXISTS school;  -- 也可以使用这个,如果不存在则创建-- 2.查看数据库;
SHOW DATABASES;-- 3.使用指定数据库
USE school;-- 4.删除数据库
DROP DATABASE [IF EXISTS] school;

2.2 数据表操作

2.2.1 创建数据表

CREATE TABLE [IF NOT EXISTS] student (  -- student为表名no INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',   -- 设置该字段不为空且设为自增name varchar(10) COMMENT '姓名',age INT(4) COMMENT '年龄',password VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', -- DEFAULT 设置默认值gender char(2) COMMENT '性别',PRIMARY KEY (no)  -- 设置字段 no 为主键
) ENGINE=INNODB DEFAULT CHARSET=utf8;  --设置引擎和默认编码

关于数据库引擎和编码的一些解释:

关于数据库引擎:
数据库引擎在MySQL 5.5版本之前是MyISAM,之后的版本是InnoDB
区别:
1、MyISAM不支持事务,InnoDB支持事务
2、MyISAM不支持外键,InnoDB支持外键
3、MyISAM不支持行级锁,InnoDB支持行级锁
4、MyISAM不支持全文索引,InnoDB支持全文索引
5、MyISAM表空间较小,InnoDB表空间较大常规使用操作:
MYISAM
# 节约空间,速度较快InnoDB
# 安全性高; 支持事务的处理; 支持多表多用户操作字符编码:
设置数据库表的字符集编码,
不设置的话,Mysql默认的字符集编码(不支持中文的~),
Mysql的默认编码是Latin1,不支持中文

2.2.2 修改和删除数据表

-- 1.修改表名: ALTER TABLE 旧表名 RENAME AS 新表名; 
ALTER TABLE teacher RENAME AS teacher1;  -- 2.添加表的字段:ALTER TABLE 表名 ADD 字段名 列属性   
ALTER TABLE teacher1 ADD age INT(4)   -- 3.修改表的字段(重命名和修改约束)
-- ALTER TABLE 表名 MODIFY 字段名 列属性[]
ALTER TABLE teacher1 MODIFY age VARCHAR(11)   -- 修改约束,将INT(4)改为了VARCHAR(11)-- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[]
ALTER TABLE teacher1 CHANGE age  age1 INT(4)  --修改重命名age改为age1 同时将VARCHAR(11) 改为INT(4)-- 总结(一般情况下的):change 用来字段的重命名,不能修改字段类型和约束;但是上述中change修改字段类型仍是可以成功的
--       modify 不能用来字段重命名,只能修改字段类型和约束-- 4.删除表的字段:ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1-- 5.删除表: DROP TABLE [IF EXISTS] 表名
DROP TABLE [IF EXISTS] teacher1

2.2.3 添加外键

1. 创建表时添加外键:

(1)对一个列添加外键约束:

比如学生表的 gradeid 要引用年级表的 gradeid

FOREIGN KEY (gradedid) REFERENCES grade(gradedid)
CREATE TABLE [IF NOT EXISTS] student (  -- student为表名no INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',   -- 设置该字段不为空且设为自增name varchar(10) COMMENT '姓名',age INT(4) COMMENT '年龄',password VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', -- DEFAULT 设置默认值gender char(2) COMMENT '性别',PRIMARY KEY (no)  -- 设置字段 no 为主键FOREIGN KEY (gradedid) REFERENCES grade(gradedid)
) ENGINE=INNODB DEFAULT CHARSET=utf8;  --设置引擎和默认编码

(2)对多个列添加外键约束:

CONSTRAINT fk_gradedid FOREIGN KEY (gradedid) REFERENCES grade(gradedid)
CREATE TABLE [IF NOT EXISTS] student (  -- student为表名no INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',   -- 设置该字段不为空且设为自增name varchar(10) COMMENT '姓名',age INT(4) COMMENT '年龄',password VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', -- DEFAULT 设置默认值gender char(2) COMMENT '性别',PRIMARY KEY (no)  -- 设置字段 no 为主键CONSTRAINT fk_gradedid FOREIGN KEY (gradedid) REFERENCES grade(gradedid),  -- fk_gradedid为约束的名字,便于后续的删除外键操作CONSTRAINT fk_scoredid FOREIGN KEY (scoredid) REFERENCES score(scoredid)
) ENGINE=INNODB DEFAULT CHARSET=utf8;  --设置引擎和默认编码

2. 给已创建的表添加外键:

(1)对一个列添加外键约束:

ALTER TABLE Orders 
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

(2)对多个列添加外键约束:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

(3)删除 FOREIGN KEY 外键约束

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

3 DML 数据库操作语言

3.1 插入语句(INSERT)

语法:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

实例: 

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

3.2 修改语句(UPDATE)

语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

实例:

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City = 'Frankfurt'
WHERE CustomerID = 1;

3.3 删除语句

3.3.1 DELETE命令

1.删除指定的数:

语法:

DELETE FROM table_name WHERE condition;

实例:

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

2. 删除表中的全部数据:

 语法:

DELETE FROM table_name;

 实例:

DELETE FROM Customers;

3.3.2 TRUNCATE命令

作用:完全清空一个数据表,表的结构和索引约束不会变

TRUNCATE TABLE 表名;

总结:DELETE 和 TRUNCATE 的区别:

区别:
# 相同点:都能删除数据,都不会删除表的结构
# 不同点:TRUNCATE 会重新设置自增列,计数器归零; 不会影响事务

DELETE 的问题(重启数据库的现象)
# InnoDB 自增列会重1开始(存在内存中,断电即失)
# MyISAM 自增列会继续累加(存在文件中,不会丢失)

4 DQL 数据库查询语言

4.1 SELECT语句的简单使用

1. 指定查询字段:

语法:

SELECT column1, column2, ...
FROM table_name;

实例:

SELECT CustomerName, City, Country FROM Customers;

2. 查询所有列:

语法:

SELECT * FROM table_name;

实例:

SELECT * FROM Customers;

3. 起别名:AS

可以给字段起别名,也可以给表起别名

语法:

SELECT column_name AS 字段别名
FROM table_name AS 表别名;

实例:

SELECT student AS '学号' 
FROM table_name AS t;

补充:函数 Concat (a, b) 拼接字符串

SELECT CONCAT ('姓名:', Name) AS 新名字 FROM 表名;

4. 去重操作:DISTINCT

SELECT DISTINCT studentNo FROM 表名;

4.2 WHERE条件子句

作用:检索数据中符合条件的值  -->  搜索的条件由一个或者多个表达式组成!

1. 逻辑运算符

--1. AND && 逻辑与
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 条件1 AND 条件2 AND ...;
SELECT studentNo, studentResult FROM result
WHERE studentResult >= 95 AND studentResult <= 100
-- WHERE studentResult >= 95 && studentResult <= 100--2. 模糊查询区间 BETWEEN ...  AND ...
SELECT studentNo, studentResult FROM result
WHERE studentResult BETWEEN 95 AND 100--3. OR 逻辑或
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 条件1 OR 条件2 OR ...;--4. NOT != 逻辑非
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE NOT 条件;
-- 除了1001号学生之外的同学的成绩
SELECT StudentNo, StudentResult FROM student WHERE NOT StudentNo= 1001;
-- SELECT StudentNo, StudentResult FROM student WHERE StudentNo != 1001;

2.模糊查询(比较运算符)

-- 模糊查询比较运算符:
-- 1. 空判断  IS NULL
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 字段 IS NULL;-- 2. 非空判断  IS NOT NULL
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 字段 IS NOT NULL;-- 3. IN
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 字段 IN (值1, 值2   , ...);
SELECT  StudentName FROM student WHERE StudentNo IN (1001, 1002, 1003);-- 4. % 和 _
% 表示0-任意一个子字符;  _ 表示一个字符
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 字段 LIKE '%关键字%';
SELECT  StudentName FROM student WHERE StudentName LIKE '张%';SELECT StudentName FROM student WHERE StudentName LIKE '张_';-- 5. 范围查询
语法:SELECT 字段1, 字段2, ... FROM 表名 WHERE 字段 BETWEEN 值1 AND 值2;

4.3 连接查询

# 步骤1:分析查询的字段来自哪些表
# 步骤2:确定如何连接这些表
# 步骤3:确定交叉点(这两个表中,哪个数据是相同的)
# 步骤4:判断条件

4.3.1 内连接查询

如果表中至少有一个匹配,返回就行

# 1. 内连接查询(如果表中至少有一个匹配,返回就行)
# 语法:SELECT 字段1, 字段2, ... FROM 表1 INNER JOIN 表2 ON 表1.字段=表2.字段;
SELECT  * FROM student INNER JOIN score ON student.StudentNo=score.StudentNo;-- 实例:
-- 比如以下SQL语句,需要查询这些字段:studentNo, studentName, subjectNo, studentResult
-- 但是student表中没有subjectNo字段,所以需要连接result表
-- 但是student和result表中都有studentNo字段,会重复,所以需要设置别名,指定查询哪张表的studentNoSELECT  s.studentNo, studentName, subjectNo, studentResult
FROM student AS s
INNER JOIN result AS  r
ON s.StudentNo=r.StudentNo;

4.3.2 左连接查询

会从左表中返回所有的值,即使右表中没有匹配

# 2. 左连接查询 (会从左表中返回所有的值,即使右表中没有匹配)
# 语法:SELECT 字段1, 字段2, ... FROM 表1 LEFT JOIN 表2 ON 表1.字段=表2.字段;SELECT  * FROM student LEFT JOIN score ON student.StudentNo=score.StudentNo;
SELECT  s.studentNo, studentName, subjectNo, studentResult
FROM student AS s
LeFT JOIN result AS  r
ON s.StudentNo=r.StudentNo;

4.3.3 右连接查询

会从右表中返回所有的值,即使左表中没有匹配

# 3. 右连接查询(会从右表中返回所有的值,即使左表中没有匹配)
# 语法:SELECT 字段1, 字段2, ... FROM 表1 RIGHT JOIN 表2 ON 表1.字段=表2.字段;SELECT  * FROM student RIGHT JOIN score ON student.StudentNo=score.StudentNo;
SELECT  s.studentNo, studentName, subjectNo, studentResult
FROM student AS s
RIGHT JOIN result AS  r
ON s.StudentNo=r.StudentNo;

4.3.4 自连接查询

# 4. 自连接查询
# 自己的表和自己的表的连接,核心:一张表拆为两张一样的表即可
# 查询父子信息
SELECT a.name AS '父类', b.name AS '子类'
FROM category AS a, category AS b
WHERE a.id=b.pid;

比如以下数据表:

id

name

2

人工智能

4

历史外语

5

大数据

9

古代史


id

name

pid

5

大数据

2

9

古代史

4

10

现代史

4

4.3.5 子连接查询

# 1. 子查询
# 查询出成绩高于学号为1001的学生所有成绩
# 1.1 查询出学号为1001的学生成绩
SELECT studentResult FROM result WHERE studentNo='1001';
# 1.2 查询出成绩高于1001的学生成绩
SELECT studentResult FROM result WHERE studentResult > 80;
# 1.3 合并
SELECT studentResult FROM result WHERE studentResult > (SELECT studentResult FROM result WHERE studentNo='1001');

4.4 分页和排序

4.4.1 分页

-- 分页limit  和   排序 order by
-- 1. 分页limit
# 语法:SELECT 字段1, 字段2, ... FROM 表名 LIMIT 起始索引, 查询条数;--起始位置:
-- 第一页       limit 0, 5           (1-1)*5
-- 第二页       limit 5, 5           (2-1)*5
-- 第三页       limit 10, 5          (3-1)*5
-- 第N页       limit (N-1)*5, 5     (N-1)*pageSize, pageSize  [pageSize页面大小, N表示当前页];-- 总几页数:  总条数/页面大小

4.4.2 排序

-- 2.  排序 order by
-- 语法:SELECT 字段1, 字段2, ... FROM 表名 ORDER BY 字段1, 字段2, ... ASC|DESC;     ASC升序(默认值); DESC降序 SELECT * FROM Websites
ORDER BY country,alexa DESC;

查询结果首先会根据 country 字段进行排序,然后在相同 country 值的记录中,会按照 alexa 字段进行排序。

一张表中可以同时按升序和降序查询:

-- 从"Customers"表中选择所有客户,按"Country"升序排序,按"CustomerName"列降序排序:SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

4.5 聚合函数

-- 聚合函数
1. count() 计数
2. sum() 求和
3. avg() 平均值
4. max() 最大值
5. min() 最小值1. count() 计数
--查询学生总数
SELECT COUNT(*) FROM student;
--查询选修了课程的学生数
SELECT COUNT(DISTINCT studentNo) FROM result;COUNT(字段)  ->  会忽略  所有的null 值
COUNT(*)   ->   不会忽略null值,本质是计算行数
COUNT(1)    ->      不会忽略null值,本质是计算行数2. sum() 求和
--查询学生总成绩
SELECT SUM(studentResult) FROM result;3. avg() 平均值
--查询学生平均成绩
SELECT AVG(studentResult) FROM result;4. max() 最大值
--查询学生最高成绩
SELECT MAX(studentResult) FROM result;5. min() 最小值
--查询学生最低成绩
SELECT MIN(studentResult) FROM result;

4.6 分组查询

GROUP BY 语句通常与聚合函数COUNT()MAX()MIN()SUM()AVG()) 按一列或多列对结果集进行分组。 

语法:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
--实例1:
--统计 access_log表中 各个 site_id 的访问量:
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;--实例2:
--列出了每个发货人发送的订单数量:
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

4.7 HAVING筛选

having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

--SQL实例:-- 1.显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中
的不同字段(一或多条记录)作运算。-- 2.显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
相反,having子句可以让我们筛选成组后的各组数据

 

5 MD5加密

# MD5 加密
UPDATE  student SET studentPwd=MD5(studentPwd) where id = 1;# 插入的时候加密:
INSERT INTO student (studentName, studentPwd) VALUES ('张三', MD5('123456'));# 如何校验:将用户传递过来的密码进行MD5加密,然后和数据库中的加密的密码进行比较

6 事务的ACID原则

6.1 原子性(Atomicity

要么都成功,要么都失败:比如下面的银行转账:这两个步骤一起成功,或者一起失败,不能只发生其中一个动作

6.2 一致性(Consistency

事务前后的数据完整性要一致  比如上面的银行转账:一开始A和B总共有1000元,转来转去还是1000

6.3 持久性(Durability

事务一旦提交,对数据库中的数据改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响;如果没有提交,还保持原样。

比如上述的银行转账例子:

操作前A:800,B:200
操作后A:600,B:400
如果在操作前(事务还没有提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
A:800,B:200
如果在操作后(事务已经提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
A:600,B:400

6.4 隔离性(Isolation

多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间要相互隔离

比如上述的A和C两个事务:

事务一)A向B转账200
事务二)C向B转账100

两个事务同时进行,如果没有隔离性其中一个事务可能读取到另外一个事务还没有提交的数据


6.5 事务的隔离级别

6.5.1 脏读:

指一个事务读取了另外一个事务未提交的数据

6.5.2 不可重复读:

在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

页面统计查询值:

A

100

B

300

C

200

 生成报表时,B事务已经提交了,有人转账100元进来:

A

100

B

400

C

200

6.5.3 虚读(幻读)

是指在一个事务内读取到了别的事务插入的数据,导致前后读取数目总量不一致。

(一般是行影响,如下图所示:多了一行)

A

100

B

400

C

200


A

100

B

400

C

200

D

500

7 数据库的备份

-- Mysql备份-- 1. 物理备份,直接拷贝-- 2. 导出整个数据库或数据表--3. 使用 mysqldump命令导出
-- mysqldump -h主机名 -u用户名 -p密码 数据库名 表名 > 导出的路径/导出的文件名
mysqldump -hLocalhost -uroot -p111 school student > D:/a.sql-- mysqldump -h主机名 -u用户名 -p密码 数据库名 > 导出的路径/导出的文件名
mysqldump -hLocalhost -uroot -p111 school > D:/b.sql

8 规范数据库设计

# 为什么使用数据规范化
# 1.信息重复
# 2.更新异常
# 3.插入异常
#     3.1 无法正常显示信息
#
# 4.删除异常
#     4.1 丢失有效的信息

三大范式:

1. 第一范式:(1NF):
要求数据库表中的每一列都是不可分割的原子数据项

2. 第二范式(2NF): 在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关.

 如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式.

    例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。

也可以这样理解:在第一范式的基础上消除非主键对主键的部分依赖

3. 第三范式(3NF):

在第一、第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

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

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

相关文章

idea中使用git提交代码报 Nothing To commit No changes detected

问题描述 在idea中右键&#xff0c;开始将变更的代码进行提交的时候&#xff0c;【Commit Directory】点击提交的时候 报 Nothing To commit No changes detected解决方案 在这里点击Test 看看是不是能下面显示git版本&#xff0c;不行的话 会显示一个 fix的字样&#xff0c;行…

【日常聊聊】边缘计算的挑战和机遇

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 边缘计算的挑战和机遇 一&#xff1a;数据安全与隐私保护 二&#xff1a;网络稳定性与可靠性 三&#xff1a;实时性与性能优…

C++入门学习(八)sizeof关键字

sizeof 是 C 和 C 中的一个运算符&#xff0c;用于确定特定类型或对象的内存大小&#xff08;以字节为单位&#xff09;。 1、查看数据类型占据内存大小 #include <iostream> using namespace std; int main() {short a 1;int b 1;long c 1;long long d 1;cout<…

Ubuntu使用docker-compose安装chatGPT

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十五&#xff09;——使用docker-compose安装chatGPT Welcome to the AI era! 使用docker compose安装 在/usr/local文件夹下创建chatgpt mkdir chatgpt创建docker-compose.yaml vim docker-compos…

6. UE5 RPG AttributeSet的设置

AttributeSet 负责定义和持有属性并且管理属性的变化。开发者可以子类化UAttributeSet。在OwnerActor的构造方法中创建的AttributeSet将会自动注册到ASC。这一步必须在C中完成。 Attributes 是由 FGameplayAttributeData定义的浮点值。 Attributes能够表达从角色的生命值到角色…

文件扫码下载的方法?轻松制作文件活码的技巧

现在多文件生成二维码的需求不断的增多&#xff0c;为什么大家都开始选择这种方式来展示文件呢&#xff1f;一方面是将文件储存在云端&#xff0c;避免有时间限制的问题&#xff0c;随时查看文件&#xff1b;二是可以让其他人同时扫描二维码查看内容&#xff0c;当需要分享给很…

Vue四个阶段,八个钩子函数

- 创造阶段&#xff1a;创建Vue实例和初始化数据事件&#xff0c;数据代理&#xff0c;监测watch - beforeCreate&#xff0c;只是创建实例&#xff0c;不能this.$el,this.msg,this.方法名&#xff08;&#xff09; - created&#xff0c;数据代理了&#xff0c;能v…

【ChatGPT】利用ChatGPT将图片转换成JSON文件

前言 我在创建自己的GPT时,通常会上传一些JSON文件作为知识库,我还制作了一些脚本工具,将PDF文件转换成JSON文件。但是在这个过程中产生一个问题,PDF文件中会有一些图表,JSON文件就不能存储和表达这些图表的内容了。那该怎么办呢?这里跟大家介绍一个方法,可以有效地将图…

孚盟云 多处SQL注入漏洞复现

0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,使中…

端口映射的定义、特点、场景、实例、常见问题回答(Port Mapping)

目 录 一、端口映射&#xff08;Port Mapping&#xff09; 二、端口映射应用场景&#xff08;什么时候用到端口映射&#xff09; &#xff08;一&#xff09;、使用端口映射的条件 &#xff08;二&#xff09;使用端口映射的具体场景 三、端口映射技术的特点 …

如何将PDF文件转换为Word格式?推荐PDF转换工具

pdf转word格式可以帮助我们对文档的格式进行调整和排版&#xff0c;有时候&#xff0c;pdd文件的排版可能不符合我们的需求&#xff0c;或者需要进行一些样式和布局的调整。通过将PDF转word&#xff0c;我们可以轻松地修改字体、样式、段落间距等&#xff0c;使文档符合我们的要…

数学建模常见算法的通俗理解(1)

目录 1.层次分析法&#xff08;结合某些属性及个人倾向&#xff0c;做出某种决定&#xff09; 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 1.2.6 判断一致性 1.2.7 计算总得分 2 神经…

从零开始配置vim(Windows版)

事情是这样的&#xff0c;之前linux下vim用习惯了...然后就给自己win下vscode也装了个vim插件&#xff0c;用下来还是感觉不顺手&#xff0c;并且处理太多文本时有明显卡顿&#xff0c;于是乎自己配了下win版的vim。 不过好像也并不是从零开始的...初始基础版的.vimrc有copy他们…

Linux编写简易shell

思路&#xff1a;​ ​ ​ 所以要写一个shell&#xff0c;需要循环以下过程:​ 获取命令行解析命令行建立一个子进程&#xff08;fork&#xff09;替换子进程&#xff08;execvp&#xff09;父进程等待子进程退出&#xff08;wait&#xff09; 实现代码&#xff1a;​ #inc…

从技术大会到面试舞台:程序猿的蜕变之旅!

在这个技术日新月异的时代&#xff0c;程序员们需要不断地学习和提升自己的技能。 参加技术大会&#xff0c;无疑是程序员们拓宽视野、提升技能的重要途径之一。然而&#xff0c;技术大会只是程序员成长的一部分&#xff0c;掌握面试技巧同样至关重要。只有将这两者完美结合&a…

Python入门到精通(三)——Python循环语句

Python循环语句 一、while 循环 1、基础语法 2、嵌套应用 二、for 循环 1、基础语法 2、嵌套应用 三、循环中断&#xff1a;break 和 continue 1、break 2、continue 四、综合案例 一、while 循环 1、基础语法 while的条件需得到布尔类型&#xff0c;True表示继续循环…

【STM32】| 02——常用外设 | I2C

系列文章目录 【STM32】| 01——常用外设 | USART 【STM32】| 02——常用外设 | I2C 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 前言1. 简介2. I2C协议2.1 I2C物理连接2.2 I2C通信协议2.2.1 起始和停止信号2.2.2 数据有效性2.2.3 数据传输格式2.2.4 从机地址/数据方…

学习Spring的第九天

Spring Bean的生命周期 Bean的实例化阶段 : 看配置文件里Bean标签的信息 , 来判断进行实例化(如是否有lazy-init , 或者是否是FactoryBean等等) (实际就是Bean标签表面的信息 , 即BeanDefinition) Bean的初始化阶段 : 对Bean的属性(重要 : BeanPostProcessor方法 , 及如下 , pr…

什么是安全SCDN,有什么作用?

前两天有个站长被朋友推荐联系到了德迅云安全&#xff0c;想要对自己网站做一些安全防护&#xff0c;聊天中问及到了安全SCDN是什么意思&#xff0c;有哪些作用&#xff1f;那么德迅云安全今天就来简单讲述一下安全SCDN&#xff0c;来了解下什么是安全SCDN&#xff0c;以及它有…

一键拆分,轻松整理,高效管理文本文件,让工作更轻松!

在日常工作中&#xff0c;我们经常需要处理大量的文本文件。如何快速整理这些文件&#xff0c;方便管理和使用成为了关键问题。为此&#xff0c;我们为您推荐一款强大的一键拆分和整理工具&#xff0c;助您高效管理文本文件&#xff01; 首先&#xff0c;在首助编辑高手的主页面…