摘要: LinkedBlockingQueue 是一个基于链表的有限队列(理论上它是无限的)。只支持一段入队,另一端出队。无阻塞对应LindedList,它们除了一个线程安全一个线程不安全以外,最大的区别是LinkedList可以放null值。 阅读全文
posted @ 2020-04-11 16:07 源码猎人 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 设计模式就是套路,是被坑了N遍之后总结出来的经验。项目中合理的运用设计模式可以巧妙的解决很多问题。当然设计模式也不是万能的,根据项目需要来使用,不要为了设计模式而做项目,这样做出来的项目太虚伪。 阅读全文
posted @ 2020-04-10 17:29 源码猎人 阅读(280) 评论(0) 推荐(0) 编辑
摘要: Redisson是一个在Redis的基础上实现的Java驻内存数据网格。它几乎提供了Redis所有工具,不仅封装Redis底层数据结构,而且还提供了很多Java类型映射。Redisson支持redis单实例、redis哨兵、redis cluster、redis master-slave等各种部署架构。Redisson除了普通分布式锁还支持 联锁(MultiLock),读写锁(ReadWriteLock),公平锁(Fair Lock),红锁(RedLock),信号量(Semaphore),可过期性信号量(PermitExpirableSemaphore)和闭锁(CountDownLatch)等。Redisson 虽然功能强大但是它依然不能解决分布式锁有可能锁不住的情况,这不是Redisson或者Redis的问题(目前遇到这种问题只能人工干预)。本篇主要是平时工作中使用对Redisson分布式锁的封装 阅读全文
posted @ 2020-04-09 23:12 源码猎人 阅读(1576) 评论(0) 推荐(0) 编辑
摘要: ArrayBlockingQueue是一个由数组结构组成的有界队列。此队列按照先进先出的顺序进行排序。支持公平锁和非公平锁,默认非公平锁。 阅读全文
posted @ 2020-04-09 17:10 源码猎人 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 整体思想基于经典MQ事务处理的二次封装,其中发送、接收消息表会侵入业务,这里使用消息中间件是 RabbitMQ。你也可以替换成RocketMQ。每个服务固定一个队列专门用来接收消息驱动发过来的消息,如果你的服务只发送不接收消息,那么只需要建立发送表就可以,如果即发送又接收那么两个表都要建,只接收消息可以只建立接收表。消费端,每种业务处理都是一个处理器,必须实现处理器ReceiveHandle接口,业务处理器自动会成为伪观察者监听消息。 阅读全文
posted @ 2020-04-09 15:39 源码猎人 阅读(303) 评论(0) 推荐(0) 编辑
摘要: Queue、Deque 前面已经分析过,它们不是线程安全的,如果非要在多线程中使用Queue或Deque,那么只能把整个队列对象锁住,操作完成在释放锁,这样非常消耗性能,就算多个线程操作不同的元素也要锁整个队列想想都恐怖,有没有更好的办法?JDK中提供了阻塞队列BlockingQueue、BlockingDeque专门用来解决多线程使用队列问题。 阅读全文
posted @ 2020-04-09 12:56 源码猎人 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 技术管理要求既懂技术,又会管理。一个优秀的技术加管理人员,往往是先具备了一项能力,而后再学习另外一种能力。受个人的专长、能力、爱好等主观因素的制约,但并不是所有人员都能转变为技术加管理人员,也不是所有人员都必须转变为技术管理人员。每个人都必须要有清晰的自我认知,技术不一定都要转向技术管理,转向技术管理的原因一定是自己更适合做管理。 阅读全文
posted @ 2020-04-08 15:10 源码猎人 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 优先级队列只支持从一段取数据,内部结构是数组,但是必须符合二叉堆,每次取数据都会伴随上移下移,如果我们元素不不需要排序,有没有更好的队列呢?ArrayDeque 就能满足这个需要,并且它可以在两端方数据和取数据,内部也是用数组实现。 阅读全文
posted @ 2020-04-07 15:05 源码猎人 阅读(307) 评论(0) 推荐(0) 编辑
摘要: PriorityQueue 一个基于优先级的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法,每次出队的元素都是优先级最高的元素。该队列不允许使用 null 元素也不允许插入不可比较的对象(没有实现Comparable接口的对象)。 阅读全文
posted @ 2020-04-06 21:36 源码猎人 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 为什么说它特殊,从类图上就可以看出来,它是List、Queue(Deque继承Queue)的实现,相比ArrayList多实现了Deque接口而少实现了RandomAccess接口,从名字就可以看除内部使用链表结构 阅读全文
posted @ 2020-04-06 18:18 源码猎人 阅读(167) 评论(0) 推荐(0) 编辑