自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Spring注解源码解析

1. 前言最近看代码的时候,发现AnnotationConfigApplicationContext中的构造方法中,初始化了两个类:AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner。这两个类我觉的是构成JavaConfig以及注解方式的核心,所以想写一下对两个类的解析。2. AnnotatedBeanDefin...

2019-07-16 11:45:17 1837

原创 RabbitMQ如何保证消息的可靠性投递

RabbitMQ如何保证消息的可靠性投递目前来说,现在有两种方案实施:1.数据库持久化方案2.消息延迟投递方案数据库持久化方案流程:1.将业务订单数据和生成的Message进行持久化操作(一般情况下插入数据库,这里如果分库的话可能涉及到分布式事务)2.将Message发送到Broker服务器中3.通过RabbitMQ的Confirm机制,在producer端,监听服务器是否A...

2019-05-16 17:41:26 3057

原创 Rabbitmq死信队列

死信队列(DLX dead-letter-exchange)死信(1)消息被拒绝并且没有重新放到队列中(2)消息超时 (通过Arguments对象设置x-message-ttl Time To Live简称TTL)(3)超过队列长度限制的消息通过这种特性可以做延时队列。延时队列这里的延时队列可以通过两种方式来实现:(1)设置消息的有效时间(2)设置队列的有效时间,即消息没有被...

2019-05-15 11:29:00 314 1

原创 Redis如何大批量处理数据

情景(面试题)有些时候,Redis实例需要装载大量用户在短时间内产生的数据。该怎么做?分析如果我们直接循环要插入的数据,每一条数据通过set方法插入数据库,这势必会消耗大量的网络连接和耗时。解决方法1.管道(pipe)就是把n个命令通过一个pipe发送到服务器端,服务器端处理完成以后再返回一个响应结果。而一条一条set需要n次请求n次处理n次响应,而管道只要一次请求n次处理一次响应...

2019-02-22 17:28:17 3959

原创 Jdk动态代理

代理模式的本质:监控行为特征JDK动态代理实现1.接口角色:定义所有需要被监听行为2.接口实现类:定义实现被监听对象3.通知类:1)对次要业务进行具体实现2)通知JVM,当前被拦截的主要业务方法与次要业务方法应该如何绑定4.监控对象(代理对象)1)被监控实例对象2)需要被监控的行为3)具体通知类实例对象代码实现1.定义一个要监控的行为—>接口public int...

2019-02-22 11:35:02 154

原创 Cglib动态代理

Cglib动态代理简介cglib动态代理是通过字节码技术实现创建代理对象的一个技术。它跟jdk动态代理最大的区别就是不需要被代理类实现接口,但是无法final方法无法进行代理操作。代码实现1.需要监控行为处理的类实现MethodInterceptor接口public class MethodInvocationHander implements MethodInterceptor {...

2019-02-22 11:34:39 161

原创 ReetrantLock简单分析

ReetrantLock关键方法分析构造方法//非公平锁public ReentrantLock() { sync = new NonfairSync();}//可以通过传入的值确认非公平锁和公平锁public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();...

2019-01-29 09:41:04 355

原创 RabbitMQ简单介绍

RabbitMQ项目中的使用场景1.系统间解耦2.异步处理,提高性能3.流量削峰4.最终一致性问题在我们的支付系统中,主要是起系统解耦的作用。在通道计算平台中,起流量削峰作用。RabbitMQ采用的理由1.Exchange、Queue、Message都可以持久化,高可用性2.RabbitMQ支持消息确认机制,能报保证消息可靠传输和可靠消费。3.路由灵活4.集群部署,保证可靠...

2019-01-15 15:38:27 120

原创 Mybatis自定义类型转换器(TypeHander)

Mybatis自定义类型转换器使用场景:当我们实体类数据格式与数据库中格式不一致时,可以通过自定义类型转换器方式去转换我们想要的数据格式。使用方法1.实现TypeHander接口 public class FlagEnumHandler implements TypeHandler { /** * 根据方法名称可知,这个方法是在insert、...

2019-01-13 20:56:50 470

原创 ArrayList关键源码分析

ArrayList源码分析1.数据结构: 实现了List接口。 根据语义可知是由数组线性表;有序。 非线程安全,没有加锁,没有CAS处理。 2.全局变量 //1.默认长度 private static final int DEFAULT_CAPACITY = 10; //2.给空实例用的数组 private static final Object[] EMPTY_ELEMENT...

2019-01-11 15:08:22 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除