@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
@Param注解:用注解来简化xml配置的时候(比如Mybatis的Mapper.xml中的sql参数引入),@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)。
@PathVariable 映射 URL 绑定的占位符
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
@PathVariable(“xxx”) 绑定到操作方法的入参中。
PageUtils:使用时,只需在service层中获取需要查询的记录总数,并提供当前页码(currentPage)以及每页显示记录条数(pageSize),用于创建PageUtils对象,然后再讲PageUtils中的当前页和每页记录数获取后作为分页查询条件,调用DAO层实现,获取集合数据,最后将集合数据存储到PageUtils对象,并返回。
@RequestBody
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。
在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
@Autowired
这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
VO(value object) 值对象:
通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由 GC 回收的。
解决百万并发查询 采用cache的方式 在redis层使用StringRedisTemplat添加缓存
添加缓存会带来
1、缓存穿透(查一个不存在的数据,直接穿过cache;解决方法:给cache层存一个空标志)
2、缓存雪崩(当百万数据来的时候,所有缓存时间刚好过期,百万请求同时查询数据库,数据库会崩;解决方法:每一个数据的过期时间随机)
3、缓存击穿(当百万请求同一个数据的时候,缓存过期时,数据库会瘫痪;解决方法:加一把锁,只允许一个请求通过,返回数据,存在缓存中)
synchronized ()
synchronized中文意思是同步,也称之为”同步锁“。
synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。
synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。
synchronized的作用主要有三个:
原子性:确保线程互斥地访问同步代码;
可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的“对一个变量unlock操作之前,必须要同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或assign操作初始化变量值” 来保证的;
有序性:有效解决重排序问题,即 “一个unlock操作先行发生(happen-before)于后面对同一个锁的lock操作”;
model.addAttribute:
往前台传数据,可以传对象,可以传List,通过el表达式 ${}可以获取到,
类似于request.setAttribute("sts",sts)效果一样。
谷粒商城 杂记
于 2022-04-18 23:12:57 首次发布