月伴飞鱼

其他

Spring奇技淫巧之扩展点的应用

❝最近在看公司项目和中间件的时候,看到一些Spring扩展点的使用,写篇文章学习下,对大家之后看源码都有帮助❞「首先先介绍下Bean的生命周期」我们知道Bean的生命周期分为几个主干流程Bean(单例非懒加载)的实例化阶段Bean的属性注入阶段Bean的初始化阶段Bean的销毁阶段下面是整个Spring容器的启动流程,可以看到除了上述几个主干流程外,Spring还提供了很多扩展点下面详细介绍下Spring的常见的扩展点Spring常见扩展点「BeanFactoryPostProcessor#postProcessBeanFactory」有时候整个项目工程中bean的数量有上百个,而大部分单测依赖都是整个工程的xml,导致单测执行时需要很长时间(大部分时间耗费在xml中数百个单例非懒加载的bean的实例化及初始化过程)解决方法:利用Spring提供的扩展点将xml中的bean设置为懒加载模式,省去了Bean的实例化与初始化时间public
2021年4月10日
其他

面试题:Kafka如何保证高可用?有图有真相

上次面试多次被问到一个问题:❝Kafka如何保证高可用的?❞「下面来跟大家分享下当时我答到的点」什么是高可用「高可用性」,指系统无间断地执行其功能的能力,代表系统的可用性程度Kafka从0.8版本开始提供了高可用机制,可保障一个或多个Broker宕机后,其他Broker能继续提供服务备份机制Kafka允许同一个Partition存在多个消息副本,每个Partition的副本通常由1个Leader及0个以上的Follower组成,生产者将消息直接发往对应Partition的Leader,Follower会周期地向Leader发送同步请求同一Partition的Replica不应存储在同一个Broker上,因为一旦该Broker宕机,对应Partition的所有Replica都无法工作,这就达不到高可用的效果所以Kafka会尽量将所有的Partition以及各Partition的副本均匀地分配到整个集群的各个Broker上「如下图举个例子:」ISR机制「ISR
2021年4月6日
其他

写出好的Join语句,前提你得懂这些

前言最近在读《MySQL性能调优与架构设计》,看到一个关于join的优化原则,如下:大白话解释下:因为驱动结果集越大,意味着需要循环的次数越多,也就是说在被驱动结果集上面所
2020年12月12日
其他

条件语句的多层嵌套问题优化,助你写出不让同事吐槽的代码

语句拓展性和多层嵌套问题。可以通过卫语句、枚举、状态模式、策略+工厂模式等方式解决,如果大家有更好的方案,可以和我交流
2020年11月23日
其他

常用的Lambda表达式案例解析,工作中都会用到

Integer.valueOf(s)).collect(Collectors.toList());
2020年11月22日
其他

记一次集合去重导致的线上问题

组合更加灵活,可以任意的组合现有的基础类,并且可以在基础类方法的基础上进行扩展、编排等,而且方法命名可以任意命名,无需和基础类的方法名称保持一致。
2020年11月15日
其他

ReentrantLock核心原理,绝对干货

是非公平锁,也就是说每当锁匙放的时候,所有等待锁的线程并不会按照排队顺去依次获得锁,而是会再次去争抢锁。ReentrantLock
2020年11月8日
其他

聊聊JIT是如何影响JVM性能的

这篇文章中我们主要看了方法内联、逃逸分析等概念,了解到一些方法在被优化后,对象并不一定是在堆上分配的,它可能在被标量替换后,直接在栈上分配。这几个知识点也是在面试中经常被问到的。
2020年10月31日
其他

ConcurrentHashMap核心原理,这次彻底给整明白了

415的二进制高位都为0,低位都是1。那么经过&计算后,hash值100的高位全部被清零,低位则保持不变,并且一定是小于(n-1)的。也就是说经过如此计算,通过hash值得到的数组下标绝对不会越界。
2020年10月25日
其他

最完整的Explain总结,SQL优化不再困难

t2;一般来说,这些访问方法按照我们介绍它们的顺序性能依次变差。其中除了All这个访问方法外,其余的访问方法都能用到索引,除了index_merge访问方法外,其余的访问方法都最多只能用到一个索引。
2020年10月18日
其他

MySQL存储引擎如何完成一条更新语句的执行

优点,纯内存操作速度快,缺点,redo日志没有落地磁盘,如果提交事务的一瞬间,MySQL宕机,那么如果是修改数据,内存数据没了,磁盘也没来的及更新,就丢失了本次修改操作。
2020年10月5日
其他

Redis延时队列,这次彻底给你整明白了

String.valueOf(System.currentTimeMillis()));Redis延时队列优势Redis用来进行实现延时队列是具有这些优势的:
2020年9月13日
其他

高性能无锁并发框架Disruptor,太强了

Disruptor是一个开源框架,研发的初衷是为了解决高并发下队列锁的问题,最早由LMAX提出并使用,能够在无锁的情况下实现队列的并发操作,并号称能够在一个线程里每秒处理6百万笔订单
2020年9月8日