Markdown 进阶语法:Mermaid 绘图 (一) - 流程图 (Flowchart)

news/2024/5/18 22:48:35 标签: 流程图, markdown, 标记语言, mermaid
markdown_views prism-atom-one-dark">

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

    • Mermaid 简介
    • 如何使用 Mermaid
    • Mermaid 语法
      • 流程图 (Flowchart)
        • 节点(默认)
        • 带有文本的节点
          • 包含 Unicode 的文本
        • 方向
        • 节点形状
          • 圆角矩形节点
          • 胶囊形节点
          • 卷轴形节点
          • 圆柱形节点
          • 圆形节点
          • 旗帜形节点
          • 菱形节点
          • 六角形节点
          • 平行四边形节点
          • 梯形节点
          • 双圆节点
        • 节点之间的连接
          • 箭头链接
          • 线链接
          • 带有文本的线链接
          • 带有文本的箭头链接
          • 虚线箭头链接
          • 带有文本的虚线箭头链接
          • 粗线箭头链接
          • 带有文本的粗线箭头链接
          • 链式链接
          • 新的箭头类型
          • 双向箭头
          • 链接长度
        • 破坏语法的特殊字符
          • 转义字符的实体代码
        • 子图
          • 跨越子图的链接
          • 子图的方向
        • 交互
          • 注释
        • 样式和类
        • 对 fontawesome 的基本支持
        • 空格和分号


Mermaid 简介

Mermaid 是一个基于 JavaScript 的图表绘制工具,它使用类似 Markdown 的简单语法来编写,并动态地将它们渲染成图表。

Mermaid 支持的图表类型包括:

  1. 流程图 (Flowchart) : 用关键词 graphflowchart 表示
  2. 顺序图 (Sequence Diagram) : 用关键词 sequenceDiagram 表示
  3. 类图 (Class Diagram) : 用关键词 classDiagram 表示
  4. 状态图 (State Diagram) : 用关键词 stateDiagram 表示
  5. 实体关系图 (Entity Relationship Diagram) : 用关键词 erDiagram 表示
  6. 用户旅程图 (User Journey Diagram) : 用关键词 journey 表示
  7. 甘特图 (Gantt Diagram) : 用关键词 gantt 表示
  8. 饼图 (Pie Chart Diagram) : 用关键词 pie 表示
  9. 象限图 (Quadrant Chart) : 用关键词 quadrantChart 表示
  10. 需求图 (Requirement Diagram) : 用关键词 requirementDiagram 表示
  11. Gitgraph 图 (Gitgraph Diagram) : 用关键词 gitGraph 表示
  12. 思维导图 (Mindmap) : 用关键词 mindmap 表示
  13. 时间线图 (Timeline Diagram) : 用关键词 timeline 表示

丰富的图表类型,可以满足大部分的绘图需求,越来越多的人开始使用 Mermaid 来绘制图表。


如何使用 Mermaid

想要使用 Mermaid 绘制各类图表,可以通过以下方式:

  • 使用专门支持 Mermaid 渲染的在线编辑器,如:Mermaid Live Editor
  • 使用支持 Mermaid 语法的 Markdown 编辑器,如:Typora

通常在专门的 Mermaid 编辑器我们只需要编写 Mermaid 语法,就可以看到图表的渲染效果:

markdown">flowchart TD
    A[Christmas] -->|Get money| B(Go shopping)
    B --> C{Let me think}
    C -->|One| D[Laptop]
    C -->|Two| E[iPhone]
    C -->|Three| F[fa:fa-car Car]

但是在支持 Mermaid 的 Markdown 编辑器中,我们需要在 Mermaid 语法前后添加特定的标记,才能看到图表的渲染效果:

markdown">```mermaid
flowchart TD
    A[Christmas] -->|Get money| B(Go shopping)
    B --> C{Let me think}
    C -->|One| D[Laptop]
    C -->|Two| E[iPhone]
    C -->|Three| F[fa:fa-car Car]
```

Mermaid 语法

流程图 (Flowchart)

流程图由节点(几何形状)和边(箭头或线)组成。Mermaid 代码定义了如何创建节点和边,并适应不同的箭头类型、多向箭头以及与子图之间的任何链接。

节点(默认)

代码:

markdown">```mermaid
flowchart LR
    id
```

也可以用 graph 代替 flowchart

效果:

mermaid"> mermaid-svg-UMBVPmlSDrx60VBs" width="44.48749923706055" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 44.48749923706055 57" class="mermaid-svg">
id

带有文本的节点

代码:

markdown">```mermaid
flowchart
    id[这是一段文本]
```

效果:

mermaid"> mermaid-svg-ndjf49HKtWj0ei67" width="127" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 127 57" class="mermaid-svg">
这是一段文本
包含 Unicode 的文本

可以使用 "" 将包含 Unicode 的文本括起来。

代码:

markdown">```mermaid
flowchart
    id["这是 ❤ Unicode"]
```

效果:

mermaid"> mermaid-svg-BYXMsg10dHWC0LJk" width="146.02499389648438" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 146.02499389648438 57" class="mermaid-svg">
这是 ❤ Unicode

方向

可在图表关键词后添加方向关键词来控制图表方向,流程图可用的方向关键词有以下几种:

  • TB (Top to bottom) : 从上到下
  • TD (Top-down) : 同 TB,从上到下
  • BT (Bottom to top) : 从下到上
  • RL (Right to left) : 从右到左
  • LR (Left to right) : 从左到右

代码:

markdown">```mermaid
flowchart TD
    开始 --> 结束
```

```mermaid
flowchart LR
    开始 --> 结束
```

效果:

mermaid"> mermaid-svg-ND3XUCpEorMcs1kw" width="63" xmlns="http://www.w3.org/2000/svg" height="148" viewbox="0 0 63 148" class="mermaid-svg">
开始
结束
mermaid"> mermaid-svg-JUCX71qu3Mu9zgOh" width="160" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 160 57" class="mermaid-svg">
开始
结束

节点形状

节点的默认形状为矩形,我们可以通过改变包裹文本的符号来改变节点的形状。

圆角矩形节点
markdown">```mermaid
flowchart LR
    id1(这是一段文本)
```

效果:

mermaid"> mermaid-svg-ThrLflgQ05bxQLcl" width="127" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 127 57" class="mermaid-svg">
这是一段文本
胶囊形节点
markdown">```mermaid
flowchart LR
    id1([这是一段文本])
```

效果:

mermaid"> mermaid-svg-Id7qsG6UJwPDuMfv" width="137.25" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 137.25 57" class="mermaid-svg">
这是一段文本
卷轴形节点
markdown">```mermaid
flowchart LR
    id1[[这是一段文本]]
```

效果:

mermaid"> mermaid-svg-Fydjm1ipyT4abIYy" width="143" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 143 57" class="mermaid-svg">
这是一段文本
圆柱形节点
markdown">```mermaid
flowchart LR
    id1[(这是一段文本)]
```

效果:

mermaid"> mermaid-svg-769z2L36WbddFCew" width="127" xmlns="http://www.w3.org/2000/svg" height="92.27542877197266" viewbox="0 0 127 92.27542877197266" class="mermaid-svg">
这是一段文本
圆形节点
markdown">```mermaid
flowchart LR
    id1((这是一段文本))
```

效果:

mermaid"> mermaid-svg-107F3UJYSaMNiQUY" width="127" xmlns="http://www.w3.org/2000/svg" height="127" viewbox="0 0 127 127" class="mermaid-svg">
这是一段文本
旗帜形节点
markdown">```mermaid
flowchart LR
    id1>这是一段文本]
```

效果:

mermaid"> mermaid-svg-yTqCrnBQnnFLBxRp" width="147.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 147.5 57" class="mermaid-svg">
这是一段文本

试试看,反过来写会怎样?

菱形节点
markdown">```mermaid
flowchart LR
    id1{这是一段文本}
```

效果:

mermaid"> mermaid-svg-GV8Yu3aEaG1BwnHG" width="168" xmlns="http://www.w3.org/2000/svg" height="168" viewbox="0 0 168 168" class="mermaid-svg">
这是一段文本
六角形节点
markdown">```mermaid
flowchart LR
    id1{{这是一段文本}}
```

效果:

mermaid"> mermaid-svg-5xHNiu5jESYgZqi5" width="147.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 147.5 57" class="mermaid-svg">
这是一段文本
平行四边形节点
markdown">```mermaid
flowchart LR
    id1[/这是一段文本/]
```

```mermaid
flowchart LR
    id1[\这是一段文本\]
```

效果:

mermaid"> mermaid-svg-70BQhU5zaVOilEGB" width="154.3333282470703" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 154.3333282470703 57" class="mermaid-svg">
这是一段文本
mermaid"> mermaid-svg-lUOPQ2SU2x5lzSYd" width="140.6666717529297" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 140.6666717529297 57" class="mermaid-svg">
这是一段文本
梯形节点
markdown">```mermaid
flowchart LR
    id1[/这是一段文本\]
```

```mermaid
flowchart LR
    id1[\这是一段文本/]
```

效果:

mermaid"> mermaid-svg-DMt2UsDHpvNmAqiN" width="154.3333282470703" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 154.3333282470703 57" class="mermaid-svg">
这是一段文本
mermaid"> mermaid-svg-G4n1MgI5d1AeBspI" width="154.3333282470703" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 154.3333282470703 57" class="mermaid-svg">
这是一段文本
双圆节点
markdown">```mermaid
flowchart LR
    id1(((这是一段文本)))
```

效果:

mermaid">flowchart LR
    id1(((这是一段文本)))

节点之间的连接

节点之间可用箭头或者线连接,箭头或线的类型可通过关键词来指定。可以有不同类型的链接或将文本字符串附加到链接上。

箭头链接
markdown">```mermaid
flowchart LR
    A-->B
```

效果:

mermaid"> mermaid-svg-N5MI5R5zcdifNnAz" width="114.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 114.5 57" class="mermaid-svg">
A
B
线链接
markdown">```mermaid
flowchart LR
    A---B
```

效果:

mermaid"> mermaid-svg-XXgfftwf1bKpkmXC" width="114.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 114.5 57" class="mermaid-svg">
A
B
带有文本的线链接
markdown">```mermaid
flowchart LR
    A-- 这是一段文本 ---B
```
或者
```mermaid
flowchart LR
    A---|这是一段文本|B
```

效果:

mermaid"> mermaid-svg-b0Ayc6cgCzUlHqLo" width="210.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 210.5 57" class="mermaid-svg">
这是一段文本
A
B
带有文本的箭头链接
markdown">```mermaid
flowchart LR
    A-- 这是一段文本 -->B
```
或者
```mermaid
flowchart LR
    A-->|这是一段文本|B
```

效果:

mermaid"> mermaid-svg-kw6CWI0IZyuecmB7" width="210.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 210.5 57" class="mermaid-svg">
这是一段文本
A
B
虚线箭头链接
markdown">```mermaid
flowchart LR
   A-.->B
```

效果:

mermaid"> mermaid-svg-WOFuWHY0c31pRRhl" width="114.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 114.5 57" class="mermaid-svg">
A
B
带有文本的虚线箭头链接
markdown">```mermaid
flowchart LR
   A-. 文本 .-> B
```

效果:

mermaid"> mermaid-svg-wyTUAlGsow4YobuF" width="146.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 146.5 57" class="mermaid-svg">
文本
A
B
粗线箭头链接
markdown">```mermaid
flowchart LR
   A ==> B
```

效果:

mermaid"> mermaid-svg-VXaJbvZAAKzlurLf" width="114.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 114.5 57" class="mermaid-svg">
A
B
带有文本的粗线箭头链接
markdown">```mermaid
flowchart LR
   A == 文本 ==> B
```

效果:

mermaid"> mermaid-svg-tDV6nKEtQjr2hMQA" width="146.5" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 146.5 57" class="mermaid-svg">
文本
A
B
链式链接

可以在一行声明多个链接:

markdown">```mermaid
flowchart LR
   A -- 文本1 --> B -- 文本2 --> C
```

效果:

mermaid"> mermaid-svg-mlyh0pL7Orv63dcH" width="269.875" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 269.875 57" class="mermaid-svg">
文本1
文本2
A
B
C

也可以在一行声明多个节点链接:

markdown">```mermaid
flowchart LR
   a --> b & c--> d
```

效果:

mermaid"> mermaid-svg-Op8rkJzRfQ2cnmQv" width="187.26251220703125" xmlns="http://www.w3.org/2000/svg" height="148" viewbox="0 0 187.26251220703125 148" class="mermaid-svg">
a
b
c
d

然后,我们可以以一种非常富有表现力的方式描述依赖关系,只用下面一行:

markdown">```mermaid
flowchart TB
    A & B--> C & D
```

效果:

mermaid"> mermaid-svg-QcMHgdl8jojjysgI" width="134.9437484741211" xmlns="http://www.w3.org/2000/svg" height="148" viewbox="0 0 134.9437484741211 148" class="mermaid-svg">
A
B
C
D

使用基础的代码来描述这样的关系至少需要 4 行代码:

markdown">```mermaid
flowchart TB
    A --> C
    A --> D
    B --> C
    B --> D
```

一行的写法虽然简洁,但会使得代码难以阅读,所以建议不要过度使用这样的写法。

新的箭头类型

除了一般的箭头外,Mermaid 还支持以下 2 种箭头类型:

markdown">```mermaid
flowchart LR
    A --o B
    B --x C
```
mermaid"> mermaid-svg-vZOWmAlIBWRNqUQI" width="189.0749969482422" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 189.0749969482422 57" class="mermaid-svg">
A
B
C
双向箭头

箭头可以是双向的:

markdown">```mermaid
flowchart LR
    A o--o B
    B <--> C
    C x--x D
```
mermaid"> mermaid-svg-BS6BVlaFCEMxe79e" width="263.8874969482422" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 263.8874969482422 57" class="mermaid-svg">
A
B
C
D
链接长度

流程图中的节点会被分到不同层级,链接的长度通常基于它跨越的层级,链接可以跨越任意数量的层级。除此之外,你也可以通过 增加破折号 - 的数量来加长一个链接。

markdown">```mermaid
flowchart LR
    A[Start] --> B{Is it?}
    B -->|Yes| C[OK]
    C --> D[Rethink]
    D --> B
    B ---->|No| E[End]
```
mermaid"> mermaid-svg-p9xXExk5hz9eBL2V" width="541.1000366210938" xmlns="http://www.w3.org/2000/svg" height="156.75" viewbox="0 0 541.1000366210938 156.75" class="mermaid-svg">
Yes
No
Start
Is it?
OK
Rethink
End

链接的长度可能超过总的层级数

当链接标签写在链接中间时,必须在链接的右侧添加额外的破折号 -

markdown">```mermaid
flowchart LR
    A[Start] --> B{Is it?}
    B -- Yes --> C[OK]
    C --> D[Rethink]
    D --> B
    B -- No ----> E[End]
```
mermaid"> mermaid-svg-HA9M5qwjvaS1chRe" width="541.1000366210938" xmlns="http://www.w3.org/2000/svg" height="156.75" viewbox="0 0 541.1000366210938 156.75" class="mermaid-svg">
Yes
No
Start
Is it?
OK
Rethink
End

对于虚线或粗线,需要添加的是等号 = 或 点号 .,如下表所示:

长度123
正常线------------
正常线带箭头-->--->---->
粗线============
粗线带箭头==>===>====>
虚线-.--..--...-
虚线带箭头-.->-..->-...->

破坏语法的特殊字符

为了呈现更多可能的字符,我们可以将文本放在引号 "" 内:

markdown">```mermaid
flowchart LR
    id1["这是一段(文本)"]
```
mermaid"> mermaid-svg-Ology2hLUi4LrwP4" width="138.75" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 138.75 57" class="mermaid-svg">
这是一段(文本)
转义字符的实体代码

可以使用字符的实体代码来表示一个字符:

markdown">```mermaid
flowchart LR
        A["A double quote:#quot;"] -->B["A dec char:#9829;"]
```
mermaid"> mermaid-svg-2QaAqA2GHRtHkjFZ" width="305.61248779296875" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 305.61248779296875 57" class="mermaid-svg">
A double quote:"
A dec char:♥

子图

语法如下:

markdown">```mermaid
subgraph title
    graph definition
end
```

例:

markdown">```mermaid
flowchart TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
```
mermaid"> mermaid-svg-msgd4qlMJKd3tn0O" width="463.73748779296875" xmlns="http://www.w3.org/2000/svg" height="268" viewbox="0 0 463.73748779296875 268" class="mermaid-svg">
three
one
c2
c1
two
b2
b1
a2
a1

我们也可以为子图设置显式 ID:

markdown">```mermaid
flowchart TB
    c1-->a2
    subgraph ide1 [one]
    a1-->a2
    end
```
mermaid"> mermaid-svg-Ajcb3v3IM21yBDJ1" width="194.1125030517578" xmlns="http://www.w3.org/2000/svg" height="198" viewbox="0 0 194.1125030517578 198" class="mermaid-svg">
one
a2
a1
c1
跨越子图的链接

可以为流程图添加跨越子图的链接:

markdown">```mermaid
flowchart TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
    one --> two
    three --> two
    two --> c2
```
mermaid"> mermaid-svg-C1wDdYD5hj2n7vFQ" width="270.61248779296875" xmlns="http://www.w3.org/2000/svg" height="359" viewbox="0 0 270.61248779296875 359" class="mermaid-svg">
three
one
c2
c1
two
b2
b1
a2
a1
子图的方向

子图的方向可以通过添加 direction 和方向关键词来指定:

markdown">```mermaid
flowchart LR
  subgraph TOP
    direction TB
    subgraph B1
        direction RL
        i1 -->f1
    end
    subgraph B2
        direction BT
        i2 -->f2
    end
  end
  A --> TOP --> B
  B1 --> B2
```
mermaid"> mermaid-svg-fKH9mwTqWVIuRPJJ" width="391.7749938964844" xmlns="http://www.w3.org/2000/svg" height="409" viewbox="0 0 391.7749938964844 409" class="mermaid-svg">
TOP
B1
f1
i1
B2
f2
i2
A
B

交互

我们可以为节点绑定 JavaScript 函数或是 URL 链接,当用户点击节点时,会触发绑定的函数或是打开链接。

markdown"><script>
  const callback = function () {
    alert('A callback was triggered');
  };
</script>

```mermaid
flowchart LR
    A-->B
    B-->C
    C-->D
    click A callback "Tooltip for a callback"
    click B "https://www.github.com" "This is a tooltip for a link"
    click A call callback() "Tooltip for a callback"
    click B href "https://www.github.com" "This is a tooltip for a link"
```
mermaid"> mermaid-svg-xOJXUI9170a68KrB" width="263.8874969482422" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 263.8874969482422 57" class="mermaid-svg">
A
B
C
D
注释

使用 %% 可为 Mermaid 代码添加注释,注释不会被渲染。

markdown">```mermaid
flowchart LR
%% this is a comment A -- text --> B{node}
   A -- text --> B -- text2 --> C
```
mermaid"> mermaid-svg-qSsyIXSo4cnGF1NY" width="256.3374938964844" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 256.3374938964844 57" class="mermaid-svg">
text
text2
A
B
C

样式和类

Mermaid 中的节点和链接都可以自定义样式:

markdown">```mermaid
flowchart LR
    id1(Start)-->id2(Stop)
    style id1 fill:#f9f,stroke:#333,stroke-width:4px
    style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
```
mermaid"> mermaid-svg-mS6bvSy09kXKsrjp" width="162.5625" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 162.5625 57" class="mermaid-svg">
Start
Stop

还可以构造类来为一类节点或链接添加样式:

markdown">```mermaid
flowchart LR
    A:::someclass --> B --> C:::someclass
    classDef someclass fill:#f96
```
mermaid"> mermaid-svg-LtYUXsbAYSPMsbxh" width="189.0749969482422" xmlns="http://www.w3.org/2000/svg" height="57" viewbox="0 0 189.0749969482422 57" class="mermaid-svg">
A
B
C

对 fontawesome 的基本支持

当环境中引入了 fontawesome 时,Mermaid 也能很好地支持这些图标:

markdown">```mermaid
flowchart TD
    B["fab:fa-twitter for peace"]
    B-->C[fa:fa-ban forbidden]
    B-->D(fa:fa-spinner)
    B-->E(A fa:fa-camera-retro perhaps?)
```
mermaid"> mermaid-svg-OUDuAfcsGppI8jb1" width="306.1499938964844" xmlns="http://www.w3.org/2000/svg" height="148" viewbox="0 0 306.1499938964844 148" class="mermaid-svg">
for peace
forbidden
A perhaps?

空格和分号

  • 分号在早期版本中用于标记图形声明的结束,现在不使用分号也可以渲染,当然如果你加入了分号,也不会影响图表渲染。
  • 在顶点和链接之间只允许有一个空格。但是,顶点和它的文本之间以及链接和它的文本之间不应该有任何空格。不加入空格也可以正常渲染,加入的空格是为了更好的可读性。
markdown">```mermaid
flowchart LR
    A[Hard edge] -->|Link text| B(Round edge)
    B --> C{Decision}
    C -->|One| D[Result one]
    C -->|Two| E[Result two]
```
mermaid"> mermaid-svg-ryG1Jyji6ZdeyFJZ" width="649.8375244140625" xmlns="http://www.w3.org/2000/svg" height="148" viewbox="0 0 649.8375244140625 148" class="mermaid-svg">
Link text
One
Two
Hard edge
Round edge
Decision
Result one
Result two

http://www.niftyadmin.cn/n/1704205.html

相关文章

第三届山东ACM省赛回顾 Pixel density (字符串处理)

Pixel density 题目链接&#xff1a;http://acm.sdut.edu.cn/sdutoj/problem.php?actionshowproblem&problemid2411 Time Limit: 1000ms Memory limit: 65536K 有疑问&#xff1f;点这里^_^ 题目描述 Pixels per inch (PPI) or pixel density is a measurement of the …

[代码]使用XSD验证XML示例1(LINQ to XML)

LINQ to XML的XDocument.Validate()方法是用来验证XML文档是否有效的&#xff0c;此方法需要指定验证所需的XSD&#xff0c;而这可以通过XmlSchemaSet对象提供&#xff0c;XmlSchemaSet.Add()方法可以将指定的XSD加载到验证集中。这样就可以使用此XSD来验证XML内容的有效性了。…

什么是PPP协议

PPP 主要由以下几部分组成&#xff1a;  封装&#xff1a;一种封装多协议数据报的方法。PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。PPP 封装精心设计&#xff0c;能保持对大多数常用硬件的兼容性。克服了SLIP不足之处的一种多用途、点到点协议&#xf…

Java后端--27--Maven入门

1、基本概念 1、Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 2、Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 3、Maven主要有两个功能:项目构建,依赖管理。 …

[代码]使用XSD验证XML示例2(LINQ to XML)

此代码仍然是演示如何使用LINQ to XML的XDocument.Validate()方法根据指定的XSD验证XDocument内容的有效性。示例代码程序首先加载XSD和XML文档到内存&#xff0c;然后对其进行验证&#xff0c;第一次的验证成功地通过。紧接着&#xff0c;修改其中一个客户的编号&#xff0c;再…

The illustrated guide to a Ph.D.

转载于:https://www.cnblogs.com/yymn/p/4471871.html

发现一本好书:《Modern Multivariate Statistical Techniques》

Google Books 可以预览部分。 Amazon有卖的。 淘宝上有打印的。 毛驴上有下的。

JMeter配置远程执行

在对容器技术相关的各个组件进行压力测试时&#xff0c;我们选用JMeter作为压测工具&#xff0c;分别对docker daemon, convoy(a docker volume driver), contiv/netplugin (a docker net driver), swarm, etcd, OpenVSwitch, registry进行了压力测试。我们准备了几十台PV作为w…