【MySQL-3】表的约束

news2024/11/20 14:40:18

目录

1. 整体学习的思维导图

2. 非空约束

3. default约束

4. No Null和default约束

5. 列描述 comment

6. Zerofill

 7. 主键 primary key

复合主键 

8. 自增长 auto_increment

9. 唯一键

10. 外键

11. 实现综合案例


1. 整体学习的思维导图

 

2. 非空约束

正如该标题一样,这个约束作用于数据是否能为空值。

举例我们有一个Student表,表中含有:

  • 学生姓名name

  • 学生年龄age

  • 学生性别gender

mysql> create table if not exists Student( 
-> name varchar(10), 
-> age tinyint unsigned, 
-> gender char(1) );
Query OK, 0 rows affected (0.01 sec)

mysql> desc Student;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| name   | varchar(10)         | YES  |     | NULL    |       |
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| gender | char(1)             | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+

mysql> show create table Student\G;
*************************** 1. row ***************************
       Table: Student
Create Table: CREATE TABLE `Student` (
  `name` varchar(10) COLLATE utf8_bin DEFAULT NULL,
  `age` tinyint(3) unsigned DEFAULT NULL,
  `gender` char(1) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

我们先进行测试插入:

  • 小明 18 男

  • Null 19 女

mysql> insert into Student(name, age, gender) values('小明', 18, '男');
Query OK, 1 row affected (0.00 sec)

mysql> insert into Student(name, age, gender) values(null, 19, '女');
Query OK, 1 row affected (0.00 sec)

mysql> select * from Student;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 小明   |   18 | 男     |
| NULL   |   19 | 女     |
+--------+------+--------+

我们可以看到,该表格在Null项是允许插入空的,这意味这我们可以不用填入姓名,但是为了表的统一性和规范性,我们要求某些项必须填入信息,这时候就需要使用非空约束了! 

mysql> alter table Student modify name varchar(10) not null;
Query OK, 0 rows affected (0.01 sec)

mysql> desc Student;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| name   | varchar(10)         | NO   |     | NULL    |       |
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| gender | char(1)             | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+

我们再次测试插入:

  • 小明 18 男

  • Null 19 女

mysql> insert into Student(name, age, gender) values('小明', 18, '男');
Query OK, 1 row affected (0.00 sec)

mysql> insert into Student(name, age, gender) values(null, 19, '女');
ERROR 1048 (23000): Column 'name' cannot be null

mysql> select * from Student;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 小明   |   18 | 男     |
+--------+------+--------+

由此可见非空约束的作用是让表中某一个字段类型为必填项! 

3. default约束

  default约束是当我们没填任何信息时,表中的字段类型会根据之前设定好的default值进行使用! 

mysql> create table tb10( name varchar(10) default '张三', age tinyint default 18 );
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb10;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(10) | YES  |     | 张三    |       |
| age   | tinyint(4)  | YES  |     | 18      |       |
+-------+-------------+------+-----+---------+-------+

插入空值后,表中的数据会根据是否有default值进行填写。 

mysql> insert into tb10 values();
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb10 values();
Query OK, 1 row affected (0.00 sec)
mysql> select * from tb10;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   18 |
| 张三   |   18 |
+--------+------+

4. No Null和default约束

那么我们给一个字段类型同时加上No NULL和default会发生怎样的情况呢?

  • 非空约束要求我们必须填入数据,default约束可以在我们没填入的字段数据使用默认值

  • 非空+default可以使我们在不选择填入该字段类型时使用默认数据!

mysql> create table tb11(
    -> name varchar(10) not null default '张三',
    -> age tinyint unsigned);
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb11;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name  | varchar(10)         | NO   |     | 张三    |       |
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
mysql> insert into tb11(name, age) values(null, 18);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into tb11(age) values(18);
Query OK, 1 row affected (0.00 sec)

mysql> select * from tb11;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   18 |
+--------+------+

5. 列描述 comment

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。 

mysql> create table student_from(
    -> name varchar(10) not null comment '学生的姓名',
    -> age tinyint unsigned comment '学生的年龄',
    -> id varchar(25) not null default '2023090640XXX' comment '学生的学号'
    -> );
    
mysql> show create table student_from\G;
*************************** 1. row ***************************
       Table: student_from
Create Table: CREATE TABLE `student_from` (
  `name` varchar(10) COLLATE utf8_bin NOT NULL COMMENT '学生的姓名',
  `age` tinyint(3) unsigned DEFAULT NULL COMMENT '学生的年龄',
  `id` varchar(25) COLLATE utf8_bin NOT NULL DEFAULT '2023090640XXX' COMMENT '学生的学号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)

6. Zerofill

 我们之前了解到跟在一个类型后面的数字都会表达一些特殊的含义,那么跟着int(num)的num真正的含义到底是什么呢,这就需要借助zerofill来观察了。

我们创建一个表,两个字段类型一个添加zerofill,一个不添加。

mysql> create table tb_int1(
    -> num1 int,
    -> num2 int zerofill
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb_int1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| num1  | int(11)                   | YES  |     | NULL    |       |
| num2  | int(10) unsigned zerofill | YES  |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+

我们任意插入以下数据:

  • 10 10

  • 15 15

mysql> insert into tb_int1 values(10, 10);
Query OK, 1 row affected (0.01 sec)

mysql> insert into tb_int1 values(15, 15);
Query OK, 1 row affected (0.00 sec)

mysql> select * from tb_int1;
+------+------------+
| num1 | num2       |
+------+------------+
|   10 | 0000000010 |
|   15 | 0000000015 |
+------+------------+

这次可以看到a的值由原来的10变成0000000010,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里设置的是10),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。为什么是这样呢?我们可以用hex函数来证明。 

mysql> select num1, hex(num2) from tb_int1;
+------+-----------+
| num1 | hex(num2) |
+------+-----------+
|   10 | A         |
|   15 | F         |
+------+-----------+

可以看出数据库内部存储的还是1,00001只是设置了zerofill属性后的一种格式化输出而已。 

 7. 主键 primary key

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。 

mysql> create table tb12(
    -> id int unsigned primary key comment '学生的id',
    -> name varchar(10) default '未知' comment '学生的姓名'
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb12;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | NO   | PRI | NULL    |       |
| name  | varchar(10)      | YES  |     | 未知    |       |
+-------+------------------+------+-----+---------+-------+
mysql> insert into tb12(id, name) values(1, '欧阳');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb12(id, name) values(1, '牛马');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

复合主键 

一个表中虽然只能有一个主键,但是一个主键却可以约束多个字段类型!

  • 追加主键

alter table 表名 add primary key(字段列表)  
  • 删除主键

alter table 表名 drop primary key;  
mysql> create table tb13(
    -> num1 int(1) primary key,
    -> num2 int(1)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into tb13(num1, num2) values(1, 2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tb13(num1, num2) values(2, 2);
Query OK, 1 row affected (0.00 sec)

mysql> alter table tb13 drop primary key;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> alter table tb13 add primary key (num1, num2);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc tb13;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| num1  | int(1) | NO   | PRI | NULL    |       |
| num2  | int(1) | NO   | PRI | NULL    |       |
+-------+--------+------+-----+---------+-------+

8. 自增长 auto_increment

我们平时注册qq时,输入完手机号和验证码,qq后端注册成功会给我们返回一个qq号,这个qq号就是自增长的产物,比如马总的qq10001,我的qq2331701342,根据注册用户的数量和注册时间分配qq号。

自增长的特点:

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)

  • 自增长字段必须是整数

  • 一张表最多只能有一个自增长

mysql> create table tb14( 
-> id int unsigned primary key auto_increment, 
-> name varchar(20) not null );


mysql> desc tb14;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)      | NO   |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
mysql> insert into tb14(name) values('欧阳');
mysql> insert into tb14(name) values('牛马');
mysql> insert into tb14(name) values('张明东');
mysql> insert into tb14(name) values('鬼哥');

mysql> select * from tb14;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 欧阳      |
|  2 | 牛马      |
|  3 | 张明东    |
|  4 | 鬼哥      |
+----+-----------+

我们可以看到id这一字段类型我们并没插入和干预,它自己增长。

假设我们自主干预插入 10 刘越,后面再次插入韩旭鹏/王星博那么他们的id号又从几号开始呢?

  • 是从5还是从11

mysql> insert into tb14(id,name) values(10, '刘越');
mysql> insert into tb14(name) values('韩旭鹏');
mysql> insert into tb14(name) values('王星博');

mysql> select * from tb14;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 欧阳      |
|  2 | 牛马      |
|  3 | 张明东    |
|  4 | 鬼哥      |
| 10 | 刘越      |
| 11 | 韩旭鹏    |
| 12 | 王星博    |
+----+-----------+

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入获取的是第一个值) 

mysql > select last_insert_id();  

9. 唯一键

  • 一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题,一个表中可以存在多个唯一键。

  • 唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

关于唯一键和主键的区别:

我们可以简单理解成,主键更多的是标识表之间唯一性的。而唯一键更多的是保证在业务上一张表中不同字段,不要和别的字段信息出现重复。

unique key
mysql> create table tb15(
    -> id int unsigned unique key,
    -> name varchar(10)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb15;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id    | int(10) unsigned | YES  | UNI | NULL    |       |
| name  | varchar(10)      | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
mysql> insert into tb15(id,name) values(1, '欧阳');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb15(id,name) values(1, '牛马');
ERROR 1062 (23000): Duplicate entry '1' for key 'id'    -- id唯一

mysql> insert into tb15(id,name) values(NULL, '牛马');
Query OK, 1 row affected (0.00 sec)                     -- 但是插入的id可以为NULL

mysql> select * from tb15;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 欧阳   |
| NULL | 牛马   |
+------+--------+

10. 外键

        如果我们现在有两张表,一个学生表记录了学生的name,age,telphone,class_id,另外一张class表记录了学生的班级id,和班级名称。我们需要将这两张表的class_id和id关联起来,表面上我们可以通过插入时的判断进行关联,但是插入错误的也不会报错,这时候就需要约束进行强制管理了,这就是外键。 

foreign key (字段名) references 主表(列)  
  • 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

mysql> create table class(
    -> id varchar(10) primary key,
    -> class_name varchar(10) not null comment '班级名称'
    -> );

mysql> create table stu( 
    -> class_id varchar(10), 
    -> name varchar(20) not null comment '学生姓名', 
    -> age tinyint default 18, telphone varchar(15), 
    -> foreign key(class_id) references class(id));

mysql> desc class;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | varchar(10) | NO   | PRI | NULL    |       |
| class_name | varchar(10) | NO   |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

mysql> desc stu;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| class_id | varchar(10) | YES  | MUL | NULL    |       |
| name     | varchar(20) | NO   |     | NULL    |       |
| age      | tinyint(4)  | YES  |     | 18      |       |
| telphone | varchar(15) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

mysql> insert into class(id, class_name) values(1, '软件工程001');
mysql> insert into class(id, class_name) values(2, '软件工程002');

mysql> select * from class;
+----+-----------------+
| id | class_name      |
+----+-----------------+
| 1  | 软件工程001     |
| 2  | 软件工程002     |
+----+-----------------+

mysql> insert into stu values(1, '欧阳', 18, '123456789');
mysql> insert into stu values(1, '牛马', 19, '123456780');
mysql> insert into stu values(2, '张明东', 20, '123456781');
Query OK, 1 row affected (0.00 sec)

mysql> insert into stu values(3, '卢智博', 8, '183456781');
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`Class`.`stu`, CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))
-- 由于id和class_id的外键约束,并没有3

mysql> select * from stu;
+----------+-----------+------+-----------+
| class_id | name      | age  | telphone  |
+----------+-----------+------+-----------+
| 1        | 欧阳      |   18 | 123456789 |
| 1        | 牛马      |   19 | 123456780 |
| 2        | 张明东    |   20 | 123456781 |
+----------+-----------+------+-----------+

11. 实现综合案例

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

  • 商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)

  • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)

  • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

    • 要求:

      • 每个表的主外键

      • 客户的姓名不能为空值邮箱不能重复

      • 客户的性别(男,女)

mysql> create table if not exists goods(
    -> goods_id int unsigned not null unique auto_increment comment '商品编号',
    -> goods_name varchar(30) comment '商品名',
    -> unitprice float(10,2) comment '单价',
    -> category varchar(25) comment '商品类别',
    -> provider varchar(30) comment '供应商'
    -> );


mysql> desc goods;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| goods_id   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| goods_name | varchar(30)      | YES  |     | NULL    |                |
| unitprice  | float(10,2)      | YES  |     | NULL    |                |
| category   | varchar(25)      | YES  |     | NULL    |                |
| provider   | varchar(30)      | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+


mysql> create table if not exists customer(
    -> customer_id int unsigned primary key auto_increment comment '客户号',
    -> name varchar(30) not null comment '姓名',
    -> address varchar(30) comment '住址',
    -> email varchar(25) unique comment '邮箱',
    -> sex enum('男', '女') comment '性别',
    -> card_id varchar(30) unique comment '身份证'
    -> );


mysql> desc customer;
+-------------+-------------------+------+-----+---------+----------------+
| Field       | Type              | Null | Key | Default | Extra          |
+-------------+-------------------+------+-----+---------+----------------+
| customer_id | int(10) unsigned  | NO   | PRI | NULL    | auto_increment |
| name        | varchar(30)       | NO   |     | NULL    |                |
| address     | varchar(30)       | YES  |     | NULL    |                |
| email       | varchar(25)       | YES  | UNI | NULL    |                |
| sex         | enum('男','女')   | YES  |     | NULL    |                |
| card_id     | varchar(30)       | YES  | UNI | NULL    |                |
+-------------+-------------------+------+-----+---------+----------------+


create table purchase( 
    -> order_id int unsigned not null unique key, 
    -> customer_id varchar(5), 
    -> goods_id varchar(5), 
    -> nums int unsigned default 0 , 
    -> foreign key(customer_id) references customer(customer_id), 
    -> foreign key(goods_id) references goods(goods_id)
);

mysql> desc purchase;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| order_id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| customer_id | varchar(5)       | YES  |     | NULL    |                |
| goods_id    | varchar(5)       | YES  |     | NULL    |                |
| nums        | int(10) unsigned | YES  |     | 0       |                |
+-------------+------------------+------+-----+---------+----------------+

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

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

相关文章

C++设计模式行为模式———迭代器模式

文章目录 一、引言二、迭代器模式三、总结 一、引言 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。C标准库中内置了很多容器并提供了合适的迭代器,尽管我们不…

自存 sql常见语句和实际应用

关于连表 查询两个表 SELECT * FROM study_article JOIN study_article_review 查询的就是两个表相乘,结果为两个表的笛卡尔积 相这样 这种并不是我们想要的结果 通常会添加一些查询条件 SELECT * FROM study_articleJOIN study_article_review ON study_art…

为自动驾驶提供高分辨率卫星图像数据,实例级标注数据集OpenSatMap

对于交通控制、自动驾驶等任务来说,大规模的高分辨率与更新频率的地图至关重要。现有的地图构建方法多依赖地面采集数据,这种方法的精度固然较高,但在覆盖范围、更新频率却存在限制,测绘成本也相当高昂。 相比之下,使…

基于STM32的智能语音识别饮水机系统设计

功能描述 1、给饮水机设定称呼,喊出称呼,饮水机回答:我在 2、语音进行加热功能,说:请加热,加热片运行 3、饮水机水位检测,低于阈值播报“水量少,请换水” 4、检测饮水机水温&#xf…

百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践

11月12日,“百度世界2024”在上海世博中心举行。百度创始人、董事长兼首席执行官李彦宏发表了主题为《应用来了》的演讲。 百度地图也为大家带来了干货满满、精彩纷呈的智能体公开课,由百度地图开放平台技术架构师江畅分享《地图智能体:导航…

sourceInsight常用设置和功能汇总(不断更新)(RGB、高亮、全路径、鼠标、宏、TODO高亮)

文章目录 必开配置设置背景颜色护眼的RGB值?sourceInsight4.0中如何设置选中某个单词以后自动高亮的功能?sourceinsight中输入设置显示全路径? 常用sourceInsight4.0中文乱码怎么解决,注意事项是什么?如何绑定鼠标中键…

[JavaWeb] 尚硅谷JavaWeb课程笔记

1 Tomcat服务器 Tomcat目录结构 bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动To…

uniapp开发微信小程序笔记2-开发静态页面(新建页面、内置组件、设置编译模式、样式、SCSS的使用)

前言:本文从新建页面、认识内置组件、设置编译模式、样式、SCSS的使用来逐步形成对微信小程序开发结构的认识 一、新建页面 pages就是放页面代码的文件夹,点击新建页面就可以自动新增页面,并且可以看到pages.json里面也会自动添加该页面的路…

Linux插件zsh(oh-my-zsh)

一、oh-my-zsh基本介绍 oh-my-zsh: https://github.com/ohmyzsh/ohmyzshhttps://github.com/ohmyzsh/ohmyzsh 注意:需要先安装zsh命令,才能安装oh-my-zsh,先测试是否安装了zsh rootserver:/opt # zsh --version zsh 5.8 (x86_6…

第7章硬件测试-7.4 专业实验

7.4 专业实验 7.4.1 EMC测试EMS的测试项目如下。1.静电放电抗扰度(ESD)2.辐射电磁场(80 MHz~1000 MHz)抗扰度(RS)3.电快速瞬变/脉冲群抗扰度4.浪涌(雷击)抗扰度5.注入电流&#xff0…

H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因

EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方…

5G CPE与4G CPE的主要区别有哪些

什么是CPE? CPE是Customer Premise Equipment(客户前置设备)的缩写,也可称为Customer-side Equipment、End-user Equipment或On-premises Equipment。CPE通常指的是位于用户或客户处的网络设备或终端设备,用于连接用户…

Vue 专属状态管理库Pinia的使用与实践

目录 前言1. 什么是 Pinia?2. Pinia 的安装与基本配置2.1 安装 Pinia2.2 在 Vue 应用中配置 Pinia 3. 使用 Pinia 创建和管理状态3.1 定义一个简单的 Store3.2 在组件中使用 Store 4. Pinia 的高级功能4.1 使用 Getter 简化数据处理4.2 支持异步操作4.3 在服务端渲染…

如何基于Netty手写简单的Tomcat?

如何基于Netty手写简单的Tomcat? 我们最常用的服务器是tomcat ,我们使用tomcat 也主要作为http服务器 。 http协议是基于TCP 协议,换句话说使用socket 或者 NIO编程,只要能正确的解析http报文,然后将结果按照 http 报…

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机(Exchanges)4.2 临时队列(Temporary Queues&am…

金山云Q3调整后EBITDA率提升至9.8% 经营效率和盈利能力强劲增长

11月19日,金山云公布了2024年第三季度业绩。 季度内,公司在收入规模、盈利能力、经营现金流方面都取得了扎实的进展。财报显示,金山云Q3营收18.9亿元,同比回归两位数快速增长,达16.0%;公有云实现收入11.8亿…

Python轴承故障诊断 (19)基于Transformer-BiLSTM的创新诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

Linux 安装 jdk8

将原有的 JDK 卸载干净(可选) # 查找并显示出系统所有已安装的与 JDK 相关的 rpm 软件包名称 rpm -qa | grep jdk # 删除 jdk rpm -e --nodeps 要卸载的JDK 安装 一、方法一:yum 包管理器安装 1)检索可用包 yum search java |…

ESLint的简单使用(js,ts,vue)

一、ESLint介绍 1.为什么要用ESLint 统一团队编码规范(命名,格式等) 统一语法 减少git不必要的提交 减少低级错误 在编译时检查语法,而不是等js引擎运行时才检查 2.eslint用法 可以手动下载配置 可以通过vue脚手架创建项…

11.19机器学习_逻辑回归

十二 逻辑回归 1.概念 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。 逻辑回归一般用于…