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字段,会重复,所以需要设置别名,指定查询哪张表的studentNo

SELECT  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):

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

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

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

相关文章

探索C++中std::string的弱点:你可能未曾注意到的缺点

C中std::string的弱点&#xff1a;你可能未曾注意到的缺点 一、背景二、性能方面的局限三、可变性带来的问题四、内存管理和指针操作五、Unicode和多字节字符集的支持六、其他替代方案七、总结 一、背景 C中std::string是一个非常重要的类&#xff0c;用于表示和处理字符串数据…

前端开发必备 HTML的常用标签(二)

目录 一、HTML语言 二、水平线标签 三、字体样式标签 四、注释和特殊符号 一、HTML语言 HTML&#xff08;Hypertext Markup Language&#xff09;是一种标记语言&#xff0c;用于创建网页的结构和内容。它由一系列的标签组成&#xff0c;这些标签定义了网页中各个元素的结…

如何防护网站存在的sql注入攻击漏洞

SQL注入攻击是最危险的Web漏洞之一&#xff0c;危害性极大&#xff0c;造成的后果不堪设想&#xff0c;因此受到了大家的高度重视。那么你知道SQL注入攻击防范方法有哪些吗? SQL注入是一种网站的攻击方法。它将SQL代码添加到网站前端GET POST参数中&#xff0c;并将其传递给my…

MSPM0L1306例程学习-UART部分(2)

MSPM0L1306例程学习系列 1.背景介绍 写在前边的话&#xff1a; 这个系列比较简单&#xff0c;主要是围绕TI官网给出的SDK例程进行讲解和注释。并没有针对模块的具体使用方法进行描述。所有的例程均来自MSPM0 SDK的安装包&#xff0c;具体可到官网下载并安装: https://www.ti…

【 Qt 快速上手】-②- Qt 环境搭建

文章目录 1. Qt 开发工具概述1.1 Qt Creator 介绍1.2 Visual Studio 介绍1.3 Eclipse 介绍 2. Qt SDK 的下载与安装2.1 Qt SDK 的下载2.2 Qt SDK 的安装2.3 验证 Qt SDK 安装是否成功2.4 Qt 环境变量配置 1. Qt 开发工具概述 Qt 开发环境需要安装三个部分&#xff1a; C编译器…

从零开始,自己搭建一个autonomous mobile robot做gazebo仿真(1):mobile robot建模与添加差速控制器

这样一个简单的mobile robot模型 首先写xacro文件&#xff0c;创建 link joint transmission <?xml version"1.0"?> <robot xmlns:xacro"http://www.ros.org/wiki/xacro" name"whill_modelc" ><xacro:property name"PI&q…

JS-元素尺寸与位置

通过js的方式&#xff0c;得到元素在页面中的位置 获取宽高 元素.offsetWidth 元素.offsetHeight 1&#xff09;获取元素的自身宽高、包括元素自身设置的宽高paddingborder 2&#xff09;获取出来的是数值&#xff0c;方便计算 3&#xff09;注意&#xff1a;获取的是可视…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (14) | 强化学习(Robot Learning)

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

【Unity】URP报错Object reference not set to an instance of an object

使用URP之后&#xff0c;Unity报错&#xff1a;显示不正常 NullReferenceException: Object reference not set to an instance of an object UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack () (at Library/PackageCache/com.unity.render-p…

富士康在印度受挫,在郑州建设新能源汽车工厂,还是中国制造可靠

日前消息指富士康宣布在郑州建设新能源汽车工厂&#xff0c;此前它一直推动印度制造&#xff0c;如此做法形成了鲜明对比&#xff0c;这显示出富士康在印度多番努力之后&#xff0c;终于还是认清了现实&#xff0c;印度难以担起富士康的事业。 此前富士康大举向印度转移的是手机…

可视化k8s页面(Kubepi)

Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具 随便在哪个节点部署&#xff0c;我这里在主节点部署 docker pull kubeoperator/kubepi-server docker run --privileged -itd --restartunless-st…

探索curl的高级应用:HTTP请求的大师级技巧

探索curl的高级应用&#xff1a;HTTP请求的大师级技巧 引言高级用法概览1. HTTP请求与响应处理2. 身份验证与安全3. 进阶技巧4. Cookie管理与会话保持5. 脚本自动化 HTTP请求与响应处理1. 自定义请求头2. 发送数据3. 处理响应 身份验证与安全1. 基本认证2. 摘要认证3. HTTPS安全…

力扣:494. 目标和(动态规划)(01背包)

题目&#xff1a; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前添加…

独立服务器和云服务器的区别

独立服务器和云服务器的区别是很多用户在选择服务器时要做的课程&#xff0c;那么独立服务器和云服务器的区别有哪些呢? 独立服务器和云服务器是两种不同的服务器部署方式&#xff0c;它们在性能、成本、资源利用、安全性和维护等方面存在显著差异。 1. **性能对比**&#xff…

【CentOS 7联网】手把手解决CentOS7虚拟机的网络连接问题

在安装CentOS7虚拟机之后发现连不上网络&#xff0c;捣鼓了好久都没有弄好&#xff0c;一路上走了很多弯路&#xff0c;希望我的经验能够帮助到大家。这里我是通过NAT连接配置静态网络的方式来连接的。 本机&#xff1a;windows1 虚拟机&#xff1a;centos7 x86_64 网络连接…

Java 应用部署包优化经验分享

背景 最近接手了一个 2018 年的老项目&#xff0c;因为太久远了&#xff0c;功能上的代码不敢乱动&#xff0c;虽然是老项目&#xff0c;但最近一年也在持续加功能&#xff0c;功能不稳定&#xff0c;于是我就进入了救火式改 Bug 的状态。 功能不能妄动&#xff0c;但是这个项…

yum配置文件及NFS共享

一 yum配置文件及命令 1 /etc/yum.conf //主配置文件 2 /etc/yum.repos.d/*.repo //yum仓库文件位置 写错一个字母就不行&#xff0c;可以ping www.google.com 测试网络 3 /var/log/yum.log //日志文件 二 yum命令 1 [rootlocalhost ~…

“盲盒+互联网”模式下的盲盒小程序带来了哪些机遇?

近几年&#xff0c;盲盒逐渐兴起&#xff0c;深受大众的喜爱。盲盒中拥有各类随机商品&#xff0c;包括玩偶手办等&#xff0c;让消费者无法自拨。盲盒拥有神秘感和不确定性&#xff0c;消费者在购买前并不知道盲盒中是什么商品&#xff0c;因此具有较大的惊喜感&#xff0c;能…

SpringBoot+beetl idea热更新解决方案

SpringBootbeetl idea热更新解决方案 第一在application中开启&#xff1a; beetl:resource-auto-check: true #热加载beetl模板&#xff0c;开发时候用第二在application中开启&#xff1a; devtools: 这个部分专门用于配置Spring Boot DevTools的相关参数。DevTools…

【LeetCode】数学精选4题

目录 1. 二进制求和&#xff08;简单&#xff09; 2. 两数相加&#xff08;中等&#xff09; 3. 两数相除&#xff08;中等&#xff09; 4. 字符串相乘&#xff08;中等&#xff09; 1. 二进制求和&#xff08;简单&#xff09; 从字符串的右端出发向左做加法&#xff0c;…