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

有专业做网站的吗gre考网站建设选哪个公司

有专业做网站的吗gre考,网站建设选哪个公司,wordpress评价插件,花钱也可以哪些网站可以做推广广告前言 Redisson 在基于 NIO 的 Netty 框架上#xff0c;充分的利⽤了 Redis 键值数据库提供的⼀系列优势#xff0c;在Java 实⽤⼯具包中常⽤接⼝的基础上#xff0c;为使⽤者提供了⼀系列具有分布式特性的常⽤⼯具类。使得原本作为协调单机多线程并发程序的⼯具包获得了协调…前言 Redisson 在基于 NIO 的 Netty 框架上充分的利⽤了 Redis 键值数据库提供的⼀系列优势在Java 实⽤⼯具包中常⽤接⼝的基础上为使⽤者提供了⼀系列具有分布式特性的常⽤⼯具类。使得原本作为协调单机多线程并发程序的⼯具包获得了协调分布式多机多线程并发系统的能⼒⼤⼤降低了设计和研发⼤规模分布式系统的难度。同时结合各富特⾊的分布式服务更进⼀步简化了分布式环境中程序相互之间的协作。 1、redisson工作原理 2、看门狗原理 A服务先运行在运行B服务还没释放A的锁A就挂了会不会死锁呢 答没有导致死锁因为底层有看门狗机制 默认指定锁时间为30s看门狗时间 锁的自动续期若是业务超长运行期间自动给锁上新的 30s不用担心业务时间过长锁就自动过期 加锁的业务只要运行完成就不会给当前锁续期及时不手动解锁锁默认在30s 后自动删除。 3、spring boot与redisson的整合 3.1、添加库存服务 stock-service 3.2、添加依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2021.0.4.0/version/dependency--dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.19.1/version/dependency3.3、添加配置 3.3.1、单机 redisson:addr:singleAddr:host: redis://localhost:6379password: 123456database: 0pool-size: 103.3.2、集群 redisson:addr:cluster:hosts: redis://47.96.11.185: 6370,...,redis://47.96.11.185:6373password : 1234563.3.3、主从 redisson:addr:masterAndSlave:masterhost: redis : //47.96.11.185 : 6370slavehosts: redis://47.96.11.185: 6371,redis://47.96.11.185:6372password : 123456database : 03.4、配置RedissonClient 3.4.1、单机 /*** 配置RedissonClient*/ Configuration public class RedissonConfig {Value(${redisson.addr.singleAddr.host})private String host;Value(${redisson.addr.singleAddr.password})private String password;Value(${redisson.addr.singleAddr.database})private int database;Value(${redisson.addr.singleAddr.pool-size})private int poolSize;Beanpublic RedissonClient redissonClient(){Config config new Config();config.useSingleServer().setAddress(host).setPassword(password).setDatabase(database).setConnectionPoolSize(poolSize).setConnectionMinimumIdleSize(poolSize);return Redisson.create(config);} }3.4.2、集群 /*** 配置RedissonClient*/ Configuration public class RedissonConfig {Value(${redisson.addr.cluster.hosts})private String hosts;Value(${redisson.addr.cluster.password})private String password;/*** 集群模式** return*/Beanpublic RedissonClient redissonClient() {Config config new Config();config.useClusterServers().addNodeAddress(hosts.split([,])).setPassword(password).setScanInterval(2000).setMasterConnectionPoolSize(10000).setSlaveConnectionPoolSize(10000);return Redisson.create(config);} }3.4.3、集群 /*** 配置RedissonClient*/ Configuration public class RedissonConfig {Value(${redisson.addr.masterAndSlave.masterhost})private String masterhost;Value(${redisson.addr.masterAndSlave.slavehosts})private String slavehosts;Value(${redisson.addr.masterAndSlave.password})private String password;Value(${redisson.addr.masterAndSlave.database})private int database;/*** 主从模式** return*/Beanpublic RedissonClient redissonClient() {Config config new Config();config.useMasterSlaveServers().setMasterAddress(masterhost).addSlaveAddress(slavehosts.split([,])).setPassword(password).setDatabase(database).setMasterConnectionPoolSize(10000).setSlaveConnectionPoolSize(10000);return Redisson.create(config);} }3.5、Redisson的使用 获取锁 —— 公平锁和⾮公平锁 // 获取公平锁 RLock lock redissonClient . getFairLock ( skuId ); // 获取⾮公平锁 RLock lock redissonClient . getLock ( skuId );加锁 —— 阻塞锁和⾮阻塞锁 // 阻塞锁如果加锁成功之后超时时间为 30s 加锁成功开启看⻔狗剩 5s 延⻓过期时间 lock . lock (); // 阻塞锁如果加锁成功之后设置⾃定义 20s 的超时时间 lock . lock ( 20 , TimeUnit . SECONDS ); // ⾮阻塞锁设置等待时间为 3s 如果加锁成功默认超时间为 30s boolean b lock . tryLock ( 3 , TimeUnit . SECONDS ); // ⾮阻塞锁设置等待时间为 3s 如果加锁成功设置⾃定义超时间为 20s boolean b lock . tryLock ( 3 , 20 , TimeUnit . SECONDS );释放锁 lock . unlock ();应⽤示例 // 公平⾮阻塞锁 RLock lock redissonClient . getFairLock ( skuId ); boolean b lock . tryLock ( 3 , 20 , TimeUnit . SECONDS );减库存加锁案例 import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.concurrent.TimeUnit;RestController RequestMapping(/stock) public class StockController {Autowiredprivate RedissonClient redissonClient;GetMapping(/reduceStock)public void reduceStock(RequestParam String productId){// 获取⾮公平锁RLock lock this.redissonClient.getLock(stock: productId);// 阻塞锁如果加锁成功之后设置⾃定义 20s 的超时时间lock.lock(30, TimeUnit.SECONDS);System.out.println(加锁成功. Thread.currentThread().getName());try {TimeUnit.SECONDS.sleep(25);} catch (InterruptedException e) {e.printStackTrace();}finally {System.out.println(解锁成功. Thread.currentThread().getName());lock.unlock();}} }测试浏览器发起两次两次减库存 http://localhost:8099/stock/reduceStock?productId001 3.6、aop实现分布式锁 3.6.1、定义注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.concurrent.TimeUnit;Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface DistributeLock {/*** 参数下标* return*/int[] lockIndex() default {-1} ;/*** 锁的等待时间* return*/long waitTime() default 3000;/*** 时间单位* return*/TimeUnit timeUnit() default TimeUnit.MILLISECONDS; }3.6.2、定义切面 /*** 定义分布式锁的切面*/ Component Aspect public class DistributeLockAspect {Autowiredprivate RedissonClient redissonClient;Around(value annotation(lock))public void distibuteLock(ProceedingJoinPoint proceedingJoinPoint, DistributeLock lock){Signature signature proceedingJoinPoint.getSignature();StringBuilder stringBuilder new StringBuilder();//方法所属的类String declaringTypeName signature.getDeclaringTypeName();String name signature.getName();stringBuilder.append(declaringTypeName);stringBuilder.append(name);//获取调用方法的参数Object[] args proceedingJoinPoint.getArgs();int[] ints lock.lockIndex();if(args ! null) {final int length args.length;if (length 0) {//考虑下标越界for (int anInt : ints) {//把合法下标值放到sbif (anInt 0 anInt length){stringBuilder.append(JSON.toJSONString(args[anInt]));}}}}//将方法的信息转成md5作为锁的标识String key SecureUtil.md5(stringBuilder.toString());//获取锁RLock rLock redissonClient.getLock(key);//从注解获取时间单位TimeUnit timeUnit lock.timeUnit();//从注解等待时间long waitTime lock.waitTime();//执行业务代码try {//加锁rLock.tryLock(waitTime,timeUnit);System.out.println(成功加锁。 Thread.currentThread().getName());proceedingJoinPoint.proceed();} catch (Throwable e) {e.printStackTrace();}finally {//解锁rLock.unlock();System.out.println(成功解锁。 Thread.currentThread().getName());}} }注解的使用 DistributeLock(lockIndex {0,1},waitTime 3,timeUnit TimeUnit.SECONDS)
http://www.w-s-a.com/news/896294/

相关文章:

  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告
  • 深圳做商城网站视觉品牌网站建设
  • 永康电子商务网站建设弹幕网站怎么做
  • 百川网站企业做网站要注意哪些
  • 球迷类的网站如何做网站建设需要哪些素材
  • 请问有重庆有做网站吗电子政务系统网站建设的基本过程
  • 建设银行管方网站官网最新版cmsv6
  • 网站开发工程师需要会写什么深圳网站(建设信科网络)
  • 台州网站搭建网站建设需求计划
  • 网站app免费下载软件大全大连百度推广哪家好
  • 网站建设的面试要求iis做的网站手机怎么访问
  • 定州市住房保障和城乡建设局网站上海网站建设排行
  • 网站发帖百度收录网站改版后不收录
  • 昆明建设局网站号码网站开发 浏览器兼容性
  • 湖北专业网站建设大全室内设计联盟app下载
  • 网站建设的意义和作用江苏城市建设档案馆网站
  • 华为云速建站贴心的广州网站建设
  • 网页网站开发公司天津seo推广
  • 网站线框图用什么做共享门店新增礼品卡兑换模式
  • 互联网建站是什么seo服务公司上海
  • 象山县城乡建设局网站做网站客户要求分期