约束的笔记
约束的分类
为什么需要约束
为了保证数据的完整性
①实体完整性(Entity Integrity)(同一个表中,不能存在两条完全相同无法区分的记录)
②域完整性(Domain Integrity)
③引用完整性(Referential Integrity)
④用户自定义完整性(User-defined Integrity)
什么是约束
约束是表级的强制规定。 (对表中字段的限制)
如何添加/删除约束
create table 时添加约束
alter table 时添加约束,删除约束
约束的分类
①根据约束数据列的限制,约束可分为:
单列约束:每个约束只约束一列
多列约束:每个约束可约束多列数据
②根据约束的作用范围,约束可分为:
列级约束:只能作用在一个列上,跟在列的定义后面 (将此约束声明在对应字段的后面)
表级约束:可以作用在多个列上,不与列一起,而是单独定义(在表中所有字段都声明完,在所有字段后面声明的约束)
③根据约束起的作用,约束可分为:
NOT NULL 非空约束,规定某个字段不能为空
UNIQUE 唯一约束,规定某个字段在整个表中是唯一的
PRIMARY KEY 主键(非空且唯一)约束
FOREIGN KEY 外键约束
CHECK 检查约束
DEFAULT 默认值约束
非空约束的使用
查看表的约束
SELECT * FROM information_schema.table_constraints
WHERE table_name = '表名称';
作用
限定某个字段/某列的值不允许为空
特点 ------------------------只能使用列级约束,将此约束声明在对应字段的后面
①默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型
②非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空
③一个表可以有很多列都分别限定了非空
④空字符串''不等于NULL,0也不等于NULL
#在创建表时添加约束CREATE TABLE test1(id INT NOT NULL,last_name VARCHAR(15) NOT NULL,email VARCHAR(25),salary DOUBLE(10,2));
注意点:
约束不为null的字段不能添加为null的数据
约束不为null的字段也不能修改为null
alter table 时添加约束,删除约束
修改时要检查该字段是否有为null的数据,如果有要修改以后才能添加约束成功
唯一性约束的使用
作用
用来限制某个字段/某列的值不能重复。
唯一约束允许出现多个空值null
3 特点
①同一个表可以有多个唯一约束。
②唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。
③唯一性约束允许列值为空。(而且可以多次添加null值)
④在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。
⑤MySQL会给唯一约束的列上默认创建一个唯一索引。
添加唯一约束
①在建表时:
列级约束:
create table 表名称(
字段名 数据类型,
字段名 数据类型 unique,
字段名 数据类型 unique key,
字段名 数据类型
);
表级约束:(上一个字段类型后要加逗号)
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
[constraint 约束名] unique key(字段名)
);
举例:
CREATE TABLE test2(id INT UNIQUE,#列级约束last_name VARCHAR(15),email VARCHAR(25) UNIQUE,salary DOUBLE(10,2),#表级约束CONSTRAINT uk_test2_email UNIQUE(email)#uk_test2_email为约束的名字);#可以向声明为unique的字段添加null。而且可以多次添加null值INSERT INTO test2(id,last_name,email,salary)VALUES(2,'Tom1',NULL,4500);INSERT INTO test2(id,last_name,email,salary)VALUES(3,'Tom2',NULL,4500);#updata修改也不能修改为相同的。
②在alter table时添加约束
#字段列表中如果是一个字段,表示该列的值唯一。如果是两个或更多个字段,那么复合唯一,即多个字段的组合是唯一的
#方式1:-------------------------ADD
alter table 表名称 add unique key(字段列表);
#方式2:-------------------------MODIFY
alter table 表名称 modify 字段名 字段类型 unique;
关于复合唯一约束
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
unique key(字段列表) #字段列表中写的是多个字段名,多个字段名用逗号分隔,表示那么是复合唯一,即多个字段的组合是唯一的 );
举例:
#复合的唯一性约束(多个字段放一起约束,用表约束的方式)CREATE TABLE USER(id INT,`name` VARCHAR(15),`password` VARCHAR(25),#表级约束(name与password结合的唯一性约束)CONSTRAINT uk_user_name_pwd UNIQUE(`name`,`password`));#复合约束的多个字段只要有一个不同,那就是不同INSERT INTO USERVALUES(1,'Tom','abc');INSERT INTO USERVALUES(1,'Tom1','abc');#可以添加成功SELECT * FROM USER;
删除唯一约束
①添加唯一性约束的列上也会自动创建唯一索引。
②删除唯一约束只能通过删除唯一索引的方式删除。
③删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。
④如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和() 中排在第一个的列名相同。也可以自定义唯一性约束名。
格式:
ALTER TABLE 表名
DROP INDEX 唯一索引名;
主键约束
作用
用来唯一标识表中的一行记录。
关键字
primary key
特点
①主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。
②一个表最多只能有一个主键约束,建立主键约束可以在列级别创建,也可以在表级别上创建。
③主键约束对应着表中的一列或者多列(复合主键)
④如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。
⑤MySQL的主键名总是PRIMARY,就算自己命名了主键约束名也没用。
⑥当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(能够根据主键查询
的,就根据主键查询,效率更高)。如果删除主键约束了,主键约束对应的索引就自动删除了。
⑦需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。
添加主键约束
①创建表时
列级约束:
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型 primary key,
字段名 数据类型
);
表级约束:(上一个字段类型后要加逗号)
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
[constraint 约束名] primary key(字段名)
);
②ALTER TABLE时
格式:
ALTER TABLE 表名
ADD PRIMARY KEY (列名一个或多个)
举例:
#一个表中只能有一个主键约束;特征:非空且唯一CREATE TABLE test3(id INT PRIMARY KEY,#列级约束last_name VARCHAR(15),salary DOUBLE(10,2),email VARCHAR(25));CREATE TABLE test3(id INT,last_name VARCHAR(15),salary DOUBLE(10,2),email VARCHAR(25),#表级约束CONSTRAINT pk_test5_id PRIMARY KEY(id)#MySQL的主键名总是PRIMARY,即使命名了);
举例:
#在alter table 时添加约束CREATE TABLE test4(id INT,#列级约束last_name VARCHAR(15),salary DOUBLE(10,2),email VARCHAR(25));ALTER TABLE test4ADD PRIMARY KEY (id);
关于复合主键
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
primary key(字段名1,字段名2) #表示字段1和字段2的组合是唯一的,也可以有更多个字段
);
删除主键约束(在实际开发中不会删除主键约束)
格式:
alter table 表名称 drop primary key;
说明:删除主键约束,不需要指定主键名,因为一个表只有一个主键,删除主键约束后,非空还存
在。
自增列:AUTO_INCREMENT
开发中一旦主键作用的字段上声明有AUTO_INCREMNENT,则我们在添加数据时,就不要给主键对应的字段赋值。
作用:
某个字段的值自增
关键字
auto_increment
特点和要求
(1)一个表最多只能有一个自增长列
(2)当需要产生唯一标识符或顺序值时,可设置自增长
(3)自增长列约束的列必须是键列(主键列,唯一键列)
(4)自增约束的列的数据类型必须是整数类型
(5)如果自增列指定了 0 和 null,会在当前最大值的基础上自增;如果自增列手动指定了具体值,直接
赋值为具体值。
添加自增约束
①在创建表时添加
CREATE TABLE test5(
id INT PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(15)
);INSERT INTO test5(last_name)
VALUES('Tom');
SELECT * FROM test5;
#当我们向主键(含auto_increment)的字段上添加0或null时,
#实际上会自动的往上添加指定的字段数值(即0与null添加不上去,他依然自增)#当我们向主键(含auto_increment)的字段上添加一个之前没有的值,可以添加成功,后面自增以它为初始值增长
INSERT INTO test5(id,last_name)
VALUES(6,'Tom');
SELECT * FROM test5;
②在alter table 时添加AUTO_INCREMENT
格式:
alter table 表名称 modify 字段名 数据类型 auto_increment;#给这个字段增加自增约束
举例:
CREATE TABLE test6(id INT PRIMARY KEY,last_name VARCHAR(15));ALTER TABLE test6MODIFY id INT AUTO_INCREMENT;DESC test6;
③如何删除自增约束:
格式:
alter table 表名称 modify 字段名 数据类型; #去掉auto_increment相当于删除
MySQL 8.0新特性—自增变量的持久化
① 在MySQL 5.7系统中,对于自增主键的分配规则,是由InnoDB数据字典
内部一个 计数器 来决定的,而该计数器只在 内存中维护 ,并不会持久化到磁盘中。当数据库重启时,该计数器会被初始化。
②MySQL 8.0将自增主键的计数器持久化到 重做日志 中。每次计数器发生改变,都会将其写入重做日志中。如果数据库重启,InnoDB会根据重做日志中的信息来初始化计数器的内存值。
作用
限定某个表的某个字段的引用完整性。(从表中添加的字段必须是主表中有的)
关键字
FOREIGN KEY
主表和从表/父表和子表
主表(父表):被引用的表,被参考的表
从表(子表):引用别人的表,参考别人的表
特点
(1)从表的外键列,必须引用/参考主表的主键或唯一约束的列 (主表中被关联的键必须声明为主键约束或是唯一性约束)因为被依赖/被参考的值必须是唯一的
(2)在创建外键约束时,如果不给外键约束命名,默认名不是列名,而是自动产生一个外键名
(3)创建(CREATE)表时就指定外键约束的话,先创建主表,再创建从表
(4)删表时,先删从表(或先删除外键约束),再删除主表
(5)当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据
(6)在“从表”中指定外键约束,并且一个表可以建立多个外键约束
(7)从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样,逻辑意义一致。
(9)删除外键约束后,必须 手动 删除对应的索引
外键约束
添加外键约束
(1)建表时
create table 主表名称(
字段1 数据类型 primary key,
字段2 数据类型
);
create table 从表名称(
字段1 数据类型 primary key,
字段2 数据类型,
[CONSTRAINT <外键约束名称>] FOREIGN KEY(从表的某个字段) references 主表名(被参考字段)
);
#(从表的某个字段)的数据类型必须与主表名(被参考字段)的数据类型一致,逻辑意义也一样
#(从表的某个字段)的字段名可以与主表名(被参考字段)的字段名一样,也可以不一样
-- FOREIGN KEY: 在表级指定子表中的列
-- REFERENCES: 标示在父表中的列
举例:
#先创建主表CREATE TABLE dept1(dept_id INT PRIMARY KEY,#(主表中被关联的键必须声明为主键约束或是唯一性约束)因为被依赖/被参考的值必须是唯一的dept_name VARCHAR(15));#再创建从表CREATE TABLE emp1(emp_id INT PRIMARY KEY AUTO_INCREMENT,emp_name VARCHAR(15),department_id INT,#表级约束CONSTRAINT fk_emp1_dept_id FOREIGN KEY (department_id) REFERENCES dept1(dept_id));DESC emp1; #从表中添加的数据必须是主表中有的INSERT INTO dept1VALUES (10,'IT');INSERT INTO emp1VALUES(1001,'Tom',10);#当主表中的字段被关联时,该字段不可以被删除,该数据也不能被修改DELETE FROM dept1WHERE dept_id =10;UPDATE dept1SET dept_id=10WHERE dept_id =10;
(2)建表后
格式:
ALTER TABLE 从表名 ADD [CONSTRAINT 约束名] FOREIGN KEY (从表的字段) REFERENCES 主表名(被引用字段) [on update xx][on delete xx];
举例:
#先创建主表CREATE TABLE dept2(dept_id INT PRIMARY KEY,dept_name VARCHAR(15));#再创建从表CREATE TABLE emp2(emp_id INT PRIMARY KEY AUTO_INCREMENT,emp_last_name VARCHAR(20),department_id INT);ALTER TABLE emp2ADD CONSTRAINT fk_emp_dept2_did FOREIGN KEY(department_id) REFERENCES dept2(dept_id);
总结:约束关系是针对双方的
添加了外键约束后,主表的修改和删除数据受约束
添加了外键约束后,从表的添加和修改数据受约束
在从表上建立外键,要求主表必须存在
删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除
约束等级 (更新用Cascade,删除用Set null)
①Cascade方式 :在父表上update/delete记录时,同步update/delete掉子表的匹配记录
②Set null方式 :在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子
表的外键列不能为not null
③No action方式 :如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
④Restrict方式 :同no action, 都是立即检查外键约束
⑤Set default方式 (在可视化工具SQLyog中可能显示空白):父表有变更时,子表将外键列设置
成一个默认的值,但Innodb不能识别
对于外键约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 的方式。(直接将该字段添加到外约束语句的后面)
删除外键约束
流程如下:
(1)第一步先查看约束名和删除外键约束
SELECT * FROM information_schema.table_constraints WHERE table_name = '表名称';#查看某个表的约束名
ALTER TABLE 从表名 DROP FOREIGN KEY 外键约束名;
(2)第二步查看索引名和删除索引。(注意,只能手动删除)
SHOW INDEX FROM 表名称; #查看某个表的索引名
ALTER TABLE 从表名 DROP INDEX 索引名;
DEFAULT约束
作用
给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显式赋值,则赋值为默认值。
关键字
DEFAULT
如何给字段加默认值
(1)建表时
create table 表名称(
字段名 数据类型 primary key,
字段名 数据类型 unique key not null,
字段名 数据类型 unique key,
字段名 数据类型 not null default 默认值,
);
(2)建表后
alter table 表名称 modify 字段名 数据类型 default 默认值;
#如果这个字段原来有非空约束,你还保留非空约束,那么在加默认值约束时,还得保留非空约束,否则非空约束就被删除了
#同理,在给某个字段加非空约束也一样,如果这个字段原来有默认值约束,你想保留,也要在modify语句中保留默认值约束,否则就删除了
alter table 表名称 modify 字段名 数据类型 default 默认值 not null;
如何删除默认值约束
alter table 表名称 modify 字段名 数据类型 ;#删除默认值约束,也不保留非空约束
alter table 表名称 modify 字段名 数据类型 not null; #删除默认值约束,保留非空约束
alter table employee modify gender char; #删除gender字段默认值约束,如果有非空约束,也一并删除
alter table employee modify tel char(11) not null;#删除tel字段默认值约束,保留非空约束
相关文章:
约束的笔记
约束的分类 为什么需要约束 为了保证数据的完整性 ①实体完整性(Entity Integrity)(同一个表中,不能存在两条完全相同无法区分的记录) ②域完整性(Domain Integrity) ③引用完整性(Referential Integ…...
【Docker】安装registry本地镜像库,开启Https功能
下载镜像 docker pull registry:2 需要启动https功能,就要生成服务端的自签名的证书和私钥,以及在docker客户端安装这个经过签名的证书。 第一步:生成公私钥信息,第二步,制作证书签名申请文件, 第三步&…...
el-tree拖拽光标错位问题
背景:el-tree实现的分类树增加拖拽功能后,当分类树由于数量较多产生滚动条,如果分类树已滚动,进行拖拽时会造成光标错位的问题: 原因:el-tree拖拽光标定位的高度并未加上滚动的高度解决:将滚动的样式属性放…...
Linux权限
目录 一.Linux权限的概念 二.Linux权限管理 1.文件访问者的分类 2.文件类型和访问权限 1.文件类型 2.基本权限 3.文件权限的表示方法 1.字符表示法 2.八进制表示法 4.文件权限的相关访问方法 1.chmod 2.chown 3.chgrp 4.粘滞位 三.权限总结 一.Linux权限的概念 …...
mysql binlog 日志分析查找
文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...
win32汇编环境,窗口程序中对按钮控件常用操作的示例
;运行效果 ;win32汇编环境,窗口程序中对按钮控件常用操作的示例 ;常用的操作,例如创建按钮控件,使其无效,改变文本,得到文本等。 ;将代码复制进radasm软件里,直接就可以编译运行。重点部分加备注。 ;>&g…...
风水算命系统架构与功能分析
系统架构 服务端:Java(最低JDK1.8,支持JDK11以及JDK17)数据库:MySQL数据库(标配5.7版本,支持MySQL8)ORM框架:Mybatis(集成通用tk-mapper,支持myb…...
如何在 Ubuntu 22.04 上安装和配置邮件服务器教程
简介: 在本指南中,我们将演示如何在 Ubuntu 22.04 上安装和配置邮件服务器,因为大中型公司可以从拥有私人邮件服务器中获益匪浅。通过使用邮件服务器,可以密切监视所有电子邮件流量。此外,自定义设置的灵活性使得建立…...
后门原理与实践
实验目录 windows主机与kali虚拟机实现互联互通使用netcat获取主机操作Shell,cron启动使用socat获取主机操作Shell, 任务计划启动使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell使用MSF meterpreter生成获取目标主机…...
代理模式详解与应用
代理模式(Proxy Pattern),也称为委托模式或 surrogate 模式,是一种结构型设计模式。它为其他对象提供一个代理以控制对这个对象的访问。通过引入代理对象,可以在不改变原始对象接口的前提下,添加额外的功能…...
C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码
1 分词 分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词…...
基于单片机的智能家居排气扇系统设计
1系统方案设计 本设计基于单片机的智能家居排气扇系统采用STM32单片机作为主控制器,通过DHT11温湿传感器和MQ-2烟雾传感器实现温度、湿度、烟雾检测,在自动模式下,可以根据烟雾浓度通过PWM调速的方式自动调节排气扇的速度,而在手…...
基于JAVA+SpringBoot+Vue的二手车交易系统
基于JAVASpringBootVue的二手车交易系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽…...
【JVM-2.2】使用JConsole监控和管理Java应用程序:从入门到精通
在Java应用程序的开发和运维过程中,监控和管理应用程序的性能和资源使用情况是非常重要的。JConsole是Java Development Kit(JDK)自带的一款图形化监控工具,它可以帮助开发者实时监控Java应用程序的内存、线程、类加载以及垃圾回收…...
windows及linux 安装 Yarn 4.x 版本
1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…...
VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署
近期有个工作需求是进行 YOLOv8 模型的 C 部署,部署环境如下 系统:WindowsIDE:VS2015语言:COpenCV 4.5.0OnnxRuntime 1.15.1 0. 预训练模型保存为 .onnx 格式 假设已经有使用 ultralytics 库训练并保存为 .pt 格式的 YOLOv8 模型…...
1.两数之和--力扣
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1…...
MySQL库表的操作
目录 一、库的操作 1.1库的创建 1.2字符集和校验规则 1.2.1 查看系统默认字符集以及校验规则 1.2.2 查看数据库支持的字符集 1.2.3 查看数据库支持的字符集校验规则 1.2.4 校验规则对数据库的影响 1.3操纵数据库 1.3.1显示库 1.3.2显示创建语句 1.3.3修改数据库 1.3…...
【强化学习】深度确定性策略梯度算法(DDPG)详解(附代码)
📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…...
单片机实物成品-011 火灾监测
火灾监测(20个版本) 版本20: oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...
牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定
1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 示例 输入: 3 1 2 3 0 4 5 0 0…...
Mysql--重点篇--索引(索引分类,Hash和B-tree索引,聚簇和非聚簇索引,回表查询,覆盖索引,索引工作原理,索引失效,索引创建原则等)
索引是数据库中用于加速查询操作的重要机制。通过索引,MySQL可以快速定位到满足查询条件的数据行,而不需要扫描整个表。合理的索引设计可以显著提高查询性能,但不合理的索引可能会导致性能下降和磁盘空间浪费。因此,理解索引的工作…...
Vue3框架核心功能点响应式数据reactive、组合式API setup、computed、组件通信、路由导航,状态管理vuex、pinia等的实战示例代码
记录几个Vue3框架核心功能点,例如响应式数据reactive、组合式API setup、computed、组件通信、路由导航,状态管理vuex、pinia……等实战示例代码: 一、响应式数据(Reactive Data) 创建响应式对象 使用reactive函数创建…...
Gitlab-Runner配置
原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务,如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信,接收作业并提交到执行队列,Gitlab-Runner从队列中获取作业,并允许在不同环境下进行作…...
多台PC共用同一套鼠标键盘
当环境中有多个桌面 pc 需要操作的时候,在 多台 pc 之间切换会造成很多的不方便 可以通过远程进行连接,但是有一个更好的方案是让多台机器之间共用同一套键盘鼠标 常用的解决方案 synergy 和 sharemouse,通过移动光标在不同的 pc 间切换 s…...
学会使用computed计算属性与watch监听(小白学习笔记)
1. 使用不同方法实现 姓名案例 需求: 根据data中 firstName 和 lastName 的值 来动态地展示全名 1.1. 插值语法 如果只使用学过的插值语法 那可以在模板中直接使用两个变量 . 但是如果需要对数据进行计算等处理 就需要在插值语法里写复杂的js表达式. 这样就违背了vue风格指…...
atoi函数的概念和使用案例
atoi 函数是 C 语言标准库中的一个函数,它用于将字符串转换为整数。atoi 的名称是 “ASCII to integer” 的缩写。该函数定义在 <stdlib.h> 头文件中。 概念 atoi 函数会从字符串的开始位置开始转换,直到遇到第一个非数字字符或遇到字符串结束符…...
unittest VS pytest
以下是 unittest 和 pytest 框架的对比表格: 特性unittestpytest设计理念基于类的设计,类似于 Java 的 JUnit更简洁,基于函数式编程设计,支持类和函数两种方式测试编写需要继承 unittest.TestCase 类,方法以 test_ 开…...
B2C API安全警示:爬虫之外,潜藏更大风险挑战
在数字化时代,B2C(Business-to-Consumer)电子商务模式已成为企业连接消费者、推动业务增长的重要桥梁。而B2C API(应用程序编程接口)作为企业与消费者之间数据交互的桥梁,其安全性更是至关重要。然而&#…...
大型语言模型(LLM)中的tokens是什么
大型语言模型(LLM)中的tokens是什么 在大型语言模型(LLM)中,tokens是文本处理的基本单位,它可以是一个单词、一个字符、一个标点符号,或者是一个特殊的标记。以下是关于tokens的详细介绍及举例: 一、tokens的定义和作用 定义:tokens是将文本分割成的一个个有意义的…...
自动驾驶---E2E架构演进
1 背景 模型最早应用的自动驾驶模块就是感知层面,随着技术的发展,逐渐开始应用到决策规划等其它模块。端到端自动驾驶架构是一种基于深层神经网络模型和方法的自动驾驶技术模式。目前一段式端到端系统只有在英伟达早期所做的demo中实现,再者就…...
w~自动驾驶~合集16
我自己的原文哦~ https://blog.51cto.com/whaosoft/12765612 #SIMPL 用于自动驾驶的简单高效的多智能体运动预测基准 原标题:SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 论文链接:https://ar…...
python学opencv|读取图像(三十)使用cv2.getAffineTransform()函数倾斜拉伸图像
【1】引言 前序已经学习了如何平移和旋转缩放图像,相关文章链接为: python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像-CSDN博客 python学opencv|读取图像(二十八࿰…...
Java异常处理
1.异常是程序运行过程中出现的非正常现象,例如输入错误、需要处理的文件不存在,在网络上传输数据但是网络没有连接等2.在java中我们把异常分为:错误(Error)和异常(Exception)Exception类有自己的…...
STM32-DMA数据转运
注:DMA对应的库函数文件讲解 DMA_GetITStatus(uint32_t DMAy_IT) 是一个用于检查DMA(直接存储器访问)中断状态的库函数。它通常在使用STM32系列微控制器及其标准外设库时被调用。此函数的主要作用是返回指定DMA通道的特定中断标志的状态&…...
ASP.NET Core 实现微服务 - Elastic APM
这次要给大家介绍的是Elastic APM ,一款应用程序性能监控组件。APM 监控围绕对应用、服务、容器的健康监控,对接口的调用链、性能进行监控。在我们实施微服务后,由于复杂的业务逻辑,服务之间的调用会像蜘蛛网一样复杂。有了调用链…...
Stable Diffusion本地部署教程(附安装包)
想使用Stable Diffusion需要的环境有哪些呢? python3.10.11(至少也得3.10.6以上):依赖python环境NVIDIA:GPUgit:从github上下载包(可选,由于我已提供安装包,你可以不用git)Stable Diffusion安装包工具包: NVIDIA:https://developer.nvidia.com/cuda-toolkit-archiv…...
图片和短信验证码(头条项目-06)
1 图形验证码接口设计 将后端⽣成的图⽚验证码存储在redis数据库2号库。 结构: {img_uuid:0594} 1.1 创建验证码⼦应⽤ $ cd apps $ python ../../manage.py startapp verifications # 注册新应⽤ INSTALLED_APPS [django.contrib.admin,django.contrib.auth,…...
天气app的收获
天气app的收获 无论如何,是基于MVC模式,但都是从UI页面开始设计,然后根据输入的城市名称,将其传入到model层,进行相对应的处理。 对于controler层,需要通过一些协议完成一些输入的反馈,例如输…...
软件自动定时启动器
点击添加软件,可以添加可执行文件软件,设置启动的时间,也可以设置关闭的时间 注意,时间为00:00:00 等于没设置,这个时间不在设置范围,其他任何时间都可以 1.1更新 1:修复…...
k8s部署rocketmq踩坑笔记
给团队部署一个rocketmq4.8.0. k8s上部署的broker,注册到nameserver上是自己的pod ip,导致本机连接到的broker的pod ip,这个ip k8s集群外的机器是无法联通的。 nameserver上注册的是这个pod ipv4 尝试将broker的配置brokerIP1修改为注册到na…...
从项目代码看 React:State 和 Props 的区别及应用场景实例讲解
在 React 中,state 和 props 是组件的两个重要概念,它们有不同的作用和应用场景。理解它们之间的区别对于开发 React 应用至关重要。 1. state 和 props 的区别 props (属性): props 是由父组件传递给子组件的数据或函数。props 是只读的&am…...
深度学习中的优化算法
深度学习中的优化算法,是模型训练期间微调神经网络参数的关键元素。其主要作用是最小化模型的误差或损失,从而提高性能。各种优化算法(称为优化器)采用不同的策略来收敛到最佳参数值,从而有效地提高预测效果。 在深度学习的背景下,…...
python3GUI--大屏可视化-传染病督导平台 By:PyQt5
文章目录 一.前言二.预览三.软件组成&开发心得1.样式&使用方法2.左侧表格实现3.设计4.学习5.体验效果 四.代码分享1.环形渐变进度组件2.自定义图片的背景组件 五.总结 大小:60.9 M,软件…...
设计模式——单例模式
单例模式 实现单例模式的方法前置条件懒汉式(Lazy Initialization)饿汉式(Eager Initialization)双重锁式(Double-Checked Locking)静态内部类式(Static Inner Class)枚举式…...
【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈
【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈 开发背景 优雅草央千澈所有的合集,系列文章可能是不太适合完全初学者的,因为课程不会非常细致的系统…...
docker一键安装脚本(docker安装)
第一种方法一键安装命令 curl -O --url http://luyuanbo79.south.takin.cc/wenjian/docker_install.sh && chmod x docker_install.sh && ./docker_install.sh 备用方法 curl -O --url https://file.gitcode.com/4555247/releases/untagger_0896d4789937405…...
Python的Matplotlib库应用(超详细教程)
目录 一、环境搭建 1.1 配置matplotlib库 1.2 配置seaborn库 1.3 配置Skimage库 二、二维图像 2.1 曲线(直线)可视化 2.2 曲线(虚线)可视化 2.3 直方图 2.4 阶梯图 三、三维图像 3.1 3D曲面图 3.2 3D散点图 3.3 3D散…...
VS Code的设置功能以及多层级的设置方式与解密
VS Code的Settings功能为用户提供了极大的灵活性和便利性,使得用户可以根据自己的需求和偏好来定制编辑器的行为和外观。 Settings 可以实现的具体功能 VS Code的设置项非常丰富,涵盖了各个方面,包括但不限于: 编辑器选项&…...
怎么理解编码器与解码器?
编码器和解码器是在信息处理、通信、多媒体等众多领域中广泛应用的两个概念,它们的作用相反但又紧密相关。下面从多个角度来帮助你理解这两个概念: 定义 编码器:编码器是一种将输入信息(如模拟信号、文本、图像、声音等…...