数据库系统概念第六版记录 一
1.关系型数据库
关系型数据库(Relational Database,简称 RDB)是基于关系模型的一种数据库,它通过表格的形式来组织和存储数据。每个表由若干行(记录)和列(字段)组成,数据通过行和列的交集进行关联。常见的关系型数据库管理系统(RDBMS)包括 MySQL、PostgreSQL、Oracle、SQL Server 等
2.数据库中的关系是什么
在数据库中,关系(Relation)是一个表的抽象概念。关系是数据库中数据存储的基本结构,它由若干 属性(columns)和 元组(tuples,也称为行)组成。
关系的定义:
关系 是一个由 元组(数据行)和 属性(数据列)构成的集合。
每个关系对应数据库中的一个表,每一行是一个元组(记录),每一列是一个属性(字段)。
在关系数据库中,表就是一个具体的关系,表中的列对应属性,表中的每一行对应元组。关系是一种数学上的概念,它遵循某些规则,用于组织和管理数据。
关系的特点:
元组(Tuple):表中的一行数据。在关系模型中,元组表示实体的一条记录。例如,学生表中的一行数据记录了一个学生的所有信息。
属性(Attribute):表中的一列数据。每个属性都有一个数据类型,定义了它可以存储的数据值的种类。例如,学生表中“学号”、“姓名”、“年龄”就是属性。
域(Domain):属性的取值范围,定义了属性可以接受的数据类型。比如,“学号”属性的域可能是整数类型,“姓名”属性的域可能是字符串类型。
关系名:每个关系都有一个名称,即表的名字。关系名是数据库中关系的唯一标识。
关系的数学特性:
无序性:关系中的元组没有顺序,表中的行没有排序要求。
元组唯一性:每个元组必须是唯一的,不能出现重复的行。
属性无序性:关系中的属性没有顺序,表中的列没有排序要求。
举个例子:
StudentID | Name | Age | Major |
---|---|---|---|
1001 | Alice | 20 | Computer Sci |
1002 | Bob | 21 | Computer Sci |
1003 | Charlie | 21 | Math |
在这个表中:
属性(Attribute):StudentID、Name、Age、Major 是该表的属性。
元组(Tuple):每一行数据都是一个元组,例如 (1001, Alice, 20, Computer Sci) 是表中的一个元组。
关系(Relation):表 Students 是一个关系,它由若干元组和属性组成。
3.数据库的关系模式
数据库的关系模式(Relational Schema) 指的是一个关系数据库中表的结构描述,包括表中的 属性(columns)及其对应的 域(domain)。具体来说,关系模式定义了一个关系(即表)的名字、该关系的属性名以及每个属性可能的值的集合
详细说明:
关系:通常是数据库中的一个表(如学生表、订单表等)。
属性:即表中的列,每个属性都有一个名称,例如“学生姓名”、“学号”等。
域:每个属性的可能取值范围(例如,学号可能是一个整数,学生姓名可能是一个字符串)。域定义了该属性允许的数据类型和取值限制。
关系模式的组成部分:
关系名:即表的名称,如 Students。
属性集:一组属性,例如 StudentID、StudentName、Age。
属性的域:每个属性的取值范围。例如,StudentID 的域可能是 整数,StudentName 的域是 字符串。
例如,假设有一个学生表 Students,其中包括 StudentID(整数类型),StudentName(字符串类型),Age(整数类型)。该表的关系模式可以表示为:
Students (StudentID: Integer, StudentName: String, Age: Integer)
这里:
Students 是关系的名称。
StudentID, StudentName, Age 是表的属性。
Integer 和 String 是这些属性的域。
4.主码
在数据库中,主码(Primary Key)是一个用于唯一标识一个表中每一行(记录)的属性(或属性的组合)。主码的值必须满足两个关键条件:
唯一性:表中的每一行必须具有唯一的主码值,保证没有两行记录的主码相同。
非空性:主码不能包含空值(NULL),每一行必须具有一个有效的主码值。
主码的作用:
唯一标识每一行:主码是用来唯一识别表中的每一条记录,它确保了每个数据行可以被独立地区分和定位。
数据完整性:主码通过保证唯一性和非空性,确保数据的完整性和一致性。
用于表间关联:主码通常用于建立与其他表的关联,如通过外键(Foreign Key)将两个表连接起来。
主码的选取:
单属性主码:表中只有一个属性作为主码,如学生表中的学号(StudentID)。
复合主码:当表中的单个属性不足以唯一标识每一行时,可以使用多个属性的组合作为主码,这种主码称为复合主码。例如,课程表中的一个复合主码可能由 CourseID 和 Semester 组成。
举例:
假设有一个学生表 Students,包含以下属性:
StudentID | Name | Age | Major |
---|---|---|---|
1001 | Alice | 20 | Computer Sci |
1002 | Bob | 21 | Computer Sci |
1003 | Charlie | 21 | Math |
在这个表中,StudentID 可以作为主码,因为每个学生的 StudentID 都是唯一的且不为空。
关键点:
唯一性:确保主码的每个值在整个表中都是唯一的。
非空性:主码值不能为 NULL,因为每一行记录都需要能够被唯一标识。
其他相关概念:
候选键:候选键是一个表中可以作为主码的候选属性或属性组合,通常有多个候选键。最终选择一个作为主码,其余的候选键可能成为唯一键(Unique Key)。
外键(Foreign Key):外键是一个表中的列,指向另一个表的主码或唯一键,用于在两个表之间建立联系。
5.连接运算
在关系数据库中,连接运算(Join)是一种用于将两个或多个表中的数据根据某些条件组合成一个新表的操作。连接运算是关系数据库中非常常用的操作,它使得可以在不同表之间建立关系,并且在查询中获取跨表的数据。
常见的连接类型:
6.内连接(Inner Join):
内连接是最常见的连接类型,它返回两个表中符合连接条件的所有记录。
如果某一行在两个表中都找不到匹配项,则该行不会出现在结果中。
SELECT *
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
示例: 假设有两个表:
Students:学生信息表
Enrollments:学生选课信息表
SELECT Students.StudentID, Students.Name, Enrollments.CourseID
FROM Students
INNER JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;
这个查询会返回所有选了课程的学生的学号、姓名和课程ID。
7. 左连接(Left Join 或 Left Outer Join)
左连接返回左表中的所有记录和右表中符合条件的记录。如果右表没有匹配项,则返回 NULL。
它确保左表中的每一行都出现在结果中,即使右表中没有匹配的记录。
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
示例:
SELECT Students.StudentID, Students.Name, Enrollments.CourseID
FROM Students
LEFT JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;
这个查询会返回所有学生的信息,包括那些没有选课的学生(对于没有选课的学生,课程ID为NULL)。
8.右连接(Right Join 或 Right Outer Join):
右连接与左连接相反,返回右表中的所有记录和左表中符合条件的记录。如果左表没有匹配项,则返回 NULL。
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
示例:
SELECT Students.StudentID, Students.Name, Enrollments.CourseID
FROM Students
RIGHT JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;
这个查询会返回所有选课的记录,包括那些没有学生信息的记录(例如,某些课程没有学生报名时)。
9.全连接(Full Join 或 Full Outer Join)
全连接返回两个表中的所有记录。如果某一行在某个表中找不到匹配项,则返回 NULL。换句话说,左表和右表的所有记录都会出现在结果中。
语法:
SELECT *
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
示例:
SELECT Students.StudentID, Students.Name, Enrollments.CourseID
FROM Students
FULL JOIN Enrollments
ON Students.StudentID = Enrollments.StudentID;
这个查询会返回所有学生和所有选课记录,包括那些没有选课的学生和那些没有学生选课的课程。
10.交叉连接(Cross Join)
交叉连接返回两个表的笛卡尔积,即每一行左表的记录都会与右表的每一行记录进行组合,结果的行数是左表行数乘以右表行数。
语法:
SELECT *
FROM table1
CROSS JOIN table2;
示例: 假设有两个表:
Products:产品信息
Shops:商店信息
SELECT Products.ProductName, Shops.ShopName
FROM Products
CROSS JOIN Shops;
这个查询会返回每个产品和每个商店的组合,生成笛卡尔积。
11.连接运算的基本规则:
连接条件通常使用 ON 关键字来指定,用来定义两个表之间的关联列。
连接操作不仅限于单表之间的连接,还可以通过多表连接来查询更复杂的数据。
连接运算可以通过多个条件进行组合,例如使用 AND 或 OR 来连接多个列。
12.连接运算的应用场景:
多表查询:通过连接多个表,能够从多个数据源中检索和组合信息。
关联数据:例如在学生与课程、订单与客户、商品与销售记录之间建立关系。
数据整合:连接运算能够将拆分在多个表中的信息整合到一起,从而方便进行分析和处理。
13.笛卡尔运算(Cross Join)
参考交叉连接
示例
假设有两个表:
Products
+----------+----------+
| ProductID| Name |
+----------+----------+
| 101 | 手机 |
| 102 | 电脑 |
+----------+----------+Shops
+----------+----------+
| ShopID | Location |
+----------+----------+
| 1 | 北京 |
| 2 | 上海 |
+----------+----------+
执行:
SELECT *
FROM Products
CROSS JOIN Shops;
+----------+----------+----------+----------+
| ProductID| Name | ShopID | Location |
+----------+----------+----------+----------+
| 101 | 手机 | 1 | 北京 |
| 101 | 手机 | 2 | 上海 |
| 102 | 电脑 | 1 | 北京 |
| 102 | 电脑 | 2 | 上海 |
+----------+----------+----------+----------+
说明:
由于 Products 表有 2 行,Shops 表有 2 行,所以最终生成了 2 × 2 = 4 行的结果。
每个产品都会和每个商店匹配,这就是笛卡尔积的作用。
14.自然连接 (Natural Join)
自然连接是一种特殊的等值连接(Equi Join),它自动匹配两个表中具有相同名称的列,并根据这些列的值进行连接。
特点
自动匹配:自然连接会查找两个表中列名相同且类型相同的列,并使用这些列作为连接条件。
去除冗余列:如果两个表中有相同的列,自然连接不会在结果集中重复出现该列(只保留一列)。
等值匹配:只返回那些在匹配列上具有相同值的行。
SQL 语法
SELECT *
FROM table1
NATURAL JOIN table2;
示例
假设有两个表:
Students
StudentID | Name | Age |
---|---|---|
1 | 张三 | 20 |
2 | 李四 | 21 |
3 | 王五 | 21 |
Enrollments
StudentID | CourseID |
---|---|
1 | CS101 |
2 | MA102 |
4 | PH103 |
SELECT *
FROM Students
NATURAL JOIN Enrollments;
结果
StudentID | Name | Age | CourseID |
---|---|---|---|
1 | 张三 | 20 | CS101 |
2 | 李四 | 21 | MA102 |
注意:
StudentID 作为公共列,只显示一次。
王五 没有选课,StudentID=3 被过滤掉。
StudentID=4 的选课记录 PH103 也被过滤掉,因为该学生不在 Students 表中。
第一章习题
这一章讲述了数据库系统的几个主要的优点。它有哪两个不足之处?
数据库系统的优点与不足
优点:
数据独立性:数据库系统提供了物理数据和逻辑数据的独立性,使得用户和应用程序不需要关心数据的物理存储方式。
数据一致性与完整性:通过约束和事务管理,数据库系统确保了数据的一致性、完整性和正确性。
不足:
性能开销:数据库系统需要执行许多复杂的操作(如索引管理、查询优化、事务管理等),这可能导致性能开销较大。
成本:开发和维护数据库系统通常需要高昂的硬件、软件和人力成本,特别是对于大型企业级数据库系统。
列出 Java 或 C++之类的语言中的类型说明系统与数据库系统中使用的数据定义语言的 5 个不同之处。
列出为一个企业建立数据库的六个主要步骤。
需求分析:与企业各个部门和用户沟通,明确系统需要存储和处理的数据类型、使用场景和功能需求。
概念设计:设计一个抽象的数据模型,通常采用实体-关系模型(ER图)来描述系统的数据需求。
逻辑设计:将概念模型转化为数据库结构,例如表格、字段和关系等。
物理设计:根据具体的数据库管理系统(DBMS)要求,将逻辑设计转换为实际的存储方案,定义索引、分区等物理存储细节。
实施:在DBMS中实现数据库设计,创建表、约束、存储过程等,并导入数据。
维护与优化:对数据库进行定期的维护,进行性能优化、数据备份、安全管理等工作。
除1. 6. 2 节中已经列出的之外,请列出大学要维护的至少 3 种不同类型的信息
学生信息:包括学号、姓名、性别、出生日期、专业、年级等。
课程信息:包括课程编号、课程名称、授课教师、学分、学时等。
教职工信息:包括工号、姓名、职位、部门、工资等。
假设你想要建立一个类似于 YouTube 的视频节点。考虑 1. 2 节中列出的将数据保存在文件系统中的各个缺点,讨论每一个缺点与存储实际的视频数据和关于视频的元数据(诸如标题、上传它的用户、标签、观看它的用户) 的关联
文件系统缺点与存储视频数据的关联:
缺少结构化:文件系统通常不提供数据表的结构,视频文件存储仅是单纯的文件管理,没有内建的查询和检索功能,这导致无法高效管理和查询视频的元数据(如标题、标签、观看次数等)。
不易扩展:当视频数量和数据量增大时,文件系统会面临扩展问题,尤其在视频文件不断增加的情况下,管理和备份视频数据变得更加困难。
数据一致性差:文件系统没有内建的事务管理机制,如果多个用户同时对视频进行上传或修改,容易造成数据一致性问题。相比之下,数据库系统能够保证多个操作的原子性和一致性。
文件系统缺点与存储元数据的关联:
查询困难:文件系统中的元数据(如视频的标题、上传者、观看用户等)通常是存储在文件名或附加文件中的,查询这些信息通常需要手动处理文件,而不能像数据库那样通过结构化查询进行高效检索。
安全性问题:文件系统没有内建的权限管理和访问控制机制,可能导致视频数据的未经授权访问或泄露,而数据库系统则能更好地控制访问权限。
在 Web 查找中使用的关键字查询与数据库查询很不一样。请列出这两者之间在查询表达方式和查询结果是什么方面的主要差异
列出四个你使用过的很可能使用了数据库来存储持久数据的应用
社交媒体应用(如 Facebook, Instagram):
这些平台需要存储大量的用户数据、帖子、评论、点赞、好友关系等。它们通常使用关系型数据库(如 MySQL)或非关系型数据库(如 Cassandra)来处理这些数据。
电子商务平台(如 Amazon, 淘宝):
电子商务平台需要存储用户信息、订单数据、商品库存、支付记录等信息,这些数据需要持久化存储并且能够高效查询。
在线银行系统:
用于管理客户账户信息、交易记录、余额等数据。这些数据需要保持一致性和安全性,因此一般使用关系型数据库(如 Oracle, SQL Server)。
视频流媒体平台(如 YouTube):
视频平台需要存储视频内容、视频元数据(标题、标签、上传者等)、观看记录和用户交互等信息。数据库在这种情况下主要用于管理视频的元数据和用户的交互信息。
列出文件处理系统和 DBMS 的四个主要区别
解释物理数据独立性的概念,以及它在数据库系统中的重要性
物理数据独立性是指应用程序与物理数据存储结构之间的独立性。它意味着用户不需要知道或关注数据的物理存储细节(如存储位置、索引结构等),而可以专注于如何查询和操作数据。数据库系统通过提供这种独立性,使得当物理存储方式发生变化时(如硬件升级或索引重构),应用程序不必修改,减少了维护的复杂性。
重要性:
简化数据管理:管理员可以根据需要优化物理存储方式而不影响应用层和用户。
减少开发成本:程序员无需关心数据如何存储,只关心逻辑数据模型,从而提高开发效率。
提高系统灵活性:物理数据存储可以随时根据需求进行调整和优化,而不会影响到用户查询的功能。
列出数据库管理系统的五个职责。对每个职责,说明当它不能被履行时会产生什么样的问题。
数据存储管理:
职责:管理数据的存储、读取、更新等操作,确保数据存储的高效性。
问题:如果不能正确履行这一职责,可能导致数据存储效率低下、数据损坏或访问速度慢。
数据查询管理:
职责:解析和执行用户查询,优化查询过程,返回正确的结果。
问题:查询可能变得非常慢,用户获取数据的效率低,且可能返回错误结果。
数据安全管理:
职责:确保数据的安全性,包括访问控制、加密、权限管理等。
问题:如果没有适当的安全管理,可能会导致敏感数据泄露,未授权的用户访问数据。
并发控制:
职责:处理多个用户同时访问数据库时的事务,并确保事务之间的数据一致性。
问题:如果没有并发控制,可能会导致数据的竞争条件和不一致性,例如两人同时修改同一条数据时出错。
数据备份与恢复:
职责:定期备份数据库,并在数据丢失或损坏时恢复数据。
问题:如果没有有效的备份和恢复机制,可能会导致数据丢失或灾难恢复困难。
请给出至少两种理由说明为什么数据库系统使用声明性查询语言,如 SQL,而不是只提供 C 或者 C ++的函数库来执行数据操作。
简化查询表达:
SQL 是声明性语言,用户只需描述“做什么”(例如“选择哪些数据”),而不需要指定“如何做”(如循环、数据结构等)。这比在 C 或 C++ 中用函数库进行复杂的数据操作要简洁得多。
优化查询:
SQL 查询语言具有内建的查询优化功能,数据库管理系统可以自动选择最佳的查询执行计划。而在 C 或 C++ 中,开发者需要手动优化代码,增加了复杂度和出错的可能性
解释用图 1-4 中的表来设计会导致哪些问题。
数据冗余:如果表设计不规范,可能会导致数据的重复存储,增加存储空间和维护成本。
更新异常:例如在一个表中存储了多次相同的客户信息,当客户数据变化时,必须在多个位置进行更新,否则会导致数据不一致。
查询效率低:缺乏索引优化的表在查询时可能会非常慢,尤其在大数据量情况下。
数据库管理员的五种主要作用是什么?
数据库设计与架构:
负责数据库的总体设计,包括选择合适的数据库架构、数据模型以及表的设计。
性能优化:
负责数据库的性能优化,优化查询、索引、缓存等,确保数据库的高效运行。
数据安全:
负责确保数据库的安全性,设置访问权限、用户角色、加密机制等。
备份与恢复:
负责定期备份数据库,并制定有效的灾难恢复计划,确保数据不会丢失。
故障排除与维护:
负责数据库的监控与维护,确保数据库系统的正常运行,并处理数据库出现的问题(如锁、死锁、性能瓶颈等)
解释两层和三层体系结构之间的区别。对 Web 应用来说哪一种更合适? 为什么?
两层体系结构:
由 客户端 和 数据库服务器 组成。客户端直接与数据库进行通信,执行查询和数据操作。
优点:简单,部署方便。
缺点:客户端与数据库直接交互,容易导致性能瓶颈和安全问题,无法有效分离应用逻辑。
三层体系结构:
由 客户端、应用服务器 和 数据库服务器 组成。客户端与应用服务器交互,应用服务器与数据库进行通信。应用服务器通常处理业务逻辑。
优点:实现了应用逻辑和数据库的分离,提升了安全性和扩展性。
缺点:架构复杂,部署和维护成本较高。
对于 Web 应用来说,三层体系结构更合适。原因是:
三层架构可以更好地分离关注点,将业务逻辑和数据库操作分开,增强安全性和可维护性。
它支持更高的可扩展性,能够处理更多的并发请求。
描述可能被用于存储一个社会网络系统如 Facebook 中的信息的至少 3 个表
用户表:
存储用户信息,如用户ID、用户名、邮箱、密码、个人资料等。
CREATE TABLE Users (user_id INT PRIMARY KEY,username VARCHAR(100),email VARCHAR(100),password VARCHAR(100),profile_picture VARCHAR(255),date_of_birth DATE
);
朋友关系表:
存储用户之间的朋友关系,包括用户ID和好友的ID。
CREATE TABLE Friendships (user_id INT,friend_id INT,status VARCHAR(20),PRIMARY KEY (user_id, friend_id),FOREIGN KEY (user_id) REFERENCES Users(user_id),FOREIGN KEY (friend_id) REFERENCES Users(user_id)
);
帖子表:
存储用户发布的帖子信息,如帖子ID、内容、发布者ID、发布时间等。
CREATE TABLE Posts (post_id INT PRIMARY KEY,user_id INT,content TEXT,post_time TIMESTAMP,FOREIGN KEY (user_id) REFERENCES Users(user_id)
);
这些表设计可以用于存储用户数据、朋友关系以及用户的社交互动信息,为社交网络系统提供支持。
相关文章:
数据库系统概念第六版记录 一
1.关系型数据库 关系型数据库(Relational Database,简称 RDB)是基于关系模型的一种数据库,它通过表格的形式来组织和存储数据。每个表由若干行(记录)和列(字段)组成,数据…...
本地Ollama部署DeepSeek R1模型接入Word
目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器:DeepSeekWord,让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…...
Meta Sapiens AI论文解读:人类视觉模型基石初现,AI 未来走向何方?
一、引言 在本文中,我们将深入探讨 Meta AI 的一项新成果,该成果发表于一篇题为《Sapiens:人类视觉模型的基础》的研究论文中。这篇论文介绍了一系列模型,这些模型针对四项以人类为中心的基本任务,正如我们在上面的演示…...
输入类控件和多元素控件【QT】
文章目录 输入类控件QLineEdit Text EditCombo BoxSpin BoxDialSlider多元素控件QListWidget TableWidetTreeWidgetQGroupBoxTab Widget# QVBoxLayout# QHBoxLayoutQGridLayoutQFormLayout 输入类控件 QLineEdit 例如: 实现一个用户输入姓名 密码 电话 性别 的功能…...
一键开启/关闭deepseek
一键开启/关闭 Deepseek对应下载的模型一键开启 Deepseek,一键关闭Deepseek双击对应的bat,就可以启动https://mbd.pub/o/bread/Z56YmpZvbat 下载:https://mbd.pub/o/bread/Z56YmpZv 可以自己写下来,保存成bat文件,也可…...
gitea - fatal: Authentication failed
文章目录 gitea - fatal: Authentication failed概述run_gitea_on_my_pkm.bat 笔记删除windows凭证管理器中对应的url认证凭证启动gitea服务端的命令行正常用 TortoiseGit 提交代码备注END gitea - fatal: Authentication failed 概述 本地的git归档服务端使用gitea. 原来的用…...
Spring AI 智能体通过 MCP 集成本地文件数据
作者:刘军 Model Context Protocol(MCP)简介 模型上下文协议(即 Model Context Protocol,MCP) [ 1] 是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下…...
音视频入门基础:RTP专题(5)——FFmpeg源码中,解析SDP的实现
一、引言 FFmpeg源码中通过ff_sdp_parse函数解析SDP。该函数定义在libavformat/rtsp.c中: int ff_sdp_parse(AVFormatContext *s, const char *content) {const char *p;int letter, i;char buf[SDP_MAX_SIZE], *q;SDPParseState sdp_parse_state { { 0 } }, *s1…...
MyBatis XML文件配置
目录 一、 配置连接字符串和MyBatis 二、书写持久层代码 2.1 添加Mapper接口 2.2 添加UserlnfoXMLMapper.xml 三、增删改查 3.1 、增(Insert) 3.2、删(Delete) 3.3、改 (Update) 3.4、查 (Select) MyBatisXML的方式需要以下两步&am…...
【Leetcode 热题 100】1143. 最长公共子序列
问题背景 给定两个字符串 t e x t 1 text_1 text1 和 t e x t 2 text_2 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 0 0。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变…...
【算法】动态规划专题④ ——LCS(最长公共子序列)+ LPS(最长回文子序列) python
目录 前置知识LCS举一反三LPS 前置知识 【算法】动态规划专题③ ——二维DP python 子序列定义为: 不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 LCS 最长公共子序列 https://www.lanqiao.cn/problems/1189/learning/?p…...
Cesium点集中获取点的id,使用viewer.value.entities.getById报错的解决方法
错误代码: viewer.value.entities.getById(pickedObject.id) 报错: 可以正常获取movement.position但是一直出现如下报错,无法获得航点的id,通过断点定位为 viewer.value.entities.getById(pickedObject.id)导致的报错 解决方…...
360手机刷机 360手机解Bootloader 360手机ROOT
360手机刷机 360手机解Bootloader 360手机ROOT 问:360手机已停产,现在和以后,能刷机吗? 答:360手机,是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…...
深度探索DeepSeek-R1:AI大模型的本地应用与个人知识库构建
深度探索DeepSeek-R1:AI大模型的本地应用与个人知识库构建 引言 在当今这个信息爆炸的时代,如何高效地存储、处理和获取知识,已经成为每个人面临的挑战。想象一下,如果你能在没有互联网连接的情况下,构建一个属于自己…...
LabVIEW图像采集与应变场测量系统
开发了一种基于LabVIEW的图像采集与应变场测量系统,提供一种高精度、非接触式的测量技术,用于监测物体的全场位移和应变。系统整合了实时监控、数据记录和自动对焦等功能,适用于工程应用和科学研究。 项目背景 传统的位移和应变测量技术往往…...
解决DeepSeek服务器繁忙问题:本地部署与优化方案
deepseek服务器崩了,手把手教你如何在手机端部署一个VIP通道! 引言 随着人工智能技术的快速发展,DeepSeek等大语言模型的应用越来越广泛。然而,许多用户在使用过程中遇到了服务器繁忙、响应缓慢等问题。本文将探讨如何通过本地部…...
今日AI和商界事件(2025-02-05)
今日AI领域的相关事件主要包括以下几个方面: 一、DeepSeek引发全球关注 性能与成本优势: DeepSeek推出的R1模型性能出色,成本较低,在全球AI行业引发震动。该模型在数学、代码处理等方面性能优异,受到广泛赞誉。 平台…...
SQL 秒变 ER 图 sql转er图
🚀SQL 秒变 ER 图,校园小助手神了! 学数据库的宝子们集合🙋♀️ 是不是每次碰到 SQL 转 ER 图就头皮发麻?看着密密麻麻的代码,脑子直接死机,好不容易理清一点头绪,又被复杂的表关…...
SQL server 创建DB Link 详解
在日常工作中,经常涉及到跨库操作,为使跨数据库的操作变得更加灵活高效,我们可以在 SQL Server 中建立数据库链接( DB Link),实现 SQL Server 数据库与其他数据库(如 Oracle, MySQL 等ÿ…...
25.2.5学习记录
今天主要学的是哈希表的理论知识,但是都是c实现,C语言的代码实现还没有完全搞明白。 在写题的时候,懵懂的学着正确代码,用C语言模拟实现哈希表去解题。 在哈希表的理论知识中,学到哈希函数,了解哈希冲突产…...
C# List 列表综合运用实例⁓Hypak原始数据处理编程小结
C# List 列表综合运用实例⁓Hypak原始数据处理编程小结 1、一个数组解决很麻烦引出的问题1.1、RAW 文件尾部数据如下:1.2、自定义标头 ADD 或 DEL 的数据结构如下: 2、程序 C# 源代码的编写和剖析2.1、使用 ref 关键字,通过引用将参数传递,以…...
不可信的搜索路径(CWE-426)
漏洞描述:程序使用关键资源时(如动态链接库、执行文件、配置文件等)没有明确的指定资源的路径,而是依赖操作系统去搜索资源,这种行为可能被攻击者利用,通过在搜索优先级较高的目录放置不良资源,…...
Unity 2D实战小游戏开发跳跳鸟 - 记录显示最高分
上一篇文章中我们实现了游戏的开始界面,在开始界面中有一个最高分数的UI,本文将接着实现记录最高分数以及在开始界面中显示最高分数的功能。 添加跳跳鸟死亡事件 要记录最高分,则需要在跳跳鸟死亡时去进行判断当前的分数是否是最高分,如果是最高分则进行记录,如果低于之前…...
openeuler 22.03 lts sp4 使用 cri-o 和 静态 pod 的方式部署 k8s-v1.32.0 高可用集群
前情提要 整篇文章会非常的长…可以选择性阅读,另外,这篇文章是自己学习使用的,用于生产,还请三思和斟酌 静态 pod 的部署方式和二进制部署的方式是差不多的,区别在于 master 组件的管理方式是 kubectl 还是 systemctl有 kubeadm 工具,为什么还要用静态 pod 的方式部署?…...
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工
目录 决策树:代码设计代码: 决策树: 代码设计 代码: class Solution {boolean[][] vis;int ret,m,n;public int getMaximumGold(int[][] grid) {m grid.length;n grid[0].length;vis new boolean[m][n]; for(int i 0; i <…...
SQL Server配置管理器无法连接到 WMI 提供程序
目录 第一步第二部 第一步 发现没有资源管理器 在文件夹找到管理器 打开发现报这个错误 配置管理器无法连接到 WMI 提供程序第二部 https://blog.csdn.net/thb369208315/article/details/126954074...
微信小程序获取openid和其他接口同时并发请求如何保证先获取到openid
在微信小程序中,如果你需要并发请求获取 openid 和其他接口的数据,并且希望确保先获取到 openid 之后再进行后续操作,可以考虑以下几种方法: 方法一:使用 Promise 链 1, 先请求 openid:使用 Promise 来请求 openid。 2, 在获取到 openid 后再请求其他接口。 function g…...
为AI聊天工具添加一个知识系统 之87 详细设计之28 Derivation 统一建模元模型 之1
文本要点 要点 Derivation 统一建模元模型 Derivation 统一建模元模型:意识原型的祖传代码,即支撑 程序框架的 符号学中的 自然和逻辑树。 这棵树的雏形中描述了三种建模工件:语用钩子,语法糖和语义胶水。 三种工件对应的三“…...
java进阶知识点
java回收机制 浅谈java中的反射 依赖注入的简单理解 通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~ 这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现…...
63.视频推荐的算法|Marscode AI刷题
1.题目 问题描述 西瓜视频正在开发一个新功能,旨在将访问量达到80百分位数以上的视频展示在首页的推荐列表中。实现一个程序,计算给定数据中的80百分位数。 例如:假设有一个包含从1到100的整数数组,80百分位数的值为80…...
19.[前端开发]Day19-王者荣项目耀实战(二)
01_(掌握)王者荣耀-main-banner展示实现 完整代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…...
Leetcode面试高频题分类刷题总结
https://zhuanlan.zhihu.com/p/349940945 以下8个门类是面试中最常考的算法与数据结构知识点。 排序类(Sort): 基础知识:快速排序(Quick Sort), 归并排序(Merge Sort)的…...
JPA使用@EntityGraph立即加载关联实体
在JpaRepository接口中实现自定义查询的时候,必然会遇到一个问题,通过findBy等语句查询出来的结果通常情况下不会加载到关联的实体。例如我有一个Material类,其中有一个属性supplier使用了多对一关联到Supplier类,并开启懒加载&am…...
python多版本管理工具之pyenv
pyenv 是一个用于管理多个 Python 版本的工具,允许用户在同一台机器上轻松安装、切换和隔离不同版本的 Python 解释器。它特别适合需要同时处理多个项目的开发者(例如,不同项目依赖不同 Python 版本的情况)。以下是 pyenv 的详细指南: 本文基于Ubuntu 22.04版本进行安装,…...
107,【7】buuctf web [CISCN2019 华北赛区 Day2 Web1]Hack World
这次先不进入靶场 看到红框里面的话就想先看看uuid是啥 定义与概念 UUID 是 Universally Unique Identifier 的缩写,即通用唯一识别码。它是一种由数字和字母组成的 128 位标识符,在理论上可以保证在全球范围内的唯一性。UUID 的设计目的是让分布式系…...
9. k8s二进制集群之kube-controller-manager部署
同样在部署主机上创建证书请求文件(为之后的证书生成做准备)根据上面的证书文件创建证书(结果会在当前目录下产生kube-controller-manager证书)创建kube-controller-manager服务配置文件创建kube-controller-manager服务启动文件同步kube-controller-manager证书到对应mast…...
keil 单步调试技巧
一、常见错误分析 warningerror警告错误 不影响编译过程 能够输出Hex文件 无法完成编译 不输出Hex文件 注意的是,warning的信息是要去关注的。 下面的UNCALLED SEGMENT除外 二、单步调试配置 1、在keil中添加单片机型号 本文不详细介绍,如有需要可查看这篇文章:...
[leetcode]两数之和等于target
源代码 #include <iostream> #include <list> #include <iterator> // for std::prev using namespace std; int main() { int target 9; list<int> l{ 2, 3, 4, 6, 8 }; l.sort(); // 确保列表是排序的,因为双指针法要求输入是…...
Go语言的转义字符
文章目录 1. Go语言的转义字符(escapechar)2. 小结和提示 1. Go语言的转义字符(escapechar) 说明:常用的转义字符有如下: \t : 表示一个制表符,通常使用它可以排版\n :换行符\\ :一个\\" :一个"\r :一个回…...
低代码系统-产品架构案例介绍、蓝凌(十三)
蓝凌低代码系统,依旧是从下到上,从左至右的顺序。 技术平台h/iPaas 指低层使用了哪些技术,例如:微服务架构,MySql数据库。个人认为,如果是市场的主流,就没必要赘述了。 新一代门户 门户设计器&a…...
【大数据技术】搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)
搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) jdk-8u361-linux-x64.tarhadoop-3.3.6.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Hadoop+MapReduce+Yarn的详细步骤。 注意: 统一约定将软件安装包存放…...
Rapidjson 实战
Rapidjson 是一款 C 的 json 库. 支持处理 json 格式的文档. 其设计风格是头文件库, 包含头文件即可使用, 小巧轻便并且性能强悍. 本文结合样例来介绍 Rapidjson 一些常见的用法. 环境要求 有如何的几种方法可以将 Rapidjson 集成到您的项目中. Vcpkg安装: 使用 vcpkg instal…...
string类OJ练习题
目录 文章目录 前言 一、反转字符串 二、反转字符串 II 三、反转字符串中的单词 III 四、验证一个字符串是否是回文 五、字符串相加(大数加法) 六、字符串相乘(大数乘法) 七、把字符串转化为整数(atoi) 总结…...
Python进行模型优化与调参
在数据科学与机器学习领域,模型的优化与调参是提高模型性能的重要步骤之一。模型优化可以帮助提高模型的准确性和泛化能力,而合理的调参则能够充分发挥模型的潜力。这篇教程将重点介绍几种常用的模型优化与调参方法,特别是超参数调整和正则化技术的应用。这些技术能够有效地…...
Ollama+deepseek+Docker+Open WebUI实现与AI聊天
1、下载并安装Ollama 官方网址:Ollama 安装好后,在命令行输入, ollama --version 返回以下信息,则表明安装成功, 2、 下载AI大模型 这里以deepseek-r1:1.5b模型为例, 在命令行中,执行&…...
【PDF多区域识别】如何批量PDF指定多个区域识别改名,基于Windows自带的UWP的文字识别实现方案
海关在对进口货物进行查验时,需要核对报关单上的各项信息。对报关单 PDF 批量指定区域识别改名后,海关工作人员可以更高效地从文件名中获取关键信息,如货物来源地、申报价值等。例如文件名 “[原产国]_[申报价值].pdf”,有助于海关快速筛选重点查验对象,提高查验效率和监管…...
第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】
目录 Qt开发环境QtCreator的安装、配置在QtCreator中创建新工程在Forms→mainwindow.ui中拖曳出我们要的图形按钮查看拖曳出按钮后的代码为pushButton这个图形添加回调函数编译工程关闭开发板上QT的GUI(选做)禁止LCD黑屏(选做)设置Qt运行的环境变量运行Qt程序如何让程序在系统启…...
算法题(58):盛水最多的容器
审题: 需要我们找到数组height中的数据构建的可以盛水最多的容器,并把容量返回 思路: 容量 最短的容器边界 * 容器宽度 方法一:双层for循环 我们可以把所有情况枚举出来,然后维护一个最大容量 方法二:双指…...
MyBatis持久层框架
第1章 Mybatis框架入门 1.1 Mybatis简介 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 MyBati…...
DeePseek结合PS!批量处理图片的方法教程
今天我们来聊聊如何利用deepseek和Photoshop(PS)实现图片的批量处理。 传统上,批量修改图片尺寸、分辨率等任务往往需要编写脚本或手动处理,而现在有了AI的辅助,我们可以轻松生成PS脚本,实现自动化处…...