《MySQL数据库》day3 -- 约束条件(非空、唯一性、主键、外键)、事务的四大特性(隔离性)

文章目录

    • 0.技巧
    • 1.约束(非常重要)
      • 1.1什么是约束?
      • 1.2约束的种类
      • 1.3非空约束 not null
      • 1.4唯一性约束 unique
      • 1.5主键约束 primary key
      • 1.6外键约束(foreign key,简称FK)
    • 2.事务(很重要)
      • 2.1什么是事务
      • 2.2只有DML语句才会有事务这一说,其它语句和事务无关!!!
      • 2.3怎么提交事务,怎么回滚事务
      • 2.4事务的四个特性
      • 2.5事务的隔离性

0.技巧

  1. insert 可以一次性插入多条数据,例如:
		insert into t_user(id,name,birth,create_time) values(1,'zs','1980-10-11',now()), (2,'lisi','1981-10-11',now()),(3,'wangwu','1982-10-11',now());
  1. 快速创建表,例如:insert into dept_bak select * from dept; //很少用!

  2. 快速删除表中的数据,

    //删除dept_bak表中的数据
    delete from dept_bak; //这种删除数据的方式比较慢。

    mysql> select * from dept_bak;
    Empty set (0.00 sec)

    delete语句删除数据的原理?(delete属于DML语句!!!)
    表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
    这种删除缺点是:删除效率比较低。
    这种删除优点是:支持回滚,后悔了可以再恢复数据!!!

    truncate语句删除数据的原理?
    这种删除效率比较高,表被一次截断,物理删除。
    这种删除缺点:不支持回滚。
    这种删除优点:快速。

    用法:truncate table dept_bak; (这种操作属于DDL操作。)

    大表非常大,上亿条记录????
    删除的时候,使用delete,也许需要执行1个小时才能删除完!效率较低。
    可以选择使用truncate删除表中的数据。只需要不到1秒钟的时间就删除结束。效率较高。
    但是使用truncate之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复!

    truncate是删除表中的数据,表还在!与delete一致

    删除表操作?
    drop table 表名; // 这不是删除表中的数据,这是把表删除。

1.约束(非常重要)

1.1什么是约束?

约束对应的英语单词:constraint
在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!
约束的作用就是为了保证:表中的数据有效!!

1.2约束的种类

非空约束:not null
唯一性约束: unique
主键约束: primary key (简称PK)
外键约束:foreign key(简称FK)
检查约束:check(mysql不支持,oracle支持)不需要掌握

1.3非空约束 not null

非空约束not null约束的字段不能为NULL,例如:

	drop table if exists t_vip;create table t_vip(id int,name varchar(255) not null  // not null只有列级约束,没有表级约束!);insert into t_vip(id,name) values(1,'zhangsan');insert into t_vip(id,name) values(2,'lisi');insert into t_vip(id) values(3);ERROR 1364 (HY000): Field 'name' doesn't have a default value

not null只有列级约束,没有表级约束!

小插曲:
xxxx.sql这种文件被称为sql脚本文件。
sql脚本文件中编写了大量的sql语句。
我们执行sql脚本文件的时候,该文件中所有的sql语句会全部执行!
批量的执行SQL语句,可以使用sql脚本文件。
在mysql当中怎么执行sql脚本呢?source D:\course\03-MySQL\document\vip.sql
你在实际的工作中,第一天到了公司,项目经理会给你一个xxx.sql文件,你执行这个脚本文件,你电脑上的数据库数据就有了!

1.4唯一性约束 unique

唯一性约束unique约束的字段不能重复,但是可以为NULL,例如:

	drop table if exists t_vip;create table t_vip(id int,name varchar(255) unique,email varchar(255));insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com');insert into t_vip(id,name,email) values(3,'wangwu','wangwu@123.com');select * from t_vip;insert into t_vip(id,name,email) values(4,'wangwu','wangwu@sina.com');ERROR 1062 (23000): Duplicate entry 'wangwu' for key 'name'
	insert into t_vip(id) values(4);insert into t_vip(id) values(5);

±-----±---------±-----------------+
| id | name | email |
±-----±---------±-----------------+
| 1 | zhangsan | zhangsan@123.com |
| 2 | lisi | lisi@123.com |
| 3 | wangwu | wangwu@123.com |
| 4 | NULL | NULL |
| 5 | NULL | NULL |
±-----±---------±-----------------+
name字段虽然被unique约束了,但是可以为NULL。

新需求:name和email两个字段联合起来具有唯一性!!!!

			drop table if exists t_vip;create table t_vip(id int,name varchar(255),email varchar(255),unique(name,email) // 约束没有添加在列的后面,这种约束被称为表级约束。);insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');select * from t_vip;

name和email两个字段联合起来唯一!!!

insert into t_vip(id,name,email) values(3,'zhangsan','zhangsan@sina.com');
ERROR 1062 (23000): Duplicate entry 'zhangsan-zhangsan@sina.com' for key 'name'

什么时候使用表级约束呢?-》 需要给多个字段联合起来添加某一个约束的时候,需要使用表级约束。

unique 和not null可以联合吗?

		drop table if exists t_vip;create table t_vip(id int,name varchar(255) not null unique);

mysql> desc t_vip;
±------±-------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±-------------±-----±----±--------±------+
| id | int(11) | YES | | NULL | |
| name | varchar(255) | NO | PRI | NULL | |
±------±-------------±-----±----±--------±------+

在mysql当中,如果一个字段同时被not null和unique约束的话,该字段自动变成主键字段。(注意:oracle中不一样!)

insert into t_vip(id,name) values(1,'zhangsan');
insert into t_vip(id,name) values(2,'zhangsan'); //错误了:name不能重复
insert into t_vip(id) values(2); //错误了:name不能为NULL。

1.5主键约束 primary key

1.主键约束的相关术语?
主键约束:就是一种约束。
主键字段:该字段上添加了主键约束,这样的字段叫做:主键字段
主键值:主键字段中的每一个值都叫做:主键值。

2.什么是主键?有啥用?
主键值是每一行记录的唯一标识。
主键值是每一行记录的身份证号!!!

记住:任何一张表都应该有主键,没有主键,表无效!!

主键的特征:not null + unique(主键值不能是NULL,同时也不能重复!)

怎么给一张表添加主键约束呢?

		drop table if exists t_vip;// 1个字段做主键,叫做:单一主键create table t_vip(id int primary key,  //列级约束name varchar(255));insert into t_vip(id,name) values(1,'zhangsan');insert into t_vip(id,name) values(2,'lisi');//错误:不能重复insert into t_vip(id,name) values(2,'wangwu');ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'//错误:不能为NULLinsert into t_vip(name) values('zhaoliu');ERROR 1364 (HY000): Field 'id' doesn't have a default value

可以这样添加主键吗,使用表级约束? -》 可以

		drop table if exists t_vip;create table t_vip(id int,name varchar(255),primary key(id)  // 表级约束);insert into t_vip(id,name) values(1,'zhangsan');//错误insert into t_vip(id,name) values(1,'lisi');ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

表级约束主要是给多个字段联合起来添加约束?-》复合主键

		drop table if exists t_vip;// id和name联合起来做主键:复合主键!!!!create table t_vip(id int,name varchar(255),email varchar(255),primary key(id,name));insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(1,'lisi','lisi@123.com');//错误:不能重复insert into t_vip(id,name,email) values(1,'lisi','lisi@123.com');ERROR 1062 (23000): Duplicate entry '1-lisi' for key 'PRIMARY'

在实际开发中不建议使用:复合主键。建议使用单一主键! -》因为主键值存在的意义就是这行记录的身份证号,只要意义达到即可,单一主键可以做到。复合主键比较复杂,不建议使用!!!

一个表中主键约束能加两个吗?

		drop table if exists t_vip;create table t_vip(id int primary key,name varchar(255) primary key);ERROR 1068 (42000): Multiple primary key defined

结论:一张表,主键约束只能添加1个。(主键只能有1个。)

主键值建议使用:int、bigint、char等类型。

不建议使用:varchar来做主键。主键值一般都是数字,一般都是定长的!

主键除了:单一主键和复合主键之外,还可以这样进行分类?
1.自然主键:主键值是一个自然数,和业务没关系。
2.业务主键:主键值和业务紧密关联,例如拿银行卡账号做主键值。这就是业务主键!

在实际开发中使用业务主键多,还是使用自然主键多一些?
自然主键使用比较多,因为主键只要做到不重复就行,不需要有意义。
业务主键不好,因为主键一旦和业务挂钩,那么当业务发生变动的时候,
可能会影响到主键值,所以业务主键不建议使用。尽量使用自然主键。

在mysql当中,有一种机制,可以帮助我们自动维护一个主键值?

		drop table if exists t_vip;create table t_vip(id int primary key auto_increment, //auto_increment表示自增,从1开始,以1递增!name varchar(255));insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');insert into t_vip(name) values('zhangsan');select * from t_vip;

±—±---------+
| id | name |
±—±---------+
| 1 | zhangsan |
| 2 | zhangsan |
| 3 | zhangsan |
| 4 | zhangsan |
| 5 | zhangsan |
| 6 | zhangsan |
| 7 | zhangsan |
| 8 | zhangsan |
±—±---------+

1.6外键约束(foreign key,简称FK)

外键约束涉及到的相关术语:
外键约束:一种约束(foreign key)
外键字段:该字段上添加了外键约束
外键值:外键字段当中的每一个值。

业务背景:请设计数据库表,来描述“班级和学生”的信息?

第一种方案:班级和学生存储在一张表中

t_student
no(pk) name classno classname
----------------------------------------------------------------------------------
1 jack 100 北京市大兴区亦庄镇第二中学高三1班
2 lucy 100 北京市大兴区亦庄镇第二中学高三1班
3 lilei 100 北京市大兴区亦庄镇第二中学高三1班
4 hanmeimei 100 北京市大兴区亦庄镇第二中学高三1班
5 zhangsan 101 北京市大兴区亦庄镇第二中学高三2班
6 lisi 101 北京市大兴区亦庄镇第二中学高三2班
7 wangwu 101 北京市大兴区亦庄镇第二中学高三2班
8 zhaoliu 101 北京市大兴区亦庄镇第二中学高三2班

分析以上方案的缺点:数据冗余,空间浪费!!!!这个设计是比较失败的!

第二种方案:班级一张表、学生一张表

t_class 班级表
classno(pk) classname
------------------------------------------------------
100 北京市大兴区亦庄镇第二中学高三1班
101 北京市大兴区亦庄镇第二中学高三1班

t_student 学生表
no(pk) name cno(FK引用t_class这张表的classno)
----------------------------------------------------------------
1 jack 100
2 lucy 100
3 lilei 100
4 hanmeimei 100
5 zhangsan 101
6 lisi 101
7 wangwu 101
8 zhaoliu 101

当cno字段没有任何约束的时候,可能会导致数据无效。可能出现一个102,但是102班级不存在。所以为了保证cno字段中的值都是100和101,需要给cno字段添加外键约束。

那么:cno字段就是外键字段。cno字段中的每一个值都是外键值。

注意:t_class是父表,t_student是子表

删除表的顺序?-》先删子,再删父。

创建表的顺序?先创建父,再创建子。

删除数据的顺序?-》先删子,再删父。

插入数据的顺序?-》先插入父,再插入子。

思考:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?-》不一定是主键,但至少具有unique约束。

测试:外键可以为NULL吗?-》外键值可以为NULL。

2.事务(很重要)

2.1什么是事务

一个事务其实就是一个完整的业务逻辑。是一个最小的工作单元。不可再分。

什么是一个完整的业务逻辑?假设转账,从A账户向B账户中转账10000.将A账户的钱减去10000(update语句)将B账户的钱加上10000(update语句)这就是一个完整的业务逻辑。

以上的操作是一个最小的工作单元,要么同时成功,要么同时失败,不可再分。这两个update语句要求必须同时成功或者同时失败,这样才能保证钱是正确的。

2.2只有DML语句才会有事务这一说,其它语句和事务无关!!!

insert、delete、update。只有以上的三个语句和事务有关系,其它都没有关系。

因为 只有以上的三个语句是数据库表中数据进行增、删、改的。只要你的操作一旦涉及到数据的增、删、改,那么就一定要考虑安全问题。数据安全第一位!!!

假设所有的业务,只要一条DML语句就能完成,还有必要存在事务机制吗? -》正是因为做某件事的时候,需要多条DML语句共同联合起来才能完成,所以需要事务的存在。如果任何一件复杂的事儿都能一条DML语句搞定,那么事务则没有存在的价值了。
到底什么是事务呢?
说到底,说到本质上,一个事务其实就是多条DML语句同时成功,或者同时失败!
事务:就是批量的DML语句同时成功,或者同时失败!

事务是怎么做到多条DML语句同时成功和同时失败的呢?

InnoDB存储引擎:提供一组用来记录事务性活动的日志文件
事务开启了:
insert
insert
insert
delete
update
update
update
事务结束了!
在事务的执行过程中,每一条DML的操作都会记录到“事务性活动的日志文件”中。在事务的执行过程中,我们可以提交事务,也可以回滚事务。
提交事务? -》清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中。提交事务标志着,事务的结束。并且是一种全部成功的结束。
回滚事务? -》将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件。回滚事务标志着,事务的结束。并且是一种全部失败的结束。

2.3怎么提交事务,怎么回滚事务

提交事务:commit; 语句
回滚事务:rollback; 语句(回滚永远都是只能回滚到上一次的提交点!)

事务对应的英语单词是:transaction

测试一下,在mysql当中默认的事务行为是怎样的?
mysql默认情况下是支持自动提交事务的。(自动提交)
什么是自动提交?
每执行一条DML语句,则提交一次!

这种自动提交实际上是不符合我们的开发习惯,因为一个业务通常是需要多条DML语句共同执行才能完成的,为了保证数据的安全,必须要求同时成功之后再提交,所以不能执行一条就提交一条。

怎么将mysql的自动提交机制关闭掉呢? -》先执行这个命令:start transaction;

演示事务:

		mysql> use bjpowernode;Database changedmysql> select * from dept_bak;Empty set (0.00 sec)mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> insert into dept_bak values(10,'abc', 'tj');Query OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(10,'abc', 'tj');Query OK, 1 row affected (0.00 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC  |+--------+-------+------+|     10 | abc   | tj   ||     10 | abc   | tj   |+--------+-------+------+2 rows in set (0.00 sec)mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from dept_bak;Empty set (0.00 sec)

提交事务:

		mysql> use bjpowernode;Database changedmysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC  |+--------+-------+------+|     10 | abc   | bj   |+--------+-------+------+1 row in set (0.00 sec)mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> insert into dept_bak values(20,'abcQuery OK, 1 row affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.01 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC  |+--------+-------+------+|     10 | abc   | bj   ||     20 | abc   | tj   ||     20 | abc   | tj   ||     20 | abc   | tj   |+--------+-------+------+4 rows in set (0.00 sec)mysql> rollback;Query OK, 0 rows affected (0.00 sec)mysql> select * from dept_bak;+--------+-------+------+| DEPTNO | DNAME | LOC  |+--------+-------+------+|     10 | abc   | bj   ||     20 | abc   | tj   ||     20 | abc   | tj   ||     20 | abc   | tj   |+--------+-------+------+4 rows in set (0.00 sec)

2.4事务的四个特性

  1. 原子性:说明事务是最小的工作单元。不可再分。
  2. 一致性:所有事务要求,在同一个事务当中,所有操作必须同时成功,或者同时失败,以保证数据的一致性。
  3. 隔离性:A事务和B事务之间具有一定的隔离。教室A和教室B之间有一道墙,这道墙就是隔离性。A事务在操作一张表的时候,另一个事务B也操作这张表会那样???
  4. 持久性:事务最终结束的一个保障。事务提交,就相当于将没有保存到硬盘上的数据保存到硬盘上!

2.5事务的隔离性

A教室和B教室中间有一道墙,这道墙可以很厚,也可以很薄。这就是事务的隔离级别。这道墙越厚,表示隔离级别就越高。

事务和事务之间的隔离级别有哪些呢?-》4个级别

读未提交:read uncommitted(最低的隔离级别)《没有提交就读到了》

什么是读未提交?-》事务A可以读取到事务B未提交的数据。这种隔离级别存在的问题就是:脏读现象!(Dirty Read)我们称读到了脏数据。这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是二档起步!

读已提交:read committed《提交之后才能读到》

什么是读已提交?-》事务A只能读取到事务B提交之后的数据。
这种隔离级别解决了什么问题?-》解决了脏读的现象。
这种隔离级别存在什么问题?-》不可重复读取数据。
什么是不可重复读取数据呢?-》在事务开启之后,第一次读到的数据是3条,当前事务还没有结束,可能第二次再读取的时候,读到的数据是4条,3不等于4称为不可重复读取。
这种隔离级别是比较真实的数据,每一次读到的数据是绝对的真实。
oracle数据库默认的隔离级别是:read committed

可重复读:repeatable read《提交之后也读不到,永远读取的都是刚开启事务时的数据》

什么是可重复读取?-》事务A开启之后,不管是多久,每一次在事务A中读取到的数据都是一致的。即使事务B将数据已经修改,并且提交了,事务A读取到的数据还是没有发生改变,这就是可重复读。
可重复读解决了什么问题?-》解决了不可重复读取数据。
可重复读存在的问题是什么?-》可以会出现幻影读。每一次读取到的数据都是幻象。不够真实!
早晨9点开始开启了事务,只要事务不结束,到晚上9点,读到的数据还是那样!
读到的是假象。不够绝对的真实。
mysql中默认的事务隔离级别就是这个!!!!!!!!!!!

序列化/串行化:serializable(最高的隔离级别)

这是最高隔离级别,效率最低。解决了所有的问题。这种隔离级别表示事务排队,不能并发!
synchronized,线程同步(事务同步)每一次读取到的数据都是最真实的,并且效率是最低的。

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

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

相关文章

如何安装和使用 Yarn

如何安装和使用 Yarn Yarn 是一个流行的包管理器,专为 JavaScript 项目设计,以提高依赖项管理的效率和一致性。与 npm 相比,Yarn 提供了更快的依赖安装速度、更准确的版本控制和改进的安全性,使其成为许多开发者的首选。 安装前…

在vue中使用echarts饼图示例

1.安装 npm install echarts --save 2.官方示例 option {title: {text: Referer of a Website,subtext: Fake Data,left: center},tooltip: {trigger: item},legend: {orient: vertical,left: left},series: [{name: Access From,type: pie,radius: 50%,data: [{ value: 104…

用css滤镜做颜色不同的数据卡片(背景图对于css滤镜的使用)

<template> <div class"xx_modal_maincon"><div class"xx_model_bt">履约起始日至计算日配额及履约情况</div><el-row><el-col :span"6"><div class"xx_modal_mod"><div class"mod…

虚拟机Linux-openEuler硬盘空间扩容

虚拟机Linux-openEuler硬盘空间扩容 1、需求场景 我们在使用虚拟机时&#xff0c;可能会出现磁盘空间不够用导致各种bug出现的情况。 首先&#xff0c;我们要扩展虚拟机的可用磁盘空间。如图所示&#xff0c;我的原本硬盘大小为8G&#xff0c;我们扩展到30GB 2、打开虚拟机…

android_uiautomator元素定位

通过UIAUTOMATOR的text属性定位到元素&#xff0c;并打印文本from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # For W3C actions from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriv…

1_88. 合并两个有序数组

1_88. 合并两个有序数组 难度: 简单 提示: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意…

【CSP试题回顾】202006-1-线性分类器(优化)

CSP-202006-1-线性分类器 解题思路 1.数据结构&#xff1a; 代码使用了一个名为 MyPoint 的结构体来表示空间中的点。这个结构体包含三个属性&#xff1a;x 和 y 表示点的坐标&#xff0c;type 表示点的类型。点的类型用整数表示&#xff0c;类型 ‘A’ 用 0 表示&#xff0…

使用U盘重装CentOS7系统

下载CentOS7 系统镜像 制作启动U盘之前&#xff0c;首先要准备一个系统镜像&#xff0c;这里我在CentOS官网直接下载镜像文件&#xff1a; CentOS官网 为了保证下载速度&#xff0c;这里我使用阿里云镜像下载&#xff1a; 阿里云镜像 如上图所示&#xff0c;我需要一个带UI界…

ES 进阶知识

索引Index 一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字来标识&#xff08;必须全部是小写字母&#xff09;&#xff0c;并且当我们…

pytorch代码中optimizer.step()和scheduler.step()有什么区别

optimizer.step()通常用在每个patch_size之中(一个patch_size的数据更新一次模型参数)&#xff0c;而scheduler.step()通常用在epoch里面,但是不绝对&#xff0c;可以根据具体的需求来做。只有用了optimizer.step()&#xff0c;模型才会更新&#xff0c;而scheduler.step()是对…

【机器学习】无监督学习算法之:K均值聚类

K均值聚类 1、引言2、K均值聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.4.1 距离计算公式2.4.1 中心点计算公式 2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; K均值聚类 我不懂&#xff0c;能不能给我讲一讲&#xff1f; 小鱼&#xff1a;行&#xf…

latex在写算法`\For` 和 `\EndFor` 以及 `FOR` 和 `\ENDFOR` ,报错Undefined control sequence.

这里写目录标题 1. 错误原因2. 进行改正3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太一样&#xff0c;不能直接套用总结 1. 错误原因 我在算法中使用\For&#xff0c;\EndFor 2. 进行改正 换成FOR&#xff0c;\ENDFOR 3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太…

cdp集群yarn组件ResourceManager无法启动问题记录

前言&#xff1a;cdp集群装了Kerberos认证&#xff0c;在进行权限集成时集群所有组件高可用状态失效&#xff0c;yarn组件ResourceManager停止 查看ResourceManager组件日志&#xff0c;报错如下&#xff1a; Error starting ResourceManager org.apache.hadoop.service.Servi…

CMake学习笔记(一)一个最简单的CMakeLists嵌套示例

目录 1 mkdir project_macro 2 在project_marco中建立CMakeLists.txt 3 建立专门的src文件夹 4 在src中添加main.cpp和CMakeLists.txt 5 回到project_macro目录&#xff0c;建立build文件夹 6 进入build 文件夹&#xff0c;开始cmake 7 在build文件夹里执行make指令 8 …

Softmax到底行还是列

对于二维张量&#xff0c;飞话不多说&#xff0c;直接看代码 input_tensor torch.tensor([[2,3,5],[2,2,2],[3,1,3]], dtypetorch.float32) # input_tensor torch.rand((1000,1000,100)) print(input_tensor) print("*"*40) print("沿着dim1&#xff0c;计算…

URL 中 pathname 的命名规则

URL 中 pathname 的命名规则 pathname 是 URL 中标识特定资源或页面的路径部分。它通常遵循以下命名约定&#xff1a; 使用小写字母和连字符&#xff1a;路径名应使用小写字母和连字符&#xff08;-&#xff09;分隔单词。避免使用大写字母、下划线或其他特殊字符。使用描述性…

直播行业网络安全建设

一、引言 直播行业近年来蓬勃发展&#xff0c;吸引了大量用户和资本的关注。然而&#xff0c;随着行业的壮大&#xff0c;网络安全问题也日益凸显。构建一个安全、稳定的直播行业网络对于保障用户权益、维护行业秩序具有重要意义。本文将详细探讨直播行业安全网络的构建与保障…

蓝桥杯算法基础(28)11道关于字符串的小题

判断字符串有无重复字符 public class Different{public boolean checkDifferent(String iniString){if(StringUtils.isEmpty(iniString)){//判断是否为空return true;}int[] flagnew int[128];//ASCII码128个字符//扫描字符串for(int i0;i<iniString.length();i){int c(int…

通俗易懂:MySQL如何支持JSON数据类型?提供一个使用案例。

MySQL从5.7.8版本开始正式引入了原生的JSON数据类型&#xff0c;用来支持JSON格式数据的存储、查询和操作。MySQL的JSON数据类型提供了以下几个关键特性&#xff1a; 1. 存储MySQL中的JSON列可以存储符合JSON格式规范的数据&#xff0c;存储的内容会被MySQL转换为内部格式&…

MongoDB知识

1、部署MongoDB &#xff08;1&#xff09;new好一个mongo文件之后执行 &#xff08;出现mongodb.key&#xff09;记得放行端口 openssl rand -base64 666 > mongodb.key &#xff08;2&#xff09;放到一个docker-compose.yml之后docker-compose up -d执行 version: 3.…