1.缓存穿透(redis和mysql都 不存在的数据) 查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。
解决方法:
1.缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存
优点:简单方便
缺点:消耗内存,可能会发生不一致的问题(不存在的数据存在了,但是缓存中未修改)
2.布隆过滤器
bitmap(位图): 相当于是一个以(bit)位为单位的数组,数组中每个单位只能存储二进制0或1
布隆过滤器作用: 布隆过滤器可以用于检索一个元素是否在一个集合中
优点:内存占用较少,没有多余key
缺点:实现复杂,存在误判
3.增强id的复杂度,避免被猜测id规律
4.做好数据的基础格式校验
5.加强用户权限校验
6.做好热点参数的限流
2.缓存击穿(热点访问并重建复杂的key失效) 热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
解决方法:
1.互斥锁
2.逻辑过期
3.缓存雪崩(大量key过期或者Redis ...
1.开发前准备1.1 支付宝沙盒配置1.1.1 注册支付宝开发者账号,进入开发者控制台 https://openhome.alipay.com/platform/developerIndex.htm
1.1.2 沙盒入口 https://open.alipay.com/develop/sandbox/app
将上面的APPID、支付宝网关消息、应用密钥和支付宝公钥保管好,下面会使用到。
2 集成沙盒支付2.1 再pom.xml文件中添加下面依赖12345678910<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-easysdk</artifactId> <version>2.2.0</version></dependency><dependency> <groupId>com.alipay.sdk</groupId> < ...
1.基本介绍1.1多态的理解 1.多态允许不同类型的对象对同一消息做出响应。在Java中,多态可以通过继承、接口和重学方法来实现。
2.其实就是一种能力——同一个行为具有不同的表现形式活形态;换句话说就是,执行一段代码,Java在运行时能根据对象的不同产生不同的结果。
1例子:比如有动物(Animal)之类别(Class), 而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有"叫()"之动作,而类别鸡会"啼叫()", 类别狗则会"吠叫()",则称之为多态。
3.具体来说,多态分为编译时多态和运行时多态。编译时多态也称为重载,是指在同一个类中定义了多个同名但参数不同的方法,编译器根据调用方法时传递的参数类型来匹配具体要调用的方法。运行时多态也称为重写,是指子类重写了父类的方法,当通过父类引用子类对象的方法是,会运行子类中重写的方法而不是父类中的方法。通过多态实现的代码更加灵活,易于扩展,降低了代码的耦合度。同时,多态也是面对对象编程中的一种基本原 ...
1.在RuoYi-Vue项目的ruoyi-common模块下的pom.xml加入jar依赖12345678910111213<!--mqtt依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-integration</artifactId> </dependency> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-stream</artifactId> </dependency> <depend ...