图论理论基础和存储方式的实现

图论1

图论 (Graph theory) 是数学的一个分支,图是图论的主要研究对象。图 (Graph) 是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。

1、图的理论基础

图(Graph)

​ 用大写字母(如 G G G)表示图,通常记为 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V 表示顶点集, E E E 表示边集。例如:设 G = ( V , E ) G=(V,E) G=(V,E) 是一个无向图, V V V 包含多个顶点, E E E 包含连接这些顶点的边。

相邻(Adjacent)

​ 若顶点 u u u v v v 相邻,可表示为: u ∼ v u \sim v uv。例如:在图 G G G 中,若顶点 u u u v v v 之间有边相连,则有 u ∼ v u \sim v uv

简单图(Simple Graph)

​ 设 G = ( V , E ) G=(V,E) G=(V,E) 为简单图,特点是不存在自环(即不存在边 e = ( u , u ) e=(u,u) e=(u,u) u ∈ V u\in V uV)和多重边(任意两顶点间不存在多条相同边),可描述为: G = ( V , E ) G=(V,E) G=(V,E) 是简单图,满足无自环与多重边条件。

度数(Degree)

  • 无向图中顶点度数:无向图里顶点 v v v 的度数用 deg ⁡ ( v ) \deg(v) deg(v) 表示,比如:在无向图 G G G 中,顶点 v v v 的度数记为 deg ⁡ ( v ) \deg(v) deg(v),其值等于与 v v v 相连的边的数量。

  • 有向图中顶点度数:有向图中顶点 v v v 的入度表示为 indeg ( v ) \text{indeg}(v) indeg(v),出度表示为 outdeg ( v ) \text{outdeg}(v) outdeg(v)。例如:在有向图 G G G 中,顶点 v v v 的入度为 indeg ( v ) \text{indeg}(v) indeg(v),出度为 outdeg ( v ) \text{outdeg}(v) outdeg(v),度数可结合二者考量。

路径(Path)

​ 用 P = ( v 0 , v 1 , ⋯ , v n ) P=(v_0,v_1,\cdots,v_n) P=(v0,v1,,vn) 表示从顶点 v 0 v_0 v0 出发,依次经过 v 1 , ⋯ , v n v_1,\cdots,v_n v1,,vn 这些顶点的路径。例如:在图 G G G 中,存在路径 P = ( v 1 , v 2 , v 3 ) P=(v_1,v_2,v_3) P=(v1,v2,v3),即从顶点 v 1 v_1 v1 出发,依次经过 v 2 v_2 v2 v 3 v_3 v3 的路线。

子图(Subgraph)

设 $G=(V,E)$ 是原图,$G'=(V',E')$ 是它的子图,关系表示为:$V'\subseteq V$ 且 $E'\subseteq E$,同时 $E'$ 中边的端点都在 $V'$ 中,则 $G'=(V',E')$ 为 $G$ 的子图。

​ 比如:已知图 G = ( V , E ) G=(V,E) G=(V,E),取 V ′ V' V V V V 的部分顶点集, E ′ E' E 为相应连接这些顶点的部分边集,满足条件后, G ′ = ( V ′ , E ′ ) G'=(V',E') G=(V,E) 就是 G G G 的子图。

连通(Connected)

  • 无向图连通:设 G = ( V , E ) G=(V,E) G=(V,E) 为无向图,若对任意 u , v ∈ V u,v\in V u,vV,都存在一条路径连接 u u u v v v,则称 G G G 是连通的,可写成: ∀ u , v ∈ V \forall u,v\in V u,vV,存在路径连接 u u u v v v,则 G G G 连通。

  • 有向图连通相关(强连通和弱连通)

    • 强连通:对于有向图 G = ( V , E ) G=(V,E) G=(V,E),若对任意 u , v ∈ V u,v\in V u,vV,都存在从 u u u v v v 的有向路径以及从 v v v u u u 的有向路径,则 G G G 是强连通的,即: ∀ u , v ∈ V \forall u,v\in V u,vV,存在从 u u u v v v 及从 v v v u u u 的有向路径,则 G G G 强连通。

    • 弱连通:若把有向图 G = ( V , E ) G=(V,E) G=(V,E) 的边看作无向边时图是连通的,则 G G G 是弱连通的,表示为:将有向图 G = ( V , E ) G=(V,E) G=(V,E) 的边视为无向边时图连通,则 G G G 弱连通。

无向图(Undirected Graph)

直接用 $G=(V,E)$ 表示无向图,并说明其边无方向特点。

​ 如: G = ( V , E ) G=(V,E) G=(V,E) 为无向图,其边没有方向,即对边 e = ( u , v ) ∈ E e=(u,v)\in E e=(u,v)E u u u v v v 的关系是对称的。

有向图(Directed Graph)

​ 用 G = ( V , E ) G=(V,E) G=(V,E) 表示有向图,强调边有方向。

​ 例如: G = ( V , E ) G=(V,E) G=(V,E) 为有向图,边 e = ( u , v ) ∈ E e=(u,v)\in E e=(u,v)E 有方向,从 u u u 指向 v v v,表示一种单向关系。

割(Cut)

  • 边割(针对无向图):设 G = ( V , E ) G=(V,E) G=(V,E) 是连通无向图,若存在边子集 E ′ ⊆ E E'\subseteq E EE,去掉 E ′ E' E 后使得图不再连通,则 E ′ E' E G G G 的一个边割,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 连通无向图, ∃ E ′ ⊆ E \exists E'\subseteq E EE,去掉 E ′ E' E G G G 不连通,则 E ′ E' E G G G 的边割。

  • 点割(针对无向图):对于连通无向图 G = ( V , E ) G=(V,E) G=(V,E),若存在顶点子集 V ′ ⊆ V V'\subseteq V VV,去掉 V ′ V' V 以及和这些顶点相关联的边后使得图不再连通,则 V ′ V' V G G G 的一个点割,写成: G = ( V , E ) G=(V,E) G=(V,E) 连通无向图, ∃ V ′ ⊆ V \exists V'\subseteq V VV,去掉 V ′ V' V 及相关边后 G G G 不连通,则 V ′ V' V G G G 的点割。

稀疏图/稠密图(Sparse Graph / Dense Graph)

  • 稀疏图:对于图 G = ( V , E ) G=(V,E) G=(V,E),若 ∣ E ∣ ≪ ∣ V ∣ 2 |E| \ll |V|^2 EV2(这里 ≪ \ll 示意边数量远小于顶点数量平方的大概关系),则 G G G 为稀疏图,如: G = ( V , E ) G=(V,E) G=(V,E),当 ∣ E ∣ ≪ ∣ V ∣ 2 |E| \ll |V|^2 EV2 时, G G G 为稀疏图。

  • 稠密图:与稀疏图对应,若 ∣ E ∣ |E| E 接近 ∣ V ∣ 2 |V|^2 V2 量级,可写成: G = ( V , E ) G=(V,E) G=(V,E),当 ∣ E ∣ |E| E 接近 ∣ V ∣ 2 |V|^2 V2 时, G G G 为稠密图。

补图(Complement Graph)

​ 设 G = ( V , E ) G=(V,E) G=(V,E) 是无向简单图,其补图 G ‾ = ( V , E ‾ ) \overline{G}=(V,\overline{E}) G=(V,E),其中 E ‾ \overline{E} E 包含了所有不在 E E E 中但两端点在 V V V 中的边,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 为无向简单图,其补图 G ‾ = ( V , E ‾ ) \overline{G}=(V,\overline{E}) G=(V,E) E ‾ = { ( u , v ) ∣ u , v ∈ V , ( u , v ) ∉ E } \overline{E}=\{(u,v)\mid u,v\in V,(u,v)\notin E\} E={(u,v)u,vV,(u,v)/E}

反图(Inverse Graph)

​ 对于有向图 G = ( V , E ) G=(V,E) G=(V,E),其反图 G − 1 = ( V , E − 1 ) G^{-1}=(V,E^{-1}) G1=(V,E1),这里 E − 1 E^{-1} E1 是把 E E E 中每条边的方向都反转所得到的边集,写成: G = ( V , E ) G=(V,E) G=(V,E) 为有向图,其反图 G − 1 = ( V , E − 1 ) G^{-1}=(V,E^{-1}) G1=(V,E1) E − 1 = { ( v , u ) ∣ ( u , v ) ∈ E } E^{-1}=\{(v,u)\mid (u,v)\in E\} E1={(v,u)(u,v)E}

特殊的图

完全图(Complete Graph)

  • 无向完全图:用 K n K_n Kn 表示 n n n 个顶点的无向完全图,其边数为 n ( n − 1 ) 2 \frac{n(n - 1)}{2} 2n(n1)。例如: K 5 K_5 K5 是有 5 5 5 个顶点的无向完全图,边数为 5 × ( 5 − 1 ) 2 = 10 \frac{5\times(5 - 1)}{2}=10 25×(51)=10
  • 有向完全图:用 D n D_n Dn 表示 n n n 个顶点的有向完全图,其边数为 n ( n − 1 ) n(n - 1) n(n1)
  • 树(Tree):树可描述为无向连通且无环的图,记为: T = ( V , E ) T=(V,E) T=(V,E) 为树,即 T T T 是无向连通且无环的图。
  • 二分图(Bipartite Graph):设顶点集 V V V 可分成两个互不相交的子集 V 1 V_1 V1 V 2 V_2 V2,使图中每条边的两个端点分别属于 V 1 V_1 V1 V 2 V_2 V2,可写成: G = ( V , E ) G=(V,E) G=(V,E) 为二分图, ∃ V 1 , V 2 ⊆ V \exists V_1,V_2\subseteq V V1,V2V V 1 ∩ V 2 = ∅ V_1\cap V_2=\varnothing V1V2=,且 ∀ e = ( u , v ) ∈ E \forall e=(u,v)\in E e=(u,v)E u ∈ V 1 u\in V_1 uV1 v ∈ V 2 v\in V_2 vV2 u ∈ V 2 u\in V_2 uV2 v ∈ V 1 v\in V_1 vV1

同构(Isomorphism)

​ 设 G = ( V , E ) G=(V,E) G=(V,E) G ′ = ( V ′ , E ′ ) G'=(V',E') G=(V,E) 是两个图,若存在双射函数 f : V → V ′ f: V \to V' f:VV,使得对于任意的 u , v ∈ V u,v \in V u,vV ( u , v ) ∈ E (u,v) \in E (u,v)E 当且仅当 ( f ( u ) , f ( v ) ) ∈ E ′ (f(u),f(v)) \in E' (f(u),f(v))E,则称 G G G G ′ G' G 是同构的,表示为: G = ( V , E ) G=(V,E) G=(V,E) G ′ = ( V ′ , E ′ ) G'=(V',E') G=(V,E),若 ∃ f : V → V ′ \exists f: V \to V' f:VV 双射,满足 ∀ u , v ∈ V \forall u,v\in V u,vV ( u , v ) ∈ E ⇔ ( f ( u ) , f ( v ) ) ∈ E ′ (u,v)\in E \Leftrightarrow (f(u),f(v))\in E' (u,v)E(f(u),f(v))E,则 G G G G ′ G' G 同构。

无向简单图的二元运算

并运算(Union):设 G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2) 是两个无向简单图,它们的并 G 1 ∪ G 2 = ( V 1 ∪ V 2 , E 1 ∪ E 2 ) G_1\cup G_2=(V_1\cup V_2, E_1\cup E_2) G1G2=(V1V2,E1E2),可写成: G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2),则 G 1 ∪ G 2 = ( V 1 ∪ V 2 , E 1 ∪ E 2 ) G_1\cup G_2=(V_1\cup V_2, E_1\cup E_2) G1G2=(V1V2,E1E2)。例如:已知 G 1 G_1 G1 G 2 G_2 G2 两个无向简单图,计算它们的并图 G 1 ∪ G 2 G_1\cup G_2 G1G2

交运算(Intersection) G 1 ∩ G 2 = ( V 1 ∩ V 2 , E 1 ∩ E 2 ) G_1\cap G_2=(V_1\cap V_2, E_1\cap E_2) G1G2=(V1V2,E1E2),表示为: G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2),则 G 1 ∩ G 2 = ( V 1 ∩ V 2 , E 1 ∩ E 2 ) G_1\cap G_2=(V_1\cap V_2, E_1\cap E_2) G1G2=(V1V2,E1E2)

差运算(Difference) G 1 − G 2 = ( V 1 , E 1 − E 2 ) G_1 - G_2=(V_1, E_1 - E_2) G1G2=(V1,E1E2),写成: G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2),则 G 1 − G 2 = ( V 1 , E 1 − E 2 ) G_1 - G_2=(V_1, E_1 - E_2) G1G2=(V1,E1E2)

特殊的点集/边集

支配集(Dominating Set)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,顶点子集 D ⊆ V D\subseteq V DV 称为支配集,若对任意顶点 v ∈ V − D v\in V - D vVD,都存在顶点 u ∈ D u\in D uD 使得 u u u v v v 相邻,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ D ⊆ V \exists D\subseteq V DV ∀ v ∈ V − D \forall v\in V - D vVD ∃ u ∈ D \exists u\in D uD u ∼ v u \sim v uv,则 D D D 为支配集。

边支配集(Edge Dominating Set)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,边子集 F ⊆ E F\subseteq E FE 称为边支配集,若对任意边 e ∈ E − F e\in E - F eEF,都存在边 f ∈ F f\in F fF e e e 相邻(共享端点),写成: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ F ⊆ E \exists F\subseteq E FE ∀ e ∈ E − F \forall e\in E - F eEF ∃ f ∈ F \exists f\in F fF e e e f f f 共享端点,则 F F F 为边支配集。

独立集(Independent Set)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,顶点子集 I ⊆ V I\subseteq V IV 称为独立集,若 I I I 中任意两个顶点都不相邻,即: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ I ⊆ V \exists I\subseteq V IV ∀ u , v ∈ I \forall u,v\in I u,vI u u u v v v 不相邻,则 I I I 为独立集。

匹配(Matching)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,边子集 M ⊆ E M\subseteq E ME 称为匹配,若 M M M 中的边两两之间没有公共端点,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ M ⊆ E \exists M\subseteq E ME ∀ e 1 , e 2 ∈ M \forall e_1,e_2\in M e1,e2M e 1 e_1 e1 e 2 e_2 e2 无公共端点,则 M M M 为匹配。

点覆盖(Vertex Cover)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,顶点子集 C ⊆ V C\subseteq V CV 称为点覆盖,若图 G G G 中的每条边至少有一个端点在 C C C 中,写成: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ C ⊆ V \exists C\subseteq V CV ∀ e ∈ E \forall e\in E eE ∃ v ∈ C \exists v\in C vC v v v e e e 的端点,则 C C C 为点覆盖。

边覆盖(Edge Cover)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,边子集 L ⊆ E L\subseteq E LE 称为边覆盖,若对于任意顶点 v ∈ V v\in V vV,都存在边 e ∈ L e\in L eL 使得 v v v e e e 的端点,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ L ⊆ E \exists L\subseteq E LE ∀ v ∈ V \forall v\in V vV ∃ e ∈ L \exists e\in L eL v v v e e e 的端点,则 L L L 为边覆盖。

团(Clique)

​ 在无向图 G = ( V , E ) G=(V,E) G=(V,E) 中,顶点子集 K ⊆ V K\subseteq V KV 称为团,若 K K K 中任意两个顶点都相邻,即 K K K 所诱导出的子图是完全图,可表示为: G = ( V , E ) G=(V,E) G=(V,E) 无向图, ∃ K ⊆ V \exists K\subseteq V KV ∀ u , v ∈ K \forall u,v\in K u,vK u ∼ v u \sim v uv,则 K K K 为团。

图的矩阵表示(存储方式)

邻接矩阵(Adjacency Matrix)

对于一个无向图 G = ( V , E ) G=(V,E) G=(V,E) ,设顶点集 V = { v 1 , v 2 , ⋯ , v n } V = \{v_1, v_2, \cdots, v_n\} V={v1,v2,,vn},其邻接矩阵 A A A 是一个 n × n n\times n n×n 的矩阵,其中元素 a i j a_{ij} aij 定义为:若顶点 v i v_i vi v j v_j vj 相邻,则 a i j = 1 a_{ij} = 1 aij=1(对于无向简单图);若不相邻,则 a i j = 0 a_{ij} = 0 aij=0

用公式表示为: a i j = { 1 , v i ∼ v j 相邻 0 , v i ∼ v j 不相邻 a_{ij} = \begin{cases}1, & v_i \sim v_j\text{相邻} \\ 0, & v_i \sim v_j\text{不相邻}\end{cases} aij={1,0,vivj相邻vivj不相邻

例如,对于一个简单的三角形形状的无向图,其邻接矩阵为: ( 0 1 1 1 0 1 1 1 0 ) \begin{pmatrix}0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0\end{pmatrix} 011101110

对于有向图,若存在从顶点 v i v_i vi 指向 v j v_j vj 的边,则 a i j = 1 a_{ij} = 1 aij=1,否则 a i j = 0 a_{ij} = 0 aij=0。其邻接矩阵能反映出有向图中顶点之间的有向连接关系。

关联矩阵(Incidence Matrix)

设无向图 G = ( V , E ) G=(V,E) G=(V,E) ,顶点集 V = { v 1 , v 2 , ⋯ , v n } V = \{v_1, v_2, \cdots, v_n\} V={v1,v2,,vn},边集 E = { e 1 , e 2 , ⋯ , e m } E = \{e_1, e_2, \cdots, e_m\} E={e1,e2,,em},其关联矩阵 M M M 是一个 n × m n\times m n×m 的矩阵,元素 m i j m_{ij} mij 定义如下:若顶点 v i v_i vi 与边 e j e_j ej 关联(即 v i v_i vi e j e_j ej 的一个端点),则 m i j = 1 m_{ij} = 1 mij=1;若不关联,则 m i j = 0 m_{ij} = 0 mij=0

用公式表示为: m i j = { 1 , 如果 v i 关联 e j 0 , 如果 v i 不关联 e j m_{ij} = \begin{cases}1, & \text{如果} v_i \text{关联} e_j \\ 0, & \text{如果} v_i \text{不关联} e_j\end{cases} mij={1,0,如果vi关联ej如果vi不关联ej

例如,对于一个简单的有四条边、三个顶点的无向图,其关联矩阵可能为: ( 1 1 0 0 1 0 1 1 0 1 1 0 ) \begin{pmatrix}1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0\end{pmatrix} 110101011010 。 有向图的关联矩阵定义稍有不同,对于有向边 e j e_j ej ,若顶点 v i v_i vi 是边 e j e_j ej 的起点,则 m i j = 1 m_{ij} = 1 mij=1;若 v i v_i vi 是边 e j e_j ej 的终点,则 m i j = − 1 m_{ij} = -1 mij=1;若 v i v_i vi e j e_j ej 不关联,则 m i j = 0 m_{ij} = 0 mij=0

2、图的存储

n为图的顶点数,m为图的边数, d + ( u ) d^+(u) d+(u)为点u的出度, d − ( u ) d^-(u) d(u)为点u的入度

2.1、直接存边

实现:

使用多个数组来存储变得起点终点和权值。

复杂度:

查询是否存在某条边: O ( m ) O(m) O(m)

遍历一个点的所有出边: O ( m ) O(m) O(m)

遍历整张图: O ( n m ) O(nm) O(nm)

空间复杂度: O ( m ) O(m) O(m)

注:在Kruskal算法中,需要把边按权值排序,需要直接存储边。

2.2、邻接矩阵

实现:

使用二维数组 a d j [ u ] [ v ] adj[u][v] adj[u][v] 来存储, a d j [ u ] [ v ] adj[u][v] adj[u][v]的值表示 u u u v v v 是否有边。

用公式表示为: a d j [ u ] [ v ] = { 1 , 存在 u 到 v 的边 0 , 不存在 u 到 v 的边 adj[u][v]= \left\{\begin{matrix} 1 &,存在u到v的边\\ 0 &,不存在u到v的边 \end{matrix}\right. adj[u][v]={10,存在uv的边,不存在uv的边

代码

复杂度:

查询是否存在某条边: O ( 1 ) O(1) O(1)

遍历一个点的所有出边: O ( n ) O(n) O(n)

遍历整张图: O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( n 2 ) O(n^2) O(n2)

邻接矩阵只适用于没有重边的图

由于邻接矩阵在稀疏图上效率很低(尤其是在点数较多的图上,空间无法承受),所以一般只会在稠密图上使用邻接矩阵。

2.3、邻接表

2.4、链式前向星

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

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

相关文章

每日一练 | Diff-Serv在QoS配置中的应用

01 真题题目 通常在配置 QoS 中的 Diff-Serv 时,边界路由器会通过报文的源地址和目的地址等对报文 进行分类,对不开的报文设置不同的IP优先级,而其他路由器只需要根据IP优先来对报文进行 识别即可 A.正确 B.错误 02 真题答案 A 03 答案解析 在基于 Diff-Serv(Diff…

macOS运行amd64的镜像

在macOS上运行amd64(x86_64)架构的镜像,通常通过虚拟化或仿真工具来实现。例如,如果你使用的是基于Apple Silicon(M1或M2等)芯片的Mac,那么你的处理器是ARM架构的,而amd64是x86架构&…

Git常用的命令【提交与回退】

git分布式版本控制系统 (SVN集中式版本控制系统)之间的对比 git有本地仓库和远程仓库,不同的开发人员可以分别提交自己的本地仓库并维护代码的版本控制。 然后多个人员在本地仓库协作的代码,可以提交到远程仓库中做整合。 git本…

AUTOSAR AP和CP的安全要求规范(Safety Req)详细解读

一、规范的编制的背景原因 编制该规范的原因 确保系统安全性和可靠性 随着汽车电子系统日益复杂,功能不断增加,对安全性和可靠性的要求也越来越高。该规范为AUTOSAR平台在安全执行、配置、更新、信息交换、数据处理等多方面制定了明确要求,…

黑马程序员MybatisPlus/Docker相关内容

Day01 MP相关知识 1. mp配置类: 2.条件构造器: 具体的实现例子: ①QuerryWapper: ②LambdaQueryWrapper: 3.MP的自定义SQL 4.MP的Service层的实现 5.IService下的Lambda查询 原SQL语句的写法: Lambda 查询语句的…

一番赏小程序定制开发,打造全新抽赏体验平台

随着盲盒的热潮来袭,作为传统的潮玩方式一番赏也再次受到了大家的关注,市场热度不断上升! 一番赏能够让玩家百分百中奖,商品种类丰富、收藏价值高,拥有各种IP,从而吸引着各个圈子的粉丝玩家,用…

【小脚本】pandas 操作csv,数据筛选分析生成表格

有一个表格,想要具体分析里面的数据,获得在一定条件下的结果,并且想要比较好的可视化。 下面的脚本涉及 修改 列的名字,并用excel 中的列名索引剔除第一行,去掉没打分的行对所选择的列统计,并更好的可视化…

HarmonyOS 5.0应用开发——Ability与Page数据传递

【高心星出品】 文章目录 Ability与Page数据传递Page向Ability传递数据Ability向Page传递数据 Ability与Page数据传递 基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信:在基类Context中提供…

【求助】Tinymce组件异常

版本号 { "tinymce/tinymce-vue": "^3.0.1", "tinymce": "^5.10.9", "vue": "^2.6.10", }问题: 就是红框处点击后没有菜单出现,下面是正常的

【100】SR-IOV cap中Supported Page Sizes (RO)和System Page Size (RW)

SR-IOV的介绍见:【88】SR-IOV-CSDN博客 SR-IOV cap中的Supported Page Sizes (RO)和System Page Size (RW)字段 SR-IOV cap中定义了Supported Page Sizes (RO)和System Page Size (RW)两个字段,offset 如下: Supported Page Sizes (RO)字…

小程序 - 计算器

小程序交互练习 - 计算器小程序 目录 计算器 功能描述 准备工作 创建项目 配置导航栏 创建utils目录 math.js文件内容 calc.js文件内容 页面内容 页面样式内容 页面脚本事件 功能截图 总结 计算器 在日常生活中,计算器是人们广泛使用的工具&#xff0…

视频监控汇聚平台:Liveweb安防监控平台实现接入监控视频集中管理方案

随着各行业数字化转型的不断推进,视频监控技术在行业内的安防应用及管理支撑日益增多。然而,由于前期规划不清晰、管理不到位等问题,视频监管系统普遍存在以下问题: 1. 各部门单位在视频平台建设中以所属领域为单位,导…

遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。

遇到的问题: 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 !!! 2、查询服务器中MySQL中hive的数据库,发现创建的位置没有在hdfs上,而是在本地。 这个错误产生的原因是&…

渗透测试--哈希窃取哈希中继攻击

在渗透测试中,我们一旦能够将用户的哈希定向到我们的smbserver我们就可以滥用它们。主要有以下两种利用方式:1.窃取NTLM 2.中继NTLM。了解上述两种方式,将打开我们的视野,但在此之前,我们必须知道我们在什么场景下&…

SQL靶场第六关

一.判断闭合点 闭合点是" 输入?id1页面无变化 输入?id1"页面报错,加上--,页面恢复正常,说明闭合点是" 二.判断列数 输入?id1" order by 3--页面正常 输入?id1" order by 4--页面异常,说明有3列…

linux中fscy命令详解

在Linux系统中,fscy命令是一个用于检测和修复文件系统错误的工具。尽管搜索结果中没有直接提到fscy命令,但根据提供的信息,我们可以推断这可能是一个特定发行版或者特定版本的Linux系统中的命令,或者是fsck命令的一个变体。通常&a…

使用 Acme.sh 自动生成和续签免费 SSL 证书(含通配符支持)

Acme.sh 是一个开源的脚本,能够从 ZeroSSL、Let’s Encrypt 等证书颁发机构(CA)获取免费的 HTTPS 证书。该脚本特别简单易用,并且支持多种验证方式。下面将详细介绍使用 Acme.sh 生成、安装和更新证书的各个步骤。 Github地址 使用…

为什么类 UNIX 操作系统通常内置编译器?为什么 Windows 更倾向于直接使用二进制文件?

操作系统是否内置编译器,取决于该系统的设计目标、用户群体以及常见的使用场景。以下是内置编译器和直接使用二进制的设计理念和原因的分析: 为什么类 UNIX 操作系统通常内置编译器? 面向开发者的需求: 类 UNIX 系统(如…

fedora下Jetbrains系列IDE窗口中文乱码解决方法

可以看到窗口右部分的中文内容为小方块。 进入 Settings - Appearance & Behavior - Appearance - Use custom font : Note Sans Mono CJK SC ,设置后如下图:

解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失

问题 easycode插件生成的mapper.xml文件字段之间逗号丢失,如图 解决办法 将easycode(在settings里面的othersettings)设置里面的Template的mapper.xml.vm和Global Config的mybatisSupport.vm的所有$velocityHasNext换成$foreach.hasNext Template的mapper.xml.vm(…