关系数据库:关系运算
文章目录
- 关系运算
- 并(Union)
- 差(Difference)
- 交(Intersection)
- 笛卡尔积(Extended Cartesian Product)
- 投影(projection)
- 选择(Selection)
- 除(Division)
- 连接(join)
- 外连接(outer join)
- 聚集函数
- 元组演算
- 查询优化
关系运算
关系代数运算符有集合运算符、专门的关系运算符、算术比较符和逻辑运算符,如下:
并(Union)
关系R与S的并由属于R或属于S的元组构成的集合组成,定义为 R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R\cup S=\{t|t\in R \vee t\in S\} R∪S={t∣t∈R∨t∈S},t为元组变量,R与S具有相同的关系模式(结构相同)
。
等价SQL:
SELECT A,B,C FROM R
UNION
SELECT A,B,C FROM S;
差(Difference)
关系R与S的差由属于R但不属于S的元组构成的集合组成,定义为 R − S = { t ∣ t ∈ R ∧ t ∉ S } R - S=\{t|t\in R \wedge t\notin S\} R−S={t∣t∈R∧t∈/S},t为元组变量,R与S具有相同的关系模式(结构相同)
。
等价SQL:
SELECT A,B,C FROM R
EXCEPT
SELECT A,B,C FROM S;
交(Intersection)
关系R与S的差由属于R同时又属于S的元组构成的集合组成,定义为 R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S=\{t|t\in R \wedge t\in S\} R∩S={t∣t∈R∧t∈S},t为元组变量,R与S具有相同的关系模式(结构相同)
。也可以表示成 R ∩ S = R − ( R − S ) , 或者 R ∩ S = S − ( S − R ) R \cap S =R-(R-S), 或者R \cap S=S-(S-R) R∩S=R−(R−S),或者R∩S=S−(S−R)。
等价SQL:
SELECT A,B,C FROM R
INTERSECT
SELECT A,B,C FROM S;
笛卡尔积(Extended Cartesian Product)
两个元数分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,形式定义 R × S = { t ∣ t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S } R \times S=\{t|t= < t^n,t^m > \wedge t^n\in R \wedge t^m \in S \} R×S={t∣t=<tn,tm>∧tn∈R∧tm∈S}。其中, < t n , t m > < t^n,t^m > <tn,tm>表示元组 t n 和 t m t_n和t^m tn和tm拼接成的一个元组,t为元组变量。
若R有 K 1 K_1 K1个元组,S有 K 2 K_2 K2个元组,则R和S的广义笛卡尔积有 K 1 × K 2 K_1 \times K_2 K1×K2个元组。
等价SQL:
SELECT * FROM R
CROSS JOIN S;
投影(projection)
投影是从垂直方向
进行运算,在关系R中选择出若干属性列A组成新的关系,形式定义为 π A ( R ) = { t ∣ t [ A ] ∣ t ∈ S } \pi_A(R) =\{t|t[A]|t\in S\} πA(R)={t∣t[A]∣t∈S}。
等价SQL:
SELECT A,C FROM R;
选择(Selection)
选择运算是从关系的水平方向
进行运算,是从关系R中选择满足给定条件的诸元组,形式定义为 σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = T r u e } \sigma_F(R)=\{t|t\in R \wedge F(t)=True\} σF(R)={t∣t∈R∧F(t)=True}。
其中,F中的运算对象是属性名(或列的序号)或常数,运算符是算术比较符(<、≤、>、≥)和逻辑运算符( ∧ 、 ∨ 、 − \wedge、\vee、- ∧、∨、−)。例如, σ 1 ≥ 6 ( R ) \sigma_{1≥6}(R) σ1≥6(R)表示选取R关系中第1个属性值大于等于第6个属性值的元组; σ 1 > 6 ( R ) \sigma_{1>6}(R) σ1>6(R)表示选取R关系中第1个属性值大于6的元组。
等价SQL:
SELECT A,B,C FROM R WHERE A>B;
除(Division)
除运算是同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。 R ÷ S R\div S R÷S应当满足元组在X上的分量值 x x x的象集 Y x Y_x Yx包含关系S在属性组Y上投影的集合。形式定义为 R ÷ S = { t n [ X ] ∣ t n ∈ R ∧ π y ( S ) ⊆ Y x R\div S=\{t_n[X]|t_n\in R \wedge \pi_y(S) \subseteq Y_x R÷S={tn[X]∣tn∈R∧πy(S)⊆Yx。
其中, Y x 为 x Y_x为x Yx为x在R的象集, x = t n [ X ] x=t_n[X] x=tn[X]。且 R ÷ S R\div S R÷S的结果集的属性组为X。
示例:已知R和S的关系,求 R ÷ S R\div S R÷S。
分析:根据定义,Y为属性CD,X为属性AB, R ÷ S R\div S R÷S应当满足元组在AB上的分量值 x x x的象集 Y x Y_x Yx包含关系S在属性组CD上投影的集合。关系S在Y上的投影为 π y ( S ) = { ( c , d ) , ( e , f ) } \pi_y(S)=\{(c,d),(e,f)\} πy(S)={(c,d),(e,f)},属性组X(即AB)可以取3个值 { ( a , b ) , ( b , d ) , ( c , k ) } \{(a,b),(b,d),(c,k)\} {(a,b),(b,d),(c,k)}
- 象集 C D ( a , b ) = { ( c , d ) , ( e , f ) , ( h , k ) } 象集CD_{(a,b)}=\{(c,d),(e,f),(h,k)\} 象集CD(a,b)={(c,d),(e,f),(h,k)}。
- 象集 C D ( b , d ) = { ( e , f ) , ( d , l ) } 象集CD_{(b,d)}=\{(e,f),(d,l)\} 象集CD(b,d)={(e,f),(d,l)}。
- 象集 C D ( c , k ) = { ( c , d ) , ( e , f ) } 象集CD_{(c,k)}=\{(c,d),(e,f)\} 象集CD(c,k)={(c,d),(e,f)}。
由于上述象集包含 π y ( S ) 有 { ( a , b ) } 和 { ( c , k ) } \pi_y(S)有\{(a,b)\}和\{(c,k)\} πy(S)有{(a,b)}和{(c,k)},所以 R ÷ S = { ( a , b ) , { ( c , k ) } R\div S=\{(a,b),\{(c,k)\} R÷S={(a,b),{(c,k)}$
连接(join)
- θ \theta θ连接
θ \theta θ连接是从R与S的笛卡尔积中选取属性间满足一定条件的元组,形式定义:
R ⋈ X θ Y S = { t ∣ t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] θ t m [ Y ] } R \bowtie_{X\theta Y}S=\{t|t= < t^n,t^m > \wedge t^n \in R \wedge t^m \in S \wedge t^n[X] \theta t^m[Y]\} R⋈XθYS={t∣t=<tn,tm>∧tn∈R∧tm∈S∧tn[X]θtm[Y]}
其中, X θ Y X\theta Y XθY为连接的条件, θ \theta θ是比较运算符,X和Y分别为R和S上度数相等,且可比的属性组。 t n [ X ] t^n[X] tn[X]表示R中 t n t^n tn元组的对应于属性X的一个分量。 t n [ Y ] t^n[Y] tn[Y]表示R中 t m t^m tm元组的对应于属性Y的一个分量。
还可以表示为 R ⋈ X θ Y S = σ X θ Y ( R × S ) R \bowtie_{X\theta Y}S=\sigma_{X\theta Y}(R\times S) R⋈XθYS=σXθY(R×S)或者 R ⋈ i θ j S = σ i θ ( i + j ) ( R × S ) R \bowtie_{i\theta j}S=\sigma_{i\theta (i+j)}(R\times S) R⋈iθjS=σiθ(i+j)(R×S)。
等价SQL:
SELECT * FROM R
CROSS JOIN S
WHERE R.A<S.B;
- 等值连接
当 θ \theta θ为“=”时,称为等值连接,形式定义为 R ⋈ X = Y S = { t ∣ t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] = t m [ Y ] } R \bowtie_{X= Y}S=\{t|t= < t^n,t^m > \wedge t^n \in R \wedge t^m \in S \wedge t^n[X] = t^m[Y]\} R⋈X=YS={t∣t=<tn,tm>∧tn∈R∧tm∈S∧tn[X]=tm[Y]}
- 自然连接
自然连接时一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性去掉。形式定义:
R ⋈ S = { t ∣ t = < t n , t m ∗ > ∧ t n ∈ R ∧ t m ∈ S ∧ S . B 1 = R . B 1 ∧ R . B 2 = S . B 2 ∧ . . . ∧ R . B n = S . B n } R \bowtie_S=\{t|t= < t^n,t^{m^\ast} > \wedge t^n \in R \wedge t^m \in S \wedge S.B_1=R.B_1\wedge R.B_2=S.B_2\wedge ... \wedge R.B_n=S.B_n \} R⋈S={t∣t=<tn,tm∗>∧tn∈R∧tm∈S∧S.B1=R.B1∧R.B2=S.B2∧...∧R.Bn=S.Bn}
其中 t n t_n tn表示关系R的元组变量, t m t_m tm表示关系S的元组变量。R和S具有相同的属性组B,且 B = ( B 1 , B 2 , . . . , B k ) B=(B_1,B_2,...,B_k) B=(B1,B2,...,Bk)。假定R的属性为 A 1 , A 2 , . . . , A n − k , B 1 , B 2 , . . . , B k A_1,A_2,...,A_{n-k},B_1,B_2,...,B_k A1,A2,...,An−k,B1,B2,...,Bk,假定S的属性为 B 1 , B 2 , . . . , B k , B k + 1 , B k + 2 , . . . , B m B_1,B_2,...,B_k,B_{k+1},B_{k+2},...,B_m B1,B2,...,Bk,Bk+1,Bk+2,...,Bm,S的元组变量去除重复属性B所组成新的元组为 t m ∗ t^{m^\ast} tm∗。
等价SQL:
SELECT R.A,R.B,R.C,R.D
FROM R,S
WHERE R.A=S.A AND R.C=S.C;
要求两个关系中进行比较的分量必须是相同的属性组并且在结果集中将重复属性列去掉。
外连接(outer join)
外连接是连接运算的扩展,可以处理缺失的信息。
- 左外连接(left outer join)。取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值null填充所有来自右侧关系的属性。
等价SQL:
SELECT R.A,R.B,R.C,S.D
FROM R
LEFT JOIN S
ON R.B=S.B AND R.C=S.C;
- 右外连接(right outer join)。取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值null填充所有来自左侧关系的属性。
等价SQL:
SELECT R.A,S.B,S.C,S.D
FROM R
RIGHT JOIN S
ON R.B=S.B AND R.C=S.C;
- 完全外连接(full outer join)。完成左外连接和右外连接的操作。既填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,又填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
等价SQL:
SELECT R.A,R.B,R.C,S.D
FROM R
LEFT JOIN S
ON R.B=S.B AND R.C=S.C
UNION
SELECT R.A,S.B,S.C,S.D
FROM R
RIGHT JOIN S
ON R.B=S.B AND R.C=S.C;
聚集函数
聚集函数输入一个值的集合,返回单一值作为结果。如集合12,4,6,8,10,15}。将聚集函数sum用于该集合时返回和45;将聚集函数avg用于该集合时返回平均值7.5;将聚集函数count用于该集合时返回集合中元数的个数6;将聚集函数min用于该集合时返回最小值2;将聚集函数max用于该集合时返回最大值15。
元组演算
表现形式为 { t ∣ P ( t ) } \{t|P(t)\} {t∣P(t)}。其中,t是元组变量, P ( t ) P(t) P(t) 是元组关系演算公式,公式是由原子公式组成的。
原子公式有如下三种形式:
- R ( t ) R(t) R(t)。R是关系名,t是元组变量,表示命题为“t是关系R的一个元组”。
- t [ i ] θ C 或 C θ t [ i ] t[i]\theta C 或C\theta t[i] t[i]θC或Cθt[i]。 t [ i ] t[i] t[i]表示元组变量t的第i个分量,C是常量, θ \theta θ为算术比较运算符。表示命题为“元组变量t的第i个分量与C直接满足 θ \theta θ运算“。如 t [ 3 ] < ′ 8 ′ t[3]<'8' t[3]<′8′表示t的第三个分量小于8。
- t [ i ] θ u [ j ] t[i]\theta u[j] t[i]θu[j]。t、u是两个元组变量,表示命题为“元组变量t的第i个分量与元组变量u的第j个分量直接满足 θ \theta θ运算”。如 t [ 2 ] ≥ u [ 4 ] t[2]\geq u[4] t[2]≥u[4]表示t的第二个分量大于等于u的第四个分量。
若一个公式中的一个元组变量前有全称量词 ∀ \forall ∀或存在量词 ∃ \exists ∃符号,则称该变量为约束变量
,否则称之为自由变量
。公式可递归定义:
- 原子公式是公式。
- 如果是 φ 1 \varphi_1 φ1和 φ 2 \varphi_2 φ2公式,那么, ¬ φ 1 、 φ 1 ∨ φ 2 、 φ 1 ∧ φ 2 、 φ 1 ⇒ φ 2 \lnot \varphi_1、\varphi_1 \vee \varphi_2、\varphi_1 \wedge \varphi_2、\varphi_1 \Rightarrow \varphi_2 ¬φ1、φ1∨φ2、φ1∧φ2、φ1⇒φ2 也都是公式。分别表示命题: ¬ φ 1 \lnot \varphi_1 ¬φ1表示“ φ 1 \varphi_1 φ1不是真“; φ 1 ∨ φ 2 \varphi_1 \vee \varphi_2 φ1∨φ2表示“ φ 1 \varphi_1 φ1或 φ 2 \varphi_2 φ2或 φ 1 和 φ 2 \varphi_1和\varphi_2 φ1和φ2为真”; φ 1 ∧ φ 2 \varphi_1 \wedge \varphi_2 φ1∧φ2表示“ φ 1 \varphi_1 φ1和 φ 2 \varphi_2 φ2都为真”; φ 1 ⇒ φ 2 \varphi_1 \Rightarrow \varphi_2 φ1⇒φ2表示“若 φ 1 \varphi_1 φ1为真则 φ 2 \varphi_2 φ2为真”。
- 如果是 φ 1 \varphi_1 φ1公式,那么, ∃ t ( φ 1 ) \exists t(\varphi_1) ∃t(φ1)是公式。表示命题为“若有一个t使 φ 1 \varphi_1 φ1为真,则 ∃ t ( φ 1 ) \exists t(\varphi_1) ∃t(φ1)为真,否则 ∃ t ( φ 1 ) \exists t(\varphi_1) ∃t(φ1)为假”。
- 如果是 φ 1 \varphi_1 φ1公式,那么, ∀ t ( φ 1 ) \forall t(\varphi_1) ∀t(φ1)是公式。表示命题为“若对所有t使 φ 1 \varphi_1 φ1为真,则 ∀ t ( φ 1 ) \forall t(\varphi_1) ∀t(φ1)为真,否则 ∀ t ( φ 1 ) \forall t(\varphi_1) ∀t(φ1)为假”。
公式中运算符优先级(低到高):算术比较运算符 θ \theta θ、 ∃ \exists ∃和 ∀ \forall ∀、 ¬ \lnot ¬、 ∧ \wedge ∧和 ∨ \vee ∨、 ⇒ \Rightarrow ⇒。加括号时,括号中的运算符优先。
关系代数转化为元组演算:
- 并。 R ∪ S = { t ∣ R ( t ) ∨ S ( t ) } R\cup S=\{t|R(t) \vee S(t)\} R∪S={t∣R(t)∨S(t)}
- 差。 R − S = { t ∣ R ( t ) ∧ ¬ S ( t ) } R - S=\{t|R(t) \wedge \lnot S(t)\} R−S={t∣R(t)∧¬S(t)}
- 笛卡尔积。 R × S = { t ∣ ( ∃ u ) ( ∃ v ) ( R ( u ) ∧ S ( v ) ∧ t [ 1 ] = u [ 1 ] ∧ . . . ∧ t [ n ] = u [ n ] ∧ t [ n + 1 ] = v [ 1 ] ∧ . . . ∧ t [ n + m ] = v [ m ] ) } R \times S=\{t|(\exists u)(\exists v)(R(u)\wedge S(v)\wedge t[1]=u[1]\wedge ... \wedge t[n]=u[n]\wedge t[n+1]=v[1]\wedge ... \wedge t[n+m]=v[m])\} R×S={t∣(∃u)(∃v)(R(u)∧S(v)∧t[1]=u[1]∧...∧t[n]=u[n]∧t[n+1]=v[1]∧...∧t[n+m]=v[m])}
- 投影。 π i 1 , i 2 , . . . , i k ( R ) = { t ∣ ( ∃ u ) ( R ( u ) ∧ t [ 1 ] = u [ i 1 ] ∧ t [ 2 ] = u [ i 2 ] ∧ . . . ∧ t [ k ] = u [ i k ] } \pi_{i_1,i_2,...,i_k}(R) =\{t|(\exists u)(R(u)\wedge t[1]=u[i_1]\wedge t[2]=u[i_2]\wedge ... \wedge t[k]=u[i_k]\} πi1,i2,...,ik(R)={t∣(∃u)(R(u)∧t[1]=u[i1]∧t[2]=u[i2]∧...∧t[k]=u[ik]}
- 选择。 σ F ( R ) = { t ∣ R ( t ) ∧ F } \sigma_F(R)=\{t|R(t) \wedge F\} σF(R)={t∣R(t)∧F}
查询优化
查询处理是从数据库中提取数据的一系列活动。
查询处理的代价:总代价=I/O代价+CPU代价+内存代价(多用户环境)。
查询优化:为查询选择最有效的查询计划的过程。
优化的准则:
- 提早执行选取运算。
- 合并乘积与其后的选择运算为连接运算。
- 将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
- 将投影运算和其前后的二木运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。
- 在执行连接前对关系做适当的预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、排序合并连接法。
- 存储公共子表达式。
相关文章:

关系数据库:关系运算
文章目录 关系运算并(Union)差(Difference)交(Intersection)笛卡尔积(Extended Cartesian Product)投影(projection)选择(Selection)除…...

微信公众号开发(三):自动回复“你好”
上一篇做了服务器校验,但没有处理用户发来的消息,为了完成自动回复的功能,需要增加一些功能: 1、调整服务器校验函数: def verify_wechat(request):tokentokendatarequest.argssignaturedata.get(signature)timestamp…...

docker基本操作命令(3)
目录 1.Docker服务管理命令: 启动:systemctl start docker 停止:systemctl stop docker 重启:systemctl restart docker 开机自启:systemctl enable docker 查看docker版本: 2.镜像常用管理命令&…...
003 MySQL
文章目录 左外连接、右外连接 的区别where/having的区别执行顺序聚合 聚合函数MySQL约束事务一致性一致性的含义一致性在事务中的作用如何维护一致性 存储引擎 Innodb MyIsam区别事务的ACID属性数据库的隔离级别MySQL中的并发问题1. 锁等待和死锁2. 并发冲突3. 脏读、不可重复读…...
数据分析------统计学知识点(一)
1.在统计学中,均值分类有哪些? 算术均值:平均值,所有数值加总后除以数值的个数 几何均值:所有数值相乘后,再取其n次方根,n是数值的个数 调和均值:是数值倒数的算术均值的倒数 加…...
Apache Doris 基础 -- 数据表设计(分区分桶)
Versions: 2.1 本文档主要介绍了Doris的表创建和数据分区,以及表创建过程中可能遇到的问题和解决方案。 1、基本概念 在Doris中,数据以表的形式被逻辑地描述。 1.1 Row & Column 表由行和列组成: 行:表示用户数据的单行;列:用于描述一行数据中的…...
题目:求0—7所能组成的奇数个数。
题目:求0—7所能组成的奇数个数。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should…...
网络协议学习笔记
HTTP协议 简单介绍 HTTP属于应用层 HTTP可以简单的理解成类似json一样的文本封装,但是这是超文本,所以可以封装的不止有文本,还有音视频、图片等 请求方法 HTTP报文格式 三大部分 起始行:描述请求或响应的基本信息头部字段…...

C语言文件操作:打开关闭,读写
程序文件 源程序文件(后缀为.c) 目标文件(Windows环境后缀为.obj) 可执行文件(Windows环境后缀为.exe) fputc FILE* pf fopen("test.txt","w");if (pf NULL){printf("%s\n"…...

启智CV机器人,ROS,ubuntu 20.04 【最后一步有问题】
资料: https://wiki.ros.org/kinetic/Installation/Ubuntu https://blog.csdn.net/qq_44339029/article/details/120579608 装VM。 装ubuntu20.04 desktop.iso系统。 装vm工具: sudo apt update sudo dpkg --configure -a sudo apt-get autoremove o…...

React-生成随机数和日期格式化
生成随机数 uuid文档:https://github.com/uuidjs/uuid npm install uuid import {v4 as uuidV4} from uuid 使用: uuidV4() 日期格式化 dayjs文档:安装 | Day.js中文网 npm install dayjs import dayjs from dayjs...

11Linux学习笔记
Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包(软件)1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包(软件) 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…...

004 仿muduo实现高性能服务器组件_Buffer模块与Socket模块的实现
🌈个人主页:Fan_558 🔥 系列专栏:仿muduo 🌹关注我💪🏻带你学更多知识 文章目录 前言Buffer模块Socket模块 小结 前言 这章将会向你介绍仿muduo高性能服务器组件的buffer模块与socket模块的实…...

研发效能DevOps: Ubuntu 部署 JFrog 制品库
目录 一、实验 1.环境 2.Ubuntu 部署 JFrog 制品库 3.Ubuntu 部署 postgresql数据库 4.Ubuntu 部署 Xray 5. 使用JFrog 增删项目 二、问题 1.Ubuntu 如何通过apt方式部署 JFrog 制品库 2.Ubuntu 如何通过docker方式部署 JFrog 制品库 3.安装jdk报错 4.安装JFrog Ar…...

hadoop学习笔记
hadoop集群搭建 hadoop摘要 Hadoop 是一个开源的分布式存储和计算框架,旨在处理大规模数据集并提供高可靠性、高性能的数据处理能力。它主要包括以下几个核心组件: Hadoop 分布式文件系统(HDFS):HDFS 是 Hadoop 的分布…...
使用dockerfile快速构建一个带ssh的docker镜像
不多说先给代码 FROM ubuntu:22.04 # 基础镜像 可替换为其他镜像 USER root RUN echo root:root |chpasswd RUN apt-get update -y \&& apt-get install -y git wget curl RUN apt-get install -y openssh-server vim && apt clean \&& rm -rf /tmp/…...

linux部署运维1——centos7.9离线安装部署涛思taos2.6时序数据库TDengine
在实际项目开发过程中,并非一直都使用关系型数据库,对于工业互联网类型的项目来说,时序型数据库也是很重要的一种,因此掌握时序数据库的安装配置也是必要的技能,不过对于有关系型数据库使用的开发工作者来说࿰…...

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息
0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…...

Ps:调整画笔工具
调整画笔工具 Adjustment Brush Tool可以将选区、创建蒙版和应用调整的传统工作流程合并为一个步骤,简化了对图像进行非破坏性局部调整的操作。 快捷键:B 调整画笔工具是 Photoshop 2024 年 5 月版(25.9 版)新增的工具。 ◆ ◆ …...

香橙派 AIpro上手体验并验证车道线识别算法
香橙派 AIpro上手体验并验证车道线识别算法 1.前言 最近入手了一块香橙派AIpro,体验了一下,感觉还不错,在这里分享给大家,大家可以做个参考。 2.开箱 整套产品包含一块主板、一个电源插头和一条双端Type-C的数据线,…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...