当前位置: 首页 > news >正文

MySQL 约束(入门版)

目录

一、约束的基本概念

二、约束演示

三、外键约束

(一)介绍

(二)外键约束语法

(三)删除/更新行为


一、约束的基本概念

1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

2、目的:保证数据库中数据的正确、有效性和完整性。

3、分类

4、作用

        约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

        非空约束、唯一约束、主键约束、默认约束、检查约束主要用于限定对应字段的数据,在DDL (数据定义语言)中使用。

        外键约束用于建立两表之间的联系,在更新与删除对应内容时,两表发生对应的变化。

二、约束演示

        上面我们介绍了数据库中常见的约束,以及约束涉及到的关键字,那这些约束我们到底如何在创建表、 修改表的时候来指定呢,接下来我们就通过一个案例,来演示一下。

        案例需求: 根据需求,完成表结构的创建。需求如下:

对应的建表语句为:

create table tb_user(id int auto_increment primary key comment 'ID唯一标识',name varchar(10) not null unique comment '姓名' ,age int check (age > 0 && age <= 120) comment '年龄' ,status char(1) default '1' comment '状态',gender char(1) comment '性别'
);

        在为字段添加约束时,我们只需要在字段之后加上约束的关键字即可如果有多个约束,则使用空格隔开。如果需要 id 字段是主键并且自增,则可以再使用关键字auto_increment。

        因为 id 列被定义为自增主键,所以插入数据时通常不需要显式地为该列指定值,数据库会自动为其生成一个唯一且递增的值。

        我们执行上面的SQL把表结构创建完成,然后接下来,就可以通过一组数据进行测试,从而验证一下,约束是否可以生效。

--这两条可以正常执行
insert into tb_user(name,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男');
insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');--第一条因为名字为null,第二条因为名字重复,所以这两条都不能正常执行
insert into tb_user(name,age,status,gender) values (null,19,'1','男');
insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');--第一条可以正常执行,第二条和第三条因为年龄超过范围,所以不能正常执行
insert into tb_user(name,age,status,gender) values ('Tom4',80,'1','男');
insert into tb_user(name,age,status,gender) values ('Tom5',-1,'1','男');
insert into tb_user(name,age,status,gender) values ('Tom5',121,'1','男');--本条可以正常执行
insert into tb_user(name,age,gender) values ('Tom5',120,'男');

三、外键约束

(一)介绍

1、外键约束的基本概念        

        外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。接下来,我们来看一个例子。

        左侧的emp表是员工表,里面存储员工的基本信息,包含员工的id、姓名、年龄、职位、薪资、入职日期、上级主管id、部门id。

        右侧的dept表是部门表,里面存储部门的基本信息,包括含部门的id与名字。

        在员工表emp中,部门id (dept_id)作为外键,关联部门表dept的主键id。

        具有外键的表被称为子表,外键所关联的表被称为父表所以上面的员工表emp是子表,而部门表dept是父表。

        注意:目前上述两张表,只是在逻辑上存在这样一层关系;在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。

2、外键约束测试

        没有数据库外键关联的情况下,能否保证一致性和完整性呢,我们建表来测试一下。

create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部门名称'
)comment '部门表';
insert into dept (id, name) values (1, '研发部'), (2, '市场部'),(3, '财务部'), (4, '销售部'), (5, '总经办');
create table emp(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年龄',job varchar(20) comment '职位',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment '直属领导ID',dept_id int comment '部门ID'
)comment '员工表';insert into emp (id, name, age, job,salary, entrydate, managerid, dept_id)
values(1, '金庸', 66, '总裁',20000, '2000-01-01', null,5),(2, '张无忌', 20, '项目经理',12500, '2005-12-05', 1,1),(3, '杨逍', 33, '开发', 8400,'2000-11-03', 2,1),(4, '韦一笑', 48, '开发',11000, '2002-02-05', 2,1),(5, '常遇春', 43, '开发',10500, '2004-09-07', 3,1),(6, '小昭', 19, '程序员鼓励师',6600, '2004-10-12',2,1);

        接下来,我们可以做一个测试,删除id为1的部门信息。

        结果,我们看到删除成功之后,部门表不存在id为1的部门,而在emp表中还有很多的员工,关联的为id为1的部门,此时就出现了数据的不完整性。 而要想解决这个问题就得通过数据库的外键约束。

(二)外键约束语法

1、添加外键

(1)在建表时添加外键

create table 表名(
        字段名 数据类型,
        ...
        [ constraint ] [外键名称] foreign key (外键字段名) references 主表 (主表列名) 
);

        在创建外键约束时,constraint 关键字是可选的,它的主要作用是为外键约束命名,方便后续对外键约束进行管理,比如删除或者修改外键约束等操作

        如果不使用 constraint 关键字,数据库会自动为约束生成一个默认名称。

        如果需要查询这默认名称,可以通过查询 information_schema.table_constraints 系统表来获取外键约束的名称。以下是一个示例查询,用于查找 employees 表的外键约束名称:

select constraint_name
from information_schema.table_constraints
where table_schema = database() and table_name = 'employees'and constraint_type = 'foreign key';

        查询中,table_schema = database()用于指定当前数据库,table_name= employees'表示要查找employees表的外键约束,constraint_type = 'foreign key'确保只查找外键约束

(2)建表后额外添加

alter table 表名

add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名) ;

        案例:为 emp 表的 dept_id 字段添加外键约束,关联dept表的主键id。

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

        此时在表中可以发现,字段dept_id出现了蓝色钥匙的形状,这是外键约束;字段id显示的是黄色钥匙的形状,这是主键约束

        添加了外键约束之后,我们再到dept表(父表)删除id为1的记录,此时将会报错,不能删除或更新父表记录,因为存在外键约束。

2、删除外键

alter table 表名 drop foreign key 外键名称;

        案例:删除emp表的外键fk_emp_dept_id。

alter table emp drop foreign key fk_emp_dept_id;
(三)增加外键约束后的删除/更新行为

1、具体的删除/更新行为

        添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:

        如果没有规定对应的行为,默认行为是restrict,同时no action与其作用一致。

        cascade 的作用是级联。如果父表的内容被删除了,其对应子键所在行的数据也会被删除。如果父表的内容被更新了,其对应子键也会更新对应内容。

        在父键的内容被删除时,如果有对应外键,set null 会将其设置成 null,set default会将其设置为一个默认的值。

2、具体的语法

alter table 表名

add constraint 外键名称 foreign key (外键字段) references 主表名 (主表字段名)

on update (更新行为) on delete (删除行为);

3、具体演示

        由于 restrict 是默认行为,我们前面语法演示时,已经测试过了,就不再演示了,这里我们再演示其他的两种行为:cascade、set null。

(1)cascade

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

修改父表id为1的记录,将id修改为6

        我们发现,原来在子表中dept_id值为1的记录,现在也变为6了,这就是cascade级联的效果。在一般的业务系统中,不会修改一张表的主键值。

② 删除父表id为6的记录

(2)set null

        在进行测试之前,我们先需要删除上面建立的外键 fk_emp_dept_id。然后再通过数据脚本,将emp、dept表的数据恢复了。

        接下来,我们删除id为1的数据,看看会发生什么样的现象。

        我们发现父表的记录是可以正常的删除的,父表的数据删除之后,再打开子表 emp,我们发现子表emp的dept_id字段,原来dept_id为1的数据,现在都被置为null了。这就是 set null 这种删除/更新行为的效果。
        
        以上即为MySQL 约束(入门版)的全部内容,创作不易,麻烦三连支持一下呗~  

相关文章:

MySQL 约束(入门版)

目录 一、约束的基本概念 二、约束演示 三、外键约束 &#xff08;一&#xff09;介绍 &#xff08;二&#xff09;外键约束语法 &#xff08;三&#xff09;删除/更新行为 一、约束的基本概念 1、概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储…...

【go】类型断言

接口-类型断言 Type Assertion Type Assertion&#xff08;中文名叫&#xff1a;类型断言&#xff09;&#xff0c;通过它可以做到以下几件事情 检查 i 是否为 nil&#xff08;是nil直接抛出panic&#xff09;检查 i 存储的值是否为某个类型 具体的使用方式有两种&#xff…...

(复看)CExercise_06_1指针和数组_2 给定一个double数组,求平均值,并且返回

题目&#xff1a; 求平均值&#xff0c;给定一个double数组&#xff0c;求平均值&#xff0c;并且返回。 要求使用while循环遍历数组&#xff0c;然后配合"*p"的语法实现。 函数的声明如下&#xff1a; double get_ave(double *arr, int len); 关键点 分析&#xff1…...

Ubuntu 服务器上运行相关命令,关闭终端就停止服务,怎么才能启动后在后台运行?

环境&#xff1a; Ubuntu 20.04 LTS 问题描述&#xff1a; Ubuntu 服务器上运行相关命令&#xff0c;关闭终端就停止服务&#xff0c;怎么才能启动后在后台运行&#xff1f; bash docker/entrypoint.sh解决方案&#xff1a; bash docker/entrypoint.sh 脚本在后台运行&…...

ffmpeg提取字幕

使用ffmpeg -i test.mkv 获取视频文件的字幕流信息如下 Stream #0:4(chi): Subtitle: subrip (srt) (default) Metadata: title : chs Stream #0:5(chi): Subtitle: subrip (srt) Metadata: title : cht Stream #0:6(jpn)…...

深入理解Socket编程:构建简单的计算器服务器

一、Socket通信基础 1. Socket通信基本流程 服务器端流程&#xff1a; 创建Socket (socket()) 绑定地址和端口 (bind()) 监听连接 (listen()) 接受连接 (accept()) 数据通信 (read()/write()) 关闭连接 (close()) 客户端流程&#xff1a; 创建Socket (socket()) 连接…...

CPU狂飙900%,该怎么处理

首先&#xff0c;说明一下问题&#xff1a;CPU飙升200% 以上是生产容易发生的场景 场景:1&#xff1a;MySQL进程飙升900% 大家在使用MySQL过程&#xff0c;想必都有遇到过CPU突然过高&#xff0c;或者达到200%以上的情况。 数据库执行查询或数据修改操作时&#xff0c;系统需…...

C++继承完全指南:从语法到设计模式----图解原理+工业级代码示例+陷阱规避

&#x1f52e;✨⚡️&#x1f30c; 欢迎来到张有志的量子编程次元 &#x1f30c;⚡️✨&#x1f52e; ▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂ &#x1f6f8; 核心探索舱 &#x1f6f8; ⇩⇩⇩ 正在加载未来代码 ⇩⇩⇩ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔…...

使用Pholcus编写Go爬虫示例

想用Pholcus库来写一个Go的爬虫程序。首先&#xff0c;我得确认Pholcus的当前状态&#xff0c;因为之前听说过它可能已经不再维护了。不过用户可能还是需要基于这个库的示例&#xff0c;所以得先提供一个基本的框架。 首先&#xff0c;我应该回忆一下Pholcus的基本用法。Pholc…...

R Excel 文件:高效数据处理与可视化工具的完美结合

R Excel 文件&#xff1a;高效数据处理与可视化工具的完美结合 引言 在数据分析和处理领域&#xff0c;R语言因其强大的数据处理能力和丰富的可视化功能而备受青睐。而Excel作为最常用的电子表格软件&#xff0c;其广泛的应用也使得R与Excel的结合成为数据处理与可视化的理想…...

Python设计模式:适配模式

1. 适配模式&#xff08;Adapter Pattern&#xff09;详解 适配模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一种接口。适配模式使得原本由于接口不兼容而无法一起工作的类可以协同工作。换句话说…...

Python设计模式:策略模式

1. 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互换。策略模式使得算法的变化独立于使用算法的客户。换句话说&#xff0c;策略模式允许在运…...

Unity Internal-ScreenSpaceShadows 分析

一、代码结构 // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "Hidden/Internal-ScreenSpaceShadows" {Properties {_ShadowMapTexture ("", any) "" {} // 阴影贴图纹理&…...

nginx配置oss代理

工作中会有一些时候需要将图片,视频,音频等文件放到oss这种对象存储中进行存储,实现高性能的访问,这种情况叫做动静分离.这里只做了图片的配置,视频以及音频的配置是一样的. 以下是nginx.conf的配置信息,其中还有ssl的加密配置,以及后端服务器的代理模块配置,(这里不用的话可以…...

UML对象图

UML对象图 一、对象图核心概念 对象图&#xff08;Object Diagram&#xff09;描述的是系统在某一时刻对象&#xff08;实例&#xff09;的状态快照。它关注的是实际对象之间的实例关系&#xff0c;而不是类与类之间的静态结构。主要特点有&#xff1a; ​对象&#xff08;Ob…...

手机不同App音量自动调节软件

软件介绍 在日常使用手机的过程中&#xff0c;大家是不是经常会遇到在不同App之间切换时&#xff0c;需要频繁调整音量的情况呢&#xff1f;这样真的很不方便。而一款名为App Volume Control的软件就能很好地解决这个问题。 App Volume Control借助辅助功能服务&#xff0c;能…...

模板方法模式详解

模板方法模式详解及真实场景解决方案 推荐学习完策略模式和模板方法模式看这个案例&#xff1a; 策略与模板方法模式组合详解 模式定义 模板方法模式是一种行为设计模式&#xff0c;在父类中定义算法的骨架&#xff0c;允许子类在不改变算法结构的情况下重写特定步骤。核心思…...

基于SSM邮件收发管理系统(带源码、论文)

摘要 随着互联网技术的迅速发展和普及&#xff0c;网络通信已经成了人们离不开的通信手段。作为最早出现的网络通信方式还有世界上应用最为广泛的网络服务之一&#xff0c;电子邮件综合了电话通信和传统邮件的特点&#xff0c;具有传播速度快、价格低廉的优良特性。随着技术发…...

1990-2019年各地级市GDP数据

1990-2019年各地级市GDP数据 1、时间&#xff1a;1990-2019年 2、来源&#xff1a;城市年鉴 3、指标&#xff1a;行政区划代码、年份、省份、城市、经度、纬度、地区生产总值(万元) 4、范围&#xff1a;250地级市 5、指标解释&#xff1a;地区生产总值&#xff08;Gross R…...

Scala相关知识学习总结5

1、多维数组 定义&#xff1a; val arr Array.ofDim[Double](3,4) 表示二维数组中有三个一维数组&#xff0c;每个一维数组有四个元素。 2、列表 List 不可变 List&#xff1a;默认不可变&#xff0c;可创建有序且可重复的列表&#xff0c;可使用:从右向左增加数据&#xf…...

【LangChain Agent 】详解,构建自主决策的 LLM 应用

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是 Lang Chain 2、什么是 Agent 二、LangChain …...

Scala基础知识7

一&#xff0c;可变数组和不可变数组的转换方法: 不可变数组转换为可变数组使用 toBuffer 函数. 可变数组转换为不可变数组使用 toArray 函数。 转换过程中原始数组不会发生变化&#xff0c;而是返回一个新的数组。 二&#xff0c;多维数组 使用 Array of 函数创建多维数组&am…...

vmware、centos: 快照、redis集群克隆、启动异常

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 启动虚拟机报错&#xff1a; 指定的虚拟磁盘需要进行修复 打不开磁盘“D:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位-000001.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机…...

visual studio断点无法进入

问题背景&#xff1a; 使用VSQt进行编码&#xff0c;新增函数处断点无法进入。 问题排查 查看moc文件&#xff0c;汇编代码以及设置调试选项均不生效。 原因分析 之前无意间进行了排版优化&#xff0c;导致新增的代码未正常编译进去&#xff0c;通过“文件-> 高级保存选…...

CNVD-2025-06046:Google Chrome沙箱逃逸漏洞大揭秘与防护指南

CNVD-2025-06046&#xff1a;Google Chrome沙箱逃逸漏洞大揭秘与防护指南 前言&#xff1a;浏览器界的“越狱”事件 嘿&#xff0c;小伙伴们&#xff01;今天咱们要聊的不是什么好莱坞大片&#xff0c;而是一出在浏览器世界里真实上演的“越狱”大戏&#xff01;你没听错&…...

androd的XML页面 跳转 Compose Activity 卡顿问题

解决 XML 点击跳转到 Compose Activity 卡顿问题 当从 XML 布局的 Activity 跳转到 Compose Activity 时出现卡顿现象&#xff0c;这通常是由以下几个原因导致的&#xff1a; 可能的原因及解决方案 1. Compose 首次初始化开销 问题&#xff1a;Compose 框架首次初始化需要时…...

Springboot同时支持不同的数据库,Oracle,Postgresql

关键字 Java&#xff0c;Springboot&#xff0c;Vscode&#xff0c;支持多种数据库 背景环境 我在实际项目开发工程中遇到这样一个问题&#xff0c;用户 A 使用 Oracle 数据库&#xff0c;用户 B 使用 Postgresql 数据库&#xff0c;但是用户 AB 都使用我们的项目。所以项目…...

【计网】TCP协议的拥塞控制与流量控制

拥塞控制与流量控制的区别 流量控制 流量控制主要是控制端到端&#xff08;发送端和接收端&#xff09;之间的数据传输量&#xff0c;是局部的机制。 目的&#xff1a;防止发送方发送数据过快导致接收方来不及处理实现方式&#xff1a;通过滑动窗口机制&#xff0c;接收方通…...

Redis - 字典(Hash)结构和 rehash 机制

字典结构 Redis中的字典由dict.h/dict结构表示: typedef struct dict ( //类型特定函数dictType *type;//私有数据 void "privdata;//哈希表 dictht ht[2];//rehash索引 //当rehash不在进行时,值为-1 in trehashidx; } dict; Redis字典所使用的哈希表由dict.h/dictht 结…...

Redis 与 MongoDB 对比分析

Redis 与 MongoDB 对比分析 1. 核心定位 Redis&#xff1a;内存键值数据库&#xff0c;侧重高性能读写和低延迟&#xff0c;常用于缓存、实时分析、消息队列等场景。MongoDB&#xff1a;分布式文档型数据库&#xff0c;侧重灵活的数据模型和大规模数据存储&#xff0c;支持复…...

【愚公系列】《高效使用DeepSeek》058-选题策划

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

解决 Lettuce 在 Redis 集群模式下的故障转移问题

引言 在高可用系统中&#xff0c;故障转移是确保服务不中断的重要机制。当我们使用 Lettuce 作为 Redis 的 Java 客户端时&#xff0c;如何高效地处理故障转移成为一项关键任务。本篇文章将探讨如何在 Redis 集群模式下配置 Lettuce 以优化故障转移。 背景 在初期设置 Lettu…...

Vim搜索和替换

模式 命令模式 操作过程 键入/开始搜索&#xff0c;找到想要搜索的内容后直接回车&#xff0c;此时光标会从搜索框回到编辑器中。 之后可以 使用小写n跳到下一个符合条件的内容&#xff0c;使用大写N跳到上一个搜索的内容。也可以直接使用上下左右按钮调整光标位置。...

【探商宝】 Llama 4--技术突破与争议并存的开源多模态

核心亮点 混合专家架构&#xff08;MoE&#xff09;的全面应用 Llama 4 是 Meta 首个全系列采用 MoE 架构 的模型&#xff0c;通过稀疏激活机制显著提升效率。例如&#xff1a; Llama 4 Scout&#xff08;中杯&#xff09;&#xff1a;16 位专家&#xff0c;17B 活跃参数&#…...

可发1区的超级创新思路(python 实现):一种轻量化的动态稀疏门控网络

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、应用领域 视频异常检测、生成视频检测。 二、模型解析 该模型由1.关键帧动态选择机制、2.关键帧动态选择机制以及3.关键帧动态选择机制三大核心组件构成,形成端到端的视频异常…...

flink cdc的source数据流如何配置事件时间,如何设置时间语义,分配时间戳并生成水位线

在 Flink CDC 中为 Source 数据流配置事件时间需要结合时间语义设置、时间戳分配和水位线生成三个核心步骤。以下是具体配置方法及注意事项&#xff1a; 1. 设置时间语义 Flink 默认使用处理时间&#xff08;Processing Time&#xff09;&#xff0c;需显式指定事件时间语义&a…...

Vue3:初识Vue,Vite服务器别名及其代理配置

一、创建一个Vue3项目 创建Vue3项目默认使用Vite作为现代的构建工具&#xff0c;以下指令本质也是通过下载create-vue来构建项目。 基于NodeJs版本大于等于18.3&#xff0c;使用命令行进行操作。 1、命令执行 npm create vuelatest输入项目名称 2、选择附加功能 选择要包含的功…...

医疗场景与事件驱动的高匹配颗粒度医疗智能体研发方向探析(代码版)

结合技术实现、应用场景与挑战展开分析: 一、医疗场景驱动的智能体核心方向 全场景覆盖的诊疗辅助医疗智能体系统编程方案 1.1、技术架构设计 #mermaid-svg-OKB0oAt38jXWNClG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...

HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5

在前端开发领域&#xff0c;HTML5 带来了一系列令人兴奋的新特性和功能&#xff0c;极大地提升了用户体验和开发效率。然而&#xff0c;由于互联网用户使用的浏览器版本千差万别&#xff0c;部分旧版本浏览器并不支持 HTML5&#xff0c;这给开发者带来了兼容性方面的挑战。不过…...

Kubernetes 集群搭建(三):使用dashboard用户界面(需要访问外网获取yaml)

&#xff08;一&#xff09;简介 K8s Dashboard是Kubernetes提供的一种基于Web的用户界面工具&#xff0c;用于可视化地管理和监控Kubernetes集群 主要功能&#xff1a; 资源查看与管理&#xff1a; 查看Kubernetes集群中的各种资源&#xff0c;如节点、Pod、服务、部署等。 对…...

【图像处理基石】什么是ISP色彩管理?

在ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;管线中&#xff0c;色彩管理是图像处理流程的核心环节&#xff0c;主要负责从传感器原始数据&#xff08;RAW&#xff09;到最终输出图像&#xff08;如YUV、RGB或JPEG&#xff09;的色彩转换、…...

金融维度下的公链价值重构:重塑财富新秩序

公链的引言&#xff1a; 众人对 Crypto、Token 的探讨热度居高不下。在此大背景下&#xff0c;我打算另辟蹊径&#xff0c;从金融维度重新剖析区块链分布式账本。那么&#xff0c;我们究竟该如何正确认知它&#xff1f;又该如何搭建起一套从金融视角出发的分析框架呢&#xff1…...

LeetCode算法题(Go语言实现)_34

题目 考虑一棵二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 如果有两棵二叉树的叶值序列是相同&#xff0c;那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的&#xff0c;则返回 true&…...

# 项目部署指南:Flask、Gradio与Docker实现流程

Python项目部署指南&#xff1a;Flask、Gradio与Docker实践 1. 引言 在机器学习和Web开发中&#xff0c;将模型或应用部署为在线服务是关键一步。本文将介绍如何使用 Flask 和 Gradio 快速构建前端界面&#xff0c;并通过 Docker 容器化实现高效部署&#xff0c;涵盖完整流程图…...

2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)

记录刷题的过程、感悟、题解。 希望能帮到&#xff0c;那些与我一同前行的&#xff0c;来自远方的朋友&#x1f609; 大纲&#xff1a; 1、九进制转十进制-&#xff08;解析&#xff09;-简单的进制转化问题&#x1f604; 2、顺子日期-&#xff08;解析&#xff09;-考察日期 3…...

UML之序列图的参与者与生命线

序列图是建模过程中必选的一种描述行为的手段&#xff0c;它展示在某些有用的行为中元素之间的消息交换和相互作用。交互是构成行为的一个单元&#xff1b;这些元素必须是可连接元素&#xff0c;通常将这些可连接元素称为交互中的参与者&#xff08;Participants&#xff09;。…...

基于Python Flask快速构建网络安全工具资源库的Web应用实践

引言 在网络安全领域&#xff0c;信息收集&#xff08;OSINT&#xff09;是渗透测试、漏洞挖掘和威胁分析的关键环节。然而&#xff0c;面对海量工具和分散的技术文档&#xff0c;安全研究人员常需耗费大量时间查找和比对工具信息。本文将介绍如何利用 Python Flask HTML 技…...

xv6-labs-2024 lab1

lab-1 注&#xff1a;实验环境在我的汇编随手记的末尾部分有搭建教程。 0.前置 第零章 xv6为我们提供了多种系统调用&#xff0c;其中&#xff0c;exec将从某个文件里读取内存镜像(这确实是一个好的说法)&#xff0c;并且将其替换到调用它的内存空间&#xff0c;也就是这个…...

HTTP Form v.s. Flask-WTF Form v.s. Bootstrap Form

在Flask-WTF和Bootstrap 的Form创建中,添加了页面显示Flash Messages。 相比Flask_WTF, Bootstrap用 render_form(form)渲染样式,自动带错误提示,不需要像Flask_WTF那样手写 for error in ... 。 项目结构: register_app/ ├── HTTP_Form_App.py ├── FlaskWTF_Form…...

Linux网络编程——https的协议及其加密解密方式

目录 一、前言 https协议 常见的加密方式 1、对称加密 2、非对称加密 3、数字签名 1. 只用对称加密 2、只用单一的非对称加密 3、双方都使用非对称加密 4、非对称加密对称加密 证书 证书颁发流程 服务器与客户端的证书验证流程 5、证书非对称加密对称加密 前言 上一…...