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

Mysql--基础篇--约束(主键,外键,唯一,检查,枚举及复合约束等)

在MySQL中,约束(Constraints)是用于确保数据库中数据完整性和一致性的规则。通过定义约束,可以防止用户插入、更新或删除不符合特定条件的数据,从而保证数据的准确性和可靠性。MySQL支持多种类型的约束,每种约束都有其特定的作用和使用场景。

1、主键约束(Primary Key Constraint)

作用:

  • 唯一性:确保表中的每一行都有一个唯一的标识符。
  • 非空性:主键列不允许包含NULL值。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,  -- 主键,自动递增name VARCHAR(50) NOT NULL,age INT
);

解释:

  • id列是主键,确保每个员工都有一个唯一的标识符,并且该列不允许为NULL。
  • AUTO_INCREMENT:自动为每一行生成唯一的ID,通常用于主键列。

或者在创建表后添加主键:

ALTER TABLE table_name
ADD PRIMARY KEY (column1);

特点:

  • 每个表只能有一个主键。
  • 主键可以由单个列或多列组成(称为复合主键)。
  • 主键列上的值必须是唯一的且不能为空。

2、外键约束(Foreign Key Constraint)

作用:

  • 引用完整性:确保两个表之间的关系。外键列的值必须存在于另一个表的主键列中,或者为NULL。
  • 级联操作:可以通过外键定义级联操作(如删除或更新时自动影响相关记录)。

示例:

CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY,customer_id INT,order_date DATE,FOREIGN KEY (customer_id) REFERENCES customers(id)
);

解释:

  • orders表中的customer_id列是外键,引用customers表中的id列。
  • 这意味着orders表中的customer_id必须是customers表中存在的id,或者为NULL。

或者在创建表后添加外键:

ALTER TABLE table_name
ADD FOREIGN KEY (column1) REFERENCES parent_table(parent_column);

级联操作:

  • ON DELETE CASCADE:当父表中的记录被删除时,子表中相关的记录也会自动删除。
  • ON UPDATE CASCADE:当父表中的主键值被更新时,子表中相关的外键值也会自动更新。
    注意:
    如果主表设置了外键,建表时没有指定级联操作。Mysql默认不允许删除或更新主表中的外键,会直接报出外键的错误提示。
    级联示例:
CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY,customer_id INT,order_date DATE,FOREIGN KEY (customer_id) REFERENCES customers(id)ON DELETE CASCADEON UPDATE CASCADE
);

注意事项:

  • 外键列的数据类型必须与引用的主键列的数据类型兼容。
  • 外键约束会增加一定的性能开销,尤其是在大规模数据操作时。

3、唯一约束(Unique Constraint)

作用:

  • 唯一性:确保列中的所有值都是唯一的,但允许包含NULL值(多NULL值被视为不同的值)。

示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(100) UNIQUE, – 确保每个用户的电子邮件地址是唯一的,但可以为空
username VARCHAR(50)
);
解释:

  • email列上的唯一约束确保每个用户的电子邮件地址是唯一的。

或者在创建表后添加唯一约束:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1);

复合唯一约束:

  • 可以为多个列组合定义唯一约束,确保这些列的组合值是唯一的。
    示例:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),UNIQUE (first_name, last_name)  -- 确保第一名称和姓氏的组合是唯一的
);

注意事项:

  • 唯一约束允许NULL值,但多个NULL值被视为不同的值。
  • 如果需要确保某一列既唯一又不允许NULL,可以同时使用NOT NULL和UNIQUE约束。

4、非空约束(Not Null Constraint)

作用:

  • 强制非空:确保列中的值不能为空(即不允许NULL)。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,  -- 确保员工的名字不能为空age INT
);

解释:

  • name列上的NOT NULL约束确保每个员工的名字不能为空。

或者在创建表后修改列以添加非空约束:

ALTER TABLE table_name
MODIFY column1 datatype NOT NULL;

注意事项:

  • 非空约束不能与AUTO_INCREMENT一起使用,因为AUTO_INCREMENT会自动为列生成值。
  • 非空约束适用于所有数据类型,包括数值、字符串、日期等。

5、默认值约束(Default Constraint)

作用:

  • 设置默认值:当插入新记录时,如果没有为某列提供值,则自动使用指定的默认值。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT DEFAULT 18,  -- 如果没有提供年龄,默认为 18hire_date DATE DEFAULT CURRENT_DATE  -- 如果没有提供入职日期,默认为当前日期
);

解释:

  • age列上的默认值为18,如果插入新记录时未提供年龄,则自动使用18。
  • hire_date列上的默认值为CURRENT_DATE,表示当前日期。

或者在创建表后修改列以添加默认值:

ALTER TABLE table_name
ALTER COLUMN column1 SET DEFAULT default_value;

注意事项:

  • 默认值可以是常量、表达式或函数(如CURRENT_DATE)。
  • 默认值不会覆盖显式提供的值,只有在插入时未提供值时才会使用默认值。

6、检查约束(Check Constraint)

作用:

  • 数据验证:确保列中的值满足特定的条件或范围。只有符合条件的值才能插入或更新到该列中。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT CHECK (age >= 18 AND age <= 65),  -- 确保年龄在 1865 之间salary DECIMAL(10, 2) CHECK (salary > 0)  -- 确保工资大于 0
);

解释:

  • age列上的检查约束确保年龄在18到65之间。
  • salary列上的检查约束确保工资大于0。

或者在创建表后添加检查约束:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name CHECK (condition);

注意事项:

  • 检查约束可以包含简单的条件(如 >=、<=、=)或更复杂的表达式。
  • 检查约束只适用于单个列,不能跨多个列进行复杂检查。
  • 在某些版本的MySQL中(如5.7及之前),检查约束虽然可以定义,但并不会实际执行。从MySQL 8.0.16开始,检查约束得到了完整的支持并会强制执行。

7、枚举约束(Enum Constraint)

作用:

  • 限制取值范围:枚举类型允许你为列定义一组固定的、预定义的值。插入或更新时,列的值必须是这些预定义值之一。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,status ENUM('active', 'inactive', 'on_leave') NOT NULL  -- 状态只能是 'active'、'inactive' 或'on_leave'
);

解释:

  • status列上的枚举约束确保状态只能是active、inactive或on_leave。

注意事项:

  • 枚举值是按定义顺序存储的,内部使用整数索引表示。例如,'active’对应索引1,‘inactive’ 对应索引2,依此类推。
  • 枚举类型适合用于有限的、固定的选择集,如性别、状态等。

8、集合约束(Set Constraint)

作用:

  • 多值选择:集合类型允许你为列定义一组固定的、预定义的值,并且该列可以存储多个值。每个值必须是这些预定义值之一。

示例:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,skills SET('Java', 'Python', 'C++', 'SQL') NOT NULL  -- 技能可以是多个值的组合
);

解释:

  • skills列上的集合约束允许存储多个技能,如’Java,Python’或’C++,SQL’。

注意事项:

  • 集合类型适合用于多选一或多选多的情况,如技能、权限等。
  • 集合值是按位存储的,内部使用位掩码表示。例如,'Java’对应位1,'Python’对应位2,依此类推。

9、复合约束

在MySQL中,可以为一个字段定义多个约束。

示例:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,email VARCHAR(100) UNIQUE NOT NULL  -- 唯一 + 非空
);

解释: 唯一(Unique)+非空(NOT NULL)

  • 唯一约束:确保该字段中的所有值都是唯一的,但允许NULL值(多个NULL值被视为不同的值)。
  • 非空约束:确保该字段不允许NULL值。
    所以这两个叠加在一起约束,就起到了唯一且不允许为null的约束。

在MySQL中,可以为一个字段定义多个约束.
常见的组合包括:

  • 主键 + 非空
  • 唯一 + 非空
  • 外键 + 非空
  • 默认值 + 非空
  • 检查 + 非空
  • 枚举 + 非空
  • 集合 + 非空
  • 唯一 + 默认值
  • 外键 + 默认值
  • 唯一 + 检查
  • 外键 + 检查
    通过合理组合多个约束,你可以更精确地控制字段的值,确保数据的完整性和一致性。然而,需要注意的是,某些约束组合可能会相互影响,因此在设计表结构时应仔细考虑每个约束的作用和限制。
    所以通常不使用复合约束,除非必要场景。

10、总结

MySQL提供了多种类型的约束来确保数据的完整性和一致性。

适用场景:

  • 主键约束:确保每一行都有唯一的标识符。
  • 外键约束:维护表之间的引用完整性。
  • 唯一约束:确保列中的值是唯一的。
  • 非空约束:确保列中的值不能为空。
  • 默认值约束:为列提供默认值。
  • 检查约束:确保列中的值满足特定条件。
  • 枚举约束:限制列的取值范围为预定义的值。
  • 集合约束:允许列存储多个预定义的值。

通过合理使用这些约束,你可以有效地保护数据库中的数据,防止不合法的数据进入系统,从而提高数据的质量和可靠性。

乘风破浪会有时,直挂云帆济沧海!!!

相关文章:

Mysql--基础篇--约束(主键,外键,唯一,检查,枚举及复合约束等)

在MySQL中&#xff0c;约束&#xff08;Constraints&#xff09;是用于确保数据库中数据完整性和一致性的规则。通过定义约束&#xff0c;可以防止用户插入、更新或删除不符合特定条件的数据&#xff0c;从而保证数据的准确性和可靠性。MySQL支持多种类型的约束&#xff0c;每种…...

经典多模态模型CLIP - 直观且详尽的解释

对比语言-图像预训练&#xff08;CLIP&#xff09;&#xff0c;这是一种创新的多模态建模策略&#xff0c;能够创建视觉和语言的联合表示。CLIP 的效果非常出色&#xff0c;可以用于构建高度特定且性能卓越的分类器&#xff0c;而无需任何训练数据。本文将深入探讨其理论基础&a…...

着丝粒鉴定CentIER v3.0安装与使用-bioinfomatics tools41

使用CentIE鉴定着丝粒 T2T基因组端粒与着丝粒的区别及其鉴定方法-随笔02_chip-seq鉴定着丝粒-CSDN博客 T2T时代的基因组组装-文献精读-9_基因组t2t组装-CSDN博客 桑树T2T基因组-文献精读16_桑树基因组-CSDN博客 辣椒属2个T2T基因组-文献精读23_辣椒基因组-CSDN博客 大花…...

Objective-C语言的多线程编程

Objective-C语言的多线程编程 在现代应用程序开发中&#xff0c;尤其是移动应用开发&#xff0c;多线程编程是一个不可或缺的部分。使用多线程可以提升应用的响应能力&#xff0c;使得可以同时处理多个任务&#xff0c;从而优化用户体验。在本文中&#xff0c;我们将深入探讨O…...

Golang的并发编程框架比较

# Golang的并发编程框架比较 中的并发编程 在现代软件开发中&#xff0c;处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言&#xff0c;提供了丰富的并发编程框架和工具&#xff0c;使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…...

通过 oh-my-posh posh-git 优化PowerShell

转自oh-my-posh & posh-git 提升在 windows 环境的开发体验 oh-my-posh 是用于自定义 PowerShell 主题和配色的工具&#xff0c;posh-git 则是为 PowerShell 提供了方便的 git 状态显示和命令补全功能。 安装PowerShell 7和 winget下载器&#xff0c;都可以直接在 Microsof…...

【Linux系列】Vim 编辑器中的高效文本编辑技巧:删除操作

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

慧集通(DataLinkX)iPaaS集成平台-连接器

如何创建连接器&#xff1f; 连接器是用于跟各系统进行连接&#xff0c;是集成交互的基础构成也是主要构成之一&#xff1b;连接器一般是根据业务系统的开放的不同方式由开发人员进行封装&#xff0c;封装完成后交付人员可以在所有连接那里建立对应的连接&#xff0c;连接需要…...

vue3使用vue3-video-play播放m3u8视频

1.安装vue3-video-play npm install vue3-video-play --save2.在组件中使用 import vue3-video-play/dist/style.css; import VideoPlay from vue3-video-play;// 视频配置项 const options reactive({src: https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8, //视频源mute…...

单片机-外部中断

中断是指 CPU 在处理某一事件 A 时&#xff0c;发生了另一事件 B&#xff0c;请求 CPU 迅速去处理(中断发生)&#xff1b;CPU 暂时停止当前的工作(中断响应)&#xff0c; 转去处理事件 B(中断服务)&#xff1b;待 CPU 将事件 B 处理完毕后&#xff0c;再回到原来事件 A 被中断的…...

《C++11》右值引用深度解析:性能优化的秘密武器

C11引入了一个新的概念——右值引用&#xff0c;这是一个相当深奥且重要的概念。为了理解右值引用&#xff0c;我们需要先理解左值和右值的概念&#xff0c;然后再理解左值引用和右值引用。本文将详细解析这些概念&#xff0c;并通过实例进行说明&#xff0c;以揭示右值引用如何…...

【HTML+CSS+JS+VUE】web前端教程-1-VScode开发者工具快捷键

VScode打开文件夹与创建文件 1、选择文件夹 2、拖拽文件夹 生成浏览器文件.html的快捷方式 ! 回车vscode常用快捷键列表 代码格式化&#xff1a;shift alt F 向上或向下移动一行&#xff1a; alt up 或者 alt down 快速复制一行代码&#xff1a;shift alt up 或者 sh…...

【嵌入式硬件】直流电机驱动相关

项目场景&#xff1a; 驱动履带车&#xff08;双直流电机&#xff09;前进、后退、转弯 问题描述 电机驱动MOS管烧毁 电机驱动采用IR2104STRH1R403NL的H桥方案&#xff08;这是修改之后的图&#xff09; 原因分析&#xff1a; 1.主要原因是4路PWM没有限幅&#xff0c;修改…...

接口测试-postman(使用postman测试接口笔记)

一、设置全局变量 1. 点击右上角设置按钮-》打开管理环境窗口-》选择”全局“-》设置变量名称&#xff0c;初始值和当前值设置一样的&#xff0c;放host放拼接的url&#xff0c;key放鉴权那一串字符&#xff0c;然后保存-》去使用全局变量&#xff0c;用{{变量名称}}形式 二、…...

强化学习常用库的版本对应关系

本文介绍了pytorch强化学习框架和常用python库的对应关系。 持续更新中! 基础包 工具包版本描述python3.9.13-numpy1.24.3-protobuf3.19.6结构化数据包cython0.29.21静态编译器setuptools66.0.0-学习框架 工...

Unity 热更新基础知识

文章目录 1.一些名词2.三种编译方式3.Unity 两种脚本后端3.1 Mono3.2 IL2CPP3.3 对比 1.一些名词 IL&#xff08;Intermediate Language&#xff09;&#xff1a;中间语言&#xff08;类似于汇编代码&#xff09;CIL&#xff08;Common Intermediate Language&#xff09;&…...

JetBrains IDEs和Visual Studio Code的对比

JetBrains IDEs和Visual Studio Code的对比 JetBrains IDEs是捷克JetBrains公司开发的一系列集成开发环境(IDE)。以下是具体介绍:IntelliJ IDEA是JetBrains 公司的一款产品 主要产品 IntelliJ IDEA:一款功能强大且广泛应用的Java集成开发环境,有开源免费的社区版和商业收…...

C语言将点分十进制的IP字符串转成4个整数

最近在做lldp的snmp返回值时需要做这样的转换处理&#xff1a;C语言将点分十进制的IP字符串转成4个整数。 这里用两种方式&#xff1a; sscanf格式化处理用 inet_aton函数将ip字符串转成32位的整形&#xff0c;然后再根据bit转成对应的4个整数。 man命令可以确认下sscanf和i…...

慧集通(DataLinkX)iPaaS集成平台:数据流程的基本操作

流程搭建与发布 该功能下是我们集成的流程配置实现&#xff0c;在这里我们可以通过搭建一条条不同的流程来实现不同的业务场景。列表界面如下所示&#xff1a; 下面我们做一个业务场景的流程来具体讲解下该功能&#xff08;OA销售单推送T销售出库单场景&#xff09;。 首先…...

三线结构光避障远近有度,石头自清洁扫拖机器人G30上市

1月8日&#xff0c;石头科技发布新一代自清洁扫拖机器人产品G30&#xff0c;以卓越的旗舰级性能&#xff0c;为用户带来了更为全面极致的清洁体验。在本届CES2025展会期间&#xff0c;石头G30现身石头科技展台&#xff0c;彰显极致清洁科技。 据「TMT星球」了解&#xff0c;石头…...

深入理解 React 中 setState 的行为及状态更新时机

在 React 开发中&#xff0c;setState 是我们更新组件状态的核心 API。然而&#xff0c;setState 的行为因调用场景的不同而有所变化&#xff0c;这可能会让许多开发者感到困惑。特别是在 React 18 中&#xff0c;引入了自动批量更新机制&#xff0c;使得部分场景的行为发生了变…...

一次完成Win10下MySQL 9.1 的安装

文章目录 前言一、 安装环境二、 安装方式选择三、下载四、安装 总结 前言 一、 安装环境 1、MySQL9.1.0.zip 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 2、Win10 3、客户端MySQL Workbench8.0 CE 下载地址&#xff1a;https://dev.mysql.com/downloads/w…...

有限元分析学习——Anasys Workbanch第一阶段笔记(8)水杯案例的对称与轴对称处理

目录 1 序言 2 对称处理 2.1 模型处理 2.2 网格划分、约束载荷及接触设置 2.3 计算结果 3 轴对称处理 3.1 对称与轴对称概念 3.2 轴对称问题的应用 3.2.1 创建分析案例 3.2.2 导入并处理模型 3.2.3 网格划分、约束载荷及接触设置 3.2.4 后处理计算结果 1 序言 本章…...

Vmware安装centos

用来记录自己安装的过程 一、创建虚拟机安装centos镜像 点击完成后&#xff0c;等待一会会进入centos的系统初始化界面 二、centos初始化配置 三、配置网络 1、虚拟网络编辑器&#xff0c;开启VMnet1、VMnet8的DHCP vmware左上角工具栏&#xff0c;点击【编辑】->【虚拟网…...

[Unity]MacOS下开发Unity

需要的插件 我使用的是vscode&#xff0c;经过长时间的使用我发现一个问题就是很多插件都是动态的在变化的&#xff0c;不是一成不变的&#xff0c;可能是重构&#xff0c;可能直接换了其他的工具。 所以这个插件也会是更新的状态。 2025年01月08日更新 .NET Install Tool …...

快手短剧播放器uniapp如何引入与对接?

uniApp前端微短剧项目开源分享 开源地址&#xff1a;git开源下载地址 文章目录 快手短剧播放器uniapp如何引入与对接&#xff1f;1.引入短剧播放器2.创建文件kscomponents组件3.local-stream.js文件说明4.用户行为事件4.local-stream.ksml文件参考如下 快手短剧播放器uniapp如何…...

Java 数据结构之-LinkedHashMap

继承关系和基本概念 LinkedHashMap是HashMap的子类&#xff0c;它继承了HashMap的基本功能。它在HashMap的基础上&#xff0c;通过维护一个双向链表来记录元素的插入顺序或者访问顺序&#xff08;可以通过构造函数指定&#xff09;&#xff0c;从而在遍历元素时能够按照特定的顺…...

记一次踩坑:json.Unmarshal() 解析数字类型

首先我们先明确下 json 包下 Unmarshal() 函数是什么&#xff1a; 它是 Go 语言标准库 encoding/json 中的一个函数&#xff0c;用于将 JSON 数据解析为 Go 语言中的数据结构。它的作用是将一个 JSON 格式的字节切片&#xff08;[]byte&#xff09;转换为对应的 Go 语言数据类…...

leetcode78.子集

给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],[1,2],[3],…...

docker学习记录:创建mongodb副本集

目的&#xff0c;是创建三个&#xff0c;避免出现错误时&#xff0c;仍然能正常工作。 要在 Docker 中创建一个 MongoDB 集群&#xff08;副本集&#xff09;&#xff0c;并确保数据存储在本地&#xff0c;同时允许局域网访问&#xff0c;你可以按照以下步骤进行操作。我们将创…...

JAVA学习-练习试用Java实现“从用户输入获取一个字符串,并使用split方法将其拆分为单词数组,然后打印出所有单词”

问题&#xff1a; 创建一个Java程序&#xff0c;从用户输入获取一个字符串&#xff0c;并使用split方法将其拆分为单词数组&#xff0c;然后打印出所有单词。 解答思路&#xff1a; 以下是一个Java程序&#xff0c;它从用户输入获取一个字符串&#xff0c;并使用 split 方法…...

网络安全 | 数据隐私保护:全球趋势与合规要求

网络安全 | 数据隐私保护&#xff1a;全球趋势与合规要求 一、前言二、全球数据隐私保护的主要趋势2.1 法律法规的强化2.2 消费者意识的觉醒2.3 技术创新推动隐私保护升级 三、不同国家和地区的数据隐私法规3.1 欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;3.2 美国《…...

2025年度流行色揭晓:温暖舒适的摩卡慕斯

近日&#xff0c;全球色彩权威机构Pantone公布了2025年度流行色——PANTONE 17-1230 Mocha Mousse (摩卡慕斯)。这是一种温暖的柔和棕色&#xff0c;蕴含着内在的丰富质感&#xff0c;让人联想到可可、巧克力和咖啡的美味质量&#xff0c;满足我们对舒适和简单愉悦的渴望。 Pan…...

el-table拖拽表格

1、拖拽插件安装 npm i -S vuedraggable // vuedraggable依赖Sortable.js&#xff0c;我们可以直接引入Sortable使用Sortable的特性。 // vuedraggable是Sortable的一种加强&#xff0c;实现组件化的思想&#xff0c;可以结合Vue&#xff0c;使用起来更方便。 2、引入拖拽函数…...

Oracle LiveLabs实验: Multitenant Advanced Capabilities

本文为Oracle LiveLabs中实验Multitenant Advanced Capabilities的过程记录。 本实验不提供云上的免费环境&#xff0c;需要利用你自己的OCI账号来创建环境。 实验环境是通过OCI中的Stack&#xff0c;也就是Terraform自动创建的。 Oracle Resource Manager (ORM) stack 文件…...

【大模型】百度千帆大模型对接LangChain使用详解

目录 一、前言 二、LangChain架构与核心组件 2.1 LangChain 核心架构 2.2 LangChain 核心组件 三、环境准备 3.1 前置准备 3.1.1 创建应用并获取apikey 3.1.2 开通付费功能 3.2 获取LangChain文档 3.3 安装LangChain依赖包 四、百度千帆大模型对接 LangChain 4.1 LL…...

Vue3(一)

1.Vue3概述 Vue3的API由Vue2的选项式API改为了组合式API。但是&#xff0c;也是Vue2中的选项式API也是兼容的。 2.创建Vue3项目 create-vue 是 Vue 官方新的脚手架工具&#xff0c;底层切换到了 vite。使用create-vue创建项目的步骤如下&#xff1a; 安装 create-vue npm i…...

php命名空间

什么是命名空间 从广义上来说&#xff0c;命名空间是一种封装事物的方法&#xff0c;在很多地方都可以见到这种抽象概念。 例如&#xff0c;在操作系统中目录用来将相关文件分组&#xff0c;对于目录中的文件来说&#xff0c;它就扮演了命名空间的角色。 具体举个例子&#xf…...

AI也会犯错

一、缘起 1.1 问题的发现 AI模型在处理数值比较问题时&#xff0c;出现了一个有趣的现象&#xff1a;当被问到“9.9”和“9.11”哪个更大时&#xff0c;一些AI模型给出了错误的答案&#xff0c;认为“9.9”大于“9.11”。这一问题最初是由 Riley Goodside 发现的&#xff0c;…...

Android NDK开发入门2之适应idm环境

环境搭建 Android NDK开发实战之环境搭建篇(so库,Gemini ai)-CSDN博客 初始配置 前面已经运行了一个简单的初始程序&#xff0c;现在我们来往初始程序添加类和函数&#xff0c;并成功运行的实验。 一级配置 第一层配置主要是cmake文件环境和一些编译选项。 build配置 可参…...

HTML-多媒体标签

除了图像&#xff0c;网页还可以放置视频和音频。 1.<video> <video>标签是一个块级元素&#xff0c;用于放置视频。如果浏览器支持加载的视频格式&#xff0c;就会显示一个播放器&#xff0c;否则显示<video>内部的子元素。 <video src"example.…...

[Linux]生产消费者模型

目录 一、生产消费者模型概念 1.概念 2.模块构成 3.协作机制 二、基于BlockingQueue的多CP问题 1.BlockQueue模块 2.Task任务模块 3.创建多线程以及整合模块 三、基于信号量的环形队列CP模型 1.POISX信号量接口 初始化信号量 PV操作 信号量销毁 2.模型简述 3.…...

从零用java实现 小红书 springboot vue uniapp (9)消息推送功能

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们主要完成了个人资料修改 消息页优化 这篇文章我们讲解消息推送 推送页面 因为我们的推送消息都在一个页面 所以我们可以复用消息的websokcet推送 首先需要在 点赞表 收藏表 关注表 回复表 都添加未读字段 MESSAG…...

zookeeper监听机制(Watcher机制)

文章目录 引言I zookeeper监听机制Watcher机制实现分布式的通知功能触发事件种类Watcher的三个过程II watch机制特点一次性触发事件封装event异步发送先注册再触发常见的通知状态和事件类型III 应用案例(Kafka)Kafka的消息模型Kafka在Zookeeper中保存的元数据Kafka 基于Contr…...

企业开通部署 Azure OpenAI 流程:如何创建一个AI聊天机器人

由于众所周知的原因&#xff0c;国内没法直接调用 OpenAI 接口。 下面我将演示企业如何开通 Azure OpenAI 服务&#xff0c;以及如何使用 C# 调用 Azure OpenAI 接口创建一个 Console 应用程序并实现聊天机器人功能。 1开通 Azure OpenAI 服务 要开通 Azure OpenAI 服务&…...

【Linux基础指令】第一期

一、Linux的介绍 Linux是一个开源的操作系统&#xff0c;性能、稳定性、安全性方面上都是很优秀的&#xff0c;所以它一直是企业后端系统的首选。所以其图形化界面并不是Linux的必需品&#xff0c;所以我们避免不了要使用命令行的形式来使用Linux&#xff0c;也就离不开…...

使用 Rust 和 WASM 打造高性能 Web 应用

在现代 Web 开发中&#xff0c;前端性能是衡量用户体验的重要指标之一。随着 WebAssembly (WASM) 的崛起&#xff0c;它为开发者提供了一种在浏览器中运行高性能代码的方式。而 Rust&#xff0c;作为一门以性能和安全性著称的编程语言&#xff0c;与 WASM 的结合使得构建高效的…...

SQL Server中可以通过扩展事件来自动抓取阻塞

在SQL Server中可以通过扩展事件来自动抓取阻塞&#xff0c;以下是详细流程&#xff1a; 开启阻塞跟踪配置&#xff1a; • 执行以下SQL语句来启用相关配置&#xff1a; EXEC sp_configureshow advanced options, 1; RECONFIGURE; EXEC sp_configure blocked process thresh…...

无网络时自动切换备用网络环境

目录 背景目标为什么需要做自动网络切换网络切换手段 网络环境实现思路和代码部署脚本开机自动执行附录连接两个网络时的路由问题 背景 目标 学校实验室有两个网络环境&#xff0c;我电脑使用网线连接稳定但低速的网络A&#xff0c;使用WiFi连接高速但不稳定的网络B。因此&am…...

回顾2024年重磅AI发布汇总

2024年在人工智能领域出现了不少值得关注的发布和进展&#xff0c;以下是根据时间线索&#xff0c;对一些亮点突破进行了总结&#xff1a; 二月 Stability AI 宣布推出Stable Diffusion 3。 Google 升级了 Bard 中的人工智能聊天功能&#xff0c;基于新的Gemini Pro模型&…...