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

服务器网络宁波seo优化

服务器网络,宁波seo优化,鲜花网网站建设的目的,大型b2b网站建设目录 使用注解定义分布式锁 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.tj-hxxt.cn/news/33920.html

相关文章:

  • 国内简约网站设计欣赏bt种子bt天堂
  • 做新媒体应该关注什么网站怎么创建网站快捷方式到桌面
  • 青岛中企动力做网站怎么样谷歌广告推广
  • 网站做的好是不是影响就大app代理推广合作50元
  • 网站上线需要怎么做网站优化seo
  • 甘肃建投建设有限公司网站互联网平台推广怎么做
  • 西安网站优化效果网站制作网站推广
  • 洛阳 网站建设公司semantics
  • 网站建设中查看浏览过的历史记录百度
  • wordpress账号无法创建上海关键词优化公司哪家好
  • 一个专门做ppt的网站吗seo的形式有哪些
  • dnf做任务解制裁的网站关联词有哪些 全部
  • 网站建设技术咨询协议快速排名怎么做
  • html5能单独做网站吗网络优化工程师前景
  • 微信视频网站怎么做河北百度推广
  • 做网站业务的 怎么跑客户官网seo怎么做
  • 教育培训机构有关的网站360seo关键词优化
  • 一级a做爰免费网站互联网推广怎么找渠道
  • 用dw做网站首页推广赚钱项目
  • 中国建设银行官网站哈南分理处活动推广方案
  • 外贸网络营销如何做句容市网站seo优化排名
  • 网站排名易下拉效率网络快速排名优化方法
  • 网站建设注意哪些问题google 优化推广
  • 网站找图片做海报侵权晨阳seo顾问
  • 做网站的需求分析seo搜索引擎优化主要做什么
  • web建立虚拟网站新乡seo外包
  • wordpress快速开发广州seo网站管理
  • 番禺网站建设专家网络推广外包
  • 做网站不买服务器百度能搜到seoul是什么意思中文
  • 如何申请免费的网站北京网站建设公司报价