【数据库系统概论复习】关系数据库与关系代数笔记
文章目录
- 基本概念
- 数据库基本概念
- 关系数据结构
- 完整性约束
- 关系代数
- 关系代数练习
- 课堂练习
- 语法树
基本概念
数据库基本概念
DB 数据库, 为了存用户的各种数据,我们要建很多关系(二维表),所以把相关的关系(二维表)放在一起,形成一个库
DBMS 数据库管理系统 ,数据库要放硬盘,好麻烦,牛的程序员给我们做了一个软件, 让我们可以方便的建库, 建表,做权限控制等,这就是DBMS
DBS 数据库系统
关系数据结构
元组(Tuple)
关系中的每一行叫作一个n元组(n-tuple)或简称元组(Tuple)。
属性(Attribute)
关系中的每一列为一个属性。
分量(Component)
一个元组(d1,d2,…,dn)中的每一个项di叫作一个分量,即属性值。
域(Domain)
一组具有相同数据类型的值的集合。
基数(Cardinal number)
元组个数
关系模式

关系是元组的集合,其具有如下性质
- 列是同质的(Homogeneous)
- 不同的列可出自同一个域
- 列的顺序无所谓,列的次序可以任意交换
- 任意两个元组的key(码)值不能相同
- 行的顺序无所谓,行的次序可以任意交换
- 分量必须取原子值,每一个分量都必须是不可分的数据项
关系是具有相同结构的元组的集合;
关系模式对关系的结构等的抽象描述;
关系数据库是关系的集合;
外码
设F是基本关系R的一个或一组属性,但不是关系R的码。K是基本关系S的主码。如果F的取值源自基本关系S中的主码K对应的域,则称F是基本关系R的外码。
外码的使用
- 目标关系S的主码K 和参照关系R的外码F必须定义在同一个(或一组)域上;
- 外码并不一定要与相应的主码同名;
- 关系R和S可以是同一个关系。
完整性约束
实体完整性规则
参照完整性规则
用户定义的完整性规则
实体完整性规则(Entity Integrity)
若属性A是基本关系R的主属性,则A不能取空值(NULL)
参照完整性规则
若属性(或属性组)F是基本关系R的外码,则F的值:
或者取空值(F的每个属性的取值均为空值);
或者等于S中某个元组的主码值。
关系代数
- 集合操作:并

- 集合操作:差

- 集合操作:交

- 选择

- 投影

- 重命名

命名操作简化
- 链接运算符

- 笛卡尔积

- θ连接( θ Join)

- 内连接


注意:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
- 外连接

例题
- 除运算

例题


- 去重操作符

- 排序操作符
默认是升序,小的在上面
- ASC :升序(默认值)
- DESC:降序

- 分组操作符
L中有属性就分组,如果只有聚合函数,就是简单的聚合函数,不会分组,如题11

- 聚集操作符

关系代数练习

答案

课堂练习

1. select sno from SC where cno = '2';
2. select sno,sname from Student where sdept = 'IS';
3. select sno,sname from Student where ssex = '女';
4. select cname,grade from SC join Course as c on SC.cno = C.cno where SC.sno =
(select sno from Student where sname = '李勇');
5. select s.sno from Student as s where s.sno not in (select SC.sno from SC);
6. select C.cno,C.cname from Course as C where cno not in (select SC.cno from SC);
SELECT C.cno, C.cname
FROM Course AS C
LEFT JOIN SC ON C.cno = SC.cno
WHERE SC.cno IS NULL;
7. select sno,sname from Student where sdept = (select sdept from Student where sname = '张立') and sname <> '张立';
8. select s.sno,s.sname from Student as s where s.sno in
(select SC.sno from SC join Course as c on SC.cno = c.cno where c.canme = '数学课');
9. select s.sno,s.sname from Student as s where s.sno not in
(select SC.sno from SC join Course as c on SC.cno = c.cno where c.canme = '操作系统')
数据库:
CREATE TABLE Student( Sno CHAR(9) PRIMARY KEY,Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK ( Ssex IN (‘男’,‘女’) ) , Sage SMALLINT CHECK ( sage >0) ,Sdept CHAR(20),FOREIGN KEY (Sdept) REFERENCES depart(dptno) );
CREATE TABLE SC( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT,PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
例题1某职工社团管理系统有如下3个基本表:
- 职工( 职工号 ,姓名,年龄,性别)
- 社会团体( 编号 ,名称,负责人,活动地点)
- 参与( 职工号,编号 ,参与日期)
其中:
职工表的主码为职工号,职工姓名不能为空。
社会团体表的主码为编号,外码为负责人,被参照表为职工表,参照属性为职工号,社会团体名称不能为空。
参与表的主码为职工号和编号,职工号为外码,被参照表为职工表,参照属性为职工号,编号为外码,被参照表为社会团体表,参照属性为编号。
试用SQL语句实现以下操作。
(1)定义职工表、社会团体表和参与表,并说明其主码和参照关系。
(2)定义两个视图:
社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)
参与人情况(职工号,姓名,社团编号,社团名称,参与日期)
(3)查询参与羽毛球队、秧歌队或冬泳队的职工号和姓名。
(4)查询参与冬泳队且年龄大于50岁的职工的职工号和姓名。
(5)查询还没有确定负责人的社会团体编号和名称。
(6)查询没有参与任何社会团体的职工情况。
(7)查询姓“李”且参与至少一个社会团体的男员工的平均年龄。
(8)查询与“肖波”至少参与一个相同社会团体的所有职工信息。
(9)查询年龄在45~55岁之间的女职工或年龄在50~60岁之间的男职工的所有信息。
(10)查询参与了全部社会团体的职工情况。
(11)查询参与了职工号为“0001”的职工所参与的全部社会团体的职工号。
(12)查询与“秧歌队”负责人年龄相同的职工的姓名。
(13)查询比“秧歌队”中所有职工年龄都大的职工的姓名。
(14)查询并统计每个社会团体的名称和参与人数。
(15)查询并统计参与人数最少的社会团体的名称和参与人数。
(16)查询并统计参与人数超过20人的社会团体的名称和负责人。
答案:
(1)
CREATE TABLE 职工(职工号 CHAR(8) PRIMARY KEY,姓名 CHAR (8) NOT NULL,年龄 SMALLINT,性别 CHAR (2),CONSTRAINT C1 CHECK (性别 IN ("男","女")))
CREATE TABLE 社会团体 (编号 CHAR(8) PRIMARY KEY,名称 CHAR(8) NOT NULL,负责人 CHAR(8),活动地点 VARCHAR(50),CONSTRAINT C2 FOREIGN KEY(负责人) REFERENCES 职工(职工号))
CREATE TABLE 参与 (职工号 CHAR(8),编号 CHAR(8),参与日期 DATETLME,CONSTRAINT C3 PRIMARY KEY(职工号,编号),CONSTRAINT C4 FOREIGN KEY (职工号) REFERENCES 职工(职工号))
(2)
CREATE VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)
AS SELECT 编号,名称,负责人,姓名,性别
FROM 社会团体,职工
WHERE 社会团体.负责人=职工.职工号
CREATE VIEW 参与人情况(职工号,姓名,社团编号,社团名称,参与日期)
AS SELECT 职工.职工号,姓名,社会团体.编号,名称,参与日期
FROM 职工,社会团体,参与
WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
(3)
SELECT DISTINCT 职工.职工号,姓名
FROM 职工,社会团体,参与
WHERE 职工.职工号=参与.职工号 AND 参与.编号=社会团体.编号
AND 社会团体.名称 IN ("羽毛球队","秧歌队","冬泳队")
(4)
SELECT 职工号,姓名
FROM 职工
WHERE 职工号 IN
(SELECT 职工号FROM 参与WHERE 编号 IN(SELECT 编号FROM 社会团体WHERE 名称="冬泳队"))
AND 年龄>50
(5)
SELECT 编号,名称
FROM 社会团体
WHERE 负责人 IS NULL
(6)
SELECT *
FROM 职工
WHERE NOT EXISTS (SELECT *FROM 参与WHERE 参与.职工号=职工.职工号)
(7)
SELECT AVG(年龄)
FROM 职工
WHERE 姓名 LIKE "李%" AND性别="男" AND EXISTS (SELECT *FROM 参与WHERE 参与.职工号=职工.职工号)
(8)
SELECT *
FROM 职工 AS E1
WHERE E1.姓名<>"肖波" AND EXISTS
(SELECT J1.编号FROM 参与 AS J1WHERE J1.职工号=E1.职工号 AND J1.编号=ANY(SELECT J2.编号FROM 职工 AS E2, 参与 AS J2WHERE E2.职工号=J2. 职工号 AND E2.姓名="肖波"))
(9)
SELECT *
FROM 职工
WHERE ((年龄 BETWEEN 45 AND 55) AND 性别="女") OR
((年龄 BETWEEN 50 AND 60) AND 性别="男")
(10)
SELECT *
FROM 职工
WHERE NOT EXISTS (SELECT *FROM 参与WHERE NOT EXISTS (SELECT *FROM 社会团体WHERE 参与.职工号=职工.职工号 AND 参与.编号=社会团体.编号))
(11)
SELECT 职工号
FROM 职工
WHERE NOT EXISTS (SELECT *FROM 参与 AS 参与 1WHERE 参与 1.职工号="0001" AND NOT EXISTS (SELECT *FROM 参与 AS 参与 2WHERE 参与 2.编号=参与1.编号 AND 参与2.职工号=职工.职工号))
(12)
SELECT 姓名
FROM 职工
WHERE 年龄>(SELECT 年龄FROM 职工,社会团体WHERE 社会团体.负责人=职工.职工号 AND 社会团体.名称="秧歌队")
(13)
SELECT 姓名
FROM 职工
WHERE 年龄>ALL(SELECT 年龄FROM 职工,社会团体,参与WHERE 社会团体.编号=参与.编号 AND 职工.职工号=参与.职工号AND 社会团体.名称="秧歌队")
(14)
SELECT 社会团体.名称,COUNT(参与.职工号)
FROM 社会团体,参与
WHERE 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
(15)
SELECT 社会团体.名称,COUNT(参与.职工号)
FROM 社会团体,参与
WHERE 社会团体.编号=参与.编号
GROUP BY 参与.编号,社会团体.名称
HAVING COUNT(参与.职工号)<=ALL (SELECT COUNT(参与.职工号)FROM 参与GROUP BY 参与.编号)
(16)
SELECT 社会团体.名称,职工.姓名
FROM 职工,社会团体,参与
WHERE 社会团体.编号=参与.编号
AND 社会团体.负责人=职工.职工号
GROUP BY 参与.编号,社会团体.名称,职工.姓名
HAVING COUNT (参与.编号)>20
例题2某教学管理数据库中有如下3个基本表。
学生:S( S# ,SNAME,AGE,SEX),属性分别表示学号、姓名、年龄和性别。
学习:SC( S#,C# ,GRADE),属性分别表示学号、课程号和成绩。
课程:C( C# ,CNAME,TEACHER),属性分别表示课程号、课程名和教师姓名。
试用SQL语句完成下列操作:
(1)查询年龄大于20岁的男学生的学号和姓名。
(2)查询选修课程名为“操作系统”课程的学生的平均年龄。
(3)查询教师“王明”所授课程的课程号和课程名。
(4)查询选修课程包含教师“王明”所授课程的学生学号。
(5)查询教师“王明”所授课程的每门课程的学生平均成绩。
(6)统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按选修人数降序排列,若人数相同,则按课程号升序排列。
(7)查询姓张的所有学生的姓名和年龄。
(8)查询成绩为空值的学生学号和课程号。
(9)查询年龄大于女学生平均年龄的男学生姓名和年龄。
(10)查询年龄大于所有女学生年龄的男学生姓名和年龄。
(11)查询选修课程门数超过学号为S0001的学生选修门数的所有学生信息。
(12)查询每个学生的学号、选修课程门数(COUNT_C)和总成绩(TOTAL_G),将查询结果保存在一个名为RESULT的新表中。
(13)将SC中尚无成绩的选课记录删除。
(14)将学生“张三”的学习选课信息全部删去。
(15)将选修“操作系统”课程且不及格的成绩全改为空值。
(16)将低于总平均成绩的女学生成绩提高10%。
(1)
SELECT S#, SNAME
FROM S
WHERE (AGE>20) AND (SEX="男")
(2)
SELECT AVG(AGE)
FROM S
WHERE S# IN
(SELECT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE CNAME="操作系统"
)
)
(3)
SELECT C#, CNAME
FROM C
WHERE TEACHER="王明"
(4)
SELECT DISTINCT S#
FROM SC
WHERE C# IN
(SELECT C#
FROM C
WHERE TEACHER="王明"
)
(5)
SELECT CNAME,AVG(GRADE)
FROM SC JOIN C ON SC. C#=C. C#
WHERE TEACHER="王明"
GROUP BY C#
(6)
SELECT DISTINCT C#, COUNT(S#)
FROM SC
GROUP BY C#
HAVING COUNT(S#)>10
ORDER BY 2 DESC, C# ASC
(7)
SELECT SNAME,AGE
FROM S
WHERE SNAME LIKE "张%"
(8)
SELECT S#, C#
FROM SC
WHERE GRADE IS NULL
(9)
SELECT SNAME, AGE
FROM S AS X
WHERE X.SEX="男" ND X.AGE>
(SELECT AVG(AGE)
FROM S AS Y
WHERE Y.SEX="女")
(10)
SELECT SNAME, AGE
FROM S AS X
WHERE X.SEX="男" AND X.AGE>ALL
(SELECT AGE
FROM S AS Y
WHERE Y.SEX="女")
(11)
SELECT *
FROM S
WHERE S# IN
(SELECT S#
FROM SC
GROUP BY S# HAVING COUNT(S#)>
(SELECT COUNT(*)
FROM SC
WHERE S#="S0001"
)
)
(12)
SELECT S.S#, COUNT(S.S#) AS COUNT C, SUM(GRADE) AS TOTAL G
INTO RESULT
FROM S JOIN SC ON S.S#=SC. S#
GROUP BY S.S#
(13)
DELETE FROM SC
WHERE GRADE IS NULL
(14)
DELETE FROM SC
WHERE S# IN
(SELECT S#
FROM S
WHERE SNAME="张三")
(15)
UPDATE SC
SET GRADE=NULL
WHERE GRADE<60 AND C# IN
(SELECT C#
FROM C
WHERE CNAME="操作系统")
(16)
UPDATE SC
SET GRADE=GRADE*1.1
WHERE GRADE<(SELECT AVG(GRADE) FROM SC. AND
S# IN(SELECT S# FROM S WHERE SEX="女")
语法树
查询优化:先做选择,运用投影去除多余属性等等。语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)。
:::info
- 构造查询树:
查询树是一种表示关系代数表达式的树形结构。
在一个查询树中,叶子结点表示关系,内结点表示关系代数操作。
查询树以自底向上的方式执行:当一个内结点的操作分量可用时,这个内结点所表示的操作启动执行,执行结束后用结果关系代替这个内结点。
- 优化查询树
- 利用等价转换规则反复地对查询表达式进行尝试性转换,将原始的语法树转換成“优化”的形式
- 对每一个选择,利用等价变换规则尽可能把它移到树的叶端。目的是使选择操作尽早执行
- 对每一个投影利用等价变换规则尽可能把它移向树的叶端。目的是使投影操作尽早执行
- 对每个叶节点加必要的投影操作,以消除对查询无用的属性。
- 如果笛卡尔乘积后还须按连接条件进行选择操作,可将两者组合成连接操作选择下沉,投影随后
:::
例题1

相关文章:
【数据库系统概论复习】关系数据库与关系代数笔记
文章目录 基本概念数据库基本概念关系数据结构完整性约束 关系代数关系代数练习课堂练习 语法树 基本概念 数据库基本概念 DB 数据库, 为了存用户的各种数据,我们要建很多关系(二维表),所以把相关的关系(二…...
赛氪网受邀参加上海闵行区翻译协会年会,共探科技翻译创新之路
在科技飞速发展的时代背景下,翻译行业正面临着前所未有的机遇与挑战。作为连接高校、企业与社会的桥梁,赛氪网在推动翻译创新、促进学术交流方面展现出了独特的魅力。2024年6月9日,在华东师范大学外语学院举办的第十三届上海市闵行区翻译协会…...
项目管理进阶之EVM(挣值管理)
前言 项目管理进阶系列,终于有时间更新啦!!!欢迎持续关注哦~ 上一节博主重点讲了一个环:PDCA,无论各行各业,上到航空航天、下到种地种菜,都离不开对质量的监督和改进。这个环既是一…...
PLSQL、Oracle以及客户端远程连接服务器笔记(仅供参考)
1.PLSQL参考链接: 全网最全最细的PLSQL下载、安装、配置、使用指南、问题解答,相关问题已汇总-CSDN博客文章浏览阅读2.9w次,点赞98次,收藏447次。双击之后,这里选择安装目录,你安装目录选的哪里࿰…...
Win快速删除node_modules
在Windows系统上删除 node_modules 文件夹通常是一个缓慢且耗时的过程。这主要是由于几个关键因素导致的: 主要原因 文件数量多且嵌套深: node_modules 文件夹通常包含成千上万的子文件夹和文件。由于其结构复杂,文件和文件夹往往嵌套得非常…...
【机器学习】基于顺序到顺序Transformer机器翻译
引言 1.1 序列到序列模型详解 序列到序列(Seq2Seq)模型是深度学习中处理序列数据转换问题的关键架构。在自然语言处理(NLP)任务中,如机器翻译、文本摘要和聊天机器人等,Seq2Seq模型能够高效地将输入序列转换为期望的输出序列。 模型架构: 编…...
TEA 加密的 Java 实现
import java.nio.ByteBuffer; import java.nio.ByteOrder;public class TeaUtils {private static final int DELTA 0x9E3779B9;private static final int ROUND 32;private static final String KEY "password";/*** 加密字符串,使用 TEA 加密算法*/p…...
鸿蒙开发电话服务:【@ohos.telephony.data (蜂窝数据)】
蜂窝数据 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import data from ohos.telephony.data;data.getDefaultCellularDataSlotId getDefaultCellularDataSlotId(callback: Async…...
Maven认识与学习
1. Maven介绍 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 官网:Maven – Welcome to Apache Maven Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受…...
“深入探讨Redis主从复制:原理、配置与优化“
目录 # 概念 1. 配置主从同步步骤 1.1 创建文件夹 1.2 复制配置文件 1.3 配置文件关闭 1.4 查看端口号,发现端口号存在 1.5 连接三个端口号 1.6 查看主机运行情况 1.7 让服务器变成(主机)或(从机) 1.8 实现效…...
HTML初体验
可参考jd.com官网,ctrlu查看当前页面源代码 找到你的项目,在项目中创建html类型的网页文件 标准的HTML正确书写格式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title&…...
全局特征提取netvlad的理解
...
【设计模式-12】代理模式的代码实现及使用场景
&emsp;代理模式是一种应用很广发的结构性设计模式,它的设计初衷就是通过引入新的代理对象,在客户端和目标对象之间起到中介的作用,从而实现控制客户端对目标对象的访问,比如增强或者阉割某些能力。 1. 概述 代理模…...
网工内推 | 神州数码、弧聚科技网工,IE认证优先,最高18K
01 神州数码 🔷招聘岗位:高级网络工程师 🔷岗位职责: 1)提供7*24小时一线运维技术服务,如因应急故障处理应15分钟内到达现场。 2)提供设备的告警信息的分析处理及与故障问题定位服务。 3)完成数据中心网络和HPC超算…...
【Linux】模拟实现一个简单的日志系统
👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…...
MongoDB 多层级查询
多层级查询 注意:要注意代码顺序 查询层级数据代码放前面,查询条件放后面 if (StringUtils.isBlank(params.getDocType())) {params.setDocType(DOC_TDCTYPE);}String docName mapper.findByDocInfo(params.getDocType());List<ExpertApprovalOpin…...
grpc代理服务的实现(一)
最近公司需要无感知基于服务代号来实现通信, 并监控和管理通信连接,目前公司使用的是如下的逻辑(当然逻辑简化了,但是思想不变) 目录 简单的原理图代理服务的实现创建 tls tcp 服务, 用于grpc client 和 grpc service 通信保存 与 代理服务建立的 grpc …...
FastAPI系列 4 -路由管理APIRouter
FastAPI系列 -路由管理APIRouter 文章目录 FastAPI系列 -路由管理APIRouter一、前言二、APIRouter使用示例1、功能拆分2、users、books模块开发3、FastAPI主体 三、运行结果 一、前言 未来的py开发者请上座,在使用python做为后端开发一个应用程序或 Web API&#x…...
数据驱动制造:EMQX ECP 指标监测功能增强生产透明度
迈向未来的工业生产,需要的不仅是自动化,更是智能化。如果工业企业的管理者能够实时监测每一生产环节的设备运行状态,每一数据点位情况,洞察和优化每一步生产流程,他们将能够做出更精准的决策,提高生产效率…...
一行代码实现鼠标横向滚动
🧑💻 写在开头 点赞 收藏 学会🤣🤣🤣 在项目中我们可能会遇到当鼠标在某个区域内,我们希望滚动鼠标里面的内容可以横向滚动; 比如我们一些常见的后台状态栏: 那这种该怎么写&…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

