网站推广费用价格网上暴利赚钱项目

news/2025/10/2 3:10:26/文章来源:
网站推广费用价格,网上暴利赚钱项目,十大最火网络游戏,畅销营销型网站建设电话项目场景#xff1a; 在电商、支付等领域#xff0c;往往会有这样的场景#xff0c;用户下单后放弃支付了#xff0c;那这笔订单会在指定的时间段后进行关闭操作#xff0c;细心的你一定发现了像某宝、某东都有这样的逻辑#xff0c;而且时间很准确#xff0c;误差在1s内…项目场景 在电商、支付等领域往往会有这样的场景用户下单后放弃支付了那这笔订单会在指定的时间段后进行关闭操作细心的你一定发现了像某宝、某东都有这样的逻辑而且时间很准确误差在1s内那他们是怎么实现的呢 一般实现的方法有几种使用 redisson、rocketmq、rabbitmq等消息队列的延时投递功能。 解决方案 一般项目集成redis的比较多所以我这篇文章就说下redisson延迟队列如果使用rocketmq或rabbitmq需要额外集成中间件比较麻烦一点。 1.集成redisson maven依赖 dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactIdversion3.21.1/version /dependency yml配置单节点配置可以兼容redis的配置方式 # redis配置 spring:redis:database: 0host: 127.0.0.1password: redispassport: 6001 更详细的配置参考Spring Boot整合Redisson的两种方式-CSDN博客 2.配置多线程 因为延迟队列可能会多个任务同时执行所以需要多线程处理。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;Configuration EnableAsync public class ExecutorConfig {/*** 异步任务自定义线程池*/Bean(name taskExecutor)public ThreadPoolTaskExecutor asyncServiceExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();//配置核心线程数executor.setCorePoolSize(50);//配置最大线程数executor.setMaxPoolSize(500);//配置队列大小executor.setQueueCapacity(300);//允许线程空闲时间executor.setKeepAliveSeconds(60);//配置线程池中的线程的名称前缀executor.setThreadNamePrefix(taskExecutor-);// rejection-policy当pool已经达到max size的时候如何处理新任务// CALLER_RUNS不在新线程中执行任务而是有调用者所在的线程来执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//调用shutdown()方法时等待所有的任务完成后再关闭executor.setWaitForTasksToCompleteOnShutdown(true);//等待所有任务完成后的最大等待时间executor.setAwaitTerminationSeconds(60);return executor;} } 3.具体业务 比如消息通知、关闭订单等 这里加上了Async注解可以异步执行 import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;import java.text.SimpleDateFormat; import java.util.Date;Service public class AsyncService {Asyncpublic void executeQueue(Object value) {System.out.println();System.out.println(当前线程Thread.currentThread().getName());System.out.println(执行任务value);//打印时间方便查看SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(执行任务的时间sdf.format(new Date()));//自己的业务逻辑可以根据id发送通知消息等//......} } 4.延迟队列(关键代码) 这里包括添加延迟队列和消费延迟队列PostConstruct注解的意思是服务启动加载一次参考 Spring Boot项目启动时执行指定的方法-CSDN博客Spring Boot中多个PostConstruct注解执行顺序控制_多个postconstruct执行顺序-CSDN博客 import org.redisson.api.RBlockingQueue; import org.redisson.api.RDelayedQueue; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service;import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.TimeUnit;Service public class TestService {Resourceprivate AsyncService asyncService;Resourceprivate ThreadPoolTaskExecutor executor;Autowiredprivate RedissonClient redissonClient;/*** 添加延迟任务*/public void addQueue() {//获取延迟队列RBlockingQueueObject blockingQueue redissonClient.getBlockingQueue(delayedQueue);RDelayedQueueObject delayedQueue redissonClient.getDelayedQueue(blockingQueue);for (int i 1; i 10; i) {long delayTime 5i; //延迟时间(秒) // long delayTime 5; //这里时间统一可以测试并发执行delayedQueue.offer(延迟任务i, delayTime, TimeUnit.SECONDS);}//打印时间方便查看SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(添加任务的时间sdf.format(new Date()));}/*** 服务启动时加载开始消费延迟队列*/PostConstructpublic void consumer() {System.out.println(服务启动时加载);//获取延迟队列RBlockingQueueObject delayedQueue redissonClient.getBlockingQueue(delayedQueue);//启用一个线程来消费这个延迟队列executor.execute(() -{while (true){try { // System.out.println(while中的线程Thread.currentThread().getName());//获取延迟队列中的任务Object value delayedQueue.poll();if(value null){//如果没有任务就休眠1秒休眠时间根据业务自己定义Thread.sleep(1000); //这里休眠时间越短误差就越小continue;}//异步处理延迟队列中的消息asyncService.executeQueue(value);} catch (Exception e) {e.printStackTrace();}}});} } 5.测试接口  import com.test.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {Autowiredprivate TestService testService;/** 添加延迟任务*/GetMapping(value /addQueue)public String addQueue() {testService.addQueue();return success;}} 6.测试结果 总结 Redisson的的RDelayedQueue是基于Redis实现的而Redis本身并不保证数据的持久性。如果Redis服务器宕机那么所有在RDelayedQueue中的数据都会丢失。因此我们需要在应用层面进行持久化设计例如定期将RDelayedQueue中的数据持久化到数据库。在设计延迟任务时我们应该根据实际需求来合理设置延迟时间避免设置过长的延迟时间导致内存占用过高。 源码https://download.csdn.net/download/u011974797/89225515

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河北住房和城乡建设局网站东莞网站设计制作公司

今日已办 PPT制作 答辩流程 概述:对项目背景、架构进行介绍(体现我们分组的区别和需求)人员:小组成员进行简短的自我介绍和在项目中的定位,分工进展:对项目进展介绍,其中a、b两组的区别和工作…

AI元人文:“现实与价值”的生态——走向一种基于博弈与演化的协同智能

AI元人文:“现实与价值”的生态——走向一种基于博弈与演化的协同智能 序言:从“规训”到“对话”的范式革命 我们正站在智能演进的历史节点上。传统的人工智能伦理致力于一种“价值规训”范式:试图将一套预设的、通…

制作个人网站素材优秀企业网站首页

1. 地下管线:城市“生命线” 地下管线是城市的重要基础设施,包括供水、排水、燃气、热力、电力、通信等管线,它们如同城市的“生命线”,支撑着城市的正常运转。如果缺乏完整和准确的地下管线信息,施工破坏地下管线的事…

Ai元人文:最后的客观与乐观

岐金兰: 其实我是客观而乐观的, 首从空白金兰契,到区域金兰契,多元文化金兰契。 这个价值表征困境,是全人类签订金兰契,不是我这个构想者能只手遮天的,最后,我还可能不用说“价值原语博弈”了,以后直接说,价…

社交网站建设码旅游网站建设研究综述

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…

如何建设属于自己的网站做网站需要懂哪些技能

得益于互联网基建的成熟及快速发展的电子商贸经济,我国线上零售市场快速增长,2022年全国线上零售额达到13.79万亿元,占社会消费品零售总额的比重为27.2%,也就是说每卖出三件零售商品,就有一件是从线上销售。中大型零售…

东莞网站建设公司百推网站开发要什么样的环境

在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value) 也就是说 likely()…

招聘网站上找在家做一个网站有哪些优势

基于图像处理的视觉应用1 基于机器学习的视觉应用, 又名:机器视觉之从调包侠到底层开发(第3天) PS:这个系列是准备做从Python一些接口应用开发,openCV基础使用场景原理讲解,做一些demo案例讲解&#xff0…

中小型网站建设讯息柯林建站程序

前言 Redis 配置文件信息中文翻译版,方便大家阅读和理解对应参数信息及配置参数信息 # Redis configuration file example# Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k 5GB 4M and so forth: # 注意:当…

html5浅蓝色网站设计公司dede模板有道云笔记WordPress

typeof 其中数组、对象、null都会被判断为object,其他判断都正确typeof返回的类型都是字符串形式 instanceof instanceof :用于检测一个实例是否属于某个类,通过验证当前类的原型 prototype 是否出现在实例的原型链 __proto__ 上。它不能检测…

公司网站推广方案模板设计工资一般多少

1、前言 docker在当前运用的越来广泛,很多应用或者很多中间软件都有很多docker镜像资源,运行docker run 启动镜像资源即可应用。但是很多应用或者中间件有很多配置参数。这些参数在运用过程怎么设置给docker 容器呢?下面介绍几种方式 2 、do…

网站上的淘客组件是怎样做的网络营销推广方法十种

Flask 框架提供了强大的 Session 模块组件,为 Web 应用实现用户注册与登录系统提供了方便的机制。结合 Flask-WTF 表单组件,我们能够轻松地设计出用户友好且具备美观界面的注册和登录页面,使这一功能能够直接应用到我们的项目中。本文将深入探…

做网站有前途吗可以自己免费做的软件

最近再做一个web项目,目前决定先把应用放在云服务器上。我选择的云主机是aliyun的Ubuntu 16.04主机。部署好云主机环境后,就需要把我在本地开发好的程序上传到云主机了。刚开始打算用ftp协议来传输,于是参照网上的教程(Ubuntu 16.…

经营性商务网站建设需要备案吗wordpress 如何编辑器

Spring 是包含众多工具的 IoC 容器,存的是对象,对象这个词在 Spring 的范围内,称之为 bean IoC 是控制反转 控制权进行了反转,比如对某一个东西的控制权在 A 手上,结果变成了 B ,Spring 管理的是 bean ,所以这里的控制权指的是 bean 的控制权,也就是对象的控制权进行了反转 …

微信网站 顶部导航菜单计算机网络课程设计

fork系统调?创建?进程,也就?个进程变成了两个进程,两个进程执?相同的代码,只是fork系统调?在?进程和?进程中的返回值不同。打开linux-5.4.34/arch/x86/entry/syscalls/syscall_64.tbl 文件,56、 57、 58号系统调?__x64_sy…

怎么做网站广告代理商国外有哪些优秀的网站

一:Cstring类的由来 在C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用…

vs2013 网站建设wordpress 去掉发布者

目录 1. 思路(图解)2. 代码 题目链接:leetcode 88. 合并两个有序数组 题目描述: 1. 思路(图解) 思路一:(不满足题目要求) 1. 创建一个大小为nums1和nums2长度之和的…

AI元人文:价值原语构想——迈向动态博弈的价值生态

AI元人文:价值原语构想——迈向动态博弈的价值生态 引言:从“价值对齐”到“价值共生” 在人工智能发展的狂飙突进中,我们正面临一个根本性的悖论:我们试图赋予机器超越人类的智能,却期望其价值体系像一台精密的钟…

常州网站外包网络游戏新规

外连接就是允许不满足条件的字段查询出来转载于:https://www.cnblogs.com/classmethond/p/10129069.html

做旅行义工网站蚁怎么创建网页文件

四边形教学内容:教材第34页?——36页教学目标:1.直观感知四边形,能区分和辨认四边形,知道四边形的特征.进一步认识长方形和正方形,知道它们的角都是直角.2.通过画一画、找一找、拼一拼等活动,培养学生[此文转于斐斐课件园?FFKJ.Net]的观察比较和概括抽象的能力,发展空间想象能…