[MySQL]数据库表内容的增删查改操作大全

目录

一、增加表数据

1.全列插入与指定列插入

2.多行数据插入 

3.更新与替换插入

二、查看表数据

1.全列查询与指定列查询

2.查询表达式字段

 3.为查询结果起别名

4.结果去重

5.WHERE条件

6.结果排序

7.筛选分页结果 

 8.插入查询的结果

9.group by子句

三、修改表数据

四、删除与截断表数据


一、增加表数据

语法:INSERT [INTO] table_name [column , column...] VALUES (value_list) [ ,(value_list)];

mysql> create table students (-> id int unsigned primary key auto_increment,-> number int not null unique comment '学号',-> name varchar(20) not null,-> telephone char(11) -> );
Query OK, 0 rows affected (0.05 sec)

1.全列插入与指定列插入

        value_list的数量必须和表中定义的字段数量一样的时候,才属于全列插入,才可以省略指定插入元素的部分。因为我们设置了自增属性,所以可以不用给id设定值,但是这样的话,就不属于全列插入了就必须指定插入的字段是哪些了。

//全列插入
insert into students values(1, 202501, '张三', '15812345678');//指定列插入
insert into students (number, name, telephone) values(202503, '王五', '17712345678');

2.多行数据插入 

        在插入数据的时候也可以同时插入多条数据,对于多行数据的插入也满足全列插入与指定列插入的规则。

//全列多行插入
insert into students values(4, 202504, '赵六', '12312345678'), (5, 202505, '田七', '12345656789');//指定列多行插入
insert into students (number, name, telephone) values(202506, '你好', '12312345678'), (202507, '哈哈', '12345656789');

3.更新与替换插入

更新语法:ON DUPLICATE KEY UPDATE

替换语法:REPLACE

        因为一般表中都会有主键和唯一键的约束,那么我们在插入的时候如果出现唯一键和主键冲突的情况就会插入失败,那么如果我们就想插入呢,那么可以使用更新或者替换语句,将数据更新成我们新插入的,或者整个替换一下。

mysql> insert into students (id, number, name) values(1, 202501, '北顾') on duplicate key update number=202510, name = '北顾';
Query OK, 2 rows affected (0.00 sec)mysql> select * from students;
+----+--------+--------+-------------+
| id | number | name   | telephone   |
+----+--------+--------+-------------+
|  1 | 202510 | 北顾   | 15812345678 |
|  2 | 202502 | 李四   | 17712345678 |
|  3 | 202503 | 王五   | 17712345678 |
|  4 | 202504 | 赵六   | 12312345678 |
|  5 | 202505 | 田七   | 12345656789 |
|  6 | 202506 | 你好   | 12312345678 |
|  7 | 202507 | 哈哈   | 12345656789 |
+----+--------+--------+-------------+
7 rows in set (0.00 sec)

        上面的代码为插入否则更新的操作, 先使用insert插入数据,如果说遇到主键或者唯一键的冲突而导致的插入失败的时候,可以执行duplicate key update进行数据的更新操作。

        如图可以看到返回值发生了变化,如果说插入的数据有冲突的但是冲突的数据和原数据是一样的那么就相当于不做任何操作,返回0;如果说没有数据冲突的话,直接插入返回1;如果有数据冲突,并执行了数据更新操作的话,就返回2。

mysql> replace into students (number, name) value(202510, 'hello');
Query OK, 2 rows affected (0.01 sec)mysql> select * from students;
+----+---------+--------+-------------+
| id | number  | name   | telephone   |
+----+---------+--------+-------------+
|  2 |  202502 | 李四   | 17712345678 |
|  3 |  202503 | 王五   | 17712345678 |
|  4 |  202504 | 赵六   | 12312345678 |
|  5 |  202505 | 田七   | 12345656789 |
|  6 |  202506 | 你好   | 12312345678 |
|  7 |  202507 | 哈哈   | 12345656789 |
|  8 |  202510 | hello  | NULL        |
+----+---------+--------+-------------+
9 rows in set (0.00 sec)

        上面的代码则是替换代码,他的操作是如果没有冲突那么就直接插入并返回1,如果有冲突大的话,他会先删除冲突数据,然后再重新插入并返回2。 

二、查看表数据

1.全列查询与指定列查询

SELECT [column, column] FROM table_name;

        当column不指定且设置为*的时候,就是全列查询了,但是一般不建议使用全列查询,因为查询的列越多,意味着需要传输的数据量就越大,会影响效率。对于指定列查询输入的字段名称不需要和定义的时候顺序一样,select关键字的作用相当于是打印,而我们定义打印什么他就会显示什么,定义什么顺序显示,他就会按什么顺序显示。

2.查询表达式字段

        上述也说了select是一个起到一个打印显示的作用,而column from table_name,才是指定打印的内容,那么打印的内容可不可以不是表中的呢?或者打印的字段可以不可以是表达式呢?打印的字段可不可以用表中的字段作为参数的表达式呢?

mysql> create table exam (-> id int unsigned primary key auto_increment,-> name varchar(20) not null,-> chinese float default 0.0,-> math float default 0.0,-> english float default 0.0-> );
Query OK, 0 rows affected (0.05 sec)mysql> insert into exam (name, chinese, math, english) values -> ('张三', 67, 65, 86),-> ('李四', 98, 56, 84),-> ('王五', 76, 45, 97),-> ('赵六', 99, 43, 91);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0//显示非表中的数据
mysql> select 10;
+----+
| 10 |
+----+
| 10 |
+----+
1 row in set (0.00 sec)//显示表达式数据
mysql> select 10 + 20;
+---------+
| 10 + 20 |
+---------+
|      30 |
+---------+
1 row in set (0.00 sec)//显示表中数据为参数的表达式数据
mysql> select id + 10 from exam;
+---------+
| id + 10 |
+---------+
|      11 |
|      12 |
|      13 |
|      14 |
+---------+
4 rows in set (0.00 sec)

 3.为查询结果起别名

语法:SELECT column [AS] alias_name [...] FROM table_name;

mysql> select 10 + 20 as '总数';
+--------+
| 总数   |
+--------+
|     30 |
+--------+
1 row in set (0.00 sec)mysql> select id, name, chinese + math + english as '总分' from exam;
+----+--------+--------+
| id | name   | 总分   |
+----+--------+--------+
|  1 | 张三   |    218 |
|  2 | 李四   |    238 |
|  3 | 王五   |    218 |
|  4 | 赵六   |    233 |
+----+--------+--------+
4 rows in set (0.00 sec)

4.结果去重

语法: SELECT DISTINCT column FROM table_name;

5.WHERE条件

比较运算符
运算符说明
>, >=, <, <=没有什么特殊含义,就是单纯的比较
=等于,
<=>等于
!=, <>不等于

BETWEEN x1 AND x2

进行范围匹配,如果一个数值再[x1, x2]之间,那么就返回true
IN (option, ...)如果是option中的一个,那么就返回ture
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配。 %表示任意多个任意字符;_表示任意一个字符
逻辑运算符
运算符说明
AND多个条件都必须满足才返回true
OR任意满足一个条件返回true
NOT满足条件的时候,返回false,相当于匹配不是该条件的内容

 下面是操作符的一些使用案例:

基本比较的使用

mysql> select * from exam;
+----+--------+---------+------+---------+
| id | name   | chinese | math | english |
+----+--------+---------+------+---------+
|  1 | 张三   |      67 |   65 |      86 |
|  2 | 李四   |      98 |   56 |      84 |
|  3 | 王五   |      76 |   45 |      97 |
|  4 | 赵六   |      99 |   43 |      91 |
+----+--------+---------+------+---------+
4 rows in set (0.00 sec)mysql> select id, name, math from exam where math < 60;
+----+--------+------+
| id | name   | math |
+----+--------+------+
|  2 | 李四   |   56 |
|  3 | 王五   |   45 |
|  4 | 赵六   |   43 |
+----+--------+------+
3 rows in set (0.00 sec)

AND与BETWENN AND的使用

//查询语文分数再80到100之间的同学
mysql> select id, name, chinese from exam where chinese >= 80 and chinese <= 100;
+----+--------+---------+
| id | name   | chinese |
+----+--------+---------+
|  2 | 李四   |      98 |
|  4 | 赵六   |      99 |
+----+--------+---------+
2 rows in set (0.00 sec)mysql> select id, name, chinese from exam where chinese between 80 and 100;
+----+--------+---------+
| id | name   | chinese |
+----+--------+---------+
|  2 | 李四   |      98 |
|  4 | 赵六   |      99 |
+----+--------+---------+
2 rows in set (0.00 sec)

OR与IN的使用

//查询英语分数为86或97的同学
mysql> select id, name, english from exam where english=86 or english=97;
+----+--------+---------+
| id | name   | english |
+----+--------+---------+
|  1 | 张三   |      86 |
|  3 | 王五   |      97 |
+----+--------+---------+
2 rows in set (0.00 sec)mysql> select id, name, english from exam where english in(86, 97);
+----+--------+---------+
| id | name   | english |
+----+--------+---------+
|  1 | 张三   |      86 |
|  3 | 王五   |      97 |
+----+--------+---------+
2 rows in set (0.00 sec)

LIKE的使用

//查询姓张和姓王的同学
mysql> select id, name from exam where name like '张%' or name like '王%';
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  3 | 王五   |
+----+--------+
2 rows in set (0.00 sec)mysql> insert into exam values(5, '张文强', 98, 90, 79);
Query OK, 1 row affected (0.01 sec)//查询名字为2个字,还性张的同学
mysql> select id, name from exam where name like '张_';
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
+----+--------+
1 row in set (0.00 sec)

 where与表达式混合使用

//总分大于230的同学
mysql> select id, name, chinese + math + english as '总分' from exam where chinese + math + english > 230;
+----+-----------+--------+
| id | name      | 总分   |
+----+-----------+--------+
|  2 | 李四      |    238 |
|  4 | 赵六      |    233 |
|  5 | 田七      |    231 |
|  6 | 张文强    |    267 |
+----+-----------+--------+
4 rows in set (0.00 sec)

AND与NOT混合使用

//语文分数大于90,不是不姓李的同学
mysql> select name, chinese from exam where chinese > 90 and name not like '李_';
+-----------+---------+
| name      | chinese |
+-----------+---------+
| 赵六      |      99 |
| 田七      |      92 |
| 张文强    |      98 |
+-----------+---------+
3 rows in set (0.00 sec)

=和<=>的区别

        两者都是判断两个值是否相等的,但是第一个属于非安全的,如果用NULL去和任意值就行比较的话,都会返回NULL,因为MySQL中对于NULL代表的是未知的值,所以说比较的时候结果也是未知的。而<=>的话能处理NULL值的比较,会把NULL当作一个值来看待,如果都是NULL就返回1,不是返回0。

6.结果排序

语法:SELECT ... FROM table_name ... ORDER BY column [ASC|DESC], [...];

使用案例:select * from tset_table order by xxxx;

        操作是将select选出的显示数据,按照column数据的值进行升序或者降序排列显示,ASC是默认值,表示升序,DESC表示降序。对于NULL的话,看作比任何数据都小的一个值。还可以进行多段排序规则的定义,如果两个数值相等,那么第一个排序规则就无法排序,就会继续按照第二个排序规则继续排序了。

mysql> insert into exam values(7, '哈哈', 98, 77, 79);
Query OK, 1 row affected (0.01 sec)mysql> insert into exam values(8, '王强', NULL, 79, 59);
Query OK, 1 row affected (0.01 sec)//语文按照降序,数学按照升序排列
mysql> select * from exam order by chinese desc, math;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  4 | 赵六      |      99 |   43 |      91 |
|  2 | 李四      |      98 |   56 |      84 |
|  7 | 哈哈      |      98 |   77 |      79 |
|  6 | 张文强    |      98 |   90 |      79 |
|  5 | 田七      |      92 |   60 |      79 |
|  3 | 王五      |      76 |   45 |      97 |
|  1 | 张三      |      67 |   65 |      86 |
|  8 | 王强      |    NULL |   79 |      59 |
+----+-----------+---------+------+---------+
8 rows in set (0.00 sec)//排序总分, order by中可以使用列名称的别名
mysql> select id, name, chinese + math + english as 总分 from exam order by 总分 desc;
+----+-----------+--------+
| id | name      | 总分   |
+----+-----------+--------+
|  6 | 张文强    |    267 |
|  7 | 哈哈      |    254 |
|  2 | 李四      |    238 |
|  4 | 赵六      |    233 |
|  5 | 田七      |    231 |
|  1 | 张三      |    218 |
|  3 | 王五      |    218 |
|  8 | 王强      |   NULL |
+----+-----------+--------+
8 rows in set (0.00 sec)

7.筛选分页结果 

//从0开始筛选n条结果

SELECT ... FROM table_name [...]  LIMIT n;

//从s开始筛选n条结果

SELECT ... FROM table_name [...]  LIMIT s, n;

SELECT ... FROM table_name [...]  LIMIT n OFFSET S;

        在对未知的表就行查询显示的时候,最好加上LIMIT,避免表中大的数据量过大,查询全表导致数据库卡顿。如果查询的数据不够n个的话不会有任何的影响。

mysql> select * from exam limit 3;
+----+--------+---------+------+---------+
| id | name   | chinese | math | english |
+----+--------+---------+------+---------+
|  1 | 张三   |      67 |   65 |      86 |
|  2 | 李四   |      98 |   56 |      84 |
|  3 | 王五   |      76 |   45 |      97 |
+----+--------+---------+------+---------+
3 rows in set (0.00 sec)mysql> select * from exam limit 3, 3;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  4 | 赵六      |      99 |   43 |      91 |
|  5 | 田七      |      92 |   60 |      79 |
|  6 | 张文强    |      98 |   90 |      79 |
+----+-----------+---------+------+---------+
3 rows in set (0.00 sec)mysql> select * from exam limit 6, 3;
+----+--------+---------+------+---------+
| id | name   | chinese | math | english |
+----+--------+---------+------+---------+
|  7 | 哈哈   |      98 |   77 |      79 |
|  8 | 王强   |    NULL |   79 |      59 |
+----+--------+---------+------+---------+
2 rows in set (0.00 sec)mysql> 

 8.插入查询的结果

mysql> create table exam_zhang (-> id int unsigned primary key auto_increment,-> name varchar(20) not null,-> chinese float default 0.0,-> math float default 0.0,-> english float default 0.0-> );
Query OK, 0 rows affected (0.05 sec)mysql> insert into exam_zhang select distinct * from exam where name like '张%';
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from exam_zhang;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 张三      |     100 |  130 |     116 |
|  6 | 张文强    |      98 |  120 |     109 |
+----+-----------+---------+------+---------+
2 rows in set (0.01 sec)

9.group by子句

        使用该子句可以将指定的列进行分组查询,对于使用分组查询的时候,select显示的列必须是出现在group by子句中,或者说是聚合函数才可以。

mysql> create table student (-> class_id int not null,-> name varchar(10) not null,-> score float default 0.0-> );
Query OK, 0 rows affected (0.03 sec)mysql> insert into student values  -> (1, '张三', 98.7),-> (1, '李四', 97.2),-> (1, '王五', 88.6),-> (2, '赵六', 79.4),-> (2, '田七', 99.9),-> (2, '王强', 50.4);
Query OK, 6 rows affected (0.01 sec)
Records: 6  Duplicates: 0  Warnings: 0//查看每个班级的最高分
mysql> select class_id, max(score) from student group by class_id;
+----------+------------+
| class_id | max(score) |
+----------+------------+
|        1 |       98.7 |
|        2 |       99.9 |
+----------+------------+
2 rows in set (0.00 sec)//必须是聚合函数,或者是group by里出现的列
mysql> select class_id, name, max(score) from student group by class_id;
ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.student.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

三、修改表数据

语法:UPDATE table_name SET column=xx [, column=xx, ...] [WHERE ...];

//将总分最高的前三名英语成绩提供30分
mysql> select name, english, math+chinese+english as 总分 from exam order by 总分 desc limit 3;
+-----------+---------+--------+
| name      | english | 总分   |
+-----------+---------+--------+
| 张三      |      86 |    286 |
| 张文强    |      79 |    267 |
| 哈哈      |      79 |    254 |
+-----------+---------+--------+
3 rows in set (0.00 sec)mysql> update exam set english = english + 30 order by math+english+chinese desc limit 3;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0mysql> select name, english, math+chinese+english as 总分 from exam order by 总分 desc limit 3;
+-----------+---------+--------+
| name      | english | 总分   |
+-----------+---------+--------+
| 张三      |     116 |    316 |
| 张文强    |     109 |    297 |
| 哈哈      |     109 |    284 |
+-----------+---------+-------//全列更改--非常不建议这样做
mysql> update exam set math = math + 30;
Query OK, 8 rows affected (0.00 sec)
Rows matched: 8  Changed: 8  Warnings: 0

四、删除与截断表数据

删除语法:DELETE FROM table_name [....];

        如果说不加任何范围选择条件的话,那么就相当于是删除整个表数据的操作了。     

截断语法:TRUNCATE [TABLE] table_name;

        对于删除操作来说,是将表单个或者多个数据进行删除,而截断则是对整个表进行操作,会将整个表数据都清除。这样的话可以通过释放表的存储空间来实现清空表的操作,而DELETE语句需要逐行删除记录,并且会记录每一行的删除操作到日志中。所以会比DELETE快很多。

        如果表中有自增列,操作会将自增列的值重置为初始值(通常是 1)。而DELETE语句不会重置自增列的值。还有不可滚回和不处罚触发器的特点,以后在讲述。

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

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

相关文章

在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持

注&#xff1a;机翻&#xff0c;未校。 Enable SMB Direct in Windows 11 在 Windows 11 中启用 SMB Direct Provides RDMA support for the SMB 3.x file sharing protocol 为 SMB 3.x 文件共享协议提供 RDMA 支持 Vigneshwaran Vijayakumar November 3, 2024 Last Updat…

electron打包客户端在rk3588上支持h265硬解

目录 前言 chromium是如何支持h265硬解 electron/chromium第一次编译 electron/chromium第二次编译 前言 我们的客户端程序是用electron打包的前端程序&#xff0c;其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的&#xff0c;但视频源…

什么是网络爬虫?Python爬虫到底怎么学?

最近我在研究 Python 网络爬虫&#xff0c;发现这玩意儿真是有趣&#xff0c;干脆和大家聊聊我的心得吧&#xff01;咱们都知道&#xff0c;网络上的信息多得就像大海里的水&#xff0c;而网络爬虫就像一个勤劳的小矿工&#xff0c;能帮我们从这片浩瀚的信息海洋中挖掘出需要的…

【Jave全栈】Java与JavaScript比较

文章目录 前言一、Java1、 历史与背景2、语言特点3、应用场景4、生态系统 二、JavaScript1、历史与背景2、语言特点3、应用场景4、 生态系统 三、相同点四、不同点1、语言类型2、用途3、语法和结构4、性能5、生态系统6、开发模式 前言 Java和JavaScript是两种不同的编程语言&a…

GitCode 助力 AutoTable:共创 MyBatis 生态的自动表格管理新篇章

项目仓库https://gitcode.com/dromara/auto-table 解放双手&#xff0c;专注业务&#xff1a;MyBatis 生态的“自动表格”创新 AutoTable 是一款致力于为 MyBatis 生态赋予“自动表格”功能的创新插件。其核心理念是通过 Java 实体类自动生成和维护数据库的表结构&#xff0c…

【MCU】DFU、IAP、OTA

我发现很多人把几个概念都学混了&#xff0c;只记得一个升级了 DFU DFU (device firmware update)是指的 USB DFU&#xff0c;这个是 USB 的一个机制&#xff0c;可以升级设备的固件&#xff0c;可以去 USB-IF 查看规范文件。 OTA 全称为 Over-the-air update&#xff0c;利…

ThinkPHP 8 操作JSON数据

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

GD32F303 GCC 环境搭建

一、引言 在嵌入式开发领域&#xff0c;GD32F303 微控制器以其出色的性能和丰富的功能被广泛应用。为了充分发挥其潜力&#xff0c;搭建一个高效的开发环境并深入理解项目构建过程至关重要。本文将详细介绍如何基于 GCC 工具链搭建 GD32F303 的开发环境&#xff0c;重点聚焦于…

【C++】详细讲解继承(下)

本篇来继续说说继承。上篇可移步至【C】详细讲解继承&#xff08;上&#xff09; 1.继承与友元 友元关系不能继承 &#xff0c;也就是说基类友元不能访问派⽣类私有和保护成员。 class Student;//前置声明class Same //基类 { public:friend void Fun(const Same& p, con…

考研机试题:今年的第几天

描述 输入年、月、日&#xff0c;计算该天是本年的第几天。 输入描述: 包括三个整数年(1<Y<3000)、月(1<M<12)、日(1<D<31)。 输出描述: 输入可能有多组测试数据&#xff0c;对于每一组测试数据&#xff0c; 输出一个整数&#xff0c;代表Input中的年、…

解锁罗技键盘新技能:轻松锁定功能键(罗技K580)

在使用罗技键盘的过程中&#xff0c;你是否曾因 F11、F12 功能键的默认设置与实际需求不符而感到困扰&#xff1f; 别担心&#xff0c;今天就为大家分享一个简单实用的小技巧 —— 锁定罗技键盘的 F11、F12 功能键&#xff0c;让你的操作更加得心应手&#xff01; 通常情况下…

Flink把kafa数据写入Doris的N种方法及对比。

用Flink+Doris来开发实时数仓,首要解决是如何接入kafka实时流,下面是参考Doris官方文档和代码,在自己项目开发的实践中总结,包括一些容易踩坑的细节。 目录 Routine Load方法 接入kafka实时数据 踩坑的问题细节 Flink Doris Connector方法 完整示例 Routine Load方法…

小识JVM堆内存管理的优化机制TLAB

JVM&#xff08;Java虚拟机&#xff09;在堆内存分配空间时&#xff0c;TLAB&#xff08;Thread Local Allocation Buffer&#xff0c;线程本地分配缓存区&#xff09;是一种重要的内存管理优化技术。以下是对TLAB的详细解释&#xff1a; 一、TLAB的定义 TLAB是JVM堆内存管理…

(开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台

1 项目简介&#xff08;开源地址在文章结尾&#xff09; 系统旨在为了帮助鸟类爱好者、学者、动物保护协会等群体更好的了解和保护鸟类动物。用户群体可以通过平台采集野外鸟类的保护动物照片和视频&#xff0c;甄别分类、实况分析鸟类保护动物&#xff0c;与全世界各地的用户&…

【力扣Hot 100】普通数组2

3. 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k **个位置&#xff0c;其中 k **是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出:[5,6,7,1,2,3,4]解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步:[6,7,1,2,3,4,5] 向右轮转 3 步:[…

专题三_穷举vs暴搜vs深搜vs回溯vs剪枝_全排列

dfs解决 全排列&子集 1.全排列 link:46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 全局变量回溯 code class Solution { public:vector<vector<int>> ans;vector<int> cur;vector<bool> used;vector<vector<int>> permute…

2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计

一、高并发内存池框架设计 高并发池框架设计&#xff0c;特别是针对内存池的设计&#xff0c;需要充分考虑多线程环境下&#xff1a; 性能问题锁竞争问题内存碎片问题 高并发内存池的整体框架设计旨在提高内存的申请和释放效率&#xff0c;减少锁竞争和内存碎片。 高并发内存…

JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。

1.首先定义一个接口&#xff0c;接口中有两个方法&#xff0c;分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 &#xff0c;转换成后面的描述 这边定义了中文转换为默认方法&#xff0c;是因为有些属性不需要进行中文转换&#xff0c;或者该属性的枚举…

webrtc入门系列(五)amazon-kinesis-video-streams-webrtc-sdk-c编译

《webrtc入门系列&#xff08;一&#xff09;easy_webrtc_server 入门环境搭建》 《webrtc入门系列&#xff08;二&#xff09;easy_webrtc_server 入门example测试》 《webrtc入门系列&#xff08;三&#xff09;云服务器coturn环境搭建》 《webrtc入门系列&#xff08;四&…

AIGC大模型详解(ChatGPT,Cursor,豆包,文心一格)

定义与概念 AIGC&#xff08;AI Generated Content&#xff09;大模型是基于人工智能技术&#xff0c;具有海量参数、强大算力支持&#xff0c;能处理和生成多种类型内容的深度学习模型。可自主学习数据中的模式和规律&#xff0c;生成文本、图像、音频等内容&#xff0c;如Ch…