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

北京网站优化平台做电商怎么找货源

北京网站优化平台,做电商怎么找货源,微网站建设价格,网页设计的网站推荐Reactive响应式编程系列#xff1a;解密Lettuce如何实现响应式_lettuce原理_飞向札幌的班机的博客-CSDN博客Reactive响应式编程系列#xff1a;解密Lettuce如何实现响应式_lettuce原理_飞向札幌的班机的博客-CSDN博客上面两篇文章也许介绍的内容过细#xff0c;导致无法清晰…Reactive响应式编程系列解密Lettuce如何实现响应式_lettuce原理_飞向札幌的班机的博客-CSDN博客Reactive响应式编程系列解密Lettuce如何实现响应式_lettuce原理_飞向札幌的班机的博客-CSDN博客上面两篇文章也许介绍的内容过细导致无法清晰的表述如何将一个“事件驱动”的框架例如Netty简单的接入到响应式流程中来于是我这边给出一个最简Demo供大家理解简单模拟Lettuce中支持Reactive的方式 import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers;import java.util.Random; import java.util.UUID; import java.util.concurrent.DelayQueue; import java.util.concurrent.Delayed; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit;/*** 模拟Lettuce中支持Reactive的方式** author yizhenqiang* date 2023/8/15 23:53*/ public class LettuceSimulateStudy {// 模拟redis应答的延迟队列private static final DelayQueueDelayedElement redisResponseQueue new DelayQueue();private static final ExecutorService acceptExecutorService Executors.newSingleThreadExecutor();public static void main(String[] args) {// 先启动监听并模拟Redis 应答的流程acceptExecutorService.execute(() - {while (true) {try {DelayedElement delayedElement redisResponseQueue.poll(100, TimeUnit.MILLISECONDS);if (null delayedElement) {continue;}Schedulers.parallel().schedule(delayedElement::mockResponse);} catch (InterruptedException e) {}}});// 这里模拟并发进行redis get操作虽然是for循环串行但实际处理时是事件驱动多线程的int times 1000;while (times-- 0) {redisGet(abc).subscribe(value - System.out.println(Thread.currentThread().getName() 收到应答 value));}}/*** 模拟redis的get** param key* return*/static MonoString redisGet(String key) {return Mono.from(new RedisPublisher(new RedisCommand(key, get))).doOnSubscribe(subscription - {System.out.println(Thread.currentThread().getName() 开始处理请求);}).subscribeOn(Schedulers.parallel());}private static class RedisPublisher implements PublisherString {private RedisCommand redisCommand;public RedisPublisher(RedisCommand redisCommand) {this.redisCommand redisCommand;}Overridepublic void subscribe(Subscriber? super String subscriber) {redisCommand.setSubscriber(subscriber);subscriber.onSubscribe(new RedisSubscription(this));}public void sendRedisReq() {redisCommand.sendRedisReq();}}private static class RedisSubscription implements Subscription {private final RedisPublisher redisPublisher;public RedisSubscription(RedisPublisher redisPublisher) {this.redisPublisher redisPublisher;}Overridepublic void request(long l) {// 向Redis发送操作请求redisPublisher.sendRedisReq();}Overridepublic void cancel() {}}private static class RedisCommand {private String key;private String oper;private Subscriber? super String subscriber;public RedisCommand(String key, String oper) {this.key key;this.oper oper;}public void sendRedisReq() {// 这里模拟发送Redis请求的过程这里其实是直接给延迟队列添加个元素延迟时间代表redis的处理耗时redisResponseQueue.add(new DelayedElement(subscriber, new Random().nextInt(100)));}public void setSubscriber(Subscriber? super String subscriber) {this.subscriber subscriber;}}private static class DelayedElement implements Delayed {private long delayTime;private long expireTime;private Subscriber? super String subscriber;public DelayedElement(Subscriber? super String subscriber, long delayTime) {this.subscriber subscriber;this.delayTime delayTime;this.expireTime System.currentTimeMillis() delayTime;}Overridepublic long getDelay(TimeUnit unit) {return unit.convert(expireTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);}/*** 模拟Redis异步应答* 这里假定所有redis命令的操作结果都是一个随机字符串实际过程中应该是Netty的ChannelInboundHandler#channelRead来触发该方法调用*/void mockResponse() {subscriber.onNext(UUID.randomUUID().toString());}Overridepublic int compareTo(Delayed o) {return Long.compare(this.expireTime, ((DelayedElement) o).expireTime);}} } 有不明白的地方抓紧留言吧
http://wiki.neutronadmin.com/news/364681/

相关文章:

  • 网站营销活动策划四川省城乡和住建厅官网
  • 网站没有被百度收录 163com免费邮箱登
  • 网站建设背景文字太原市建设北路小学网站
  • 上海网站建设公司推荐排名建筑工程网首页
  • 怎么在网站底部做备案号下载代码的网站
  • 想要一个网站图库素材
  • 微商做图王官方网站国外优秀购物网站
  • 3 阐述网站建设的步骤过程天津网络推广网站建设公司
  • 开发东莞网站制作公司360建筑网如何修改名字
  • 浏览器网站进入口网站设计公司列表
  • 一级做爰片免费网站vx小程序制作
  • 哈尔滨网站建设渠道深圳分销网站设计哪家好
  • 各网站提交入口seoul是韩国哪个城市
  • 建三江廉政建设网站做同城购物网站
  • 建设部网站 自住房天津设计公司联系方式
  • 网站蜘蛛记录器 v1.2wordpress设置打赏
  • 金华网站建设yw126用户体验设计的重要性
  • 秦皇岛网站制作哪家好怎样做美瞳网站
  • 手工建站与模板网站的区别网络教学平台长沙理工
  • 做网站工资怎样查网站的注册地点
  • 教育机构网站是建筑设计工资一般多少
  • 建设网络道德教育网站的有效措施有济南莱芜都市网
  • 网站建设艾金手指科杰晋江外贸网站开发
  • 百度推广需要手机网站重庆工程项目
  • 网站建设广金手指排名怎么在自己网站上做拼图
  • 小型教育网站的开发建设开题报告.网站建设的基本步骤
  • 网站备案好麻烦河南哪里网站建设公司
  • 永久免费个人网站注册北京双井网站建设
  • 怎么做自动发卡网站销客多微分销系统
  • 基于百度地图的网站开发网上定制西装