前言

当Ridis被用作缓存时,我们添加新数据后可以很方便的删除旧数据。这种行为在开发过程中十分常见,这种行为是内存型数据库的默认行为。

当然,数据库对旧数据进行处理的前提是我们的数据存储达到了设定的值。

在Redis中,LRU(Less Recently Used)是比较常用的数据淘汰策略,其方式就是当内存达到指定值时,清除一部分当前较少被使用(Less Recently Used)的数据。

阅读全文 »

前言

今天我们来介绍一款非常优秀的实体对象映射工具,MapStruct

在开发的时候我们会看到业务代码之间有很多的JavaBean之间的相互转化,非常影响美观,但是又不得不存在。

通常的JavaBean处理方法是通过Spring或者Apache提供的BeanUtils工具,而对于一些不匹配的属性,通过get/set方法解决。

阅读全文 »

前言

再说这三个工具时,需要先了解一下AQS框架,所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLockSemaphoreCountDownLatchCyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。

我们这篇文章先了解下这三个AQS框架工具类,后面在整体入手了解AQS框架的一些特点及源码。

无论是这几个工具类,还是AQS框架,都是JDK1.5之后出现的,位于java.util.concurrent包下,是由著名的Doug Lea操刀实现并完成设计的。

阅读全文 »