sql server 中的6种约束
一、约束定义
约束是用于定义和实施表的规则和限制,以确保数据的完整性和一致性。
即对一张表中的属性操作进行限制。
二、约束分类
通过定义约束,可以对数据库中的数据进行限制,以下是常见的约束:
1. 主键约束(Primary Key Constraint):
- 用途:用于唯一标识表中的每一行数据,并且不允许为空。
- 语法:`PRIMARY KEY (column1, column2, ...)`。
2. 外键约束(Foreign Key Constraint):
- 用途:用于建立表与表之间的关系,确保引用其他表中存在的值。
- 语法:`FOREIGN KEY (column1, column2, ...) REFERENCES parent_table (parent_column1, parent_column2, ...)`。
3. 唯一约束(Unique Constraint):
- 用途:确保表中的某个列或一组列的值是唯一的。
- 语法:`UNIQUE (column1, column2, ...)`。
4. 检查约束(Check Constraint):
- 用途:定义一个布尔表达式来评估插入或更新的值是否满足特定条件。
- 语法:`CHECK (condition)`。
5. 默认约束(Default Constraint):
- 用途:为给定列提供默认值,如果插入或更新操作未指定该列的值,则将使用默认值。
- 语法:`DEFAULT value`。
6. 非空约束(Not Null Constraint):
- 用途:确保列不允许包含空值。
- 语法:`column_name datatype NOT NULL`。
约束可以在创建表时直接定义,也可以在后期通过修改表结构来添加或删除。使用约束可以提高数据库的完整性和一致性,防止无效或不符合规范的数据被插入到表中。
四、约束相关语法格式
使用以下语法格式来创建、删除和修改六种常见的约束类型:主键约束、唯一约束、外键约束、检查约束、默认约束和非空约束。
4.1主键约束(Primary Key Constraint):
--1.创建主键约束
-- 语法格式:
ALTER TABLE 表名
ADD CONSTRAINT 约束名 PRIMARY KEY (列名);-- 示例:
ALTER TABLE Employees
ADD CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID);--2.删除主键约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT PK_Employees;--3.修改主键约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;ALTER TABLE 表名
ADD CONSTRAINT 新约束名 PRIMARY KEY (列名);-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT PK_Employees;ALTER TABLE Employees
ADD CONSTRAINT PK_Employees_New PRIMARY KEY (EmployeeID);
4.2外键约束(Foreign Key Constraint):
--1.创建外键约束
-- 语法格式:
ALTER TABLE 子表名
ADD CONSTRAINT 约束名
FOREIGN KEY (子表关联列)
REFERENCES 主表名 (主表关联列);-- 示例:
ALTER TABLE Employees
ADD CONSTRAINT FK_Employees_Departments
FOREIGN KEY (DepartmentID)
REFERENCES Departments(DepartmentID);--2.删除外键约束
-- 语法格式:
ALTER TABLE 子表名
DROP CONSTRAINT 约束名;-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT FK_Employees_Departments;--3.修改外键约束
-- 语法格式:
ALTER TABLE 子表名
DROP CONSTRAINT 约束名;ALTER TABLE 子表名
ADD CONSTRAINT 新约束名 FOREIGN KEY (子表关联列)
REFERENCES 主表名 (主表关联列);-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT FK_Employees_Departments;ALTER TABLE Employees
ADD CONSTRAINT FK_Employees_Departments_New
FOREIGN KEY (DepartmentID)
REFERENCES Departments(DepartmentID);
4.3唯一约束(Unique Constraint):
--1.创建唯一约束
-- 语法格式:
ALTER TABLE 表名
ADD CONSTRAINT 约束名 UNIQUE (列名);-- 示例:
ALTER TABLE Employees
ADD CONSTRAINT UQ_Employees_Email UNIQUE (Email);--2.删除唯一约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT UQ_Employees_Email;--3.修改唯一约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;ALTER TABLE 表名
ADD CONSTRAINT 新约束名 UNIQUE (列名);-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT UQ_Employees_Email;ALTER TABLE Employees
ADD CONSTRAINT UQ_Employees_Email_New UNIQUE (Email);
4.4检查约束(Check Constraint):
--1.创建检查约束
-- 语法格式:
ALTER TABLE 表名
ADD CONSTRAINT 约束名 CHECK (条件);-- 示例:
ALTER TABLE Employees
ADD CONSTRAINT CK_Employees_Salary CHECK (Salary > 0);--2.删除检查约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT CK_Employees_Salary;--3.修改检查约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;ALTER TABLE 表名
ADD CONSTRAINT 新约束名 CHECK (条件);-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT CK_Employees_Salary;ALTER TABLE Employees
ADD CONSTRAINT CK_Employees_Salary_New CHECK (Salary > 1000);
4.5默认约束(Default Constraint):
--1.创建默认约束
-- 语法格式:
ALTER TABLE 表名
ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 列名;-- 示例:
ALTER TABLE Employees
ADD CONSTRAINT DF_Employees_HireDate DEFAULT GETDATE() FOR HireDate;--2.删除默认约束
-- 语法格式:
ALTER TABLE 表名
ALTER COLUMN 列名 DROP DEFAULT;-- 示例:
ALTER TABLE Employees
ALTER COLUMN HireDate DROP DEFAULT;--3.修改默认约束
-- 语法格式:
ALTER TABLE 表名
DROP CONSTRAINT 约束名;ALTER TABLE 表名
ADD CONSTRAINT 新约束名 DEFAULT 默认值 FOR 列名;-- 示例:
ALTER TABLE Employees
DROP CONSTRAINT DF_Employees_HireDate;ALTER TABLE Employees
ADD CONSTRAINT DF_Employees_HireDate_New DEFAULT GETDATE() FOR HireDate;
4.6非空约束(Not Null Constraint):
--1.创建非空约束
-- 语法格式:
ALTER TABLE 表名
ALTER COLUMN 列名 数据类型 NOT NULL;-- 示例:
ALTER TABLE Employees
ALTER COLUMN Address VARCHAR(100) NOT NULL;--2.删除非空约束
-- 语法格式:
ALTER TABLE 表名
ALTER COLUMN 列名 数据类型 NULL;-- 示例:
ALTER TABLE Employees
ALTER COLUMN Address VARCHAR(100) NULL;--3.修改非空约束
-- 语法格式:
ALTER TABLE 表名
ALTER COLUMN 列名 数据类型 NOT NULL;-- 示例:
ALTER TABLE Employees
ALTER COLUMN Address VARCHAR(200) NOT NULL;
注意:
通过使用以上的语法格式,可以对指定表的约束进行创建、修改和删除。
在修改约束之前,要确保了解并满足新的约束要求,并确保没有数据违反约束。
在删除约束之前,要确保没有数据依赖于该约束,并且备份数据以防止意外的数据损失。
对于某些约束,需要先删除约束才能修改列的定义,然后再重新添加约束。在实际操作中,一定要谨慎处理对表结构的改变,并确保在进行任何更改之前备份数据。
5.1.2注意事项:
在使用主键约束时,需要注意以下几点:
1. 唯一性:主键值必须在表中是唯一的。确保每行的主键值都不相同,以避免违反主键约束。如果插入或更新操作导致重复的主键值,将会触发主键冲突错误。
2. 非空性:主键列不能为空(即不允许NULL值)。因此,在定义主键约束之前,应该确保列上没有NULL值。如果尝试将NULL值插入主键列,将会触发非空约束错误。
3. 不可修改性:主键值一旦设置,通常是不允许更改的。这是为了确保主键的稳定性和数据完整性。如果确实需要更改主键值,那么首先需要删除原有的行,然后插入新的行。
4. 主键命名:给主键约束命名时,应该选择有意义和描述性的名称,以提高代码的可读性和可维护性。通常使用"PK_"作为主键约束名称的前缀,以便于识别。
5. 引用关系:主键通常被用来建立表与其他表的关联(外键引用)。当表存在外键引用时,删除或修改主键值可能会影响到其他表的数据完整性。在进行任何更改之前,请谨慎评估和处理相关的外键关系。
6. 聚集索引:主键约束默认会创建一个聚集索引。聚集索引决定了表中数据的物理存储顺序。要根据查询需求和性能优化考虑是否使用聚集索引,并选择合适的列作为聚集索引的键。
7. 复合主键:可以通过使用多个列来定义复合主键。在使用复合主键时,确保每个组合值都是唯一的,并且所有组合值都不为空。
8. 自增长主键:可以使用IDENTITY属性或SEQUENCE对象来生成自增长的主键值。自增长主键为每个新行分配一个唯一的、递增的值。要正确使用自增长主键,请确保未手动插入主键值。
总结:
使用主键约束可以确保表中的每行都具有唯一标识并且非空。在使用主键约束时,要注意唯一性、非空性、不可修改性、命名规范以及与其他表的引用关系。这样可以确保数据的完整性和一致性,并提高数据库的性能和可维护性。
5.2.2注意事项:
在使用外键约束时,需要注意以下几点:
1. 引用完整性:外键约束用于维护表之间的引用完整性。在定义外键约束之前,应确保所引用的主键或唯一键列存在,并且已经创建了相应的主键或唯一约束。
2. 数据一致性:外键约束确保关联表中的数据保持一致。插入或更新包含外键的行时,确保引用值存在于关联表中,以避免违反外键约束。
3. 级联操作:可以定义级联操作来处理与外键关联的操作。级联操作指定了当引用表中的数据发生改变时,对关联表中的数据的处理方式。常见的级联操作包括级联删除和级联更新。
4. 删除限制:默认情况下,外键约束会阻止删除关联表中被引用的行。如果要删除关联表中的数据,必须首先删除引用它的所有行,或者定义级联删除操作来自动删除相关行。
5. 修改限制:默认情况下,外键约束会阻止修改关联表中被引用的主键或唯一键列。如果需要修改关联列的值,必须先删除外键约束,然后进行修改。修改完成后,可以重新创建外键约束。
6. 外键命名:给外键约束命名时,应选择有意义和描述性的名称,以提高代码的可读性和可维护性。通常使用"FK_"作为外键约束名称的前缀,以便于识别。
7. 联接效率:外键约束可能会影响查询的性能。因此,在设计和使用外键时,要注意查询的联接操作,并根据具体需求考虑是否需要创建索引来优化查询性能。
8. 外键顺序:在创建多个外键约束时,外键约束的顺序可能会对操作产生影响。如果存在循环引用,即多个表相互引用,必须谨慎处理外键的顺序和依赖关系。
总结:
在使用外键约束时,要确保引用关系的完整性,并注意数据的一致性、级联操作、删除和修改的限制。合理命名外键约束,考虑查询效率和索引的使用,以确保数据库的正常运行和性能优化。
5.3.2注意事项:
唯一约束(Unique Constraint)用于确保列或列组合的值是唯一的,需要注意以下几点:
1. 唯一性:唯一约束要求列或列组合中的值在表中是唯一的,不允许重复。确保每行的唯一约束值都不相同,以避免违反唯一性约束。
2. NULL值:唯一约束默认可以包含一个NULL值。这意味着多个NULL值可以存在于列或列组合中而不违反唯一性约束。如果想要禁止NULL值重复,可以创建一个索引来实现。
3. 索引创建:唯一约束会自动创建一个唯一索引来支持唯一性验证。确保在设计和使用唯一约束时,对相关列或列组合创建适当的索引,以提高查询效率。
4. 复合唯一约束:可以使用多个列来定义复合唯一约束。复合唯一约束意味着多个列的组合必须是唯一的。在创建复合唯一约束时,确保每个组合值都是唯一的,且所有组合值都不为空。
5. 唯一约束命名:给唯一约束命名时,应选择有意义和描述性的名称,以提高代码的可读性和可维护性。通常使用"UQ_"作为唯一约束名称的前缀,以便于识别。
6. 修改限制:修改唯一约束会影响现有数据的一致性。如果要更改唯一约束的列或列组合,必须先删除原有的唯一约束,然后重新创建新的唯一约束。
7. 外键引用:唯一约束常用于引用表之间的关系。如果将唯一约束用作外键的引用,需要确保被引用的唯一值与外键列或列组合相匹配,并且满足引用完整性的要求。
8. 性能影响:唯一约束的索引可能会对插入、更新和删除操作的性能产生影响。在设计和使用唯一约束时,要平衡数据完整性和性能需求,根据具体情况选择是否使用唯一约束。
总结:
在使用唯一约束时,要确保唯一性、索引的创建和命名、复合唯一约束的定义和数据完整性的保持。同时,需要注意与外键引用、修改约束和性能方面的考虑,以确保数据库的正常运行和性能优化。
5.4.2注意事项:
需要注意以下几点:
1. 检查条件:检查约束用于限制列的取值范围。在定义检查约束时,要确保检查条件是准确的、完整的,并且符合业务规则和需求。
2. 约束命名:给检查约束命名时,应选择有意义和描述性的名称,以提高代码的可读性和可维护性。通常使用"CK_"作为检查约束名称的前缀,以便于识别。
3. 多列检查约束:可以使用多个列来定义复杂的检查约束。在使用多列检查约束时,要确保检查条件涵盖了所有相关列,并且能够正确地验证数据的完整性。
4. 修改限制:修改检查约束可能会影响现有数据的一致性。如果要更改检查约束的条件,必须先删除原有的检查约束,然后重新创建新的检查约束。
5. 性能影响:应谨慎使用复杂或耗时的检查条件,因为它们可能会对插入、更新和查询操作的性能产生影响。在设计和使用检查约束时,要平衡数据完整性和性能需求。
6. 默认值冲突:如果存在默认值并且检查约束条件与默认值冲突,将无法插入或更新数据。确保检查约束的条件和默认值是兼容的,并且不会导致冲突。
7. 特殊字符转义:如果检查约束条件包含特殊字符,如引号、百分号等,要进行适当的转义处理,以避免语法错误或意外行为。
8. 跨表检查约束:检查约束可以跨多个表进行定义。在跨表检查约束时,要确保引用的表和列是正确的,并且能够满足数据完整性和业务规则的要求。
总结:
在使用检查约束时,要确保检查条件的准确性和完整性,合理命名约束,注意修改约束的影响和检查条件与默认值的兼容性。同时,要注意性能方面的考虑,并在需要的情况下进行特殊字符转义和跨表检查约束的定义。这样可以确保数据库中的数据满足业务规则和完整性要求。
.5.2注意事项:
使用默认约束时,需要注意以下几点:
1. 默认值选择:默认约束用于指定列在没有明确提供值时的默认值。在选择默认值时,要确保它符合业务规则,并且与列的数据类型兼容。
2. NULL值处理:默认约束可以包含一个NULL值作为默认值。如果想要禁止列使用NULL值作为默认值,可以在创建表时或后续使用ALTER TABLE语句添加NOT NULL约束。
3. 默认约束命名:给默认约束命名时,应选择有意义和描述性的名称,以提高代码的可读性和可维护性。通常使用"DF_"作为默认约束名称的前缀,以便于识别。
4. 修改限制:修改默认约束可能会影响现有数据的一致性。如果要更改默认值,必须先删除原有的默认约束,然后重新创建新的默认约束。
5. 多列默认约束:可以为多个列定义相同的默认约束。在使用多列默认约束时,要确保默认值在所有相关列上都是适用的,并且与数据类型兼容。
6. 跨表默认约束:默认约束可以跨多个表进行定义。在跨表默认约束时,要确保引用的表和列是正确的,并且能够满足数据完整性和业务规则的要求。
7. 性能影响:如果默认值涉及复杂计算或查询操作,可能会对插入和更新操作的性能产生影响。要谨慎选择默认值,避免过度复杂或耗时的操作。
8. 默认约束的顺序:如果存在多个默认约束,并且有依赖关系,确保按正确的顺序创建这些约束,以避免依赖错误。
总结:
在使用默认约束时,要选择合适的默认值,注意NULL值的处理、命名约束、修改约束的影响和多列/跨表默认约束的定义。同时,要注意默认值的性能影响和约束的顺序,以确保数据库中的数据具有适当的默认值并满足业务规则。
5.6.2注意事项:
使用非空约束时,需要注意以下几点:
1. 列定义:非空约束用于限制列不允许为空值。在定义表结构时,需要明确指定哪些列需要应用非空约束。
2. 默认值:如果未提供值且列具有默认值,则非空约束不会阻止插入操作。确保在设计表时,明确为不允许为空的列提供适当的默认值或规定其必须显式提供值。
3. 修改限制:如果要将已具有数据的列更改为非空约束,必须先确定所有现有行都包含有效的值,然后才能添加非空约束。
4. 空字符串:非空约束只针对空值(NULL),而不会限制空字符串。如果希望禁止空字符串,则需要使用非空约束和额外的检查约束来实现。
5. 外键关系:在定义外键关系时,注意引用列是否允许为空。如果主表中的被引用列是非空约束,那么外键列也应该是非空约束,以确保引用完整性。
6. 默认约束冲突:如果某个列既有非空约束又有默认约束,并且二者存在冲突,例如默认值为NULL,则会导致冲突。确保默认约束与非空约束兼容,以避免此类冲突。
7. 数据完整性:非空约束可确保数据完整性,但需要注意在应用非空约束之前,已经存在的数据可能包含空值。在应用非空约束之后,需要确保现有数据符合约束条件。
8. 修改数据:非空约束限制了对该列的更新和插入操作中的空值。确保在进行这些操作时,提供了非空的值,否则将违反非空约束
总结:
在使用非空约束时,要注意对列的定义、默认值的处理,修改限制和数据完整性的考虑。同时,需要注意与外键关系和默认约束的兼容性,以确保数据库中的数据满足非空约束并保持一致性。
CREATE TABLE Employees (EmployeeID INT NOT NULL,FirstName NVARCHAR(50),LastName NVARCHAR(50),-- 添加主键约束CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID)
);
CREATE TABLE Orders (OrderID INT IDENTITY(1,1) PRIMARY KEY,EmployeeID INT,OrderDate DATE,-- 添加外键约束,引用Employees表的EmployeeID字段CONSTRAINT FK_Orders_Employees FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);
CREATE TABLE Users (UserID INT IDENTITY(1,1) PRIMARY KEY,Email NVARCHAR(100),-- 添加唯一约束,确保Email字段的值是唯一的CONSTRAINT UQ_Users_Email UNIQUE (Email)
);
CREATE TABLE Products (ProductID INT IDENTITY(1,1) PRIMARY KEY,ProductName NVARCHAR(100),Price DECIMAL(10, 2),-- 添加检查约束,确保价格大于0CONSTRAINT CK_Products_Price CHECK (Price > 0)
);
1、添加主键约束alter table stuinfo add costraint pk_stuno primary key (stuno)
2、唯一约束alter table stuinfo add constraint uq_stuid unique (stuid)
3、添加默认约束alter table stuinfo add constraint df_address default ('地址不详') for address
4、添加检查约束alter table stuinfo add constraint ck_age check (age between 15 and 40) 这是年龄在15到40之间
5、添加外键约束alter table stumarks add constraint fk_stuno foreign key (stuno) references stuinfo (stuno)这是一个成绩表(stumarks)引用学生信息表中的列 学号
6、not null 非空约束,强制不接受空值,例如,创建表时,name varchar(6) not null
--创建约束
--为性别增加一个检查约束,要求性别只能是:'男' or '女'
alter table AbcTable add constraint CK_AbcTable_EmpGender check(EmpGender='男' or EmpGender='女')
--删除单个约束
alter table AbcTable drop constraint CK_AbcTable_EmpGender
--为EmpName增加一个唯一约束
alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)--为订单增加检查约束,要求Payment=(PaymentToBId+PaymentToTm)
alter table Trade add constraint CK_Trade_PaymentLargeZero check(Payment>0 and PaymentToBid>0)
alter table Trade add constraint CK_Trade_PaymentToBidToTm check(Payment=(PaymentToBid+PaymentToTm))
alter table [Order] add constraint CK_Order_PaymentToBidToTm check(Payment=(PaymentToBid+PaymentToTm))
alter table ChannelInMoneyFlow add constraint UQ_ChannelInMoneyFlow_InTradePayDate unique(InTradePayDate)--查找Check约束
select * from sys.check_constraints chk
select * from sys.tables tabSELECTtab.name AS [表名],chk.name AS [Check约束名],chk.definition
FROMsys.check_constraints chkJOIN sys.tables tabON (chk.parent_object_id = tab.object_id)----查找唯一约束
select * from sys.indexes idx where idx.is_unique_constraint = 1SELECTtab.name AS [表名],idx.name AS [约束名称],col.name AS [约束列名]
FROMsys.indexes idxJOIN sys.index_columns idxColON (idx.object_id = idxCol.object_idAND idx.index_id = idxCol.index_idAND idx.is_unique_constraint = 1)JOIN sys.tables tabON (idx.object_id = tab.object_id)JOIN sys.columns colON (idx.object_id = col.object_idAND idxCol.column_id = col.column_id);----查找外键约束
select * from sys.foreign_keys fk selectoSub.name AS [子表名称],fk.name AS [外键名称],SubCol.name AS [子表列名],oMain.name AS [主表名称],MainCol.name AS [主表列名]
fromsys.foreign_keys fk JOIN sys.all_objects oSub ON (fk.parent_object_id = oSub.object_id)JOIN sys.all_objects oMainON (fk.referenced_object_id = oMain.object_id)JOIN sys.foreign_key_columns fkColsON (fk.object_id = fkCols.constraint_object_id)JOIN sys.columns SubColON (oSub.object_id = SubCol.object_id AND fkCols.parent_column_id = SubCol.column_id)JOIN sys.columns MainColON (oMain.object_id = MainCol.object_id AND fkCols.referenced_column_id = MainCol.column_id)
相关文章:

sql server 中的6种约束
一、约束定义 约束是用于定义和实施表的规则和限制,以确保数据的完整性和一致性。 即对一张表中的属性操作进行限制。 二、约束分类 通过定义约束,可以对数据库中的数据进行限制,以下是常见的约束: 1. 主键约束(Pr…...

师彼长技以助己(2)产品思维
师彼长技以助己(2)产品思维 前言 我把产品思维称之为:人生底层的能力以及蹉跎别人还蹉跎自己的能力,前者说明你应该具备良好产品思维原因,后者是你没有好的产品思维去做产品带来的灾难。 人欲即天理 请大家谈谈看到这…...

Redis学习笔记【基础篇】
SQL vs NOSQL SQL(Structured Query Language)和NoSQL(Not Only SQL)是两种不同的数据库处理方式,它们在多个维度上有所差异,主要区别包括: 数据结构: SQL(关系型数据库)…...

【文献阅读】基于模型设计的汽车软件质量属性
参考文献:《基于模型设计满足汽车软件质量和快速交付的挑战》,深向科技在2024年MATLAB XEPO大会的演讲 Tips:KISS原则,全称为“Keep It Simple, Stupid”,直译为“保持简单,愚蠢的人也能懂”...

撸广告赚金币小游戏app开发
在app上投放广告有哪些注意事项? 在app上投放广告需要注意以下几个方面。 首先,要选择合适的广告形式。根据自己的需求和目标受众,选择合适的广告形式,如横幅广告、插屏广告、视频广告等。不同的广告形式适用于不同的场景和目标…...

海外高清短视频:四川京之华锦信息技术公司
海外高清短视频:探索世界的新窗口 在数字化时代的浪潮下,海外高清短视频成为了人们探索世界、了解异国风情的新窗口。四川京之华锦信息技术公司这些短视频以其独特的视角、丰富的内容和高清的画质,吸引了无数观众的目光,让人们足…...

16:00面试,16:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...

Android MediaCodec 简明教程(九):使用 MediaCodec 解码到纹理,使用 OpenGL ES 进行处理,并编码为 MP4 文件
系列文章目录 Android MediaCodec 简明教程(一):使用 MediaCodecList 查询 Codec 信息,并创建 MediaCodec 编解码器Android MediaCodec 简明教程(二):使用 MediaCodecInfo.CodecCapabilities 查…...

Neo4j安装部署及python连接neo4j操作
Neo4j安装部署及python连接neo4j操作 Neo4j安装和环境配置 安装依赖库: sudo apt-get install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 增加Neo4 GPG key&…...

一维时间序列信号的改进小波降噪方法(MATLAB R2021B)
目前国内外对于小波分析在降噪方面的方法研究中,主要有小波分解与重构法降噪、小波阈值降噪、小波变换模极大值法降噪等三类方法。 (1)小波分解与重构法降噪 早在1988 年,Mallat提出了多分辨率分析的概念,利用小波分析的多分辨率特性进行分…...

Java整合EasyExcel实战——3(上下列相同合并单元格策略)
参考:https://juejin.cn/post/7322156759443095561?searchId202405262043517631094B7CCB463FDA06https://juejin.cn/post/7322156759443095561?searchId202405262043517631094B7CCB463FDA06 准备条件 依赖 <dependency><groupId>com.alibaba</gr…...

dmdts连接kingbase8报错
dmdts连接kingbase报错 环境介绍1 人大金仓jdbc配置2 dmdts 人大金仓jdbc默认配置3 dmdts 修改jdbc配置4 达梦产品学习使用列表 环境介绍 dts版本 使用dmdts连接kingbase金仓数据库报错 无效的URL 对比jdbc连接串,修改配置解决 1 人大金仓jdbc配置 配置URL模版信息等 类名…...

【算法训练 day44 分割等和子集】
目录 一、分割等和子集-LeetCode 416思路实现代码1.二维dp代码2.一维dp代码 问题总结 一、分割等和子集-LeetCode 416 Leecode链接: leetcode 416 文章链接: 代码随想录 视频链接: B站 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&…...

前端实习记录——git篇(一些问题与相关命令)
1、版本控制 (1)版本回滚 git log // 查看版本git reset --mixed HEAD^ // 回滚到修改状态,文件内容没有变化git reset --soft HEAD^ // 回滚暂存区,^的个数代表几个版本git reset --hard HEAD^ // 回滚到修改状态ÿ…...

XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览
XML Web服务是一种用于在网络上发布、发现和使用应用程序组件的技术。它基于一系列标准和协议,如WSDL、SOAP、RDF和RSS。下面是一些相关的内容: WSDL(Web服务描述语言):用于描述Web服务的基于XML的语言,定义…...

解析Java中1000个常用类:FunctionalInterface类,你学会了吗?
Java 8 引入了一系列新的特性和改进,其中之一便是函数式编程。函数式接口(Functional Interface)是函数式编程的核心概念之一。本文将深入探讨 FunctionalInterface 注解,介绍其用法、重要性,并通过示例展示如何在实际开发中应用函数式接口。 什么是函数式接口? 函数式…...

Kafka自定义分区器编写教程
1.创建java类MyPartitioner并实现Partitioner接口 点击灯泡选择实现方法,导入需要实现的抽象方法 2.实现方法 3.自定义分区器的使用 在自定义生产者消息发送时,属性配置上加入自定义分区器 properties.put(ProducerConfig.PARTITIONER_CLASS_CONFIG,&q…...

python移动文件
测试1(直接把B文件夹移动到了A里,成为了A的子文件夹) import os import shutil# 移动文件夹,B文件夹在当前目录没有了,跑到了A的子文件里 ## shutil.move(./example1/B/, ./example1/A/)测试2(B文件不动,将B文件里的所有的子文件夹移动到A内…...

eNSP学习——OSPF的DR与BDR
目录 相关命令 原理概述 实验内容 实验目的 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建基本的OSPF网络 3、查看默认情况下的DR/BDR状态 4、根据现网需求影响DR/BDR选举 相关命令 [R4]int g0/0/0 [R4-GigabitEthernet0/0/0]ospf network-type p2mp //在接…...

【文献阅读】应用人工智能在Simulink中开发软件
参考文献:《AI用于Simulink模型的降阶方法和应用场景》Mathworks在2024年MATLAB XEPO大会的演讲 文章目录: 1、模型框架 2、数据准备 3、AI建模 4、仿真和测试 5、部署应用 Tips:降阶模型(Reduced Order Modeling࿰…...

【计算机毕设】基于SpringBoot的房产销售系统设计与实现 - 源码免费(私信领取)
免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 随着房地产市场的发展和互联网技术的进步,传统的房产销售模式逐渐向线上转移。设计并实现一个基于Spring Boot的房产销售系统࿰…...

Docker 私有仓库部署和管理
目录 一、案例一 概述 二、案例一 前置知识点 2.1、什么是 Docker Compose 2.2、什么是 Consul 三、案例一 使用 docker Compose 搭建 Consul 集群环境 3.1、案例实验环境 3.2、案例需求 四、案例实施 4.1、Docker 网络通信 1)端口映射 2…...

大模型时代的具身智能系列专题(六)
UCSD 王小龙组 王小龙是UCSD电子与计算机工程系的助理教授。他曾在加州大学伯克利分校与Alexei Efros和Trevor Darrell一起担任博士后研究员,在CMU RI获得了机器人学博士学位,师从Abhinav Gupta。他的研究重点是通过视频和物理机器人交互数据来学习3D和…...

Pytorch入门需要达到的效果
会搭建深度学习环境和依赖包安装 使用Anaconda创建环境、在pytorch官网安装pytorch、安装依赖包 会使用常见操作,例如matmul,sigmoid,softmax,relu,linear matmul操作见文章torch.matmul()的用法 sigmoid࿰…...

数据结构的快速排序(c语言版)
一.快速排序的概念 1.快排的基本概念 快速排序是一种常用的排序算法,它是基于分治策略的一种高效排序算法。它的基本思想如下: 从数列中挑出一个元素作为基准(pivot)。将所有小于基准值的元素放在基准前面,所有大于基准值的元素放在基准后面。这个过程称为分区(partition)操作…...

数据结构基础篇(4)
十六.循环链表 概念 循环链表是一种头尾相接的链表(最后一个结点的指针域指向头结点,整个链表形成一个环)优点 从表任一结点出发均可找到表中其他结点判断终止 由于循环链表中没有NULL指针,所以涉及遍历操作时,终止条…...

使用cad绘制一个螺旋输送机
1、第一步,绘制一个矩形 2、使用绘图中的样条线拟合曲线,绘制螺旋线。 绘制时使用上下辅助线、阵列工具绘制多个竖线保证样条线顶点在同一高度。 3、调整矩形右侧的两个顶点,使其变形。 矩形1和矩形2连接时,使用blend命令&#…...

迭代器模式(行为型)
目录 一、前言 二、迭代器模式 三、总结 一、前言 迭代器模式(Iterator Pattern)是一种行为型设计模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。总的来说就是分离了集合对象的遍历行为,抽象出…...

Django——Admin站点(Python)
#前言: 该博客为小编Django基础知识操作博客的最后一篇,主要讲解了关于Admin站点的一些基本操作,小编会继续尽力更新一些优质文章,同时欢迎大家点赞和收藏,也欢迎大家关注等待后续文章。 一、简介: Djan…...

React 组件通信
1.从父组件向子组件传递参数: 父组件可以通过props将数据传递给子组件。子组件通过接收props来获取这些数据。 // 父组件 const ParentComponent () > {const data Hello, Child!;return <ChildComponent childData{data} />; }; // 子组件 const ChildCompone…...