logo头像

不忘初心 方得始终

后端

JVM缓存之Caffeine

JVM缓存之Caffeine

引言Caffeine是一个高性能、高命中率、低内存占用的的本地缓存。它是Guava的加强版,Caffeine使用Window TinyLfu (最近最少频率使用)算法,提供了近乎最佳的命中率。…

Spring之循环依赖

Spring之循环依赖

引言在Spring框架中,针对Bean之间的循环依赖,Spring通过三级缓存的机制已经解决和规避了部分场景Bean的循环依赖。但是仍需了解Spring解决循环依赖的原理和注意Spring无法解决循环依赖的场景,避免出现此类问题。…

Spring之FactoryBean

引言FactoryBean 与 BeanFactory名字很像,很容易搞混。但其实它们两个是完全不一样的东东。…

分布式数据库和缓存双写一致性解析

引言缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,都是按照先从缓存中读取,缓存中不存在再从数据库加载同时存入缓存的流程操作。但是在更新缓存方面,对于更新完数据库,是更新缓存还是删除缓存。又或是先删除缓存再更新数据库,其实都有很大的争议。 …

数据库主从不一致

引言在开发过程中,进场遇到数据库主从分离来降低读写的压力,但是数据库主从同步是有延时的,这里聊一聊数据库主库与从库的一致性问题。 …

计算密集型 VS IO密集型

引言  在开发过程中,经常会遇到多线程的问题,解决多线程的其中一种方式就是利用线程池,其中需要开启线程的数量便成为了我们关注的焦点。JAVA中有两种并发类型:计算密集型(CUP-bound)和IO密集型(I/O-bound)。…

深入理解Spring

引言Spring在当前Java项目开发中可谓是核心,无论是SpringMVC、SpringBoot、SpringCloud都离不开Spring这个核心。自己对Spring的了解也停留在一知半解状态。…

说说Spring中的事务

引言在开发过程中,合理的使用事务是非常重要的。使用事务常常是为了维护高度的数据完整性和一致性。如果不关心数据的质量,就不必使用事务。毕竟,Java平台中的事务支持会降低性能,引发锁定问题和数据库并发性问题,而且会增加应用程序的复杂性。最近在面试中也是频频出现,在这里回顾加深一下。…

JAVA并发之锁

引言锁作为并发共享数据,保证一致性的工具,数据库中有悲观锁、乐观锁等实现。在JAVA平台同样有多种实现(如 synchronized和Lock)。这些已经写好提供的锁为开发提供了便利,让我们有了更多的选择。 …

Redis数据过期策略

引言Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制。为了防止一次性清理大量过期Key导致Redis服务受影响,Redis只在空闲时清理过期Key。 …