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

做外贸找客户最好用的网站seo排名优化方式

做外贸找客户最好用的网站,seo排名优化方式,wordpress调用头部,阳江网站建设一,延迟任务应用场景? 一般用于处理订单,将redis中的数据延迟存入数据库,实现异步存储减少DB的压力 二, 延迟任务的实现方案有很多 DelayQueue Redisson MQ 时间轮 原理 JDK自带延迟队列,基于阻塞队列…

一,延迟任务应用场景?


一般用于处理订单,将redis中的数据延迟存入数据库,实现异步存储减少DB的压力

二, 延迟任务的实现方案有很多


DelayQueue

Redisson

MQ

时间轮

原理

JDK自带延迟队列,基于阻塞队列实现。

基于Redis数据结构模拟JDK的DelayQueue实现

利用MQ的特性。例如RabbitMQ的死信队列

时间轮算法

优点

  • 不依赖第三方服务

  • 分布式系统下可用

  • 不占用JVM内存

  • 分布式系统下可以

  • 不占用JVM内存

  • 不依赖第三方服务

  • 性能优异

缺点

  • 占用JVM内存

  • 只能单机使用

  • 依赖第三方服务

  • 依赖第三方服务

  • 只能单机使用

三,延迟任务的原理


 1,DelayQueue的源码

public class DelayQueue<E extends Delayed> extends AbstractQueue<E>implements BlockingQueue<E> {private final transient ReentrantLock lock = new ReentrantLock();private final PriorityQueue<E> q = new PriorityQueue<E>();// ... 略
}
  •  DelayQueue实现了BlockingQueue接口,是一个阻塞队列。队列就是容器,用来存储东西的.
  • DelayQueue的泛型定义

    • <E extends Delayed> 

  • 这说明存入DelayQueue内部的元素必须是Delayed类型

 进一步查看Delay接口

public interface Delayed extends Comparable<Delayed> {/*** Returns the remaining delay associated with this object, in the* given time unit.** @param unit the time unit* @return the remaining delay; zero or negative values indicate* that the delay has already elapsed*/long getDelay(TimeUnit unit);
}

看完之后我们先不管 ,继续看他的父类Comparable<Delayed>

里面有一个方法,用于比较大小

2,从源码中可以看出,Delayed类型必须具备两个方法:

  • getDelay():获取延迟任务的剩余延迟时间

  • compareTo(T t):比较两个延迟任务的延迟时间,判断执行顺序

    • 根据源码中的注解可以看出

      • zero or negative values indicate * that the delay has already elapsed

      • 零或者负值表示延迟已经过去

四,DelayQueue的用法


1,定义一个延迟任务的工具类

package com.tianji.learning.utils;import lombok.Data;import java.time.Duration;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;@Data
public class DelayTask<D> implements Delayed {private D data;    //用于存放延迟任务的数据private long deadlineNanos;    //延迟任务延迟到什么时候/***    delayTime    延迟多长时间*/public DelayTask(D data, Duration delayTime) {this.data = data;//用当前时间和需要延迟的时间相加得到的结果就是延迟任务延迟结束的时间this.deadlineNanos = System.nanoTime() + delayTime.toNanos();}/***    这个方法是用于获取延迟任务的剩余时间*/@Overridepublic long getDelay(TimeUnit unit) {return unit.convert(Math.max(0, deadlineNanos - System.nanoTime()), TimeUnit.NANOSECONDS);}//将队列中的延迟任务的剩余时间进行比较,然后进行排队@Overridepublic int compareTo(Delayed o) {long l = getDelay(TimeUnit.NANOSECONDS) - o.getDelay(TimeUnit.NANOSECONDS);if(l > 0){return 1;}else if(l < 0){return -1;}else {return 0;}}
}

2,使用延迟队列

// 1.初始化延迟队列
DelayQueue<DelayTask<String>> queue = new DelayQueue<>();
// 2.向队列中添加延迟执行的任务                        //当前延迟时间是Second
queue.add(new DelayTask<>("延迟任务数据,可以是方法", Duration.ofSeconds(延迟时间)));
// 3.尝试执行任务
DelayTask<String> task = queue.take();
//执行延迟队列中的任务
task.getData()

http://www.ds6.com.cn/news/52372.html

相关文章:

  • 丽水微信网站建设哪家好网络整合营销的特点有
  • wordpress图片幻灯片seo有什么作用
  • 宿州市做网站的公司最新网络营销方式有哪些
  • 网站备案服务号信息流推广方式
  • wordpress幻灯片满屏深圳网站优化排名
  • 国家建设部官方网站百度人工服务24小时
  • wix做网站流程网店代运营公司
  • 怎么用ps做网站超链接百度广告推广费用一年多少钱
  • wordpress 点击文章图片路径谷歌seo网站推广怎么做
  • 这几年做网站怎么样鱼头seo软件
  • 网站开发中常见的注册界面广州seo网站排名
  • 分销网站建设注册公司网站
  • 设计wordpress主题下载地址seo外链发布平台有哪些
  • 网站的页面设计百度上怎么打广告宣传
  • 免费一级域名和空间百度关键词优化有效果吗
  • 做一个交易网站多少钱seo推广排名
  • 免费咨询法律问题的网站聚合搜索引擎入口
  • 男女做暖暖试看网站上海优化seo
  • 大连开发区规划建设局网站广告多的网站
  • 贸易网站建设案例seo实战指导
  • 微网站制作需要多少钱百度一下你就知道首页官网
  • 抚州网站制作百度免费发布信息
  • 网络推广网站培训班网站关键词快速优化
  • 买了网站 怎么做呢域名注册商怎么查
  • 本科学院网站建设方案手机网络优化软件
  • 晋中做网站软件推广赚钱一个10元
  • 那些企业网站做的漂亮网站推广与优化平台
  • 哪里网站建设联系网站制作论文
  • 响应式建站工具百度关键词seo排名软件
  • 如何把自己做的网站放到内网免费网站或软件