【导读】 手游加速器真的有用吗,下面是小编为你收集整理的,希望对你有帮助!手游加速器是有用的,手游加速器可以防掉线自动重连,还可以智能加速降延迟,针对游戏时WiFi、3G/4G等各种网络问题进行优化,防止掉线,让团战,PK,畅玩无阻。手游加速器是利用IDC资源,采用数据转发......
发布时间:2023-11-21 20:01:16
/**
* 分布式锁底层实现原理
* @return
*/
@GetMapping("distributedLock")
public Object distributedLock(){
String lockKey = "distributedLockKey";
//给每个线程都设置一个唯一标识,避免出现程序执行的时间超过设置的过期时间,导致其他线程删除了自己的锁
String clientId = UUID.randomUUID().toString();
try {
//添加过期时间保证线程运行到一半的时候,程序崩了,导致缓存中的key一直存在
Boolean result = redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.SECONDS);
if (!result) {
return "error_code";
}
// Todo 实现业务逻辑
redisTemplate.opsForValue().set(TestConstant.KEY_TEST,String.valueOf(System.currentTimeMillis()));
} finally {
//判断是不是自己的线程删除自己的锁
if (clientId.equals(redisTemplate.opsForValue().get(lockKey))) {
redisTemplate.delete(lockKey);
}
}
//Todo 当前代码未实现锁续命功能,锁续命功能:由于程序执行时间可能超过设置缓存中锁的过期时间,导致后续一部分业务未执行,一直被其他线程抢占,需要对锁进行续命,但是由于续命的时间不好确定,这个时候就需要单独开启子线程,定时任务不断的去判断当前锁,还在不在,如果不在了,说明业务已经执行完成了,如果还在,重新设置过期时间,一般而言,定时任务的时间为缓存设置的过期时间三分之一就可以了。
return "end";
}
/**
* 分布式锁底层实现原理
* @return
*/
@GetMapping("distributedLock")
public Object distributedLock(){
String lockKey = "distributedLockKey";
//给每个线程都设置一个唯一标识,避免出现程序执行的时间超过设置的过期时间,导致其他线程删除了自己的锁
String clientId = UUID.randomUUID().toString();
try {
//添加过期时间保证线程运行到一半的时候,程序崩了,导致缓存中的key一直存在
Boolean result = redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.SECONDS);
if (!result) {
return "error_code";
}
// Todo 实现业务逻辑
redisTemplate.opsForValue().set(TestConstant.KEY_TEST,String.valueOf(System.currentTimeMillis()));
} finally {
//判断是不是自己的线程删除自己的锁
if (clientId.equals(redisTemplate.opsForValue().get(lockKey))) {
redisTemplate.delete(lockKey);
}
}
//Todo 当前代码未实现锁续命功能,锁续命功能:由于程序执行时间可能超过设置缓存中锁的过期时间,导致后续一部分业务未执行,一直被其他线程抢占,需要对锁进行续命,但是由于续命的时间不好确定,这个时候就需要单独开启子线程,定时任务不断的去判断当前锁,还在不在,如果不在了,说明业务已经执行完成了,如果还在,重新设置过期时间,一般而言,定时任务的时间为缓存设置的过期时间三分之一就可以了。
return "end";
}
引入依赖:
org.redisson
redisson
3.6.5
启动类中注入bean对象:
@Bean
public Redisson redisson() {
// 此为单机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379").setDatabase(0);
return (Redisson) Redisson.create(config);
}
@Bean
public Redisson redisson() {
// 此为单机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379").setDatabase(0);
return (Redisson) Redisson.create(config);
}
实现分布式:
@Autowired
RedisTemplate redisTemplate;
@Autowired
private Redisson redisson;
/**
* 基于redisson实现高并发分布式锁
* @return
*/
@GetMapping("highConcurrencyDistributedLock")
public Object highConcurrencyDistributedLock(){
RLock redissonLock = redisson.getLock(TestConstant.HIGH_CONCURRENCY_DISTRIBUTED_LOCK);
try {
//加锁,实现了key设置,过期时间,锁续命功能
redissonLock.lock(); //redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.SECONDS);
// Todo 实现业务逻辑
redisTemplate.opsForValue().set(TestConstant.KEY_TEST,String.valueOf(System.currentTimeMillis()));
} finally {
//释放锁
redissonLock.unlock();
}
return redisTemplate.opsForValue().get(TestConstant.KEY_TEST);
}
@Autowired
RedisTemplate redisTemplate;
@Autowired
private Redisson redisson;
/**
* 基于redisson实现高并发分布式锁
* @return
*/
@GetMapping("highConcurrencyDistributedLock")
public Object highConcurrencyDistributedLock(){
RLock redissonLock = redisson.getLock(TestConstant.HIGH_CONCURRENCY_DISTRIBUTED_LOCK);
try {
//加锁,实现了key设置,过期时间,锁续命功能
redissonLock.lock(); //redisTemplate.opsForValue().setIfAbsent(lockKey, clientId, 30, TimeUnit.SECONDS);
// Todo 实现业务逻辑
redisTemplate.opsForValue().set(TestConstant.KEY_TEST,String.valueOf(System.currentTimeMillis()));
} finally {
//释放锁
redissonLock.unlock();
}
return redisTemplate.opsForValue().get(TestConstant.KEY_TEST);
}
钱姓排于百家姓中的第二位,虽然起源和来历并不多,但是钱姓人却分布广泛,成为了中国姓氏中的第二大姓。钱姓的主要来源就是彭祖的儿子篯孚,彭祖的真名叫做篯铿,是因为被尧封于大彭而得姓-彭,而他的儿子篯孚因为掌管着钱财,任职钱府上士,所以便为“钱”姓,所以彭钱是一家。...
发布时间:2024-09-20 20:03:27
胡服最早是由春秋战国时的赵武灵王-赵雍引入中原的,因为当时赵国的地形和地理位置都非常不好,常年深受战争威胁,加上赵武灵王继位之后,时局不稳,周边国家都想要攻打赵国,所以赵武灵王便下令让全员都推行胡服,并且学习骑射,相较于宽大的汉服更加便于行动。...
发布时间:2024-09-20 19:05:44
赛艇运动起源于英国的泰晤士河上,当时还是17世纪,英国泰晤士河上的船工在工作之余经常会举办一些赛船,久而久之就形成了一种习俗,在1715年的时候,为了庆祝英王的卫冕,所以第一次正式举办了赛艇比赛,最终在1775年发展为一个正式的运动项目,并且成立了相应的运动俱乐部。...
发布时间:2024-09-20 18:04:28
人们之所以不愿意或者不敢以“宸”为名,主要是因为在古时候“宸”有着“深邃的房屋”的意思,也就是专指皇帝的居住场所,象征着无上的权力,所以“宸”字自然也就成为了禁忌,不过现代人大多是害怕这个字的气势,普通人的命格扛不住。...
发布时间:2024-09-20 17:00:53
商细蕊是电视剧《鬓边不是海棠红》中的京剧名旦,很多人都为他和海归商人程凤台的知己故事而动容,但遗憾的是在历史长河中并没有商细蕊真正的原型,只能说他可能是作者根据历史上著名的京剧名旦构建的一个角色,因为他和梅兰芳、程砚秋、尚小云以及徐碧云等四人的经历和性格都有着极为相似之处。...
发布时间:2024-09-20 16:05:01
在中华上下五千年的历史长河中,除了王朝更替的政治生活与文化生活,还有一些美貌的女子点缀着历史的绘卷,那么在悠悠岁月中有哪些著名的美女呢?下面小编就来为大家盘点一下吧!...
发布时间:2024-09-20 15:04:04
谈及古代帝王,最让人津津乐道的当属那后宫佳丽三千,不过也不是所有的帝王都有那么充实的后宫,比如历史上有一位皇帝就只有一位妻子,是不是让人有点不敢相信,下面小编就带大家一起了解下吧!...
发布时间:2024-09-20 14:01:05
自古无情帝王家,说到帝王的爱情多是奢望,很多帝王后宫的妃子换了一个又一个,几乎都是薄情寡义的,但是漫长的历史长河中也有例外,有的皇帝便与众不同,特别的长情,下面小编来为大家介绍一下历史上最长情的皇帝吧!...
发布时间:2024-09-20 13:03:24
可以说人的成长伴随着无数的武侠剧,尤其是电视剧中的那些绝世高手更是让人影响深刻,有不少人小时候都幻想过可以武功盖世,一统江湖,那么有人知道武侠剧中有哪些绝世高手吗?下面小编为大家盘点一下吧!...
发布时间:2024-09-20 12:02:19
古装电视剧中有许多的美丽的女子,她们身着美丽的衣裳,一举一动摇曳生姿,美得让人挪不开双眼,可以说是一场视觉盛宴,下面就让小编为大家盘点一下那些古装美女吧!...
发布时间:2024-09-20 11:09:01
近年清朝古装剧收视率暴涨,这些电视剧不仅剧情引人入胜,身着清装的美人也同样吸引了不少目光,有着让人过目不忘的美貌,那么清朝古装剧中有哪些美人呢?下面小编就来为大家盘点一下吧!...
发布时间:2024-09-20 11:02:08
养龟市场上经常可以看到小青龟,这种乌龟乖巧可爱以及性情温顺,所以很多人都会选择小青龟来饲养,不过一直都是见到小青龟都比较小,这不禁令人好奇这种乌龟能长多大?下面小编就带大家一起了解一下小青龟吧!...
发布时间:2024-09-20 10:01:47