@JsonInclude(JsonInclude.Include.NON_NULL)
用法:为null的字段不会进行序列化
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Response {
private String name;
private String targetId;
private String characteristic;
}
假设这个Response类是返回给前端的响应。如果字段characteristic为null,加上该注解后前端拿到的响应格式应该是这个样子(为null的characteristic字段不会显示在序列化结果里):
{
"name": "xxx",
"targetId": "xxx"
}
十六进制表达式
正则表达式中,可以使用 "xXX" 和 "uXXXX" 表示一个字符("X" 表示一个十六进制数)形式字符范围: xXX 编号在 0到255 范围的字符,比如:空格可以使用 "x20" 表示。 uXXXX 任何字符可以使用 "u" 再加上其编号的4位十六进制数表示,比如:汉字可以使用“[u4e00-u9fa5]”表示。zip打包命令
zip [选项] [参数] [文件] # 语法 zip -r 压缩包名 待压缩的文件和目录列表 # 示例,将文件 log.txt、test.txt 和目录 test/ 压缩到 test.zip 文件中 zip -r test.zip log.txt test/ test.txtPython
#python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {}
if True:
print ("True")
else:
print ("False")
#Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 来实现多行语句
total = item_one +
item_two +
item_three
#在 [], {}, 或 () 中的多行语句,不需要使用反斜杠
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
python中数字有四种类型:整数、布尔型、浮点数和复数。
- int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
- bool (布尔), 如 True。
- float (浮点数), 如 1.23、3E-2
- complex (复数), 如 1 + 2j、 1.1 + 2.2j
- Python 中单引号 ’ 和双引号 " 使用完全相同。
- 使用三引号(‘’’ 或 “”")可以指定一个多行字符串。
- 转义符 。
- 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with n" 则 n 会显示,并不是换行。
- 按字面意义级联字符串,如 "this " "is " “string” 会被自动转换为 this is string。
- 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
- Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
- Python 中的字符串不能改变。
- Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
- 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
#!/usr/bin/python3
str='123456789'
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始后的所有字符
print(str[1:5:2]) # 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串
print('------------------------------')
print('hellonrunoob') # 使用反斜杠()+n转义特殊字符
print(r'hellonrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
可以在同一行中使用多条语句,语句之间使用分号 ; 分割,
import sys; x = 'runoob'; sys.stdout.write(x + 'n')
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
if expression : suite elif expression : suite else : suite
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”
# 不换行输出 print(x, end="")import 与 from…import
在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
字符串匹配//通过正则表达式创建pattern
//这里注意可以在通过加上()来选取模式匹配要获取的内容
//比如这个整体是位于group(0) 其中的-*[0-9]*被括号()括了起来,其中的值就是group(1)
//java中使用 \( 来表示对于(的转义
Pattern pattern = Pattern.compile("new NumberInt\("(-*[0-9]*)"\)");
//matcher传入要进行匹配的字符串
Matcher matcher = pattern.matcher(""offset": new NumberInt("-0000")," +
""offset": new NumberInt("1110")");
String ss = "";
//在进行调用group()的时候,必须要先使用find()进行查询,此时的group(1)就是第一个匹配的模式中的-*[0-9]*
while (matcher.find()) {
String number = matcher.group(1);
//对于第一个匹配上的做替换后,继续进行匹配
ss = matcher.replaceFirst(number);
matcher = pattern.matcher(ss);
}
//最终得到的结果是"offset": -0000,"offset": 1110
//group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。
- runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
- runoo*b,可以匹配 runob、runoob、runoooooob 等,***** 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
- colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次或1次)
- [ABC]:匹配 […] 中的所有字符
- [^ABC]:匹配除了 […] 中字符的所有字符
- [A-Z]:[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母
- .:匹配除换行符(n、r)之外的任何单个字符
- w:匹配字母、数字、下划线。等价于 [A-Za-z0-9_]



