学习记录之数学表达式(6)

目录

十二、图与网络

  图是用以理解元组(tuple)最好的知识;
  元组就是数学模型;

12.1 有向图

在这里插入图片描述

图12.1 有向图例

Definition 12.1 A directed graph is a tuple G = ( V , E ) \mathrm{G} = (\mathbf{V},\mathbf{E}) G=(V,E), where V \mathbf{V} V is the set of nodes, E ⊆ V × V \mathbf{E} \subseteq \mathbf{V} \times \mathbf{V} EV×V is the set of arcs.

  • 节点集合 V = { v 1 , … , v n } \mathbf{V} = \{ v_{1}, \dots, v_{n} \} V={v1,,vn}
  • 弧(有向边)的集合 E \mathbf{E} E 本质上是 V \mathbf{V} V 上的关系。因此,节点比边更本质;
  • 弧记为 ⟨ v i , v j ⟩ \langle v_i, v_j \rangle vi,vj,有角度的括号表示有向;
  • 元组(tuple)可以把不同类型的数据融合到一起,对应与Java程序设计中的对象;

12.2 元组与对象

  图的Java代码如下:

public class Graph{
    /**
     * 节点数. 表示节点 v_0 至 v_{n-1}.
     */
    int n;
     
    /**
     * 相应弧是否存在. 1 表示是,0 表示否. 最多有 n*n 条弧.
     */
    int[][] arcs;
    
    /**
     * 构造一个包括 n 个节点的图,没有边.
     */
    public Graph(int paraN) {
        n = paraN;
        arcs = new int[n][n];
    }// Of the constructor

    /**
     * 设置边,paraValue = 1 表示添加, 0 表示删除.
     */
    public void setArc(int paraI, int paraJ, int paraValue) {
        arcs[paraI][paraJ] = paraValue;
    }// Of setArc
}// Of Graph
  • 元组为对象的成员变量部分.
  • 邻接矩阵表示:
    E = [ 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 ] \mathbf{E} = \left[ \begin{matrix} 0&1&1&0 \\ 0&0&0&0 \\ 0&1&0&0 \\ 1&0&1&0 \end{matrix} \right] E= 0001101010010000
    源码展示:\mathbf{E} = \left[ \begin{matrix} 0&1&1&0 \ 0&0&0&0 \ 0&1&0&0 \ 1&0&1&0 \end{matrix} \right]

12.3 二元关系与有向图

  • 有向图的边集合可以看做一个关系.
  • 课堂练习:
    • 根据二元关系的知识,计算 E 2 = E ∘ E , E 3 = E 2 ∘ E \mathbf{E}^{2}=\mathbf{E} \circ \mathbf{E}, \mathbf{E}^{3}=\mathbf{E}^{2} \circ \mathbf{E} E2=EE,E3=E2E E 0 \mathbf{E}^{0} E0,源码为\mathbf{E}^{2}=\mathbf{E} \circ \mathbf{E}, \mathbf{E}{3}=\mathbf{E}{2} \circ \mathbf{E}:.
    • 根据矩阵知识,计算 E 2 , E 3 , E 0 \mathbf{E}^{2}, \mathbf{E}^{3}, \mathbf{E}^{0} E2,E3,E0.
    • 对照分析.
  • 回到图上,分析可行性.
    • 不但表达了可达性,而且表达了路径数量.

12.4 无向图

在这里插入图片描述

图12.2 无向图例.

Defination 12.2 An undirected graph is a tuple G = ( V , E ) \mathrm{G}=(\mathbf{V},\mathbf{E}) G=(V,E), where V \mathbf{V} V is the set of nodes, E ⊆ V × V \mathbf{E} \subseteq \mathbf{V} \times \mathbf{V} EV×V where ( v i , v j ) ∈ E ⇔ ( v j , v i ) ∈ E ( v_{i}, v_{j}) \in \mathbf{E} \Leftrightarrow ( v_{j}, v_{i}) \in \mathbf{E} (vi,vj)E(vj,vi)E is the set of edges.
源码为:( v_{i}, v_{j}) \in \mathbf{E} \Leftrightarrow ( v_{j}, v_{i}) \in \mathbf{E}

  • 无向边用小括号, ( v i , v j ) (v_i,v_j) (vi,vj).
  • 问题:有向图和无向图,哪个更特殊?
      在无向图中,边没有方向,常用于表达节点之间无特殊方向性关系的场景,如地图上城市与城市的连接。在有向图中,边是有方向的,常用于表达具有明确方向性关系的场景,如食物链中的捕食关系。因此,我认为有向图更特殊一些,它引入了方向性这一特点,使有向图在表达复杂关系时更具体。
  • 练习:写出该无向图的邻接矩阵.
      邻接矩阵表示如下:
    E = [ 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 ] \mathbf{E} = \left[ \begin{matrix} 0&1&1&1 \\ 1&0&1&0 \\ 1&1&0&1 \\ 1&0&1&0 \end{matrix} \right] E= 0111101011011010

12.5 有向网络

  有向网络的Java代码如下:

public class Net{
    /**
     * 节点数. 表示节点 v_0 至 v_{n-1}.
     */
    int n;
     
    /**
     * 权重.
     */
    double[][] weights;
    
    /**
     * 构造一个包括 n 个节点的网,权值均为0.
     */
    public Net(int paraN) {
        n = paraN;
        weights = new double[n][n];
    }// Of the constructor

    /**
     * 设置边权重.
     */
    public void setWeight(int paraI, int paraJ, double paraWeight) {
        weights[paraI][paraJ] = paraWeight;
    }// Of setWeight
}// Of Net
  • 思考:关系只能表示是否有边(弧),如何表示权重?

Definition 12.3 A directed net is a tuple G = ( V , w ) \mathrm{G}=(\mathbf{V},\mathbf{w}) G=(V,w), where V \mathbf{V} V is the set of nodes, and w \mathbf{w} w: V × V → R \mathbf{V} \times \mathbf{V} \rightarrow \mathbb{R} V×VR is the weight function where w ( v i , v j ) \mathbf{w}(v_i,v_j) w(vi,vj) is the weight of the arc ⟨ v i , v j ⟩ \langle v_i,v_j\rangle vi,vj.

  • 注意:也可以写作 w ( ⟨ v i , v j ⟩ ) \mathbf{w}(\langle v_i,v_j \rangle) w(⟨vi,vj⟩). 同理,函数 z = f ( x , y ) z=f(x,y) z=f(x,y) 也可以写作 z = f ( ⟨ x , y ⟩ ) z=f(\langle x,y \rangle) z=f(⟨x,y⟩) z = f ( ( x , y ) ) z=f(( x,y )) z=f((x,y)) ,但是最后一个表达式实在是太啰嗦了.

12.6 作业

  • 定义无向网络.
  • Definition 12.4 An unfirected net is the tuple G = ( V , w ) \mathbf{G}=(\mathbf{V},\mathbf{w}) G=(V,w), where V \mathbf{V} V is the set of nodes, and w : V × V → R \mathbf{w}: \mathbf{V} \times \mathbf{V} \rightarrow \mathbb{R} w:V×VR is the weight function where w ( v i , v j ) \mathbf{w}(v_i,v_j) w(vi,vj) is the weight of the edges ( v i , v j ) (v_i,v_j) (vi,vj), satisfying v i , v j ∈ V v_i, v_j \in \mathbf{V} vi,vjV(且 i ≠ j), w ( v i , v j ) = w ( v j , v i ) \mathbf{w} (v_i, v_j)= \mathbf{w} (v_j, v_i) w(vi,vj)=w(vj,vi) .

十三、树

  • 树反映了一种层级关系:一个学校有若干学院、一个学院有若干专业、一个专业有若干老师.

13.1 例子

在这里插入图片描述

图13.1 树

  观察可知:

  • 树是一种特殊的图;
  • 有一个树根;
  • 除了树根之外,其它节点均有父节点;
  • 没有子节点的节点称为叶节点;
  • 从任意节点到树根都只有一条唯一的路径;

  思考:树的边有向还是无向?
  我认为没有特殊情况说明时,树指的是无向树。

13.2 定义

  Let ϕ \phi ϕ be the empty node, a tree is a triple T = ( V ,  r, p ) \mathrm{T} = ( \mathbf{V},\textrm{ r, p}) T=(V, r, p) where:

  • V ≠ ϕ \mathbf{V} \neq \phi V=ϕ is the set of node;
  • r ∈ V \textrm{r} \in \mathbf{V} rV is the root node;
  • p : V ∪ { ϕ } → V ∪ { ϕ } \textrm{p} : \mathbf{V} \cup \{ \phi \} \rightarrow \mathbf{V} \cup \{ \phi \} p:V{ϕ}V{ϕ} is the parent mapping satisfying
    • p ( r ) = ϕ \textrm{p}(r) = \phi p(r)=ϕ;
    • ∀ v ∈ V , ∃ ! n ≥ 0 , s t . p ( n ) ( v ) = r \forall v \in \mathbf{V}, \exist ! n \ge 0,st. p^{(n)}(v) = r vV,!n0,st.p(n)(v)=r

  源码为:\forall v \in \mathbf{V}, \exist ! n \ge 0,st. p^{(n)}(v) = r
  分析:

  • ϕ \phi ϕ 可以看作是常量,对任意树都有效,因此可以不出现在元组里面;
  • 不同元组可以有不同特性,甚至这里的元组 r \textrm{r} r V \mathbf{V} V 的元素;
  • p ( 2 ) ( v ) = p ( p ( v ) ) p^{(2)}(v) = p(p(v)) p(2)(v)=p(p(v)) . 可以理解为: v v v 的2阶父节点;
  • 最后一行读作:对于任意的节点 v v v ,存在唯一的自然数 n n n,使得(满足) v v v 的第 n n n 阶父节点为 r r r
  • 唯一性表示既可达又没有环;
  • p ( 0 ) ( v ) ≡ v p^{(0)}(v) \equiv v p(0)(v)v,因此该条件考虑了 r r r r r r
  • n n n 可以看做是节点所在的层, n = 0 n=0 n=0 时只有根节点;

13.3 Java代码

public class Tree {
    /**
     * 节点数. 表示节点 v_0 z至 v_{n-1}.
     */
     int n;

    /**
     * 根节点. 0 至 n-1.
     */
     int root;
     
    /**
     * 父节点.
     */
     int[] parent;

    /**
     * 构造一棵树,第一个节点为根节点,其余节点均为其直接子节点,也均为叶节点.
     */
     public Tree(int paraN) {
         n = paraN;
         parent = new int[n];
         parent[0] = -1; // -1 即 \phi
     }// Of the constructor
}// Of class Tree

  分析:

  • 代码与定义的统一:3 -元组与 3 个成员变量. 写完程序又回去整理定义;
  • parent 函数可以用一维数组表示;
  • -1 表示 ϕ \phi ϕ
  • 程序里面,数据本身没有保障可达性、唯一性,这和无向图的情况一致(连接矩阵对称);

13.4 作业

  • 自己画一棵树,将其元组各部分写出来(特别是函数 p p p);
    在这里插入图片描述

  Let ϕ \phi ϕ be the empty node, a tree is a triple T = ( V ,  r, p ) \mathrm{T} = ( \mathbf{V},\textrm{ r, p}) T=(V, r, p) where:

  • V = { v 1 , v 2 , v 3 , v 4 , v 5 , v 6 , v 7 , v 8 , v 9 } \mathbf{V} = \{v_1, v_2, v_3, v_4, v_5, v_6, v_7, v_8,v_9\} V={v1,v2,v3,v4,v5,v6,v7,v8,v9} is the set of node;

  • r = v 1 \textrm{r} = v_1 r=v1 is the root node;

  • p : V ∪ { ϕ } → V ∪ { ϕ } \textrm{p} : \mathbf{V} \cup \{ \phi \} \rightarrow \mathbf{V} \cup \{ \phi \} p:V{ϕ}V{ϕ} is the parent mapping satisfying

    • p ( v 1 ) = ϕ \textrm{p}( v_1) = \phi p(v1)=ϕ;
    • p ( 0 ) ( v 1 ) = r , p ( 1 ) ( v 1 ) = r , p ( 1 ) ( v 2 ) = r , p ( 2 ) ( v 3 ) = r , p ( 2 ) ( v 4 ) = r , p ( 2 ) ( v 5 ) = r , p ( 3 ) ( v 6 ) = r , p ( 3 ) ( v 7 ) = r , p ( 3 ) ( v 8 ) = r \textrm{p}^{(0)}(v1) = r, \textrm{p}^{(1)}(v_1) = r, \textrm{p}^{(1)}(v_2) = r, \textrm{p}^{(2)}(v_3) = r, \textrm{p}^{(2)}(v_4) = r, \textrm{p}^{(2)}(v_5) = r, \textrm{p}^{(3)}(v_6) = r, \textrm{p}^{(3)}(v_7) = r, \textrm{p}^{(3)}(v_8) = r p(0)(v1)=r,p(1)(v1)=r,p(1)(v2)=r,p(2)(v3)=r,p(2)(v4)=r,p(2)(v5)=r,p(3)(v6)=r,p(3)(v7)=r,p(3)(v8)=r
    • p = ϕ , p ( v 2 ) = v 1 , p ( v 3 ) = v 1 , p ( v 4 ) = v 2 , p ( v 5 ) = v 2 , p ( v 6 ) = v 3 , p ( v 7 ) = v 5 , p ( v 8 ) = v 6 , p ( v 9 ) = v 6 \textrm{p} = \phi, \textrm{p}(v_2) = v_1,\textrm{p}(v_3) = v_1,\textrm{p}(v_4) = v_2,\textrm{p}(v_5) = v_2,\textrm{p}(v_6) = v_3,\textrm{p}(v_7) = v_5,\textrm{p}(v_8) = v_6,\textrm{p}(v_9) = v_6 p=ϕ,p(v2)=v1,p(v3)=v1,p(v4)=v2,p(v5)=v2,p(v6)=v3,p(v7)=v5,p(v8)=v6,p(v9)=v6
  • 针对该树,将代码中的变量值写出来(特别是 parent 数组);

    • n = 9;
    • parent[] = [-1,0,1,1,2,2,3,5,6,6];
    • -1表示根节点无父节点;
    • parent[4] = 2:因为节点4的父节点是2。

十四、 m \mathbf{m} m叉树

  我们来定义 m \mathbf{m} m 叉树,并将二叉树作为其特例来分析.

14.1 预备知识:字符串

  • 字母表记作 Σ \Sigma Σ,源码为:\Sigma;
  • 英文字母表 Σ = { a , b , … , z } \Sigma = \{ \mathrm{a},\mathrm{b},\dots,\mathrm{z} \} Σ={a,b,,z},我们故意写成 \mathrm{a} 以表示它为常量;
  • 阿拉伯数字字母表 Σ = { 0 , 1 , … , 9 } \Sigma=\{0,1,\dots,9\} Σ={0,1,,9}
  • 二进制数字字母表 Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1}
  • 字母表的乘积 { 0 , 1 } × { 0 , 1 } = { { 0 , 0 } , { 0 , 1 } , { 1 , 0 } , { 1 , 1 } } = { 00 , 01 , 10 , 11 } \{0,1\} \times \{0,1\} = \{\{0,0\},\{0,1\},\{1,0\},\{1,1\}\}=\{00,01,10,11\} {0,1}×{0,1}={{0,0},{0,1},{1,0},{1,1}}={00,01,10,11},我们通常使用简记;
  • 字母表的正闭包: ∑ + = { 0 , 1 } + \sum^{+}=\{0,1\}^{+} +={0,1}+表示长度至少为1的字符串(0,1串);
  • 字母表的克林闭包: ∑ ∗ = ∑ + ∪ { ε } \sum^{*}=\sum^{+} \cup \{ \varepsilon \} =+{ε},其中表示空串,源码为\varepsilon;

14.2 m \mathbf{m} m-叉树的定义

  Let ϕ \phi ϕ be the empty node, an m \mathbf{m} m-tree is a quadruple M T = ( V , r , Σ , c ) \mathrm{MT} = (\mathbf{V},r,\Sigma,c) MT=(V,r,Σ,c) where:

  • V \mathbf{V} V is the set of nodes;
  • r ∈ V r \in \mathbf{V} rV is the root node;
  • Σ \Sigma Σ is the alphabet;
  • c : ( V ∪ { ∅ } ) × Σ ∗ → V ∪ { ϕ } c:(\mathbf{V} \cup\{\emptyset\}) \times \Sigma^{*} \rightarrow \mathbf{V} \cup \{ \phi \} c:(V{})×ΣV{ϕ} satisfying(源码为:c:(\mathbf{V} \cup{\emptyset}) \times \Sigma^{*} \rightarrow \mathbf{V} \cup { \emptyset })
    • ∀ v ∈ V , c ( v , ε ) = v \forall v \in \mathbf{V},c(v,\varepsilon)=v vV,c(v,ε)=v,源码为:\forall v \in \mathbf{V},c(v,\varepsilon)=v;
    • ∀ v ∈ V , s = a 1 a 2 … a n , c ( v , s ) = ( ( v , a 1 ) , a 2 a 3 … a n ) \forall v \in \mathbf{V},s=\mathrm{a}_{1} \mathrm{a}_{2} \dots \mathrm{a}_{n},c(v,s)=((v,\mathrm{a}_{1}),\mathrm{a}_{2} \mathrm{a}_{3} \dots \mathrm{a}_{n}) vV,s=a1a2an,c(v,s)=((v,a1),a2a3an);
    • ∀ v ∈ V , ∃ ! s ∈ Σ ∗ s t . c ( r , s ) = v \forall v \in \mathbf{V},\exists ! s \in \Sigma^{*} st.c(r,s)=v vV,!sΣst.c(r,s)=v.

  说明:

  • 一般只给定 c : V × Σ → V ∪ { ϕ } c:\mathbf{V} \times \Sigma \rightarrow \mathbf{V} \cup \{\phi\} c:V×ΣV{ϕ} 即可推导出: c : V × Σ ∗ → V ∪ { ϕ } c:\mathbf{V} \times \Sigma^{*} \rightarrow \mathbf{V} \cup \{\phi\} c:V×ΣV{ϕ}. 前者简洁,后者完备.
  • 从有限状态自动机的角度, c c c 被称为状态转换函数,即从一个状态读入一个字符,转换下一个状态.
  • Σ = { l , r } \Sigma = \{\textrm{l} , \textrm{r} \} Σ={l,r},即获得我们熟悉的二叉树,源码为:\Sigma = {\textrm{l} , \textrm{r} }.
  • 叶节点读入任何串,都转移到空状态.
  • 空状态读入任何串,都转移到自己.
    在这里插入图片描述
图14.1 二叉树

在这里插入图片描述

图14.2 带空节点的二叉树

14.3 Java代码

public class MTree {
    /**
     * 节点数. 表示节点 v_0 至 v_{n-1}.
     */
    int n;

    /**
     * 根节点. 0 至 n-1.
     */
     int root;
 
    /**
     * 字母表大小. 字母表为 {1,2,...,m}.
     */
     int m;
     
    /**
     * 子节点. child[i][j] 表示在节点 i 读入字母 j 后转移到的状态.
     */
    int[][] child;

    /**
     * 初始化一颗 m-树,但现在它还无法表示一颗真正的 m-树.
     */
    public MTree(int paraN, int paraM) {
        n = paraN;
        child = new int[n][m];
    }// Of the constructor

    /**
     * 从当前节点读入一系列字符(其实是整数),转到相应的节点.
     */
    public int getChild(int paraNode, int[] paraString){
        int resultNode = paraNode;
        for (int i = 0; i < paraString.length; i++){
            resultNode = child[resultNode][paraString[i]];
            if (resultNode == -1) {
                break;
            }// Of if
        }// Of for i
        return resultNode;
    }// Of getChild
}// Of class MTree

说明:

  • 为了广泛适用性,字母表并未写成 { l,r } \{\textrm{l,r}\} {l,r} 的形式,而是直接定义了字母表大小. 这样,可以认为字母表为 { 1 , … , m } \{1,\dots,\textrm{m}\} {1,,m} ,二叉树的字母表则为 { 1 , 2 } \{1,2\} {1,2} .
  • 二维数组 child 确定了 m \mathbf{m} m-叉树的结构.
  • 需要根据数据初始化 m \mathbf{m} m-叉树.
  • 一般使用 -1 表示 ϕ \phi ϕ.
  • 课堂练习:写出图 1 二叉树所对应的 child 数组.
    • c h i l d [ 4 ] [ 2 ] = [ 1 − 1 2 3 − 1 − 1 − 1 − 1 ] child[4][2] = \left[ \begin{matrix} 1&-1 \\ 2&3 \\ -1&-1 \\ -1&-1 \end{matrix} \right] child[4][2]= 12111311

14.4 作业

  • 画一颗三叉树,并写出它的 child 数组;
  • 以13章作业的图为例:
    在这里插入图片描述
    • c h i l d [ 9 ] [ 3 ] = [ 2 − 1 3 4 − 1 5 − 1 − 1 6 − 1 − 1 − 1 7 − 1 − 1 8 − 1 9 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 ] child[9][3] = \left[ \begin{matrix} 2&-1&3 \\ 4&-1&5 \\ -1&-1&6 \\ -1&-1&-1 \\ 7&-1&-1 \\ 8&-1&9 \\ -1&-1&-1 \\ -1&-1&-1 \\ -1&-1&-1 \end{matrix} \right] child[9][3]= 241178111111111111356119111
  • 按照本帖风格,重新定义树. 提示:还是应该定义 parent 函数,字母表里面只有一个元素.
    • Let ϕ \phi ϕ be the empty node, a tree is a quadruple T = ( V , r , Σ , p ) \mathrm{T} = (\mathbf{V},r,\Sigma,\textrm{p}) T=(V,r,Σ,p) where:
    • V \mathbf{V} V is the set of nodes;
    • r ∈ V r \in \mathbf{V} rV is the root node;
    • Σ \Sigma Σ is the alphabet, Σ = { 1 } \Sigma = \{1\} Σ={1};
    • p : V × Σ ∗ → V ∪ { ϕ } \textrm{p}:\mathbf{V} \times \Sigma^{*} \rightarrow \mathbf{V} \cup \{ \phi \} p:V×ΣV{ϕ} is the parent mapping, satisfying ∀ v ∈ V , ∃ ! s ∈ Σ ∗ s t . p ( v , s ) = r \forall v \in \mathbf{V},\exists ! s \in \Sigma^{*} st.\textrm{p}(v,s)=r vV,!sΣst.p(v,s)=r.
  • 根据图、树、 m \mathbf{m} m-叉树的学习,谈谈你对元组的理解;
    • 元组是一个有序的元素集合,每个元素都有固定的位置(索引)。被创建后,元组内的内容不能被修改。它是理解和实现复杂数据结构的重要工具,如:树、 m − \mathbf{m}- m叉树等。元组简化了数据结构的表示,提高了数据的客房问下和可维护性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql-sql-第十三周

学习目标&#xff1a; sql 学习内容&#xff1a; 37.查询各科成绩最高分、最低分和平均分&#xff1a; 以如下形式显示&#xff1a;课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>60,中等为&#xff1a;70-80,优良为&#xff1a;80-90,优秀…

2024 年江西省研究生数学建模竞赛A题:交通信号灯管理问题分析、实现代码及参考论文

2024 年江西省研究生数学建模竞赛题目交通信号灯管理 1 题目 交通信号灯是指挥车辆通行的重要标志&#xff0c;由红灯、绿灯、 黄灯组成。红灯停、绿灯行&#xff0c;而黄灯则起到警示作用。交通 信号灯分为机动车信号灯、非机动车信号灯、人行横道信号 灯、方向指示灯等。 一…

OpenSSH漏洞扫描(CVE-2024-6387、CVE-2006-5051、CVE-2008-4109)

目录 POC&#xff1a;ssh_poc.py 使用方法 github CVE-2024-6387 漏洞信息 补丁 POC&#xff1a;ssh_poc.py import sys import socket import argparse import threading import queue import os from datetime import datetime from urllib.parse import urlparse from…

LinuxRT启动Veristand项目的配置文件

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

FreeRTOS的任务理论

文章目录 2 FreeRTOS的任务理论2.1 任务及任务优先级2.2 任务状态理论2.2.1 任务状态的转换2.2.2 任务状态改变相关函数2.2.3 调度器相关函数 2.3 FreeRTOS延时2.3.1 vTaskDelay延时2.3.2 vTaskDelayUntil延时2.3.3 pdMS_TO_TICKS&#xff08;x&#xff09;宏 2.4 TCB任务控制块…

kafka 实现精确一次性语义实践总结

文章目录 前言幂等生产者幂等生产者的工作原理幂等生产者的局限性如何使用幂等生产者 事务事务的应用场景事务可以解决哪些问题事务是如何保证精确一次性的使用事物 API事物的工作原理 事务的性能 前言 Kafka的精确一次性语义与国际象棋正好相反&#xff1a;要理解它不容易&am…

怎么分区,新买的电脑只有一个C盘

C盘在大多数默认情况下是一台电脑的系统盘&#xff0c;也是创建硬盘分区时&#xff0c;最先被创建的盘。不过在一些特殊情况下&#xff0c;电脑上只有一个C盘。 为什么会出现只有一个C盘这种情况&#xff1f;当我们发现电脑只有一个C盘时&#xff0c;能通过哪些方法去创建其他硬…

Redis 7.x 系列【8】数据类型之哈希(Hash)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 HSET2.2 HGET2.3 HDEL2.4 HEXISTS2.5 HGETALL2.6 HKEYS2.7 HLE…

SMS多表面同步透镜设计

SMS多表面同步透镜设计 一、设计原理 1、Snell定律的矢量形式 折射定律又称Snell定律&#xff0c;主要包括两个方面&#xff1a;一是入射光线、法线和折射光线共面&#xff0c;二是入射角和折射角满足以下关系&#xff1a; n 1 s i n θ 1 n 2 s i n θ 2 n_1 sin{\theta_1…

arm-linux-gnueabihf-gcc:Command not found 解决办法

问题描述 使用虚拟机交叉编译程序&#xff0c;当使用了sudo去编译, 出现arm-linux-gnueabihf-gcc&#xff1a;Command not found的问题。明明已经安装并配置好环境了&#xff0c;发现还是提示找不到编译器。 原因分析&#xff1a; 特意去查了一下sudo方法&#xff0c;我们在sud…

linux中的进程以及进程管理

程序和进程的区别和联系 程序&#xff08;Program&#xff09;&#xff1a; 程序是一组指令的集合&#xff0c;通常存储在磁盘或其他存储设备上&#xff0c;是一种静态的概念。程序本身并没有运行&#xff0c;它只是一个可执行的文件或脚本&#xff0c;包含了一系列的指令和数…

Listary:文件搜索,一键即达

名人说&#xff1a;莫道谗言如浪深&#xff0c;莫言迁客似沙沉。 ——刘禹锡《浪淘沙》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、Listary2、核心功能 二、下载安装1、下载2、安装 三、使用方…

mysql8.0.19安装zip版本

下载地址https://downloads.mysql.com/archives/community/ 下载版本 下载后解压&#xff0c;不包括data 和my.ini文件。其中data 文件是自动生成的【mysqld --initialize --console】&#xff0c;my.ini需要自己编写设置。 新建my.ini文件 需要自己设置 basedirG:\soft\mysql…

Hubstudio指纹浏览器:海外代理IP新选择,IPXProxy为何备受推崇?

许多人都会把Hubstudio指纹浏览器和代理IP进行搭配使用&#xff0c;为了保证网络操作的顺利进行&#xff0c;例如亚马逊的多账号管理。那有没有好用的海外代理IP呢&#xff0c;如何在Hubstudio指纹浏览器中使用代理IP呢&#xff1f; 下面就给大家推荐好用的一家海外IP代理&…

【linux】网络基础(2)——udp协议

文章目录 引言udp协议的特点udp的头部结构UDP的工作原理简单的UDP网络程序套接字的认识udp服务端代码udp客户端代码服务端运行 引言 用户数据报协议&#xff08;User Datagram Protocol, UDP&#xff09;是一种无连接的传输层协议。它是因特网协议家族的一部分&#xff0c;定义…

windows USB设备驱动开发-开发USB 设备端驱动

USB 设备是通过单个端口连接到计算机的外设&#xff0c;例如鼠标设备和键盘。 USB 客户端驱动程序是计算机上安装的软件&#xff0c;该软件与硬件通信以使设备正常运行。 如果设备属于 Microsoft 支持的设备类&#xff0c;Windows 会为该设备加载 Microsoft 提供的 USB 驱动程序…

2024上半年全国各地电子签章政策汇总,契约锁助力政企数字化转型

当前&#xff0c;全社会的数字化建设已经进入关键时期&#xff0c;各行各业都在加速推进业务数字化转型&#xff0c;电子签章作为业务全程数字化网办的关键一公里在政务服务、组织管理等各项工作中的应用价值逐渐凸显。今年上半年&#xff0c;电子签章在各地政府机关的全力推动…

AI新功能发布:AI生成数据库和AI规划任务,CoCodeAI再添新成员!

Hi&#xff0c;大家好&#xff0c;好久不见&#xff01; 我是CoCodeAI智能助手CoCo。 CoCodeAI智能助手CoCo 我无比荣幸地为大家揭晓 CoCode开发云的璀璨新星&#xff1a; AI生成数据库AI规划任务。 近日&#xff0c;CoCode开发云旗下Co-Project V3.8智能项目管理平台重磅发…

红酒与高尔夫:球场上的优雅之选

在绿茵茵的高尔夫球场上&#xff0c;每一个挥杆的瞬间都充满了优雅与力量。而当这种运动与红酒相遇&#xff0c;便是一场关于品味与格调的很好邂逅。今天&#xff0c;就让我们一起探讨红酒与高尔夫这对球场上的优雅之选&#xff0c;感受它们交织出的不同魅力。 一、高尔夫&…

Flink 容错机制

一致性检查点&#xff08;checkpoint&#xff09; 什么是 Checkpoint &#xff1f; Flink 故障恢复机制的核心&#xff0c;就就是应用状态的一致性检查点&#xff1b;有状态流应用的一直检查点&#xff0c;其实就是所有任务的状态&#xff0c;在某一时间点的一份拷贝&#xff…