- 博客(10)
- 收藏
- 关注
原创 Spring注解源码解析
1. 前言 最近看代码的时候,发现AnnotationConfigApplicationContext中的构造方法中,初始化了两个类:AnnotatedBeanDefinitionReader和ClassPathBeanDefinitionScanner。 这两个类我觉的是构成JavaConfig以及注解方式的核心,所以想写一下对两个类的解析。 2. AnnotatedBeanDefin...
2019-07-16 11:45:17
1908
原创 RabbitMQ如何保证消息的可靠性投递
RabbitMQ如何保证消息的可靠性投递 目前来说,现在有两种方案实施: 1.数据库持久化方案 2.消息延迟投递方案 数据库持久化方案 流程: 1.将业务订单数据和生成的Message进行持久化操作(一般情况下插入数据库,这里如果分库的话可能涉及到分布式事务) 2.将Message发送到Broker服务器中 3.通过RabbitMQ的Confirm机制,在producer端,监听服务器是否A...
2019-05-16 17:41:26
3139
原创 Rabbitmq死信队列
死信队列(DLX dead-letter-exchange) 死信 (1)消息被拒绝并且没有重新放到队列中 (2)消息超时 (通过Arguments对象设置x-message-ttl Time To Live简称TTL) (3)超过队列长度限制的消息 通过这种特性可以做延时队列。 延时队列 这里的延时队列可以通过两种方式来实现: (1)设置消息的有效时间 (2)设置队列的有效时间,即消息没有被...
2019-05-15 11:29:00
367
1
原创 Redis如何大批量处理数据
情景(面试题) 有些时候,Redis实例需要装载大量用户在短时间内产生的数据。该怎么做? 分析 如果我们直接循环要插入的数据,每一条数据通过set方法插入数据库,这势必会消耗大量的网络连接和耗时。 解决方法 1.管道(pipe) 就是把n个命令通过一个pipe发送到服务器端,服务器端处理完成以后再返回一个响应结果。而一条一条set需要n次请求n次处理n次响应,而管道只要一次请求n次处理一次响应...
2019-02-22 17:28:17
4099
原创 Jdk动态代理
代理模式的本质:监控行为特征 JDK动态代理实现 1.接口角色:定义所有需要被监听行为 2.接口实现类:定义实现被监听对象 3.通知类: 1)对次要业务进行具体实现 2)通知JVM,当前被拦截的主要业务方法与次要业务方法应该如何绑定 4.监控对象(代理对象) 1)被监控实例对象 2)需要被监控的行为 3)具体通知类实例对象 代码实现 1.定义一个要监控的行为—>接口 public int...
2019-02-22 11:35:02
203
原创 Cglib动态代理
Cglib动态代理简介 cglib动态代理是通过字节码技术实现创建代理对象的一个技术。它跟jdk动态代理最大的区别就是不需要被代理类实现接口, 但是无法final方法无法进行代理操作。 代码实现 1.需要监控行为处理的类实现MethodInterceptor接口 public class MethodInvocationHander implements MethodInterceptor { ...
2019-02-22 11:34:39
210
原创 ReetrantLock简单分析
ReetrantLock关键方法分析 构造方法 //非公平锁 public ReentrantLock() { sync = new NonfairSync(); } //可以通过传入的值确认非公平锁和公平锁 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();...
2019-01-29 09:41:04
407
原创 RabbitMQ简单介绍
RabbitMQ项目中的使用场景 1.系统间解耦 2.异步处理,提高性能 3.流量削峰 4.最终一致性问题 在我们的支付系统中,主要是起系统解耦的作用。 在通道计算平台中,起流量削峰作用。 RabbitMQ采用的理由 1.Exchange、Queue、Message都可以持久化,高可用性 2.RabbitMQ支持消息确认机制,能报保证消息可靠传输和可靠消费。 3.路由灵活 4.集群部署,保证可靠...
2019-01-15 15:38:27
153
原创 Mybatis自定义类型转换器(TypeHander)
Mybatis自定义类型转换器 使用场景: 当我们实体类数据格式与数据库中格式不一致时,可以通过自定义类型转换器方式去转换我们想要的数据格式。 使用方法 1.实现TypeHander接口 public class FlagEnumHandler implements TypeHandler { /** * 根据方法名称可知,这个方法是在insert、...
2019-01-13 20:56:50
532
原创 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
172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅