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

flash 做网站手机怎么建网站

flash 做网站,手机怎么建网站,wordpress底栏,哪里专业做网站目录 使用注解定义分布式锁 Aop例子 retention 表示在什么时候可以用,runtime表示在运行期可以用 target表示可以用在哪些上面 inherited表示可以被继承 切点和切面类 重点是 pjp.proceed(args) 这个就是执行目标方法,下面的这一段没啥意思 也可…

目录

使用注解定义分布式锁 


Aop例子

retention 表示在什么时候可以用,runtime表示在运行期可以用

target表示可以用在哪些上面  inherited表示可以被继承  

 切点和切面类

重点是 pjp.proceed(args) 这个就是执行目标方法,下面的这一段没啥意思

也可以直接把注解写在切面注解上,但是注解名必须写在方法的参数上,保持一致

使用注解定义分布式锁 

package com.tianji.promotion.utils;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;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyLock {String name();long waitTime() default 1;long leaseTime() default -1;TimeUnit unit() default TimeUnit.SECONDS;
}

没有传过期时间,默认是-1  过期时间是30秒,传了过期时间 看门狗会失效

如何保证先获取锁然后事务在执行呢,事务本身的顺序就是很靠后的如果确实不放心可以实现order方法 ,order越小 优先级越高

但是这个锁类型是写死的,如何根据传入锁类型参数的不同生成不同的锁对象呢?

锁类型的枚举
public enum MyLockType {RE_ENTRANT_LOCK, // 可重入锁FAIR_LOCK, // 公平锁READ_LOCK, // 读锁WRITE_LOCK, // 写锁;
}

 

 redission不同锁类型的工厂

工厂模式,根据参数不同获取不同的对象,function是方法引用,apply就是去执行他具体的方法

里面使用了一个枚举map,比hashmap效率高一些

package com.tianji.promotion.utils;import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;import java.util.EnumMap;
import java.util.Map;
import java.util.function.Function;import static com.tianji.promotion.utils.MyLockType.*;@Component
public class MyLockFactory {private final Map<MyLockType, Function<String, RLock>> lockHandlers;public MyLockFactory(RedissonClient redissonClient) {this.lockHandlers = new EnumMap<>(MyLockType.class);this.lockHandlers.put(RE_ENTRANT_LOCK, redissonClient::getLock);this.lockHandlers.put(FAIR_LOCK, redissonClient::getFairLock);this.lockHandlers.put(READ_LOCK, name -> redissonClient.getReadWriteLock(name).readLock());this.lockHandlers.put(WRITE_LOCK, name -> redissonClient.getReadWriteLock(name).writeLock());}public RLock getLock(MyLockType lockType, String name){return lockHandlers.get(lockType).apply(name);}
}

 如果看不懂 ,可以不用 拉姆达表达式,获取的时候还是apply方法

 

锁失败策略

多线程争抢锁,大部分线程会获取锁失败,而失败后的处理方案和策略是多种多样的。目前,我们获取锁失败后就是直接抛出异常,没有其它策略,这与实际需求不一定相符。

 

策略模式

根据不同的策略选择使用不同的策略 ,,工厂模式是生成不同的对象 

http://www.fp688.cn/news/144546.html

相关文章:

  • 查询公司信息的网站百度seo关键词排名s
  • 网站如何做优化优秀软文案例
  • 蜡笔小新网页制作模板附子seo
  • 网站开发分类站长统计幸福宝2022年排行榜
  • cms(网站内容管理系统)有哪些流量精灵app
  • 小企业做网站有没有用国内十大搜索引擎
  • 购物网站设计毕业论文优化网站排名费用
  • 网站建设电脑和手机有区别吗西安网站建设维护
  • h5网站做微信公众号百度官网首页
  • 闸北做网站公司域名注册免费
  • 如何做新增网站备案北京网络营销推广
  • 四川纵川建设机械有限公司网站超级外链自动发布工具
  • 网站建设方法网络营销产品的首选产品
  • 哪些是+joomla做的网站关键词快速排名平台
  • 红色主题展馆设计推广优化关键词
  • 如何建设一个静态网站向日葵seo
  • 湛江网站推广优化seo营销策略
  • 网络外包服务公司seo研究中心官网
  • wordpress流程优化推广服务
  • 自己做的网站别人怎么访问搜收录网
  • 昆明做网站建设的公司排名重庆森林经典台词图片
  • 做动漫网站要多少钱武汉大学人民医院官网
  • 黄石网站建设(乐云践新)磁力天堂最新版地址
  • wordpress 网站工具栏上海专业排名优化公司
  • 查出网站的空间商网络营销的分类
  • 网站留言板怎么做b站黄页推广
  • 建一个门户网站要多少钱佛山网站建设
  • 网络公司办公室图片seo入门培训课程
  • 梧州网站开发seo搜索引擎优化是
  • 大连企业做网站做小程序的公司