缓存雪崩同一时间大量redis缓存数据失效,造成大量请求涌入数据库,数据库压力增大崩掉解决方案缓存过期时间加随机值增加过期表示,缓存过期后,自动更新缓存缓存穿透缓存和数据库中都没有的数据,每次查询都会透过缓存直接查库,最后返回空,疯狂查询这条不存在的数据时,数据库压力增大崩掉解决方案缓存空对象,数据库查询不存在,在redis中缓存结果布隆过滤器,过滤掉肯定不存在的结果缓存击穿缓存中没有但是数据库中有的数据(缓存中某个热点过期,数据还未载入缓存),大量请求涌入查询此热点,引起数据库压力增大崩掉解决
正向代理正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。浏览器中输入http://192.168.184.128/proxy_baidu/ 即可访问到百度主页用户想要访问某国外网站,该网站无法在国内直接访问,但是我们可以访问到一个代理服务器,这个代理服务器可以访问到这个国外网站。这样呢,用户对该国外网站的访问就需要通过代理服务器来转发请求,并且该代理服务器也会将请
事务失效的场景?权限问题,@Transactional 修饰的方法必须为public方法用final修饰或者是static方法,spring事务底层使用了aop,也就是通过jdk动态代理或者cglib,帮我们生成了代理类,在代理类中实现的事务功能。但如果某个方法用final修饰了,那么在它的代理类中,就无法重写该方法,而无法添加事务功能。方法内部调用 如果在某个Service类的某个方法中,调用另外一个事务方法,即在同一个类中的方法直接内部调用,事务会失效。m1中通过this的方式调用了m2方法
ioc容器实际上就是个map(key,value),⾥⾯存的是各种对象(在xml⾥配置的bean节点、 @repository、@service、@controller、@component),在项⽬启动的时候会读取配置⽂件⾥⾯的 bean节点,根据全限定类名使⽤反射创建对象放到map⾥、扫描到打上上述注解的类还是通过反射创建 对象放到map⾥。 这个时候map⾥就有各种对象了,接下来我们在代码⾥需要⽤到⾥⾯的对象时,再通过DI注⼊ (autowired、resource等注解,xm
direct路由键和队列名完全匹配,才可以消费如果绑定时设置了routing key为”abc”,那么客户端提交的消息,只有设置了key为”abc”的才会投递到队列fanout还有一种不需要key的,叫做Fanout交换机,它采取广播模式,一个消息进来时,投递到与该交换机绑定的所有队列。topic符号“#”匹配路由键的一个或多个词,符号“*”匹配路由键的一个词。比如: topic.#那么这个队列会会接收topic开头的消息 &
什么是循环依赖? 很简单,就是A对象依赖了B对象,B对象依赖了A对象在Spring中,⼀个对象并不是简单new出来了,⽽是会经过⼀系列的Bean的⽣命周期,就是因为 Bean的⽣命周期所以才会出现循环依赖问题。当然,在Spring中,出现循环依赖的场景很多,有的场景 Spring⾃动帮我们解决了,⽽有的场景则需要程序员来解决Bean的⽣命周期指的就是:在Spring中,Bean是如何⽣成的?被Spring管理的对象叫做Bean。Bean的⽣成步骤Spring扫描class得到BeanDefini
使用zooker作为注册中心,将现有通过http调用的项目改造成dubbo调用公共项目规定接口public interface OrderService {
public String getOrderId();
}服务提供者配置dubbo.application.name=provider-application
dubbo.protocol.name=dubbo
dubbo.protoc
1. 下载安装包解压https://archive.apache.org/dist/zookeeper/2. 修改配置文件新建文件夹创建配置文件,修改路径配置文件参数详细介绍tickTime=2000 #zookeeper的时间配置中的基本单位(毫秒)
initLimit=10 #允许follower初始化连接到leader最大时间,它表示tickTime时间的倍数,即initLimit*tickTime
syncLimit=5 #允许follower与lead
概念面向切面编程,通过预编译和运行期间动态代理实现在不修改源代码的情况下给程序动态统一添加功能的技术思想就是把很多类中对象中横切问题点,从业务逻辑中分离出来,达到解耦的目的,增加代码的重用性,提高开发效率应用场景日志记录,异常处理,权限校验,缓存梳理,事物处理,数据持久化,效率检查,内容分发主要概念理解aspect切面,切面有切点和通知组成,即包括横切逻辑的定义和连接点的定义pointcut切点,每个类都拥有多个连接点,可以理解是连接点的集合joinpoint连接点,程序执行的某个特殊位置,如某
JDK7Data// 1.创建当前时间
Date d1 = new Date();
System.out.println(d1);
// 2.指定时间
Date d2 = new Date(1000L);
System.out.println(d2);
// 3.修改时间
d2.setTime(2000L);
System.out.println(d2);