Mysql 约束练习【第13章_约束】
#第13章_约束
/*
- 基础知识
 1.1 为什么需要约束? 为了保证数据的完整性!
1.2 什么叫约束?对表中字段的限制。
1.3 约束的分类:
角度1:约束的字段的个数
 单列约束 vs 多列约束
角度2:约束的作用范围
列级约束:将此约束声明在对应字段的后面
 表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束
角度3:约束的作用(或功能)
① not null (非空约束)
 ② unique (唯一性约束)
 ③ primary key (主键约束)
 ④ foreign key (外键约束)
 ⑤ check (检查约束)
 ⑥ default (默认值约束)
1.4 如何添加/删除约束?
CREATE TABLE时添加约束
ALTER TABLE 时增加约束、删除约束
*/
#2. 如何查看表中的约束
 SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘test1’;
CREATE DATABASE dbtest13;
 USE dbtest13;
 #3. not null (非空约束)
 #3.1 在CREATE TABLE时添加约束
CREATE TABLE test1(
 id INT NOT NULL,
 last_name VARCHAR(15) NOT NULL,
 email VARCHAR(25),
 salary DECIMAL(10,2)
);
DESC test1;
INSERT INTO test1(id,last_name,email,salary)
 VALUES(1,‘Tom’,‘tom@126.com’,3400);
#错误:Column ‘last_name’ cannot be null
 INSERT INTO test1(id,last_name,email,salary)
 VALUES(2,NULL,‘tom1@126.com’,3400);
#错误:Column ‘id’ cannot be null
 INSERT INTO test1(id,last_name,email,salary)
 VALUES(NULL,‘Jerry’,‘jerry@126.com’,3400);
INSERT INTO test1(id,email)
 VALUES(2,‘abc@126.com’);
UPDATE test1
 SET last_name = NULL
 WHERE id = 1;
UPDATE test1
 SET email = ‘tom@126.com’
 WHERE id = 1;
#3.2 在ALTER TABLE时添加约束
 SELECT * FROM test1;
DESC test1;
ALTER TABLE test1
 MODIFY email VARCHAR(25) NOT NULL;
#3.3 在ALTER TABLE时删除约束
 ALTER TABLE test1
 MODIFY email VARCHAR(25) NULL;
#4. unique (唯一性约束)
#4.1 在CREATE TABLE时添加约束
 CREATE TABLE test2(
 id INT UNIQUE, #列级约束
 last_name VARCHAR(15) ,
 email VARCHAR(25),
 salary DECIMAL(10,2),
 #表级约束
 CONSTRAINT uk_test2_email UNIQUE(email)
 );
DESC test2;
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘test2’;
#在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。
INSERT INTO test2(id,last_name,email,salary)
 VALUES(1,‘Tom’,‘tom@126.com’,4500);
#错误:Duplicate entry ‘1’ for key ‘test2.id’
 INSERT INTO test2(id,last_name,email,salary)
 VALUES(1,‘Tom1’,‘tom1@126.com’,4600);
#错误:Duplicate entry ‘tom@126.com’ for key ‘test2.uk_test2_email’
 INSERT INTO test2(id,last_name,email,salary)
 VALUES(2,‘Tom1’,‘tom@126.com’,4600);
#可以向声明为unique的字段上添加null值。而且可以多次添加null
 INSERT INTO test2(id,last_name,email,salary)
 VALUES(2,‘Tom1’,NULL,4600);
INSERT INTO test2(id,last_name,email,salary)
 VALUES(3,‘Tom2’,NULL,4600);
SELECT * FROM test2;
#4.2 在ALTER TABLE时添加约束
DESC test2;
UPDATE test2
 SET salary = 5000
 WHERE id = 3;
 #方式1:
 ALTER TABLE test2
 ADD CONSTRAINT uk_test2_sal UNIQUE(salary);
 #方式2:
 ALTER TABLE test2
 MODIFY last_name VARCHAR(15) UNIQUE;
#4.3 复合的唯一性约束
 CREATE TABLE USER(
 id INT,
 name VARCHAR(15),
 password VARCHAR(25),
#表级约束
 CONSTRAINT uk_user_name_pwd UNIQUE(name,password)
 );
INSERT INTO USER
 VALUES(1,‘Tom’,‘abc’);
 #可以成功的:
 INSERT INTO USER
 VALUES(1,‘Tom1’,‘abc’);
SELECT *
 FROM USER;
#案例:复合的唯一性约束的案例
 #学生表
 CREATE TABLE student(
 sid INT, #学号
 sname VARCHAR(20), #姓名
 tel CHAR(11) UNIQUE KEY, #电话
 cardid CHAR(18) UNIQUE KEY #身份证号
 );
#课程表
 CREATE TABLE course(
 cid INT, #课程编号
 cname VARCHAR(20) #课程名称
 );
#选课表
 CREATE TABLE student_course(
 id INT,
 sid INT, #学号
 cid INT, #课程编号
 score INT,
 UNIQUE KEY(sid,cid) #复合唯一
 );
 INSERT INTO student VALUES(1,‘张三’,‘13710011002’,‘101223199012015623’);#成功
 INSERT INTO student VALUES(2,‘李四’,‘13710011003’,‘101223199012015624’);#成功
 INSERT INTO course VALUES(1001,‘Java’),(1002,‘MySQL’);#成功
SELECT * FROM student;
SELECT * FROM course;
INSERT INTO student_course VALUES
 (1, 1, 1001, 89),
 (2, 1, 1002, 90),
 (3, 2, 1001, 88),
 (4, 2, 1002, 56);#成功
SELECT * FROM student_course;
#错误:Duplicate entry ‘2-1002’ for key ‘student_course.sid’
 INSERT INTO student_course VALUES
 (5,2,1002,67);
#4.4 删除唯一性约束
 – 添加唯一性约束的列上也会自动创建唯一索引。
 – 删除唯一约束只能通过删除唯一索引的方式删除。
 – 删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。
 – 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘student_course’;
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘test2’;
DESC test2;
#如何删除唯一性索引
 ALTER TABLE test2
 DROP INDEX last_name;
ALTER TABLE test2
 DROP INDEX uk_test2_sal;
#5. primary key (主键约束)
 #5.1 在CREATE TABLE时添加约束
#一个表中最多只能有一个主键约束。
#错误:Multiple primary key defined
 CREATE TABLE test3(
 id INT PRIMARY KEY, #列级约束
 last_name VARCHAR(15) PRIMARY KEY,
 salary DECIMAL(10,2),
 email VARCHAR(25)
 );
主键约束特征:非空且唯一,用于唯一的标识表中的一条记录。
CREATE TABLE test4(
 id INT PRIMARY KEY, #列级约束
 last_name VARCHAR(15),
 salary DECIMAL(10,2),
 email VARCHAR(25)
 );
#MySQL的主键名总是PRIMARY,就算自己命名了主键约束名也没用。
 CREATE TABLE test5(
 id INT ,
 last_name VARCHAR(15),
 salary DECIMAL(10,2),
 email VARCHAR(25),
 #表级约束
 CONSTRAINT pk_test5_id PRIMARY KEY(id) #没有必要起名字。
 );
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘test5’;
INSERT INTO test4(id,last_name,salary,email)
 VALUES(1,‘Tom’,4500,‘tom@126.com’);
#错误:Duplicate entry ‘1’ for key ‘test4.PRIMARY’
 INSERT INTO test4(id,last_name,salary,email)
 VALUES(1,‘Tom’,4500,‘tom@126.com’);
#错误:Column ‘id’ cannot be null
 INSERT INTO test4(id,last_name,salary,email)
 VALUES(NULL,‘Tom’,4500,‘tom@126.com’);
SELECT * FROM test4;
CREATE TABLE user1(
 id INT,
 NAME VARCHAR(15),
 PASSWORD VARCHAR(25),
PRIMARY KEY (NAME,PASSWORD)
);
 #如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。
 INSERT INTO user1
 VALUES(1,‘Tom’,‘abc’);
INSERT INTO user1
 VALUES(1,‘Tom1’,‘abc’);
 #错误:Column ‘name’ cannot be null
 INSERT INTO user1
 VALUES(1,NULL,‘abc’);
SELECT * FROM user1;
#5.2 在ALTER TABLE时添加约束
CREATE TABLE test6(
 id INT ,
 last_name VARCHAR(15),
 salary DECIMAL(10,2),
 email VARCHAR(25)
 );
DESC test6;
ALTER TABLE test6
 ADD PRIMARY KEY (id);
#5.3 如何删除主键约束 (在实际开发中,不会去删除表中的主键约束!)
 ALTER TABLE test6
 DROP PRIMARY KEY;
#6. 自增长列:AUTO_INCREMENT
6.1 在CREATE TABLE时添加
CREATE TABLE test7(
 id INT PRIMARY KEY AUTO_INCREMENT,
 last_name VARCHAR(15)
 );
 #开发中,一旦主键作用的字段上声明有AUTO_INCREMENT,则我们在添加数据时,就不要给主键
 #对应的字段去赋值了。
 INSERT INTO test7(last_name)
 VALUES(‘Tom’);
SELECT * FROM test7;
#当我们向主键(含AUTO_INCREMENT)的字段上添加0 或 null时,实际上会自动的往上添加指定的字段的数值
 INSERT INTO test7(id,last_name)
 VALUES(0,‘Tom’);
INSERT INTO test7(id,last_name)
 VALUES(NULL,‘Tom’);
INSERT INTO test7(id,last_name)
 VALUES(10,‘Tom’);
INSERT INTO test7(id,last_name)
 VALUES(-10,‘Tom’);
#6.2 在ALTER TABLE 时添加
 CREATE TABLE test8(
 id INT PRIMARY KEY ,
 last_name VARCHAR(15)
 );
DESC test8;
ALTER TABLE test8
 MODIFY id INT AUTO_INCREMENT;
#6.3 在ALTER TABLE 时删除
ALTER TABLE test8
 MODIFY id INT ;
#6.4 MySQL 8.0新特性—自增变量的持久化
#在MySQL 5.7中演示
 CREATE TABLE test9(
 id INT PRIMARY KEY AUTO_INCREMENT
 );
INSERT INTO test9
 VALUES(0),(0),(0),(0);
SELECT * FROM test9;
DELETE FROM test9
 WHERE id = 4;
INSERT INTO test9
 VALUES(0);
DELETE FROM test9
 WHERE id = 5;
#重启服务器
SELECT * FROM test9;
INSERT INTO test9
 VALUES(0);
#在MySQL 8.0中演示
 CREATE TABLE test9(
 id INT PRIMARY KEY AUTO_INCREMENT
 );
INSERT INTO test9
 VALUES(0),(0),(0),(0);
SELECT * FROM test9;
DELETE FROM test9
 WHERE id = 4;
INSERT INTO test9
 VALUES(0);
DELETE FROM test9
 WHERE id = 5;
#重启服务器
SELECT * FROM test9;
INSERT INTO test9
 VALUES(0);
#7.foreign key (外键约束)
 #7.1 在CREATE TABLE 时添加
#主表和从表;父表和子表
#①先创建主表
 CREATE TABLE dept1(
 dept_id INT,
 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)
);
#上述操作报错,因为主表中的dept_id上没有主键约束或唯一性约束。
 #③ 添加
 ALTER TABLE dept1
 ADD PRIMARY KEY (dept_id);
DESC dept1;
#④ 再创建从表
 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;
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘emp1’;
#7.2 演示外键的效果
 #添加失败
 INSERT INTO emp1
 VALUES(1001,‘Tom’,10);
INSERT INTO dept1
 VALUES(10,‘IT’);
 #在主表dept1中添加了10号部门以后,我们就可以在从表中添加10号部门的员工
 INSERT INTO emp1
 VALUES(1001,‘Tom’,10);
#删除失败
 DELETE FROM dept1
 WHERE dept_id = 10;
#更新失败
 UPDATE dept1
 SET dept_id = 20
 WHERE dept_id = 10;
#7.3 在ALTER TABLE时添加外键约束
 CREATE TABLE dept2(
 dept_id INT PRIMARY KEY,
 dept_name VARCHAR(15)
 );
CREATE TABLE emp2(
 emp_id INT PRIMARY KEY AUTO_INCREMENT,
 emp_name VARCHAR(15),
 department_id INT
 );
ALTER TABLE emp2
 ADD CONSTRAINT fk_emp2_dept_id FOREIGN KEY(department_id) REFERENCES dept2(dept_id);
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘emp2’;
#7.4 ### 约束等级
– 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 set null
CREATE TABLE dept(
 did INT PRIMARY KEY, #部门编号
 dname VARCHAR(50) #部门名称
 );
CREATE TABLE emp(
 eid INT PRIMARY KEY, #员工编号
 ename VARCHAR(5), #员工姓名
 deptid INT, #员工所在的部门
 FOREIGN KEY (deptid) REFERENCES dept(did) ON UPDATE CASCADE ON DELETE SET NULL
 #把修改操作设置为级联修改等级,把删除操作设置为set null等级
 );
INSERT INTO dept VALUES(1001,‘教学部’);
 INSERT INTO dept VALUES(1002, ‘财务部’);
 INSERT INTO dept VALUES(1003, ‘咨询部’);
INSERT INTO emp VALUES(1,‘张三’,1001); #在添加这条记录时,要求部门表有1001部门
 INSERT INTO emp VALUES(2,‘李四’,1001);
 INSERT INTO emp VALUES(3,‘王五’,1002);
UPDATE dept
 SET did = 1004
 WHERE did = 1002;
DELETE FROM dept
 WHERE did = 1004;
SELECT * FROM dept;
SELECT * FROM emp;
#结论:对于外键约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 的方式。
#7.5 删除外键约束
#一个表中可以声明有多个外键约束
 USE atguigudb;
 SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘employees’;
USE dbtest13;
SELECT * FROM information_schema.table_constraints
 WHERE table_name = ‘emp1’;
#删除外键约束
ALTER TABLE emp1
 DROP FOREIGN KEY fk_emp1_dept_id;
#再手动的删除外键约束对应的普通索引
 SHOW INDEX FROM emp1;
ALTER TABLE emp1
 DROP INDEX fk_emp1_dept_id;
#8. check 约束
MySQL5.7 不支持CHECK约束,MySQL8.0支持CHECK约束。
CREATE TABLE test10(
 id INT,
 last_name VARCHAR(15),
 salary DECIMAL(10,2) CHECK(salary > 2000)
 );
INSERT INTO test10
 VALUES(1,‘Tom’,2500);
#添加失败
 INSERT INTO test10
 VALUES(2,‘Tom1’,1500);
SELECT * FROM test10;
#9.DEFAULT约束
 #9.1 在CREATE TABLE添加约束
 CREATE TABLE test11(
 id INT,
 last_name VARCHAR(15),
 salary DECIMAL(10,2) DEFAULT 2000
 );
DESC test11;
INSERT INTO test11(id,last_name,salary)
 VALUES(1,‘Tom’,3000);
INSERT INTO test11(id,last_name)
 VALUES(2,‘Tom1’);
SELECT *
 FROM test11;
#9.2 在ALTER TABLE添加约束
 CREATE TABLE test12(
 id INT,
 last_name VARCHAR(15),
 salary DECIMAL(10,2)
 );
DESC test12;
ALTER TABLE test12
 MODIFY salary DECIMAL(8,2) DEFAULT 2500;
#9.3 在ALTER TABLE删除约束
 ALTER TABLE test12
 MODIFY salary DECIMAL(8,2);
SHOW CREATE TABLE test12;
相关文章:
Mysql 约束练习【第13章_约束】
#第13章_约束 /* 基础知识 1.1 为什么需要约束? 为了保证数据的完整性! 1.2 什么叫约束?对表中字段的限制。 1.3 约束的分类: 角度1:约束的字段的个数 单列约束 vs 多列约束 角度2:约束的作用范围 列…...
 
java调用cmd命令
1.首先,我们需要了解一下 java是如何调用 cmd的: 6.在实际的开发中,我们有可能会遇到 java调用 cmd命令的情况: 7.对于一些特定的环境下,例如在嵌入式系统中,那么我们可以使用下面这种方式来调用 cmd命令&a…...
 
Qt音视频开发36-超时检测和自动重连的设计
一、前言 如果网络环境正常设备正常,视频监控系统一般都是按照正常运行下去,不会出现什么问题,但是实际情况会很不同,奇奇怪怪七七八八的问题都会出现,就比如网络出了问题都有很多情况(交换机故障、网线故障、带宽故障等),所以监控系统在运行过程中,还得做超时检测,…...
 
Reactor 第九篇 WebFlux重构个人中心,效果显著
1 重构背景 原有的开发人员早已离职,代码细节没人知道,经过了一段时间的维护,发现有以下问题: 个人中心系统的特征就是组装各个业务的接口,输出个人中心业务需要的数据,整个系统调用了几十个第三方业务线的…...
 
Vben Admin 自学记录 —— Drawer组件的基本使用及练习(持续更新中...)
Drawer 抽屉组件 对 antv 的 drawer 组件进行封装,扩展拖拽,全屏,自适应高度等功能。 Drawer相关使用及概念 练习 —— 在之前table基础上,添加查看功能,点击查看按钮,弹出抽屉显示单条表格数据…...
Android 9.0 根据包名默认授予app悬浮窗权限
1.概述 在9.0的设备开发中,对于在app中授予悬浮窗权限,也是通常用的功能,但在设备产品中预制app,需求要求默认授予悬浮窗权限, 就不需要在app中动态申请悬浮窗权限了,所以就来分析下这个实现这个功能 2.根据包名默认授予app悬浮窗权限的核心类 packages\apps\Settings\s…...
Swift中Data,String,[UInt8]的相互转换(6种互相转换)
var dataData() var array[UInt8]() var str"" //Data[UInt8] data.append(10) array[UInt8](data) print(array)//[10] //[UInt8]转Data array[1,2,3,4,5] dataData(array) print(data.count)//5 //Data转String data.removeAll() data.append(contentsOf:[0x31,…...
 
【微软Bing王炸更新】无需等待,人人可用,答案图文并茂,太牛了
🚀 AI破局先行者 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆&am…...
 
腾讯云的cdn怎么配置|腾讯云CDN配置教程
众所周知,WordPress系统不挂加速或者是服务器不好速度贼慢,所以要想办法解决访问速度的问题,经过我不断的研究腾讯云的CDN,因为我用的是zibll子比主题,不懂的就挂会导致无法使用第三方登录,因为有缓存导致一直不回调一直卡在那个登录界面和支付没反应要么出现二维码,要么…...
 
数据结构入门-顺序表链表
线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种实际中广泛使用多个数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…...
 
【AWS入门】AWS Lamda
目录 创建一个Lamda函数用Lamda函数控制启停EC2实例创建一台EC2实例创建角色创建lamda函数 使用Amazon EventBridge计划启停实例创建EventBridge 用户往S3存储桶上传图片文件,触发Lambda函数,将图片压缩并上传至另一个存储桶创建两个存储桶通过Cloudform…...
 
牛客刷SQL题Day5
SQL69 返回产品并且按照价格排序 select prod_name , prod_price from Products where prod_price between 3 and 6 select prod_name , prod_price from Products where 6>prod_price and prod_price >3 踩坑1: between......and.......包括边界。 踩坑2&am…...
 
【Errors】【计算机图形学】A-SDF复现的一点纠正记录
ICCV 2021的工作A-SDF,在跑的过程中可能是一些版我Run了这篇工作代码的Reconstruction,然后出现了一点小小的错误,记录如下。 问题一:对数据做直接修改导致出错(可能是不同的pytorch版本导致的?) 错误描述…...
 
Dockerfile创建镜像文件
Dockerfile Docker镜像原理 Linux文件系统有bootfs和rootfs两部分组成 Docker镜像由特殊文件系统叠加 最底端bootfs,使用宿主机bootfs 第二次时rootfs,被称为基础镜像 向上可以叠加其他镜像文件 同一文件系统能将多层整合成一层,隐藏了多层存在 镜像可以放置…...
 
javascript中的严格模式
认识严格模式: 在ECMAScript5标准中,JavaScript提出了严格模式的概念(Strict Mode): 严格模式很好理解,是一种具有限制性的JavaScript模式,从而是代码隐式的脱离了“懒散(sloppy)模…...
 
(二)【平衡小车制作】电机驱动(超详解)
一、硬件设计 1.直流减速电机 直流减速电机,即齿轮减速电机,是在普通直流电机的基础上,加上配套齿轮减速箱。齿轮减速箱的作用是,提供较低的转速,较大的力矩。 简单的来说,STM32分配两个IO口给一个…...
 
快速了解车联网V2X通信
自动驾驶拥有极其巨大的潜力,有可能改变我们的出行方式。它不仅有望永远改变车辆的设计和制造,还会永远改变汽车的所有权乃至整个交通运输业务。要实现全自动驾驶的目标,开发人员需要开发极为复杂的软件,软件中融入的人工智能(AI)…...
「Codeforces」D. Infinite Set
D. Infinite Set https://codeforces.com/contest/1635/problem/D 题目描述 你有一个由不同正整数组成的数组和一个无限集 S,现在你需要往集合 S 中塞入所有符合 x x x 条件的数。 x x x 的条件(满足其中任意一个即可): x a i …...
 
项目---基于TCP的高并发聊天系统
目录 服务端 服务端视角下的流程图 一、数据库管理模块 1.1 数据库表的创建 1.2 .对于数据库的操作 1.2.1首先得连接数据库 1.2.2执行数据库语句 1.2.3 返回数据库中存放的所有用户的信息 1.2.4返回数据库中存放的所有用户的好友信息 二、用户管理模块 2.1、UserInfo类&…...
iOS热更新-8种实现方式
一、JSPatch 热更新时,从服务器拉去js脚本。理论上可以修改和新建所有的模块,但是不建议这样做。 建议 用来做紧急的小需求和 修复严重的线上bug。 二、lua脚本 比如: wax。热更新时,从服务器拉去lua脚本。游戏开发经常用到。…...
 
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
 
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
 
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
 
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
 
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
 
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
 
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
 
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
