Markdown 练习

Markdown 练习

标题

h1 标题1

h2 标题2

h3 标题3

h4 标题4

h5 标题5
h6 标题6

一级标题

二级标题

段落

段落换行是使用 两个空格加回车

test Enter

test Enter

或者在句子的结尾加上 <br/[即支持html 标签]

test

水平线/分割线

语法:
___
---
***



文本样式

加粗

语法:
**加粗的文字**
__加粗的文字__

加粗的文字

加粗的文字

斜体

语法:
*斜体文字*
_斜体文字_

斜体文字

斜体文字

自带删除线&下划线

删除线文字
~~删除线文字~~

下划线文字

<u>下划线文字</u>

删除线文字

下划线文字

高亮

==高亮文字==

高亮文字

键盘样式

<kbd>Ctrl</kbd>

Ctrl

上标 /下标

1^2^ = 1
2^2^ = 4

100~$~

12 = 1
22 = 4

100$

注释

居中

<center>这一行需要居中</center>
这一行需要居中

脚注

通过使用脚注的方式,为一些特定的文字,在鼠标悬浮时,显示注明的解释信息

格式:
...注明的文字[^脚注名]...

[^脚注名]:注明的信息

鲁迅[1]先生是我国著名的文学家...

列表

无序列表

使用 星号[*] ,加号[+]或者是减号[-] 作为列表标记:

  • 第一项
  • 第二项
  • 第三项
  • 第一项
  • 第二项
  • 第三项
  • 第一项
  • 第二项
  • 第三项

有序列表

使用数字加上 . 号来表示:

  1. 第一项
  2. 第二项
  3. 第三项

列表嵌套

列表嵌套只需要在子列表中的选项前添加四个空格即可

  1. 第一项
    • 第一项嵌套的第一个元素
    • 第二项嵌套的第一个元素
    • ...
  2. 第二项
    1. 第二项嵌套的第一个元素
    2. 第二项嵌套的第二个元素
    3. ...

区块

区块引用是在段落的开头使用 > 符号,然后后面紧跟一个空格符号:

> 区块引用内容

区块引用

百度一下

百度一下,你就知道

区块嵌套

区块是可以嵌套的,一个 >符号表示最外层,两个> 符号表示第一层的第一层嵌套,以此类推:

语法:
> 最外层
> > 第一层嵌套
> > > 第二层嵌套 
> > > > ...以此类推

最外层

第一层嵌套

第二层嵌套

...以此类推

区块中使用列表

语法:
> 区块中使用列表
> 1. 第一项
> 2. 第二项
> * 第三项
> + 第四项
> - 第五项

最外层

第一层嵌套

第二层嵌套

...以此类推

列表中使用区块

如果要在列表项目中放进区块,那么需要在>前添加四个空格的缩进

语法:
* 第一项
    > markdown 区块1
    > markdown 区块2
+ 第二项
	> markdown 区块1
	> markdown 区块2
  • 第一项

    markdown 区块1
    markdown 区块2

  • 第二项

    markdown 区块1
    markdown 区块2

Markdown 代码

如果段落上有一个函数或者片段的代码,可以用反引号(`)把它包起来,例如:

`printf()` 函数	

printf() 函数

代码区块

使用四个空格或者一个制表符(Tab键).

例如:

public static void mian(String[] args){
	System.out.println("Hello,World!");
}

也可以使用``` 包裹一段代码,并指定一种语言,也可以不指定:

​```java
	//java代码
​```

​```
	//代码内容
​```
$(document).ready(function(){
   alert('javascript代码'); 
})

Markdown 链接

语法:
[链接名称](链接地址)
或者
<链接地址>

这是个链接指向-->百度一下

这是个链接指向-->https://baidu.com

高级链接

链接可以使用变量来替代,文档末尾附带变量地址:

这个链接用 **百度地址** 作为网址变量[baidu][百度地址]

[百度地址]:https://baidu.com

这个链接用 百度地址 作为网址变量baidu

链接索引

<span id='test'> 锚点 </span>
[跳转至锚点](#test)

锚点
跳转至锚点

Markdown 图片

Markdown 图片语法格式如下:

![alt](imager-url)
![alt](image-url 'title')
  1. ![alt](imager-url)

    百度logo

  2. ![alt](imager-url 'title')

    百度logo

  3. 图片显示错误
    百度logo

图片网址变量

也可以像网址一样对图片网址使用变量

这个链接 用 `image` 作为网址变量![百度logo][image]
然后在文档的结尾为变量赋值(网址)
[image]: https://www.baidu.com/img/baidu_jgylogo3.gif

这个链接 用 image 作为网址变量百度logo
然后在文档的结尾为变量赋值(网址)

图片<img>标签

也可以使用 html 的img标签为图片设置更多样式:宽度,高度 等等

<img
	src='图片url'
	title='鼠标悬浮文字'
	alt='图片加载错误文字'
	widht='宽度 px/百分比' height='高度 px/百分比'
	style='更多css 样式 如: zoom =[比例缩放]80%'
/>	

百度logo

Markdown 表格

markdown 制作表格使用 | 来分隔不同的单元格,使用 -来分隔表头和其他行

语法格式如下:

| 表头   | 表头   |
| ------ | ------ |
| 单元格 | 单元格 |
| 单元格 | 单元格 |

简便方式:

|表头|表头|
|-|-|
|单元格|单元格|
|单元格|单元格|

表头 表头
单元格 单元格
单元格 单元格
单元格 单元格

简便方式:

表头 表头
单元格 单元格
单元格 单元格
...

对齐方式

可以设置表格的对齐方式:

  • -: 设置内容和标题栏居右对齐
  • :- 设置内容和标题栏局左对齐
  • :-: 设置内容和标题栏居中对齐
|左对齐|居中对齐|右对齐|
|:-|:-:|-:|
|左|中|右|
左对齐 居中对齐 右对齐

表格 <table> 标签

markdown 对于一些复杂的表格操作无法支撑,如合并单元格等,这时可以使用 html 标签中的 table 标签 配合使用


<table>
	<tr>
		<th>表头1</th>
		<th>表头2</th>
	</tr>
	<tr>
		<td>单元格</td>
		<td>单元格</td>
	</tr>
	<tr>
		<td colspan='2'> 使用 <strong>colspan</strong> 合并两个横行单元格</td>
	</tr>
	<tr>
		<td rowspan="2">使用 <strong>rowspan</strong> 合并两列单元格</td>
		<td>单元格</td>
	</tr>
	<tr>
		<td> 使用 <strong> < br /> </strong> <br/> 换行</td>
	</tr>
</table>

表头1 表头2
单元格 单元格
使用 colspan 合并两个横行单元格
使用 rowspan 合并两列单元格 单元格
使用 < br />
换行

Markdown 勾选项

可以通过 - [ ] 使用勾选框, 例如:

- [ ] 北京
- [ ] 上海
- [ ] 广州
- [ ] 深圳
- [x] 表示默认选中
- [ ] 表示默认不选中

Markdown 高级技巧

支持html 元素

不在Markdown涵盖范围之内的标签,都可以直接在文档里面使用html 撰写

目前支持的HTML元素有: <kbd> , <b> , <i> , <em> , <sup> ,<sub> , <br> 等.... 

如:

使用 <kbd> Ctrl</kbd> + <kbd> Alt </kbd> + <kbd> Del </kbd> 重启电脑

加粗: <b> 加粗 </b>

斜体: <i> 斜体i </i> , <em> 斜体em </em>

上缀: 10 <sup> sup </sup>
下缀: 10 <sub> sub </sub>

...

使用 Ctrl + Alt + Del 重启电脑

加粗: 加粗

斜体: 斜体i , 斜体em

上缀: 10 sup
下缀: 10 sub

iframe 窗体嵌套

<iframe
	height='高度px'
	title='窗体标题'
	src='窗体内显示的页面网址'
	style='width:宽度px'
	...
>
</iframe>

音视频标签支持

video标签
<video 
	controls='控制元件显示 true|false'
	autoplay='自动播放 false|true'
	src='资源路径'
	type='资源类型'
	width='宽度px'
	height='高度px'
	...
>
</video>

<video
controls='false'
autoplay='false'
src='http://qukufile2.qianqian.com/data2/video/57390cc4d50c0b9417d12dbf77ebc463/670071317/670071317.mp4'
type='voideo/mp4'
width='100%'
height='500px'

embed&audio标签
<embed 
	height="高度px" 
	width="宽度"  
	autostart='自动播放 true|false' 
	src="资源路径" 
	hidden="是否隐藏面板 no|true"
/>


<audio controls>
  <source 
  	src="资源路径" 
  	type="资源类型 [audio/mpeg]"
  	>
</audio>

转义

markdown 使用了很多特殊符号来表示特定的意义,如果需要显示特定的符号则需要使用转义字符, markdown使用 反斜杠 转义特殊字符

**文本加粗**
\*\*正常显示星号\*\*

文本加粗
**正常显示星号**

markdown 支持以下符号前面加上反斜杠来帮助插入普通符号:

\  反斜线
`  反引号
*  星号
_  下划线
{} 花括号
[] 方括号
() 小括号
#  井字号
+  加号
-  减号
.  英文句点
!  感叹号

数学公式支持

当需要插入数学公式是,可以使用两个美元符号 $$ 包裹 Tex 或 LaTex格式的数学公式来实现 具体可以参考LaTeX数学公式

\[\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\ \end{vmatrix} \]

\[\frac{1}{8} \times \frac{2}{8} =\frac{2}{64}=0.03125 \\ \pi \approx 3.1415926535 \\ abcdefghijklmnopqrstuvwxyz\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\0123456789\\!@\#$\%\^\&*()-\_=+~`[]\{\};:'",<.>/? \]

LaTeX 数学公式

参考文档

Gamma公式展示 $ \Gamma(n) = (n-1)!\quad\forall
n\in\mathbb N$ 是通过 Euler integral

\[\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. \]

图表支持

插入甘特图

参考文档

gantt dateFormat YYYY-MM-DD Q axisFormat %Y-%m-%d title Adding GANTT diagram functionality to mermaid section 现有任务 已完成 :done, des1, 2014-01-06,2014-01-08 进行中 :active, des2, 2014-01-09, 3d 计划中 : des3, after des2, 1w

插入顺序图 - sequenceDiagram

参考文档

sequenceDiagram 张三 ->> 李四: 你好!李四, 最近怎么样? 李四-->>王五: 你最近怎么样,王五? 李四--x 张三: 我很好,谢谢! 李四-x 王五: 我很好,谢谢! Note right of 王五: 李四想了很长时间, 文字太长了<br/>不适合放在一行. 李四-->>张三: 打量着王五... 张三->>王五: 很好... 王五, 你怎么样?
sequenceDiagram participant Working as Working Directory participant Staging as Staging Area participant repository as git directory(Repository) repository ->> Working : checkout the project Working ->> Staging : stage fixes Staging ->> repository : commit

插入Mermaid流程图

参考文档

graph LR A[长方形] -- 链接 --> B((圆)) A --> C(圆角长方形) B --> D{菱形} C --> D
流程图 graph

该语句声明一个新图和图布局的方向。

这声明了一个从上到下(TDTB)定向的图形。

graph TD Strat --> Stop
  • TB-顶底
  • BT-底顶
  • RL-右左
  • LR-左右
  • TD-与TB相同
图形
graph LR A[矩形 默认] A_1[/平行四边形/] A_2[\平行四边形\] A_3[/梯形\] A_4[\梯形/] B(圆角矩形) B_1((圆形)) C>非对称形状的节点] C_1{菱形} C_2{{六角形节点}} A---A_1---A_2---A_3---A_4 B---B_1 C---C_1---C_2
节点之间的链接

节点可以通过链接/边缘连接。可以具有不同类型的链接,也可以将文本字符串附加到链接。

graph LR A-->B[箭头链接] C---D[开放式链接] E--链接上的文字---F---|链接上的文字2|G H--带有箭头和文字的链接-->I-->|带有箭头和文字的链接2|J K-.-L[虚线链接]-.带文字的虚线链接.-M-.带文字和箭头的虚线链接.->N
类图 UML classDiagram

在软件工程中,统一建模语言(UML)中的类图是一种静态结构图,它通过显示系统的类,其属性,操作(或方法)以及对象之间的关系来描述系统的结构

示例

classDiagram Animal <|-- Duck Animal <|-- Fish Animal <|-- Zebra Animal : +int age Animal : +String gender Animal: +isMammal() Animal: +mate() class Duck{ +String beakColor +swim() +quack() } class Fish{ -int sizeInFeet -canEat() } class Zebra{ +bool is_wild +run() }
句法

UML 提供了 表示类成员的机制, 例如 属性 和方法, 以及有关它们的其他信息. 图中一个类的单个实例包含三个部分:

  • 顶部 包含 类的名称, 它以粗体和居中打印, 并且第一个字母大小, 它可能还包含描述类性质的可选注释文本

  • 中部部分, 包含类的属性, 它们左对齐, 第一个字母为小写.

  • 底部 包含类可执行的操作, 它们也左对齐, 首字母为小写

    classDiagram
    	class BankAccount // 以 class 开头, 后跟自定义 类名
    	BankAccount : +String owner
    	BankAccount : +Bigdecimal balance
    	BankAccount : +deposit(amount) // 以"()"区分 类的 属性和函数/方法, 以"()"结尾的为 类的函数/方法, 其他都认为是属性
    	BankAccount : +withdrawl(amount)
    
classDiagram class BankAccount BankAccount : +String owner * owner BankAccount : +Bigdecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawl(amount)
定义一个 Class

定义类有两种方法:

  • 使用 关键字 class 明确定义一个 类, 如 class Animal 这定义了一个 Animal 的 class
  • 通过定义两个 类的关系, 同时定义两个类 , 如 Vehicle <|-- Car , 这定义了两个类Vehicle和Car及其关系。
classDiagram
	class Animal
	Vehicle <|-- Car
	class 学生
classDiagram class Animal Vehicle <|-- Car class 学生

命名约定:类名应该由字母数字(允许unicode: 允许使用双字节字符, 如中文)和下划线组成。

定义 Class 成员

UML 提供了 表示类成员的机制, 例如 属性和方法, 以及有关它们的其他信息

根据 括号 () 是否存在 来区分 属性和 函数/方法, 结尾 为 ()被视为 函数和方法 , 而其他被视为 属性.

有两种定义类成员的方法, 无论使用哪种语法定义成员. 输出都将相同. 两种不同的方式是:

  • 使用: (冒号 :) 后跟成员名称来关联一个类的成员, 这有助于一次定义一成员.

    classDiagram
        class BankAccount
        BankAccount : +String owner
        BankAccount : +BigDecimal balance
        BankAccount : +deposit(amount)
        BankAccount : +withdrawal(amount)
    
    classDiagram class BankAccount BankAccount : +String owner BankAccount : +BigDecimal balance BankAccount : +deposit(amount) BankAccount : +withdrawal(amount)
  • 使用 {} 括号 将类的成员相关联, 其中成员分组在大括号中, 适用于一次定义多个成员.

    classDiagram
    	class BankAccount{
          +String owner
          +BigDecimal balance
          +bool deposit(amount)
          +int withdrawl(amount)
    	}
    
    classDiagram class BankAccount{ +String owner +BigDecimal balance + bool deposit(amount) + int withdrawl(amount) }

    可见性 (Visibility):

    指定类成员(即任何属性或方法)的可见性, 这些符号可以放在成员名称的前面,但是它是可选的:

    • + : public
    • - : private
    • # : protected
    • ~ : package / internal
定义关系

关系是一个通用术语,涵盖了在类和对象图中发现的特定逻辑连接类型

当前支持在UML下为类定义的不同类型的关系:

类型 描述 作用
<|-- Inheritance (继承), 实粗线+实心三角形 箭头指向类, 指 子类继承父类, 箭头指向 父类, A类 继承 目标类
*-- Composition( 组合/合成), 实粗线 + 实心 菱形 箭头指向整体 , 指 A类 作为 目标类的成员变量, 且 是 目标类的 构造参数, 与目标类拥有共同的生命周期.
A列 组合 目标类 , 目标类 关联 A类
o-- Aggregation ( 聚合 ) , 实线 + 空心菱形 箭头指向整体 , 指 目标类 包含 A类, 但是 A类 不是 目标类 的一部分, A类 可能作为 目标类的 函数/方法 返回值
A类 聚合 目标类 , 目标类 关联 A类
<-- Association ( 关联 ) , 实线 + 箭头 箭头指向被包含类, 目标类为 A类的 成员变量
-- Link(联合) , 实线, 无箭头 A类与B类, 与 C类 有同样的 关系
如, A列和B类,同时作为 C类的 成员变量, 或 A类 与 B类 同为 继承 C类
<.. Dependency (依赖) , 虚线 + 箭头 箭头指向整体 指目标类为A类的 方法/函数参数 , A类中使用了 目标类
<|.. Realization( 实现) , 虚线 + 实心三角形 箭头指向接口 , 指 子类 实现接口, 箭头指向 被实现的接口 A类 实现目标类
.. Link(联合), 虚线 A类与B类, 与 C类 有同样的 关系
如, A列和B类,同时作为 C类的 函数/方法 参数

组合关系和聚合关系可理解为:

  • 聚合关系多你一个不多,少你一个不少。

  • 组合关系是有严格的整体,缺一不可!

如: 大雁群众少一个大雁无伤大雅,但鸟没有了翅膀就不行了

classDiagram
classA <|-- classB : 继承
classC *-- classD : 组合
classE o-- classF : 聚合
classG <-- classH : 关联
classI -- classJ : 联合
classK <.. classL : 依赖
classM <|.. classN : 实现
classO .. classP : 联合
classDiagram classA <|-- classB : 继承 classC *-- classD : 组合 classE o-- classF : 聚合 classG <-- classH : 关联 classI -- classJ : 联合 classK <.. classL : 依赖 classM <|.. classN : 实现 classO .. classP : 联合
classDiagram class 动物{ +有生命 +新陈代谢(in o2 : 氧气 , in water : 水) +繁殖() } class 鸟{ +羽毛 +有角质喙没有牙齿 +下蛋() } class 鸭子{ +下蛋() } class 企鹅{ +下蛋() } class 大雁{ +V形飞行() +一形飞行() } class 大雁群{ +V形飞行() +一形飞行() +大雁[] get大雁群() } class 气候{ } class 讲话{ <<接口>> +讲话() } 氧气<..动物 : 依赖-虚线 水<.. 动物 : 依赖-虚线 水--氧气 : 联合 动物<|--鸟 : 继承 - 实粗线+实心三角形 翅膀<--*鸟 : 组合/关联 - 实粗线 + 实心 菱形 / 实线 + 箭头 鸟<|--大雁 : 继承 - 实粗线+实心三角形 鸟<|--鸭子 : 继承 - 实粗线+实心三角形 鸭子<|--唐老鸭 : 继承 - 实粗线+实心三角形 唐老鸭<|..讲话 : 实现 - 虚线 + 实心三角形 鸟<|--企鹅 : 继承 - 实粗线+实心三角形 企鹅<--气候 : 关联 - 实线 + 箭头 大雁<--o 大雁群 : 聚合/关联 - 实线 + 空心菱形 / 实线 + 箭头 企鹅--大雁 : 联合 - 实线, 无箭头 鸭子..企鹅 : 联合 - 虚线, 无箭头

我们可以使用标签来描述两个类之间关系的性质。此外,箭头也可以用在相反的方向

classDiagram
    
    classA --|> classB : 继承
    classC --* classD : 组合
    classE --o classF : 聚合
    classG --> classH : 关联
    classI -- classJ : 联合
    classK ..> classL : 依赖
    classM ..|> classN : 实现
    classO .. classP : 关联
    
    classA1 o--> classB1 : 聚合/关联
classDiagram classA --|> classB : 继承 classC --* classD : 组合 classE --o classF : 聚合 classG --> classH : 关联 classI -- classJ : 联合 classK ..> classL : 依赖 classM ..|> classN : 实现 classO .. classP : 关联 classA1 o--> classB1 : 聚合/关联
关系标签

可以在关系中 添加标签文本 :

[classA][Arrow][ClassB] : label Text
classDiagram
classA <|-- classB : 继承
classC *-- classD : 组合
classE o-- classF : 聚合
classDiagram classA <|-- classB : 继承 classC *-- classD : 组合 classE o-- classF : 聚合
关系的基数/多重性

类图中的多重性或基数表示链接到另一类的一个实例的一个类的实例数。例如,一个公司将有一个或多个员工,但是每个员工只为一个公司工作。

多重符号位于关联的结尾附近。

不同的基数选项是:

  • 0..1 零或一
  • 1 只有1个
  • 0..1 零或一
  • 1..* 一个或多个
  • * 许多
  • n n
  • 0..n zeor到n
  • 1..n 一对一

通过将基数文本放在"给定箭头的qoutes 之前(可选)和之后(可选),可以轻松定义基数。

[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
classDiagram
    Customer "1" --> "*" Ticket
    Student "1" --> "1..*" Course
    Galaxy --> "many" Star : Contains
classDiagram Customer "1" --> "*" Ticket Student "1" --> "1..*" Course Galaxy --> "many" Star : Contains
类注释

可以使用特定的标记文本为类添加注释. 该标记文本类似于该类的员数据, 可以清楚地只是其性质, 一些常见的注释示例可能是:

  • <<Interface>> 表示 一个接口类
  • <<abstract>> 表示一个抽象类
  • <<Service>> 表示一个业务类
  • <<enumeration>> 表示一个 枚举类

注释在开始 << 和结束中定义 >> . 有两种向类添加注释的方法, 无论使用哪种语法, 输出都将相同

  • 定义类后,在单独的一行中

    classDiagram
    class Shape
    <<interface>> Shape
    
    classDiagram class Shape <<interface>> Shape
  • 与类定义一起在嵌套结构中

    classDiagram
    class Shape{
        <<interface>>
        noOfVertices
        draw()
    }
    class Color{
        <<enumeration>>
        RED
        BLUE
        GREEN
        WHITE
        BLACK
    }
    
    classDiagram class Shape{ <<interface>> noOfVertices draw() } class Color{ <<enumeration>> RED BLUE GREEN WHITE BLACK }

插入Flowchart流程图

参考文档

​```flow
st=>start: 开始
e=>end: 结束
op=>operation: 我的操作
cond=>condition: 确认?
st->op->cond
cond(yes)->e
cond(no)->op
​```
st=>start: 开始
e=>end: 结束
op=>operation: 我的操作
cond=>condition: 确认?
st->op->cond
cond(yes)->e
cond(no)->op

饼状图

pie title 融资分配情况 "产品生产" : 25 "设计研发" : 25 "品牌建设" : 30 "日常运营" : 20

  1. 原名周树人,浙江绍兴人.... ↩︎

posted @ 2021-04-03 00:45  朽木不可雕  阅读(251)  评论(0)    收藏  举报