关系数据库:关系运算

文章目录

    • 关系运算
      • 并(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\} RS={ttRtS},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\} RS={ttRt/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\} RS={ttRtS},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) RS=R(RS),或者RS=S(SR)

交
等价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={tt=<tn,tm>tnRtmS}。其中, < t n , t m > < t^n,t^m > <tn,tm>表示元组 t n 和 t m t_n和t^m tntm拼接成的一个元组,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)={tt[A]tS}

投影
等价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)={ttRF(t)=True}

其中,F中的运算对象是属性名(或列的序号)或常数,运算符是算术比较符(<、≤、>、≥)和逻辑运算符( ∧ 、 ∨ 、 − \wedge、\vee、- )。例如, σ 1 ≥ 6 ( R ) \sigma_{1≥6}(R) σ16(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]tnRπy(S)Yx

其中, Y x 为 x Y_x为x Yxx在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)

  1. θ \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]\} RYS={tt=<tn,tm>tnRtmStn[X]θtm[Y]}

其中, X θ Y X\theta Y 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) RYS=σ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) RiθjS=σiθ(i+j)(R×S)

连接
等价SQL:

SELECT * FROM R
CROSS JOIN S
WHERE R.A<S.B;
  1. 等值连接

θ \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]\} RX=YS={tt=<tn,tm>tnRtmStn[X]=tm[Y]}

  1. 自然连接

自然连接时一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性去掉。形式定义:

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 \} RS={tt=<tn,tm>tnRtmSS.B1=R.B1R.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,...,Ank,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)\} {tP(t)}。其中,t是元组变量, P ( t ) P(t) P(t) 是元组关系演算公式,公式是由原子公式组成的。

原子公式有如下三种形式:

  1. R ( t ) R(t) R(t)。R是关系名,t是元组变量,表示命题为“t是关系R的一个元组”。
  2. t [ i ] θ C 或 C θ t [ i ] t[i]\theta C 或C\theta t[i] t[i]θCCθ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。
  3. 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 。加括号时,括号中的运算符优先。

关系代数转化为元组演算:

  1. 并。 R ∪ S = { t ∣ R ( t ) ∨ S ( t ) } R\cup S=\{t|R(t) \vee S(t)\} RS={tR(t)S(t)}
  2. 差。 R − S = { t ∣ R ( t ) ∧ ¬ S ( t ) } R - S=\{t|R(t) \wedge \lnot S(t)\} RS={tR(t)¬S(t)}
  3. 笛卡尔积。 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])}
  4. 投影。 π 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]}
  5. 选择。 σ F ( R ) = { t ∣ R ( t ) ∧ F } \sigma_F(R)=\{t|R(t) \wedge F\} σF(R)={tR(t)F}

查询优化

查询处理是从数据库中提取数据的一系列活动。
查询处理的代价:总代价=I/O代价+CPU代价+内存代价(多用户环境)。
查询优化:为查询选择最有效的查询计划的过程。

优化的准则:

  • 提早执行选取运算。
  • 合并乘积与其后的选择运算为连接运算。
  • 将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
  • 将投影运算和其前后的二木运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。
  • 在执行连接前对关系做适当的预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、排序合并连接法。
  • 存储公共子表达式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337524.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鹤城杯 2021 流量分析

看分组也知道考http流量 是布尔盲注 过滤器筛选http流量 将流量包过滤分离 http tshark -r timu.pcapng -Y "http" -T json > 1.json这个时候取 http.request.uri 进一步分离 http.request.uri字段是我们需要的数据 tshark -r timu.pcapng -Y "http&quo…

C++ 混合运算的类型转换

一 混合运算和隐式转换 257 整型2 浮点5 行吗&#xff1f;成吗&#xff1f;中不中&#xff1f; C 中允许相关的数据类型进行混合运算。 相关类型。 尽管在程序中的数据类型不同&#xff0c;但逻辑上进行这种运算是合理的相关类型在混合运算时会自动进行类型转换&#xff0c;再…

【会议征稿】2024年无人驾驶与智能传感技术国际学术会议(ADIST 2024)

2024年无人驾驶与智能传感技术国际学术会议&#xff08;ADIST 2024&#xff09;将于2024年6月28-30日在珠海召开。ADIST 2024旨在搭建学术资源共享平台&#xff0c;加强中外学术合作&#xff0c;促进自动驾驶和智能传感技术的发展&#xff0c;促进全球研究人员、开发人员、工程…

免费实现网站HTTPS访问

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种基于SSL协议的HTTP安全协议&#xff0c;旨在为客户端&#xff08;浏览器&#xff09;与服务器之间的通信提供加密通道&#xff0c;确保数据在传输过程中的保密性、完整性和身份验证。与传统的HTTP相比&a…

《云原生监控》-prometheus监测技术方案

部署环境 A主机: 系统: CentOS 7 应用: Docker( Prometheus Grafana Alertmanager CAdvisor ) 主机( Node Exporter Consul Confd ) B主机: 系统: CentOS 7 应用: Docker( CAdvisor ) 主机( Node Exporter ) 总体图 下载&#xff1a; Confd链接(0.16.0)…

【C++】数据结构:哈希桶

哈希桶&#xff08;Hash Bucket&#xff09;是哈希表&#xff08;Hash Table&#xff09;实现中的一种数据结构&#xff0c;用于解决哈希冲突问题。哈希表是一种非常高效的数据结构&#xff0c;它通过一个特定的函数&#xff08;哈希函数&#xff09;将输入数据&#xff08;通常…

jenkins插件之plot

plot是一个生成图表的插件&#xff0c;这里我用于可视化phploc统计的数据 插件安装 进入 Dashboard --> 系统管理 --> 插件管理 --> Available plugins 搜索plot安装生成phploc分析数据 Dashboard --> 您的项目 --> Configuration点击 Build Steps点击 增加构…

一文读懂存内计算与近存计算的分类与应用

存内计算与近存计算-基础理论及分类 技术基础知识和分类 "近存计算"与"存内计算"易混淆&#xff0c;本章明晰其分类&#xff0c;并比较各内存驱动方法的独特优势。可计算存储器设备可作分立加速器或替代现有存储模块。我们深入剖析每种方法的利弊&#xf…

ctfshow web 月饼杯II

web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛&#xff…

App自动化测试_Python+Appium使用手册

一、Appium的介绍 Appium是一款开源的自动化测试工具&#xff0c;支持模拟器和真机上的原生应用、混合应用、Web应用&#xff1b;基于Selenium二次开发&#xff0c;Appium支持Selenium WebDriver支持的所有语言&#xff08;java、 Object-C 、 JavaScript 、p hp、 Python等&am…

thinkphp6 自定义的查询构造器类

前景需求&#xff1a;在查询的 时候我们经常会有一些通用的&#xff0c;查询条件&#xff0c;但是又不想每次都填写一遍条件&#xff0c;这个时候就需要重写查询类&#xff08;Query&#xff09; 我目前使用的thinkphp版本是6.1 首先自定义CustomQuery类继承于Query <?p…

让表单引擎插上AI的翅膀-记驰骋表单引擎加入AI升级

让表单引擎插上AI的翅膀 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们工作和生活的每一个角落。在数字化办公领域&#xff0c;表单引擎作为数据处理和流程自动化的重要工具&#xff0c;也迎来了与AI技术深度融合的新机遇。让表单引擎…

Python零基础-下【详细】

接上篇继续&#xff1a; Python零基础-中【详细】-CSDN博客 目录 十七、网络编程 1、初识socket &#xff08;1&#xff09;socket理解 &#xff08;2&#xff09;图解socket &#xff08;3&#xff09;戏说socket &#xff08;4&#xff09;网络服务 &#xff08;5&a…

api网关kong对高频的慢接口进行熔断

一、背景 在生产环境&#xff0c;后端服务的接口响应非常慢&#xff0c;是因为数据库未创建索引导致。 如果QPS低的时候&#xff0c;因为后端服务有6个高配置的节点&#xff0c;虽然接口慢&#xff0c;还未影响到服务的正常运行。 但是&#xff0c;当QPS很高的时候&#xff0c…

整合Spring Boot 框架集成Knife4j

本次示例使用Spring Boot作为脚手架来快速集成Knife4j,Spring Boot版本2.3.5.RELEASE ,Knife4j版本2.0.7 POM.XML完整文件代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0…

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试 ✨本篇硬件电路和代码来源于此开源项目&#xff1a;https://github.com/MengYang-x/STM3F401-FOC/tree/main&#x1f4cd;硬件电路和项目介绍&#xff0c;立创开源广场&#xff1a;https://oshwhub.com/shadow27/tai-yang-nen…

百度中心之星

目录 新材料 星际航行 新材料 直接模拟&#xff1a;因为要考虑上次出现的位置&#xff0c;所以使用map映射最好&#xff0c;如果没有出现过就建立新映射&#xff0c;如果出现过但是已经反应过就跳过&#xff0c;如果出现过但是不足以反应&#xff0c;就建立新映射&#xff0c;…

python实现——分类类型数据挖掘任务(图形识别分类任务)

分类类型数据挖掘任务 基于卷积神经网络&#xff08;CNN&#xff09;的岩石图像分类。有一岩石图片数据集&#xff0c;共300张岩石图片&#xff0c;图片尺寸224x224。岩石种类有砾岩&#xff08;Conglomerate&#xff09;、安山岩&#xff08;Andesite&#xff09;、花岗岩&am…

体验Photoshop:无需下载,直接在浏览器编辑图片

搜索Photoshop时&#xff0c;映入眼帘的是PS软件下载&#xff0c;自学PS软件需要多长时间&#xff0c;学PS软件有必要报班吗...PS软件的设计功能很多&#xff0c;除了常见的图像处理功能外&#xff0c;还涉及图形、文本、视频、出版等。不管你是平面设计师&#xff0c;UI/UX设计…

visual studio code 全局搜索

VScode写代码的时候&#xff0c;会经常性的需要进行查找代码&#xff0c;那么怎么在Visual Studio Code中进行查找呢&#xff0c;下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索&#xff0c;使用快捷键CTRLSHIFTF即可进行搜索&#xff0c;也可以在左边…