当前位置: 首页 > news >正文

网站备案号信息最好的网站推广

网站备案号信息,最好的网站推广,网站的关键词在哪里设置,网页设计代码文字浮动分布式锁&#xff0c;就是控制分布式系统中不同进程共同访问同一共享资源的一种锁的实现。 1、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.15.5</versio…

分布式锁,就是控制分布式系统中不同进程共同访问同一共享资源的一种锁的实现。
1、引入依赖

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.15.5</version></dependency>

2、配置文件

spring:data:redis:database: 1host: localhostport: 6379password: *********

3、配置类

package com.example.springboot3test.config;import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author DeyouKong* @description TODO* @date 2023/3/23 23:34*/@Configuration
public class RedissonConfig {@Value(value = "${spring.data.redis.host}")private String host;@Value(value = "${spring.data.redis.port}")private int port;@Value(value = "${spring.data.redis.database}")private int database;@Value(value = "${spring.data.redis.password}")private String password;/*** 单Redis节点模式配置方法* 其他配置參數,看:* <a href = "https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95#26-%E5%8D%95redis%E8%8A%82%E7%82%B9%E6%A8%A1%E5%BC%8F">* 单Redis节点模式配置方法* </a>** @return {@link RedissonClient}*/@Bean(destroyMethod = "shutdown")RedissonClient redisson() {Config config = new Config();//Redis多节点// config.useClusterServers()//     .addNodeAddress("redis://127.0.0.1:6379", "redis://127.0.0.1:7001");//Redis单节点SingleServerConfig singleServerConfig = config.useSingleServer();//可以用"rediss://"来启用SSL连接String address = "redis://" + host + ":" + port;singleServerConfig.setAddress(address);//设置 数据库编号singleServerConfig.setDatabase(database);singleServerConfig.setPassword(password);//连接池大小:默认值:64// singleServerConfig.setConnectionPoolSize()return Redisson.create(config);}}

4、测试代码

package com.example.springboot3test.controller;import jakarta.annotation.Resource;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/redission")
public class RedissionController {@Resourceprivate RedissonClient redissonClient;private final static String LOCK="I_AM_LOCK";@GetMapping("/list")public String getString(){// 1、获取一把锁,只要锁的名字一样,既是同一把锁RLock lock = redissonClient.getLock(LOCK);// 2、加锁//lock.lock(5, TimeUnit.SECONDS); // 阻塞式等待if(lock.isLocked()){//如果存在锁,则返回失败return "fail";}lock.lock();try {System.out.println(Thread.currentThread().getName()+":\t 获得锁");Thread.sleep(20000);} catch (Exception e) {e.printStackTrace();return "占用所";}finally {// 3、解锁lock.unlock();System.out.println(Thread.currentThread().getName()+":\t 释放锁锁");}return "OK";}
}

5、理解
一、时间设置
默认 lock() 小结
lock.lock ();
(1)默认指定锁时间为30s(看门狗时间)
(2)锁的自动续期:若是业务超长,运行期间自动给锁上新的 30s,不用担心业务时间过长,锁就自动过期
(3)加锁的业务只要运行完成,就不会给当前锁续期,及时不手动解锁,锁默认在30s 后自动删除。
指定时间 lock() 小结
问题:在锁到期的时候,不会自动续期。
(1)如果我们传递了锁的超时时间,就发送给 redis执行脚本,进行占锁,默认的超时时间既我们指的时间
(2)若是未指定锁的超时时间,就使用 30*1000【LockWatchdogTimeout看门狗的默认时间】
(3)只要占锁成功,就会启动一个定时任务【重新给锁设置过期时间,新的过期时间就是看门狗的默认时间】,每隔 10 s都会自动再次续到30s, internallockLeaseTime【看门狗时间/3s】
二、其他
1、互斥
在分布式高并发的条件下,我们最需要保证,同一时刻只能有一个线程获得锁,这是最基本的一点。

2、防止死锁
在分布式高并发的条件下,比如有个线程获得锁的同时,还没有来得及去释放锁,就因为系统故障或者其它原因使它无法执行释放锁的命令,导致其它线程都无法获得锁,造成死锁。所以分布式非常有必要设置锁的有效时间,确保系统出现故障后,在一定时间内能够主动去释放锁,避免造成死锁的情况。
6、读写锁
读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的。总结来说,读写锁的特点是:读读不互斥、读写互斥、写写互斥。
实现:首先要配置redis,见前面的博客

spring boot配置redis
读写锁代码

package com.example.springboot3test.controller;import jakarta.annotation.Resource;
import org.redisson.api.RLock;
import org.redisson.api.RReadWriteLock;
import org.redisson.api.RedissonClient;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;
import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/redission")
public class RedissionController {@Resourceprivate RedissonClient redissonClient;@Resourceprivate RedisTemplate redisTemplate;private final static String LOCK="I_AM_LOCK";// 并发写锁@GetMapping("/write")public String writeValue(){RReadWriteLock myLock = redissonClient.getReadWriteLock ("my_lock");RLock rLock = myLock.writeLock ( );rLock.lock ();String s = "";try {System.out.println ("写锁加锁成功..."+Thread.currentThread ().getId () );s= UUID.randomUUID ().toString ();Thread.sleep(20000);redisTemplate.opsForValue ().set ("writeValue",s);} catch (Exception e) {e.printStackTrace ();}finally {System.out.println ("写锁解锁成功..."+Thread.currentThread ().getId () );rLock.unlock ();}return s;}// 并发读锁@GetMapping("read")public String readValue(){RReadWriteLock myLock = redissonClient.getReadWriteLock ("my_lock");RLock rLock = myLock.readLock ( );rLock.lock ();String s = "";try {System.out.println ("读锁加锁成功..."+Thread.currentThread ().getId ());Thread.sleep(20000);s = (String) redisTemplate.opsForValue ().get ("writeValue");} catch (Exception e) {e.printStackTrace ( );}finally {System.out.println ("读锁解锁成功..."+Thread.currentThread ().getId () );rLock.unlock ();}return s;}
}
http://www.yayakq.cn/news/457582/

相关文章:

  • 工作室注册流程及需要的材料临沧seo
  • 婚纱网站布局ppt怎么做学网络营销有用吗
  • 建设银行官方个人网站wordpress 媒体播放
  • 一流的网站建设案例wordpress优化技巧
  • 怀化同城网站html网页制作怎么做
  • 怎么样黑进网站后台网站开发创建画布
  • 小众做的好的网站小程序商店下载
  • 做谱的网站山西省建设厅入晋备案网站
  • 北京网站制作设计公司排名ui设计和平面设计有什么区别
  • 网站建站网站 小说重庆房地产新闻
  • 公路建设网站遵义制作网站
  • 二手商品网站的设计与建设论文北京建设工程信息网官网入口
  • 二级域名iis建立网站婚庆5个坑
  • 专业网站构建如何入侵网站后台密码
  • 查询建设工程施工规范网站wap 网站 手机
  • 做网站买过域名之后域名注册好了怎么了做网站
  • 响应式网站建设的优势wordpress 英语
  • 如何ps做网站首页自己做的网站视频播放不了
  • 网站开发计入无形资产吗网站建设排名的公司
  • 哪些网站可以做店淘客黄页88的盈利模式
  • 安徽省工程建设信息官方网站做个网站多少钱 百度能查到的
  • 帝国手机网站cms系统企业网站建设需要资料
  • 网站seo在哪里设置更换网站程序
  • 可信网站认证哪里有河南省住房城乡建设厅官网
  • 微信公众平台运营包年seo和整站优化
  • 建设工程自学网站宜昌seo优化
  • 百度统计搜索词为什么有与网站不相关的词wordpress home index
  • 一般网站隐蔽点么么进h5游戏充值折扣平台
  • 政务门户网站建设思想怎样做网络推广wsyx挣钱
  • 专业网站制作公司采用哪些技术制作网站?工作心得体会感悟简短