学习笔记
公司项目实习
@valid
注解介绍
@valid是spring框架自带一个注解,@Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能。
直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。
@Valid 注解类型的使用
@Null 限制只能为null
@NotNull 限制必须不为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future 限制必须是一个将来的日期
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Past 限制必须是一个过去的日期
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Past 验证注解的元素值(日期类型)比当前时间早
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
@Value
@value的作用
该注解的作用是将我们配置文件的属性读出来。
使用方式
主要有两种方式,在变量前用@value注解
- 第一种@Value(“${}”) 在{}填充配置文件中相对应的tag名,会自动对变量进行初始赋值。
page的使用
拓展内容
JVM的内存泄露
每日一题
题目
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
思路
由于不确定输入字符串的长度,因此无法采用循环遍历的方式,于是想到递归的方式,每个数字又代表不同的字母,因此还要考虑BFS。递归的原理很简单,在到达终点前,把每次遍历到的字符加入String,并传入下一次递归中;若已达到终点,即下标等于字符串长度,存入list后返回。
代码
if(digits.length() == 0 || digits == null) return new ArrayList<>();
Map<Character, String> map = new HashMap<>();
map.put('2', "abc");
map.put('3', "def");
map.put('4', "ghi");
map.put('5', "jkl");
map.put('6', "mno");
map.put('7', "pqrs");
map.put('8', "tuv");
map.put('9', "wxyz");
List<String> list = new ArrayList<>();
util("", digits, 0, list, map);
return list;
}
public void util(String s,String digits,int i, List<String> list, Map<Character, String> map ) {
if(i == digits.length()) {
list.add(s);
return;
}
String temp = map.get(digits.charAt(i));
for(int j = 0; j < temp.length() ; j++) {
util(s + temp.charAt(j), digits, i+1, list, map);
}
}