## json 轻量级数据交换格式 完全独立于编程语言 广泛运用与前后端交互 ## xml ```xml Harry Potter J.K. Rowling 2005 Learning XML Erik T. Ray 2003 ``` 类似于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