- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 HashMap之keyset() 方法底层原理
HashMap之keyset() 方法底层原理获取HashMap所有的键,通常调用方法keyset()即可返回所有的key集合。那么keyset()的工作原理是什么?它真的会维护一个Set吗,当Map的键值对发生变化,就来更新这个Set?如果真的是这样,那么HashMap的性能将会大打折扣,并且存储空间的消耗也会翻倍。其实,HashMap采用了一种比较巧妙的方式实现keyset。源码如下: public Set<K> keySet() { Set<.
2021-03-31 18:09:08
1850
2
原创 redis键空间通知
键空间每个redis服务器默认有16个db,编号为0~15,db以字典的形式保存所有的键值对,这个字典就叫做键空间。redis操作set、get、del、flushdb、randomkey等,都是对键空间的操作,都会产生键空间通知。键空间通知是通过redis的发布订阅机制实现的,通过订阅键空间通知,可以对感兴趣的redis操作或者数据的变化进行监听。当有操作时,redis会固定向两个channel: __keyspace@<db>__:<key>(键空间通知)和__keyeve
2021-01-13 18:34:58
644
原创 redis发布订阅
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式。利用redis这两种场景的消息队列都能够实现。生产者消费者模式(PUSH/ BRPOP):生产者lpush将消息数据添加到list结构中,消费者通过rpop或者brpop消费消息,brpop是阻塞的方式,可以设置等待时长。如果有多个消费者同时监听该列表,只有一个能取到消息。发布者订阅者模式(PUB/SUB):发布者和订阅者通过channel频道解偶, 订阅者监听某个channel的消息,当发布者向该channel推送消息时
2021-01-13 18:34:12
190
原创 分布式定时任务调度平台TBSchedule技术介绍
1. 概述 TBSchedule是阿里开发的一款分布式任务调度平台,旨在将调度作业从业务系统中分离出来,降低或者是消除和业务系统的耦合度,进行高效异步任务处理,目前被广泛应用在阿里巴巴、淘宝、支付宝、京东、聚美、汽车之家、国美等很多互联网企业的流程调度系统中。TBSchedule调度平台关键字 TBSchedule有很多特性,包括批量任务,多主机,多线程,动态扩展,实时...
2018-05-30 16:49:06
5991
原创 分布式定时任务框架Uncode-Schedule技术介绍
1. 概述 Uncode-Schedule是一款分布式定时任务调度框架,是由个人开源的,目前还在更新中。Uncode-Schedule 是基于 zookeeper+quartz/springtask 的分布式任务调度组件,非常小巧,它的理念是uncode(无码),无需任何修改就可以使quartz/spring task具备分布式特性,确保所有任务在集群中不重复,不遗漏的执行。它的主要...
2018-05-30 16:28:01
1968
原创 分布式调度平台Elastic-Job失效转移功能的bug
试了各种办法模拟失效转移都不成功,仔细研究了源码,发现源码中有两个小bug。class JobCrashedJobListener extends AbstractJobListener { @Override protected void dataChanged(final String path, final Type eventType, final String data...
2018-05-29 17:02:35
1749
6
原创 分布式定时任务调度平台Elastic-Job技术详解
在我们的项目当中,使用定时任务是避免不了的,我们在部署定时任务时,通常只部署一台机器。部署多台机器时,同一个任务会执行多次。比如给用户发送邮件定时任务,每天定时的给用户下发邮件。如果部署了多台,同一个用户将发送多份邮件。只部署一台机器,可用性又无法保证。Elastic-Job框架可以帮助解决定时任务在集群部署情况下的协调调度问题,保证任务不重复不遗漏的执行。 Elas...
2018-05-29 16:53:04
19146
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人