草庐IT

一下明白@GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解

全部标签

缓存 - 方法注解组件

缓存概述解决不同设备间速度不匹配问题。互联网分层架构:降低数据库压力,提升系统整体性能,缩短访问时间。高并发问题缓存并发(击穿):缓存过期后将尝试从后端数据库获取数据缓存穿透:不存在的key,请求直接落库查询缓存雪崩:缓存大面积失效,请求直接落库查询需求说明通过在方法上增加缓存注解,调用方法时根据指定key缓存返回数据,再次调用从缓存中获取可通过注解指定不同的缓存时长避免缓存击穿:缓存失效后使用互斥锁限制查库数量避免缓存穿透:对于null支持短时间存储避免缓存雪崩:可支持每个key增加随机时长一、SpringCache整合Redis实现利用SpringCache处理Redis缓存数据Sprin

缓存 - 方法注解组件

缓存概述解决不同设备间速度不匹配问题。互联网分层架构:降低数据库压力,提升系统整体性能,缩短访问时间。高并发问题缓存并发(击穿):缓存过期后将尝试从后端数据库获取数据缓存穿透:不存在的key,请求直接落库查询缓存雪崩:缓存大面积失效,请求直接落库查询需求说明通过在方法上增加缓存注解,调用方法时根据指定key缓存返回数据,再次调用从缓存中获取可通过注解指定不同的缓存时长避免缓存击穿:缓存失效后使用互斥锁限制查库数量避免缓存穿透:对于null支持短时间存储避免缓存雪崩:可支持每个key增加随机时长一、SpringCache整合Redis实现利用SpringCache处理Redis缓存数据Sprin

【Java面试】并发编程高频面试题,请你说一下你对Happens-Before的理解

“请你说一下你对Happens-Before的理解”你听到这个问题的时候,知道怎么回答吗?大家好,我是Mic,一个工作了14年的Java程序员。并发编程是面试过程中重点考察的方向,能够考察的方向有很多关于这个问题,我把高手回答整理到了15W字的面试文档里面大家可以私信我领取下面看看高手的回答。高手:首先,Happens-Before是一种可见性模型,也就是说,在多线程环境下。原本因为指令重排序的存在会导致数据的可见性问题,也就是A线程修改某个共享变量对B线程不可见。因此,JMM通过Happens-Before关系向开发人员提供跨越线程的内存可见性保证。如果一个操作的执行结果对另外一个操作可见,

【Java面试】并发编程高频面试题,请你说一下你对Happens-Before的理解

“请你说一下你对Happens-Before的理解”你听到这个问题的时候,知道怎么回答吗?大家好,我是Mic,一个工作了14年的Java程序员。并发编程是面试过程中重点考察的方向,能够考察的方向有很多关于这个问题,我把高手回答整理到了15W字的面试文档里面大家可以私信我领取下面看看高手的回答。高手:首先,Happens-Before是一种可见性模型,也就是说,在多线程环境下。原本因为指令重排序的存在会导致数据的可见性问题,也就是A线程修改某个共享变量对B线程不可见。因此,JMM通过Happens-Before关系向开发人员提供跨越线程的内存可见性保证。如果一个操作的执行结果对另外一个操作可见,

@Autowired注解 --required a single bean, but 2 were found出现的原因以及解决方法

@Autowired注解是spring用来支持依赖注入的核心利器之一,但是我们或多或少都会遇到requiredasinglebean,but2werefound(2可能是其他数字)的问题,接下来我们从源码的角度去看为什么会出现这个问题,以及这个问题的解法是什么?首先我们写一个demo来复现一下这个问题。首先我们有一个抽象类AbstractAutowiredDemo,两个实现类AutowiredDemo1,AutowiredDemo2。然后我们在AutowiredDemoController中通过@Autowired依赖注入AbstractAutowiredDemo。@RestControlle

@Autowired注解 --required a single bean, but 2 were found出现的原因以及解决方法

@Autowired注解是spring用来支持依赖注入的核心利器之一,但是我们或多或少都会遇到requiredasinglebean,but2werefound(2可能是其他数字)的问题,接下来我们从源码的角度去看为什么会出现这个问题,以及这个问题的解法是什么?首先我们写一个demo来复现一下这个问题。首先我们有一个抽象类AbstractAutowiredDemo,两个实现类AutowiredDemo1,AutowiredDemo2。然后我们在AutowiredDemoController中通过@Autowired依赖注入AbstractAutowiredDemo。@RestControlle

SpringMVC的常用注解

SpringMVC的常用注解1、@Controller@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVCController对象。2、@RequestMapping用于处理请求url映射的注解,可用于类或方法上。使用在类上:请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录使用在方法上:请求URL的第二级访问目录属性:1、name:相当于方法的注释,使方法更易理解2、value:指定请求的实际地址3、path:与value同义,两者都是用来作为映射使用的4、method:指定请求的method类型,GET、POST、PUT、DELETE等5、para

SpringMVC的常用注解

SpringMVC的常用注解1、@Controller@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVCController对象。2、@RequestMapping用于处理请求url映射的注解,可用于类或方法上。使用在类上:请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录使用在方法上:请求URL的第二级访问目录属性:1、name:相当于方法的注释,使方法更易理解2、value:指定请求的实际地址3、path:与value同义,两者都是用来作为映射使用的4、method:指定请求的method类型,GET、POST、PUT、DELETE等5、para

Spring中Transactional注解使用的心得

今天看黑马redis的课,里面讲到了一个事务注解不生效的问题。究其原因,就在于Spring中事务注解生效的条件。那么接下来就说一下自己的心得。查了一下资料,就是说如果想让@Transactional注解生效,那么就只有当被代理类对象调用它的事务方法时,事务注解才会起作用。那如何才能创建代理对象呢,这个Spring也帮我们做好了。只要使用注入bean的方式(也就是依赖注入的方式)去创建bean对象,该bean对象调用被@T注解了的方法,那么就会走代理类,从而@T注解就起作用了。以下说一下例子吧publicclassVoucherOrderServiceImplimplementsIVoucher

Spring中Transactional注解使用的心得

今天看黑马redis的课,里面讲到了一个事务注解不生效的问题。究其原因,就在于Spring中事务注解生效的条件。那么接下来就说一下自己的心得。查了一下资料,就是说如果想让@Transactional注解生效,那么就只有当被代理类对象调用它的事务方法时,事务注解才会起作用。那如何才能创建代理对象呢,这个Spring也帮我们做好了。只要使用注入bean的方式(也就是依赖注入的方式)去创建bean对象,该bean对象调用被@T注解了的方法,那么就会走代理类,从而@T注解就起作用了。以下说一下例子吧publicclassVoucherOrderServiceImplimplementsIVoucher