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

你学做网站学了多久c2c网站建站的标准

你学做网站学了多久,c2c网站建站的标准,需要前置审批的网站,品牌设计logo“ 在上一篇文章中介绍了动态配置定时任务#xff0c;其中的原理跟spring 定时任务注解Scheduled一样的#xff0c;都是通过线程池和定义执行时间来控制。来思考一个问题#xff0c;如果我们的定时任务在分布式微服务里面呢#xff1f;在分布式微服务里面一个微服务肯定可以… “ 在上一篇文章中介绍了动态配置定时任务其中的原理跟spring 定时任务注解Scheduled一样的都是通过线程池和定义执行时间来控制。来思考一个问题如果我们的定时任务在分布式微服务里面呢在分布式微服务里面一个微服务肯定可以有多个实例的在上一篇文章当中配置的定时任务就会有可能存在多个显然定时任务被多次执行并不是我们想要的结果这个时候我们的分布式锁机制就出现了”(分布式锁有很多实现方式以前我们都是使用synchronized来处理并发请求虽然也支持分布式但是总有一些业务不适合比如秒杀系统的多个商品同时开启秒杀同一时刻只能完成一件商品的减库存操作这样就造成了系统的性能瓶颈也不符合秒杀系统的设计思想。由于 synchronized 无法做到细粒度的控制从而引进了分布式锁分布式锁能够完成 synchronized 无法做到的点。下面我们要介绍的是基于redis的实现方式)。01—引入redis依赖引入springboot官方的redis依赖。引入一个hutool工具包的依赖功能很全的一个java工具包强烈推荐使用。dependency groupIdorg.springframework.bootgroupId artifactIdspring-boot-starter-data-redisartifactIddependencydependency groupIdcn.hutoolgroupId artifactIdhutool-allartifactId version5.3.2versiondependency02—基于redis实现怎么使用redis实现呢先来看下redis的两个命令。setnx如果key不存在就跟set一样的作用如果key存在则什么都不做getandset返回上一次的value并设置新的valueimport cn.hutool.core.util.StrUtil;import cn.hutool.log.StaticLog;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.stereotype.Component;/** * redis分布式锁 * * author zhongxiaojian * date 2020/4/17 **/Componentpublic class LockUtil { Autowired private StringRedisTemplate redisTemplate; /** * 加锁 * * param key 主键 * param value 当前时间超时时间 * return true or false */ public boolean lock(String key, String value) { Boolean lock redisTemplate.opsForValue().setIfAbsent(key, value); if (lock ! null lock) { return true; } String currentValue redisTemplate.opsForValue().get(key); //如果锁过期 if (!StrUtil.isEmpty(currentValue) Long.parseLong(currentValue) System.currentTimeMillis()) { String oldValue redisTemplate.opsForValue().getAndSet(key, value); if (StrUtil.isBlank(oldValue) || (!StrUtil.isEmpty(oldValue) oldValue.equals(currentValue))) { return true; } } return false; } /** * 解锁 * * param key 主键 * param value 当前时间超时时间 */ public void unlock(String key, String value) { try { String currentValue redisTemplate.opsForValue().get(key); if (!StrUtil.isEmpty(currentValue) currentValue.equals(value)) { redisTemplate.opsForValue().getOperations().delete(key); } } catch (Exception e) { StaticLog.error(redis分布式锁解锁异常{}, e.getMessage()); } }}在上一篇文章当中的代码中使用public class ScheduleTask implements Runnable { private static final int TIMEOUT 30000; private String id; private TaskService service; private String keyword; private LockUtil lockUtil; public String getId() { return id; } /** * param id 任务ID * param service 业务类 * param keyword 关键字参数 */ public ScheduleTask(String id, TaskService service,LockUtil lockUtil, String keyword) { this.id id; this.service service; this.lockUtil lockUtil; this.keyword keyword; } Override public void run() { String currentTime DateUtil.now(); long time System.currentTimeMillis() TIMEOUT; if (lockUtil.lock(id, String.valueOf(time))) { System.out.println(ScheduleTask start taskId: this.id time: currentTime); try { service.work(keyword); } catch (Exception e) { StaticLog.error(e.getMessage()); } finally { lockUtil.unlock(id, String.valueOf(time)); } } }}03—秒杀系统下的应用这里我们来解释一下为何在lock方法当中加上 “//如果锁过期” 后面的代码我们以商品秒杀系统举例比较好理解。假如我们不加上这段代码在加锁之后的业务流程抛出了一个异常且这个异常我们没有捕获并处理那么我们接下来的解锁操作是不会执行的这个时候我们的锁就变成了死锁我们就可以使用getandset命令来进行解锁举个?        现有B商品在参加秒杀活动假设一个购买B商品的线程发生了死锁此时currentValue 1这个时候购买B商品的两个线程同时调用了lock方法且value都等于2同时这两个线程都进入了锁过期的判断if (!StringUtils.isEmpty(currentValue) Long.parseLong(currentValue) 以上就是我们使用redis实现了分布式锁。如果你觉得小编写的对你有用的话就扶贫一下吧哈哈哈
http://www.pierceye.com/news/91543/

相关文章:

  • 分类信息系统网站模板口碑好的网站建设多少钱
  • 米粒网站建设网站开发项目费用预算
  • 12380网站建设的意见建议公司网站维护和更新属于哪个部门
  • 公众号做微网站吗做国外网站的站长
  • 现在网站优化app程序开发定制
  • 德阳网站怎么做seowordpress app 插件
  • 水文化建设网站网站排名优化公司哪家好
  • 网站图片的暗纹是怎么做的做家教中介 不建网站怎么做
  • 学校网站建设价格明细表淮安网站网站建设
  • 怎样做代刷网站长电子商务网站开发费用入账
  • 网站健设推广产品多少钱商业网站开发的实训小结怎么写
  • 优秀的网站建设推荐做百度推广是网站好还是阿里好
  • 响应式网站开发费用做不规则几何图形的网站
  • 西安网站建设优化集团门户网站建设不足
  • 深圳建网站的公企业做网站有什么用
  • wordpress插件 2017南宁seo排名外包
  • 在淘宝上开网店的详细步骤丹东网站seo
  • 网站建设外包公司招聘发帖子有哪些app平台
  • 网站风格发展趋势快设计
  • 稳定的网络建站咨询电话正规网站建设咨询电话
  • 请人代做谷歌外贸网站做购彩网站是怎么盈利的
  • 网站内链怎么删除wordpress如何下载
  • 深圳网站公司有了域名搭建网站详细步骤
  • 主机宝 建设网站怎么知道网站哪家公司做的
  • 1元做网站方案城乡建设住房建设厅官方网
  • 厦门网站网页设网页素材html
  • 活字格能开发企业网站吗商品门户网站解决方案
  • 网站虚拟主机内存不足能不能链接美工怎么做网站效果图
  • 网站版建设软件开发培训班有哪些
  • 舟山市城市建设档案馆网站武夷山景区网站建设特点