分析代码遇到的知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nihaoa50/article/details/86293495

spring参数注解

@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) 被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串必须非空
@Range 被注释的元素必须在合适的范围内
@Valid Controller层要对实体类进行校验时,需要添加此注解

参数注解实例可参考:
spring后端接收参数注解


@requestparam和@requestbody的区别

参考文章:
@RequestParam与@RequestBody对比


Pagehelper源码理解


mySql执行计划

MySQL explain执行计划详解


mySql模糊搜索提高效率

有的博客上说是用mysql的LOCATE来进行模糊搜索效率会比LIKE高。有待测试。
具体真正提高模糊搜索效率的官方说明未找到。


@Transactional

简单掌握 Spring 中@Transactional 的使用
注解@Transactional的propagation属性介绍及代码展示

@Transactional详解(一)
@Transactional详解(二)


int和Integer的区别

  1. Integer是int的包装类,int则是java的一种基本数据类型
  2. Integer变量必须实例化后才能使用,而int变量不需要
  3. Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
  4. Integer的默认值是null,int的默认值是0

参考文章:
int和Integer的比较


FreeMarker使用

我们项目中用到的freemarker
在这里插入图片描述

扫描二维码关注公众号,回复: 6161277 查看本文章

FreeMarker官方中文手册
FreeMarker基础使用


StringBUffer、StringBuilder

String、StringBuffer与StringBuilder的区别及应用场景


java IO流原理、概念、操作流程学习。

看书,不要看博客。


String.format()的用法

String.format()的详细用法


Iterator,for,forEach

Iterator,for,forEach的遍历和效率
经过测试,Iterator不管在1万还是100万数量级下,遍历效率都比其他两种方式都来得低。
for遍历在1万以下元素里最快,如果元素在10万个以上,那么forEach就是最快的。
以上测试是基于博客中给出的例子,在本地进行测试的结果,并非一定正确,因为我们项目中可能数组、集合存储的元素不同,可能会影响到这三种方式遍历的效率。所以在项目中,有遍历到数据量大的数组或集合,还是应该要实地做下测试。


@Data

@Data注解的类,编译后会自动给我们加上下列方法:

  • 所有属性的get和set方法
  • toString 方法
  • hashCode方法
  • equals方法

@Controlleradvice

@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。
@ControllerAdvice 拦截异常并统一处理
Spring MVC之@ControllerAdvice详解


Lombok

了解Lombok


同步调用转换成异步消息交互的场景和原则

  1. 比如在买机票系统中,机票支付完成后需要通知出票系统出票、代金券系统发券。如果使用同步调用,那么出票系统、代金券系统宕机是会影响到机票支付系统。如果我们将同步调用替换成异步消息,机票支付系统发送机票支付成功的消息到消息中间件,出票系统、代金券系统从消息中间件订阅消息。这样一来,出票系统、代金券系统的宕机也就不会对机票支付系统造成任何影响了。
  2. 分清主次,主要的功能,对其他功能有影响的,要同步。对于主要功能没有影响的,就可以异步处理。如上面的机票问题,还有就是电商的支付,也是同一道理。
  3. 耗时较长的程序。如之前E行销生成保单。就是提交数据后,保存成功即返回,让生成保单的PDF文件异步来生成,因为这个保单生成耗时较长。

猜你喜欢

转载自blog.csdn.net/nihaoa50/article/details/86293495
今日推荐