small.md 4.3 KB

json

轻量级数据交换格式 完全独立于编程语言 广泛运用与前后端交互

xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="children">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
  </book>
  <book category="web">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
  </book>
</bookstore>

类似于html语法,但是可以自定义标签 用于 数据传输 数据交换 和 数据存储

编码

gbk和utf-8这两种编码的区别 utf-8编码包含全世界所有国家需要用的字符,它比较灵活,长度在1-6个字节,utf-8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比gbk大,对于网站打开速度而言,也是有一定影响的。 gbk编码主要用中文编码,包含全部中文字符,gbk的长度为2个字节,所以和gbk相比,utf-8会占用更多的数据库储存空间。对于gbk编码格式,虽然它的功能少,仅限于中文字符,但它所占用的空间大小会随着它的功能而减少,打开网页的速度比较快。

正则表达式

正则表达式是用来匹配字符或者字符串的工具 独立于编程语言

匹配一组字符中的一个 [ ]定义一个字符集合 - 区间 ^ 非exe

匹配以 abc 为开头,并且最后一个字母不为数字的字符串 abc[^0-9]

单个字符匹配 . 匹配任何一个字符 匹配 . 要用 \ 进行转义

数字元字符 \d [0-9] \D [^0-9]

字母数字元字符 \w 大小写字母 下划线和数字,等价于[a-zA-Z0-9\_] \W 对 \w 取非

进制级别 \x匹配十六进制字符 例如 \xA 对应值为 10 的 ASCII 字符 即 \n \0匹配八进制

空白字符

|  \b | 回退(删除)一个字符   |
|  \f |  换页符 |
|  \n |  换行符 |
|  \r |  回车符 |
|  \t |  制表符 |
|  \v |  垂直制表符 |

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

\s 任何一个空白字符,等价于 [\f\n\r\t\v] \S 对 \s 取非

重复匹配

+   匹配 1 个或者多个字符
*   匹配 0 个或者多个字符
?   匹配 0 个或者 1 个字符

{n} 匹配 n 个字符
{m,n} 匹配 m\~n 个字符
{m,} 至少匹配 m 个字符

匹配邮箱地址。 [\w.]+@\w+\.\w+ *+ 都是贪婪型元字符,会匹配尽可能多的内容。在后面加 ? 可以转换为懒惰型元字符,例如 *?+?{m,n}?

位置匹配

单词边界 \b 可以匹配一个单词的边界 \B 匹配一个不是单词边界的位置 \babc\b 匹配出来的结果为 3 个字符

字符串边界 ^ 匹配整个字符串的开头 $ 匹配结尾。

多行匹配模式(multiline)下,换行被当做字符串的边界。

Line 1
Line 2
Line 3

如果使用正则表达式 ^Line 进行匹配,只有第一行会匹配成功。但如果启用了多行匹配模式,正则表达式 ^Line 将会匹配每一行的开头。 匹配代码中以 // 开始的注释行

^\s*\/\/.*$

高阶

使用子表达式 使用 () 定义一个子表达式 可以看成一个独立元素 (ab){2,} -> ababab | 是或 (19|20)\d{2}

匹配 IP 地址。

IP 地址中每部分都是 0-255 的数字,用正则表达式匹配时以下情况是合法的:
一位数字a
不以 0 开头的两位数字
1 开头的三位数
2 开头,第 2 位是 0-4 的三位数
25 开头,第 3 位是 0-5 的三位数
((25[0-5]|(2[0-4]\d)|(1\d{2})|([1-9]\d)|(\d))\.){3}(25[0-5]|(2[0-4]\d)|(1\d{2})|([1-9]\d)|(\d))

回溯引用 前后查找 嵌入条件

maven

最短路径优先 A -> B -> C -> X(1.0) A -> D -> X(2.0) 由于 X(2.0) 路径最短,所以使用 X(2.0)。

声明顺序优先 A -> B -> X(1.0) A -> C -> X(2.0) 在 POM 中最先声明的优先,上面的两个依赖如果先声明 B,那么最后使用 X(1.0)。

覆写优先原则 (特殊优先原则) 子 POM 内声明的依赖优先于父 POM 中声明的依赖。

构件 每一个构件都可以使用 Maven 坐标唯一标识 groupId artifactId maven项目名 version 同一个 groupId 同一个 artifactId 下,只能使用一个 version