Skip to content

Commit

Permalink
auto commit
Browse files Browse the repository at this point in the history
  • Loading branch information
CyC2018 committed Mar 26, 2018
1 parent cbb8a87 commit 945624e
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 40 deletions.
36 changes: 8 additions & 28 deletions notes/正则表达式.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@

正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。

一个问题往往可以用多种正则表达式方案来解决。

[正则表达式在线工具](http://tool.chinaz.com/regex)

# 二、匹配单个字符
Expand All @@ -44,7 +42,9 @@ My **name** is Zheng.

**[ ]** 定义一个字符集合;

0-9、a-z 定义了一个字符区间,区间使用 ASCII 码来确定。字符区间只能用在 [ ] 之间,因此 **-** 元字符只有在 [ ] 之间才是元字符,在 [ ] 之外就是一个普通字符;
0-9、a-z 定义了一个字符区间,区间使用 ASCII 码来确定,字符区间只能用在 [ ] 之间。

**-** 元字符只有在 [ ] 之间才是元字符,在 [ ] 之外就是一个普通字符;

**^** 是取非操作,必须在 [ ] 字符集合中使用;

Expand Down Expand Up @@ -79,7 +79,7 @@ abc[^0-9]

\r\n 是 Windows 中的文本行结束标签,在 Unix/Linux 则是 \n ;\r\n\r\n 可以匹配 Windows 下的空白行,因为它将匹配两个连续的行尾标签,而这正是两条记录之间的空白行;

. 是元字符,前提是没有对它们进行转义; f 和 n 也是元字符,但是前提是对他们进行了转义
. 是元字符,前提是没有对它们进行转义;f 和 n 也是元字符,但是前提是对它们进行了转义

## 匹配特定的字符类别

Expand All @@ -106,26 +106,6 @@ abc[^0-9]

\x 匹配十六进制字符,\0 匹配八进制,例如 \x0A 对应 ASCII 字符 10 ,等价于 \n,也就是它会匹配 \n 。

## 使用 POSIX 字符类

| 字符类 | 说明 |
| --- | --- |
| [:alnum:] | 字母数字字符 |
| [:alpha:] | 字母字符 |
| [:cntrl:] | 控制字符 |
| [:digit:] | 数字字符 |
| [:graph:] | 非空白字符 ( 非空格、控制字符等 ) |
| [:lower:] | 小写字母 |
| [:print:] |[:graph:] 相似,但是包含空格字符 |
| [:punct:] | 标点字符 |
| [:space:] | 所有的空白字符 ( 换行符、空格、制表符 ) |
| [:upper:] | 大写字母 |
| [:xdigit:] | 允许十六进制的数字 (0-9a-fA-F) |

并不是所有正则表达式实现都支持 POSIX 字符类,也不一定使用它。

使用时需要用两对方括号,例如 [[:alpha:]]

# 五、重复匹配

**\+** 匹配 1 个或者多个字符, **\*** 匹配 0 个或者多个,**?** 匹配 0 个或者 1 个。
Expand All @@ -149,8 +129,8 @@ abc[^0-9]
为了可读性,常常把转义的字符放到字符集合 [ ] 中,但是含义是相同的。

```
\w+@\w+.\w+
[\w]+@[\w]+.[\w]+
[\w.]+@\w+.\w+
[\w.]+@[\w]+.[\w]+
```

**{n}** 匹配 n 个字符,**{m, n}** 匹配 m\~n 个字符,**{m,}** 至少匹配 m 个字符;
Expand Down Expand Up @@ -195,7 +175,7 @@ a.+c
(?m)^\s*//.*$
```

如果没用 (?m),则只会匹配 // 注释 1 以及之后的所有内容,因为 * 是贪婪型的。用了分行匹配模式之后,换行符被当成是字符串分隔符,因此能正确匹配出两个注释内容。
如果没用 (?m),则只会匹配 // 注释 1 以及之后的所有内容。用了分行匹配模式之后,换行符被当成是字符串分隔符,因此能正确匹配出两个注释内容。

**匹配结果**

Expand Down Expand Up @@ -257,7 +237,7 @@ a.+c

# 八、回溯引用

回溯引用使用 **\n** 来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc ,那么回溯引用部分也需要匹配 abc 。
回溯引用使用 **\n** 来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc,那么回溯引用部分也需要匹配 abc 。

**应用**

Expand Down
22 changes: 10 additions & 12 deletions notes/计算机网络.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* [扩展局域网*](#扩展局域网)
* [MAC 层*](#mac-层)
* [四、网络层*](#四网络层)
* [概述](#概述)
* [网际协议 IP 概述](#网际协议-ip-概述)
* [IP 数据报格式](#ip-数据报格式)
* [IP 地址编址方式](#ip-地址编址方式)
* [IP 地址和 MAC 地址](#ip-地址和-mac-地址)
Expand Down Expand Up @@ -355,7 +355,7 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器

# 四、网络层*

## 概述
## 网际协议 IP 概述

因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。

Expand Down Expand Up @@ -550,7 +550,7 @@ Ping 的过程:

在一对多的通信中,多播不需要将分组复制多份,从而大大节约网络资源。

<div align="center"> <img src="../pics//c77b6a18-dfac-42a2-ac89-7e99481275dc.jpg" width=""/> </div><br>
<div align="center"> <img src="../pics//f50a8e52-a683-444c-8e32-63c1890fe84a.jpg" width="600"/> </div><br>

## 虚拟专用网 VPN

Expand All @@ -566,37 +566,35 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。

下图中,场所 A 和 B 的通信部经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。

<div align="center"> <img src="../pics//bf4ed077-d481-4db7-9e7a-85d841a5a8c3.jpg" width=""/> </div><br>
<div align="center"> <img src="../pics//1556770b-8c01-4681-af10-46f1df69202c.jpg" width="800"/> </div><br>

## 网络地址转换 NAT

专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。

在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。

<div align="center"> <img src="../pics//0f31bc7a-d60b-48a6-8e3f-597708369e52.png" width=""/> </div><br>
<div align="center"> <img src="../pics//2719067e-b299-4639-9065-bed6729dbf0b.png" width=""/> </div><br>

# 五、运输层*

网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。

运输层提供了应用进程间的逻辑通信。运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看见的好像在两个运输层实体之间有一条端到端的逻辑通信信道。
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。运输层提供了进程间的逻辑通信,运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看见的好像在两个运输层实体之间有一条端到端的逻辑通信信道。

## UDP 和 TCP 的特点

- 用户数据包协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)。
- 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)。

- 传输控制协议 TCP(Transmission Control Protocol) 是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)
- 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)

## UDP 首部格式

<div align="center"> <img src="../pics//bd6c05f3-02ee-4c8a-b374-40c87154a898.jpg" width=""/> </div><br>
<div align="center"> <img src="../pics//d4c3a4a1-0846-46ec-9cc3-eaddfca71254.jpg" width="600"/> </div><br>

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。

## TCP 首部格式

<div align="center"> <img src="../pics//21a00b02-c0a6-4bcd-9af0-5ec6bb66e34c.jpg" width=""/> </div><br>
<div align="center"> <img src="../pics//55dc4e84-573d-4c13-a765-52ed1dd251f9.png" width="800"/> </div><br>

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。

Expand Down
Binary file added pics/1556770b-8c01-4681-af10-46f1df69202c.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/2719067e-b299-4639-9065-bed6729dbf0b.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/55dc4e84-573d-4c13-a765-52ed1dd251f9.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/d4c3a4a1-0846-46ec-9cc3-eaddfca71254.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/f50a8e52-a683-444c-8e32-63c1890fe84a.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 945624e

Please sign in to comment.