5.23 学习记录

225 阅读3分钟

学习笔记

公司项目实习

@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);
      }
}