MySQL基础知识大总结
一,介绍
数据库是什么,我们在学习其他编程语言的时候会使用数组呀,链表,二叉树等等一些数据结构来存储我们的数据,但是大家有没有发现我们一旦关闭程序,所有的数据都没有了,这在发行的软件来看是很不合理的吧,比如你的游戏账号在整个应用程序更新的时候就会全部丢失,所以我们会去使用数据库,来在硬盘上长久的存储我们的数据。
SQL的分类
DDL数据定义语言,用来维护存储数据的结构
DML数据操纵语言,用来对数据进行操作
DCL数据控制语言,主要负责权限管理和事务
不多抄了,我们直接开始实践。
二,数据库操作
1,展示数据库
语法:
show databases;
可以查询所有数据库,
这里就是看到我们创建的所有数据库了,这4个是系统自带的,不要删除,删除了我们就要重新下了。
2,创建数据库
语法:
create database if not exists [数据库名] [character set [字符集]] collate [排序规则];
character set 字符集的目的是让他能读取汉字,在5.7版本的字符集默认是无法读取汉字的,collate 是我们的排序规则,形成习惯,每次建库都这样写就行,if not exists 是这个数据库如果不存在的意思。
我们这样就看到java113了。
我们创建数据库的时候是不可以使用关键字的,但是我们可以通过``(esc 下面的符号)来用关键字来创建数据库。
我们来查询下数据库,
我们成功创建了数据库,但是我们要是使用``是会报错的。
3,删除数据库
语法:
drop database if exists [表名];
我们来把刚刚创建的database数据库删掉。
查询数据库
4,使用数据库
语法:
use [库名];
三,数据类型
1,数值类型
数据类型 | 大小 | 说明 | 对应java类型 |
bit[M] | M决定位数,默认1 | Boolean 0为假,1为真,默认位M是1 | |
tinyint | 1字节 | Byte | |
smallint | 2字节 | Short | |
int | 4字节 | Integer | |
bigint | 8字节 | Long | |
double(M,D) | 8字节 | Double | |
float(M,D) | 4字节 | 单精度,M指定长度,D指定 小数位数。会发生精度丢失 | Float |
decimal | M/D+2 | 双精度,M指定长度,D表示 小数点位数。精确数值 | BigDecimal |
numeric | M/D+2 | BigDecimal |
2,字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
varchar(size) | 0-65,535字节 | 可变长度字符串 | String |
text | 0-65,535字节 | 长文本数据 | String |
mediumtext | 0-16 777 215字节 | 中等长度文本数据 | String |
blob | 0-65,535字节 | 二进制形式的文本数据 | Byte[] |
3,日期类型
数据类型 | 大小 | 说明 | 对应java类型 |
datetime | 8字节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | java.util.date; java.sql.Timestamp |
四,表操作
1,显示数据库中的所有表
语法:
show tables;
我们可以看到现在的表是没有的。
2,创建数据表
语法:
create table if not exists [表名](
字段1 数据类型 [ [comment] '说明'],
字段2 数据类型 .......,
字段3 数据类型
);
我们这时候在展示所有数据表
在java113的数据库中已经出现了我们刚才创建的表;
3,查询表结构
语法:
desc 表名;
4,删除表
语法:
drop table if exists 表名;
我们数据库中的表又为空了。
五,CRUD
语法:CRUD是啥玩应,其实就是增删查改英文的缩写。
1,新增
语法:
insert into 表名 (字段),(字段) value (值,值),[(值,值)];
desc student;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| student_id | bigint | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| score | decimal(3,1) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
我们还是看student表,
select * from student;
Empty set (0.00 sec)
这里完全是空的。
1,单行数据,全列插入
insert into student values (1,'张三',98.5);
select * from student;
+------------+--------+-------+
| student_id | name | score |
+------------+--------+-------+
| 1 | 张三 | 98.5 |
+------------+--------+-------+
我们成功插入了一行数据。
2,多行数据,指定列插入
insert into student (student_id) values (1),(2),(3);
select * from student;
+------------+--------+-------+
| student_id | name | score |
+------------+--------+-------+
| 1 | 张三 | 98.5 |
| 1 | NULL | NULL |
| 2 | NULL | NULL |
| 3 | NULL | NULL |
+------------+--------+-------+
我们只指定了student_id的数据并没有指定其他字段的数据,
这里跟大家说一下,这个小黑框是可以直接导入本地文件保存的数据库的,我们首先使用编辑器来保存我们的sql代码,我用的Navicat,
保存,在小黑框输入
source C:/MySQL/test.sql;
+--------------------+
| Database |
+--------------------+
| information_schema |
| java113 |
| mysql |
| performance_schema |
| sys |
+--------------------+
我们就能直接执行所有的sql代码。
2,查询
语法:
select (列名) from 表名;
select * from student;
+------------+--------+-------+
| student_id | name | score |
+------------+--------+-------+
| 1 | 张三 | 98.5 |
| 1 | NULL | NULL |
| 2 | NULL | NULL |
| 3 | NULL | NULL |
+------------+--------+-------+
查询所有列的结果。
还可以查询单个的列;
select student_id from student;
+------------+
| student_id |
+------------+
| 1 |
| 1 |
| 2 |
| 3 |
+------------+
重新弄一个数据;
select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
+------------+--------+------+---------+---------+
我们还可以让查询结果为表达式;
select student_id,name,math+chinese+english from student;
+------------+--------+----------------------+
| student_id | name | math+chinese+english |
+------------+--------+----------------------+
| 1 | 张三 | 212.0 |
| 2 | 李四 | 229.0 |
| 3 | 王五 | 270.0 |
| 4 | 赵六 | 249.0 |
+------------+--------+----------------------+
我们查询math,chinese,english三个字段相加的表达式,这个字段的数据是放在一个临时表中的,要不212.0超出了我们定义的deccimal(3,1)的范围的,因为我们只定义的有序长度为3,
我们还可以给这个表达式起一个别名。
表达式 [as] ' 别名'
这个as,和' ' 是可以省略的,但是当别名中有空格的时候,''是不可以省略的;
select student_id,name,math+chinese+english as 总分 from student;
+------------+--------+--------+
| student_id | name | 总分 |
+------------+--------+--------+
| 1 | 张三 | 212.0 |
| 2 | 李四 | 229.0 |
| 3 | 王五 | 270.0 |
| 4 | 赵六 | 249.0 |
+------------+--------+--------+
那么如果字段中出现了null还能进行表达式的运算吗
select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 5 | 钱七 | 78.0 | NULL | 97.0 |
+------------+--------+------+---------+---------+
+------------+--------+--------+
| student_id | name | 总分 |
+------------+--------+--------+
| 1 | 张三 | 212.0 |
| 2 | 李四 | 229.0 |
| 3 | 王五 | 270.0 |
| 4 | 赵六 | 249.0 |
| 5 | 钱七 | NULL |
+------------+--------+--------+
我们可以看到结果是null,所以在我们列与列之间的运算,出现了null,是无法计算的,但是之后行与行直接的聚合函数是不受null的影响的。
我们还可以对数据进行去重
select distinct (列名) from 表名;
我们在增加些数据;
我们可以看到出现了三个张三,第二个张三与第一个张三完全一样,但是最后一个张三的English与第一个不一样,我们来看看去重操作的现象;
我们看到第三个张三留下了,第二个不见了,所以我们去重操作是我们选择的字段的每一列的所有字段都重复才会被去重。
1,排序
语法:
order by (列名) asc|desc;
asc是升序,desc是降序,null被视为最小的数;
我们来从高到低查询下学生成绩的总分。
select student_id,name,math+chinese+english as 总分 from student order by 总分 desc;
+------------+--------+--------+
| student_id | name | 总分 |
+------------+--------+--------+
| 3 | 王五 | 270.0 |
| 1 | 张三 | 266.0 |
| 4 | 赵六 | 249.0 |
| 2 | 李四 | 229.0 |
| 1 | 张三 | 212.0 |
| 1 | 张三 | 212.0 |
| 5 | 钱七 | NULL |
+------------+--------+--------+
这里我们在使用order by的时候是可以使用别名(总分)的,但是我们之后使用的where条件查询语句是不行的。
我们也可以指定多种排序方式,按优先级进行排序
select * from student order by math desc,chinese asc,english desc;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 1 | 张三 | 89.0 | 78.0 | 99.0 |
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 5 | 钱七 | 78.0 | NULL | 97.0 |
+------------+--------+------+---------+---------+
2,条件查询
语法:
select (列名) from 表名 where 条件;
运算符 | 说明 |
>,>=,<,<= | |
= | 等于,但是null=null的结果为null |
<=> | 等于,null=null为1,true |
!=,<> | 一个是正常的,第二个为null设计的不等于 |
between a and b | 在[a,b]之间的数 |
in(a) | 只要数包含在a即可 |
is null | |
is not null | |
like | 模糊匹配 %代表有多个或者0个字符,_表示必须有一个字符。 |
and | 并且 |
or | 或者 |
not | 非 |
我们来几个小练习。
1,查询语文成绩小于80的学生
select * from student where chinese<=80;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 1 | 张三 | 89.0 | 78.0 | 99.0 |
+------------+--------+------+---------+---------+
2,查询名字为赵六的数学成绩
mysql> select math from student where name = '赵六';
+------+
| math |
+------+
| 97.0 |
+------+
3,查询语文成绩为空的学生编号
select student_id from student where chinese is null;
+------------+
| student_id |
+------------+
| 5 |
+------------+
4,查询数学成绩不等于语文成绩的学生姓名
select name from student where math != chinese;
+--------+
| name |
+--------+
| 张三 |
| 李四 |
| 王五 |
| 赵六 |
| 张三 |
| 张三 |
+--------+
5,查询数学成绩在60到80之间的学生姓名
select name from student where math between 60 and 80;
+--------+
| name |
+--------+
| 钱七 |
+--------+
6,查询语文成绩包含(98,78,45)的学生姓名
select name from student where chinese in (98,78,45);
+--------+
| name |
+--------+
| 张三 |
| 张三 |
| 张三 |
+--------+
7,查询姓王的学生
select * from student where name like '王%';
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
+------------+--------+------+---------+---------+
这里用%的时候他可以是三个名字的也可以是两个名字的但是用’_‘的话就只能是两个名字的。
8,查询王某某必须是三个名字
select name from student where name like '王__';
Empty set (0.00 sec)
9,查询最后名字为七的学生
select * from student where name like '%七';
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 5 | 钱七 | 78.0 | NULL | 97.0 |
+------------+--------+------+---------+---------+
1 row in set (0.00 sec)
3,分页查询
真实的数据库是很大的,我们在使用查询语句是非常的危险的,我们查询一条语句可能会产生巨大的磁盘开销,我们要加以限制。
语法:
select (列名)from 表名 [条件] limit n;
select (列名)from 表名 [条件] limit a,b;
select (列名)from 表名 [条件] limit w offset t;
我用不同的字母写了,但是他的字母其实是一样的,但是我感觉不好区分。
select (列名)from 表名 [条件] limit n;
用法是查询n条数据,我们来查2个学生的成绩;
select * from student limit 2;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 89.0 | 78.0 | 45.0 |
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
+------------+--------+------+---------+---------+
select (列名)from 表名 [条件] limit a,b;
用法是跳过a条数据,查询b条数据
我们跳过张三和李四查询2条记录
select * from student limit 2,2;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
+------------+--------+------+---------+---------+
select (列名)from 表名 [条件] limit w offset t;
这个就是到过来,跳过t条数据,查询w条数据。
select * from student limit 2 offset 2;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
+------------+--------+------+---------+---------+
3,修改
语法:
update 表名 set 列名 = 新 +[条件]
同样,修改也是挺危险的操作,如果不加限制条件,我们可能一下就将所有用户的数据就修改成一个,所以在我们工作中,我们一般是又加了一个字段来标记这个字段是否被删除了。
这个不难,我们来几个例子就行
-- 将张三同学的数学成绩变更为 80 分
update student set math = 80 where name = '张三';
Query OK, 3 rows affected (0.05 sec)
Rows matched: 3 Changed: 3 Warnings: 0
select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 80.0 | 78.0 | 45.0 |
| 2 | 李四 | 99.0 | 56.0 | 74.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 5 | 钱七 | 78.0 | NULL | 97.0 |
| 1 | 张三 | 80.0 | 78.0 | 45.0 |
| 1 | 张三 | 80.0 | 78.0 | 99.0 |
+------------+--------+------+---------+---------+
-- 将李四同学的数学成绩变更为 60 分,语文成绩变更为 70 分
update student set math = 60,chinese = 70 where name = '李四';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 80.0 | 78.0 | 45.0 |
| 2 | 李四 | 60.0 | 70.0 | 74.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 5 | 钱七 | 78.0 | NULL | 97.0 |
| 1 | 张三 | 80.0 | 78.0 | 45.0 |
| 1 | 张三 | 80.0 | 78.0 | 99.0 |
+------------+--------+------+---------+---------+
-- 将总成绩倒数前三的 3 位同学的数学成绩减去 30 分
update student set math = math - 30 order by math + chinese + english asc limit 3;
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0
select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 50.0 | 78.0 | 45.0 |
| 2 | 李四 | 60.0 | 70.0 | 74.0 |
| 3 | 王五 | 89.0 | 88.0 | 93.0 |
| 4 | 赵六 | 97.0 | 67.0 | 85.0 |
| 5 | 钱七 | 48.0 | NULL | 97.0 |
| 1 | 张三 | 50.0 | 78.0 | 45.0 |
| 1 | 张三 | 80.0 | 78.0 | 99.0 |
+------------+--------+------+---------+---------+
-- 将所有同学的语文成绩更新为原来的 2分之一 倍
mysql> update student set chinese = chinese / 2;
Query OK, 6 rows affected (0.02 sec)
Rows matched: 7 Changed: 6 Warnings: 0mysql> select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 1 | 张三 | 50.0 | 39.0 | 45.0 |
| 2 | 李四 | 60.0 | 35.0 | 74.0 |
| 3 | 王五 | 89.0 | 44.0 | 93.0 |
| 4 | 赵六 | 97.0 | 33.5 | 85.0 |
| 5 | 钱七 | 48.0 | NULL | 97.0 |
| 1 | 张三 | 50.0 | 39.0 | 45.0 |
| 1 | 张三 | 80.0 | 39.0 | 99.0 |
+------------+--------+------+---------+---------+
4,删除
语法:
delete from 表名 + 限制条件
删除也是挺危险的,大家一会儿进行完练习就可以把它忘了。
-- 删除两个数学成绩为50张三同学的数学成绩
delete from student where name = '张三' and math = 50;
Query OK, 2 rows affected (0.03 sec)mysql> select * from student;
+------------+--------+------+---------+---------+
| student_id | name | math | chinese | english |
+------------+--------+------+---------+---------+
| 2 | 李四 | 60.0 | 35.0 | 74.0 |
| 3 | 王五 | 89.0 | 44.0 | 93.0 |
| 4 | 赵六 | 97.0 | 33.5 | 85.0 |
| 5 | 钱七 | 48.0 | NULL | 97.0 |
| 1 | 张三 | 80.0 | 39.0 | 99.0 |
+------------+--------+------+---------+---------+
-- 删除整张表数据-- 准备测试表
mysql> delete from student;
Query OK, 5 rows affected (0.03 sec)
select * from student;
Empty set (0.00 sec)
今天我们先到这里,火速更新下期。
相关文章:
MySQL基础知识大总结
一,介绍 数据库是什么,我们在学习其他编程语言的时候会使用数组呀,链表,二叉树等等一些数据结构来存储我们的数据,但是大家有没有发现我们一旦关闭程序,所有的数据都没有了,这在发行的软件来看是…...
取石子游戏
取石子游戏 💐The Begin💐点点关注,收藏不迷路💐 Alice 和 Bob 在玩一个古老的游戏。现在有若干堆石子,Alice 和 Bob 轮流取,每次可以 选择其中某一堆的石子中取出任意颗石子,但不能不取&#x…...
对象的大小
文章目录 一、对象大小 一、对象大小 对象是类实例化出来的,让我们分析一下类对象中哪些成员呢? 类实例化出的每个对象,每个都有独立的数据空间,所以对象中肯定包含 成员变量,那么成员函数是否包含呢? 首…...
基于Boost库的搜索引擎
本专栏内容为:项目专栏 💓博主csdn个人主页:小小unicorn ⏩专栏分类:基于Boots的搜索引擎 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识…...
springMVC 全局异常统一处理
全局异常处理⽅式⼀: 1、配置简单异常处理器 配置 SimpleMappingExceptionResolver 对象: <!-- 配置全局异常统⼀处理的 Bean (简单异常处理器) --> <bean class"org.springframework.web.servlet.handler.SimpleMappingExceptionReso…...
Java面试之多线程并发篇
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说一说自己对于 synchronized 关键字的了解?说说自己是怎么使用 synchronized 关键字?什么是线程安全?Vector是一个线程安全类吗?…...
我的创作之路:机缘、收获、日常与未来的憧憬
目录 前言机缘收获 日常成就一个优化后的二分查找实现 憧憬 前言 每个人的成长旅程都有它独特的轨迹,而我的这段技术创作之路,则源于一次再普通不过的项目分享。 机缘 一切的开始其实是偶然。在一次项目中,我遇到了一个棘手的问题…...
将服务器上的服务映射到本地使用
使用 win R ,输入CMD打开命令行。 ssh -CNg -L 6666:127.0.0.1:8888 rooti-1.gpushare.com -p 53310 从右到左介绍: 53310:服务器的端口号。 i-1.gpushare.com:主机。 8888:服务器上服务所在的端口。 6666&…...
【C++动态规划 子集状态压缩】2002. 两个回文子序列长度的最大乘积|1869
本文涉及知识点 C动态规划 位运算、状态压缩、枚举子集汇总 LeetCode2002. 两个回文子序列长度的最大乘积 给你一个字符串 s ,请你找到 s 中两个 不相交回文子序列 ,使得它们长度的 乘积最大 。两个子序列在原字符串中如果没有任何相同下标的字符&…...
SQL注入--理论--堆叠注入
什么是堆叠注入? 在SQL语句操作的时候,每个语句都是以分号;标志结尾的。 在我们注入的过程中,通过使用多个分号同时进行多个SQL语句的注入,就是堆叠注入。 例如: ?inject1;handler 1919810931114514 open;handler 1…...
CSS —— 子绝父相
相对定位:占位;不脱标 绝对定位:不占位;脱标 希望子元素相对于父元素定位,又不希望父元素脱标(父元素占位) 子级是 绝对定位,不会占有位置, 可以放到父盒子里面的任何一…...
蓝桥杯不知道叫什么题目
小蓝有一个整数,初始值为1,他可以花费一些代价对这个整数进行变换。 小蓝可以花贵1的代价将教数增加1。 小蓝可以花费3的代价将整数增加一个值,这个值是整数的数位中最大的那个(1到9) .小蓝可以花费10的代价将整数变为原来的2倍, 例如,如果整…...
IDEA如何快速地重写方法,如equals、toString等
前言 大家好,我是小徐啊。我们在使用IDEA的时候,有时候是需要重写equals和toString等方法的。这在IDEA中已经很方便的给我们准备好了快速的操作了。今天就来讲解一下。 如何重写 首先,打开要重写方法的文件,让鼠标定位到这个文…...
使用ENSP实现默认路由
一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为2.2.2.1/24 ip address 2.2.2.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为1.…...
打造智能扩容新纪元:Kubernetes Custom Metrics深度解析
自定义指标:Kubernetes Auto Scaling的革命 1. 引言 1.1 Kubernetes与Auto Scaling Kubernetes作为当今容器编排的事实标准,提供了强大的自动化能力,其中Auto Scaling(自动扩缩容)是其核心特性之一。Auto Scaling允许Kubernetes集群根据当前负载动态调整资源,以应对不…...
网络安全工具软件 BlackICE
网络安全工具软件BlackICE的使用和设置说明简介(转) BlackICE 在九九年获得了PC Magazine的技术卓越大奖,专家对它的评语是:“对于没有防火墙的家庭用户来说,BlackICE是一道不可缺少的防线;而对于企业网络,它又增加…...
深入解析分布式优化算法及其Python实现
目录 深入解析分布式优化算法及其Python实现第一部分:分布式优化算法的背景与原理1.1 什么是分布式优化算法?1.2 分布式优化算法的分类1.3 应用场景1.4 分布式优化的关键挑战第二部分:分布式优化算法的通用Python实现2.1 基本组件的实现第三部分:案例1 - 基于梯度下降的分布…...
互联网直播/点播EasyDSS视频推拉流平台视频点播有哪些技术特点?
在数字化时代,视频点播应用已经成为我们生活中不可或缺的一部分。监控技术与视频点播的结合正悄然改变着我们获取和享受媒体内容的方式。这一变革不仅体现在技术层面的进步,更深刻地影响了我们。 EasyDSS视频直播点播平台是一款高性能流媒体服务软件。E…...
打包多个python文件为exe
要使用PyInstaller打包多个Python文件为单个可执行文件(exe),需要执行以下步骤: 安装PyInstaller 如果尚未安装PyInstaller,请打开命令提示符或终端,输入以下命令进行安装: pip install pyinstaller进入Python脚本所在目录 使用命令行工具(如cmd或终端)导航到包含Python脚本…...
深入解析 EasyExcel 组件原理与应用
✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…...
基础免杀 从.rsrc加载shellcode上线
.rsrc 段是PE文件中的一个特定部分,专门用来存储资源数据。这些资源通常包括图标、位图、字符串表、对话框、菜单、版本信息、字体等 具体的shellcode加载方式不在此探讨 在这使用传统的指针执行 WindowsAPI 需要用到如下API FindResource 获取指定资源的信息块…...
Spring MVC 深度剖析:优势与劣势全面解读
文章目录 Spring MVC 优势1. **松耦合**2. **易于测试**3. **灵活性**4. **强大的配置机制**5. **异常处理**6. **国际化支持**7. **数据验证**8. **安全性**9. **性能优化** Spring MVC 劣势1. **学习曲线**2. **配置复杂性**3. **性能开销**4. **视图技术限制**5. **社区和支…...
基于Angular+BootStrap+SpringBoot简单的购物网站
目录 一、项目结构图 二、目录结构解析 后端 (Spring Boot) 前端 (Angular) 三、技术栈 四、具体功能实现 五、数据库设计 六、后端实现 1. 设置Spring Boot项目 2. 数据库实体类 3. 创建Repository 4. 创建Service层 5. 创建Controller层 七、前端实现࿰…...
微软Ignite 2024:建立一个Agentic世界!
在今年的Microsoft Ignite 2024上,AI Agent无疑成为本次大会的重点,已经有十万家企业通过Copilot Studio创建智能体了。微软更是宣布:企业可以在智能体中,使用Azure目录中1800个LLM中的任何一个模型了! 建立一个Agent…...
AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图
一、Bedrock 简介 Amazon Bedrock 是 Amazon Web Services (AWS) 提供的一种生成式 AI 服务。通过 Bedrock,用户可以方便地使用多种基础模型(Foundation Models),包括 OpenAI 的 GPT、Anthropic 的 Claude 等。这些模型可以用于各…...
Android12 mtk设置插充电器自动开机
Android12 mtk平台通常关机后,插上充电器是进入关机充电流程,显示关机充电动画。 那么根据用户需求,如果需要设置关机之后,实现插上充电器后,自动开机。 正常流程:机器关机 --> 插上充电器 --> 显示…...
Linux高阶——1117—TCP客户端服务端
目录 1、sock.h socket常用函数 网络初始化函数 首次响应函数 测试IO处理函数 获取时间函数 总代码 2、sock.c SOCKET() ACCEPT()——服务端使用这个函数等待客户端连接 CONNECT()——客户端使用这个函数连接服务端 BIND()——一般只有服务端使用 LISTEN()——服务端…...
Linux 命令和 vi/vim 命令
Linux 命令概览 1. 文件和目录操作 列出目录内容 ls:列出当前目录内容ls -l:以长格式列出ls -a:显示隐藏文件ls -lh:以长格式和人类可读方式显示大小ls -R:递归列出子目录ls -d */:仅列出目录ls -t&#x…...
鸿蒙征文|鸿蒙心路旅程:始于杭研所集训营,升华于横店
始于杭研所 在2024年7月,我踏上了一段全新的旅程,前往风景如画的杭州,参加华为杭研所举办的鲲鹏&昇腾集训营。这是一个专门为开发者设计的培训项目,中途深入学习HarmonyOS相关技术。对于我这样一个对技术充满热情的学生来说&…...
【docker】docker commit 命令 将当前容器的状态保存为一个新的镜像
在Docker容器中安装了许多软件,并希望将当前容器的状态保存为一个新的镜像,可以使用docker commit命令来创建一个新的镜像。以下是如何操作的步骤: 找到容器ID或名称: 首先,需要找到想要保存的容器的ID或名称。可以使用…...
Java基础1.0
1.Java有哪些数据结构 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据结构,在内存中分配了不同大小的内存空间。 基本数据结构 整数类型:byte,short,long,int。 字符类型:doub…...
完全二叉树的基本操作(顺序存储)
#include<iostream> #include<math.h> using namespace std;#define MaxSize 100 struct TreeNode {int value;bool isEmpty;//判断该节点是否为空 }t[MaxSize];/** *定义一个长度位MaxSize的数组,按照从上到下, *从左到右的方式依次存储完全…...
Vue Form表单的使用,rules格式校验网络校验,键盘按键监听
Form表单 rules格式校验 可以在validator中进行网络请求,实现网络校验 const formRules {userName: [{required: true, message: "用户名不能为空", trigger: blur}, {min: 5,max: 10,message: "长度必须5-10位",trigger: blur}],passWord: …...
PyTorch2
Tensor的常见操作: 获取元素值: 注意: 和Tensor的维度没有关系,都可以取出来! 如果有多个元素则报错; import torch def test002():data torch.tensor([18])print(data.item())pass if __name__ &qu…...
蓝牙 AVRCP 协议详解
前言 随着无线音频设备的普及,蓝牙已经成为智能设备间通信的主流方式之一。除了传输音频流的 A2DP 协议外,AVRCP(Audio/Video Remote Control Profile,音频/视频远程控制协议)为用户提供了对蓝牙音频设备的控制能力&am…...
深入解析下oracle char和varchar2底层存储方式
oracle数据库中,char和varchar2数据类型用来存储字符数据。char类型一旦定义多大,那么它就分配多少字节空间;varchar2类型定义多大,代表它可以扩展的最大大小为多大,一开始空间根据使用来决定。字符数据存储在oracle表…...
2024年底-Arch linux或转为0BSD许可证!
原文:https://archlinux.org/news/providing-a-license-for-package-sources/ 解读:Arch Linux社区通过RFC 40达成共识,决定将所有软件包源代码更改为0BSD许可证。 0BSD许可证是什么?:这是一个非常自由的开源许可证&a…...
YOLOv10改进,YOLOv10添加SE注意力机制,二次C2f结构
摘要 理论介绍 SE 注意力机制是一种提升卷积神经网络(CNN)性能的模块,SE更关注重要的特征图,增强了网络的表现,同时仅增加了较少的参数。SE 机制包含两个主要步骤: Squeeze (压缩):对所有特征图进行全局平均池化,生成一个通道描述符。Excitation (激励):将通道描述符…...
探索运维新视界,CMDB的3D机房功能深度解析
在数字化转型的浪潮中,数据中心作为企业信息架构的核心,其高效、智能的管理成为了企业竞争力的关键因素之一。3D机房作为这一趋势下的创新产物,正逐步改变着传统机房运维的面貌。本文将结合乐维CMDB,深入探讨3D机房的功能细节、应…...
[QDS]从零开始,写第一个Qt Design Studio到程序调用的项目
前言 最近在使用Qt Design Studio进行开发,但是简中网上要不就是只搜得到Qt Designer(Qt Creator内部库),要不就只搜得到一点营销号不知道从哪里搬来的账号,鉴于Qt Design Studio是一个这么强大的软件,自然是需要来进行一下小小的…...
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统 哈喽小伙伴们还,我是Stark-C~ 最近苹果Mac mini 2024款在政府补贴的加持下,仅需3500块钱左右就能到手确实挺香的。我看很多评论区的小伙伴跃跃欲试,但是也有不少之前从未体…...
视频监控实现画面缩放功能
文章目录 概要一、功能说明二、核心实现代码三、技术细节 概要 在视频监控系统中,经常需要查看视频画面中的细节。通过实现区域放大、滚轮缩放和拖拽平移等功能,可以让用户更方便地观察视频细节。本文介绍如何在 Windows 系统下实现这些交互功能。 一、…...
通信综合—8.通信网络安全
一、信息系统安全概述 1.信息系统的构成和分类 信息系统是将用于收集、处理、存储和传播信息的部件组织在一起而成的相关联的整体,般是由计算机硬件、网络和通信设备、计算机软件、信息资源和信息用户组成。它是以处理信息流为目的的人机一体化系统。信息系统主要…...
keepalived双机热备方案实现Nginx高可用
问题描述 只用一台Nginx做反向代理,如果这台Nginx出现故障(比如宕机),则服务不可用。 以下给出keepalived双机热备方案实现Nginx高可用的方法。先介绍几个概念: 高可用 高可用(High Availability)是指系统或服务能…...
数据结构——排序算法第一幕(插入排序:直接插入排序、希尔排序 选择排序:直接选择排序,堆排序)超详细!!!!
文章目录 前言一、排序1.1 概念1.2 常见的排序算法 二、插入排序2.1 直接插入排序2.2 希尔排序希尔排序的时间复杂度 三、选择排序3.1 直接选择排序3.2 堆排序 总结 前言 时间很快,转眼间已经到数据结构的排序算法部分啦 今天我们来学习排序算法当中的 插入排序 和 …...
【JavaEE初阶】枫叶经霜艳,梅花透雪香-计算机是如何运行的?
本篇博客给大家带来的是与计算机相关的知识点, 包括:计算机的组成, 指令, 进程(重点). 文章专栏: JavaEE初阶 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 1. 计算机的组成 1.1 计算机的发展史 计算…...
MySQL数据类型与存储结构
补充知识,事务隔离的等级: READ UNCOMMITTED(读未提交) :这是最低的隔离级别,允许事务读取其他事务未提交的数据,可能导致脏读、不可重复读和幻读问题。 READ COMMITTED(读已提交࿰…...
CSRF保护--laravel进阶篇
laravel对csrf非常重视,专门针对csrf作出了很多的保护。如果您是刚刚接触laravel的路由不久,那么您可能对于web.php路由文件的post请求很疑惑,因为get请求很顺利,而post请求则可能会遭遇失败。其中一个失败的原因是由于laravel的c…...
服务器数据恢复—raid5阵列+LVM+VXFS数据恢复案例
服务器存储数据恢复环境: 某品牌MSA2000FC存储中有一组由7块盘组建的RAID5阵列,另外还有1块硬盘作为热备盘使用。 基于RAID5阵列划分的几个LUN分配给小机使用,存储空间通过LVM管理,重要数据为Oracle数据库及OA服务端。 服务器存储…...
游卡,科锐国际,蓝禾,汤臣倍健,三七互娱,顺丰,快手,途游游戏25秋招内推
游卡,科锐国际,蓝禾,汤臣倍健,三七互娱,顺丰,快手,途游游戏25秋招内推 ①科锐国际25届秋招补录 人力资源类岗位,补录城市:苏州、宁波、武汉、东莞;全日制公办…...