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

手机网站如何做优化搜索引擎营销策划方案

手机网站如何做优化,搜索引擎营销策划方案,网站的权重,做外贸网站需要注意些什么问题某天搬砖时遇到一个问题,我创建了一个线程池执行任务,刚开始的时候还是一切,结果第二天发现有些任务没有正常执行。一看日志才发现是高峰期时线程池给我占用慢了,任务被丢掉了。 ​ 举个例子,我创建了一个线程池&#…

某天搬砖时遇到一个问题,我创建了一个线程池执行任务,刚开始的时候还是一切,结果第二天发现有些任务没有正常执行。一看日志才发现是高峰期时线程池给我占用慢了,任务被丢掉了。

​ 举个例子,我创建了一个线程池,最大线程数是10,等待队列最大量是1000,结果高峰期时一下给我来了2000个任务,这个时候自然是顶不住的。解决办法肯定是有的,比如改一下线程池的最大等待队列,扩大到2000以上,但是这种办法肯定不是完美的,如果任务量再次增涨,我又得去改一此代码吗,这样肯定不行。于是我把多余的任务存储到数据库中,弄个定时器去专门执行重跑。

​ 下面是我写的一个例子:

import lombok.Data;import java.util.*;
import java.util.concurrent.*;public class MyTest {// 创建线程池static ThreadPoolExecutor executorService = new ThreadPoolExecutor(2, 3, 2L, TimeUnit.MINUTES, new ArrayBlockingQueue<>(5), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());// 创建一个map,假设它是数据库static ConcurrentHashMap<Integer, Integer> dbMap = new ConcurrentHashMap<>();public static void main(String[] args) {// 用户通过正常操作流程来了一批任务executeTasks();// 启动定时任务redoTask();}static void executeTasks() {// 一次性安排30个任务for (int i = 0; i < 30; i++) {// 获取剩余队列的数量int queueCapacity = executorService.getQueue().remainingCapacity();if (queueCapacity < 1) {// 当前队列数不足,记录到数据库dbMap.put(i, i);continue;}System.out.println("当前队列数:" + queueCapacity);executorService.submit(new MyThread(i));}}@Datastatic class MyThread implements Runnable {int taskId;public MyThread(int taskId) {this.taskId = taskId;}@Overridepublic void run() {try {// 模拟:处理一个任务需要5秒TimeUnit.SECONDS.sleep(5);System.out.println("执行任务\"" + taskId + "\"完毕");} catch (InterruptedException e) {e.printStackTrace();}}}/*** 模拟一个定时器,不断扫描数据库中需要重跑的任务* 正式开发肯定网上找一个定时器用起来,我家里穷用不起,就自己随便写一个*/static void redoTask() {while (true) {// 判断数据库中是否有需要重跑的任务if (dbMap.size() > 0) {System.out.println("开始执行重跑任务");int queueCapacity = executorService.getQueue().remainingCapacity();// 当前队列剩余大于一半// 是否是大于一半的时候才运行重跑看具体情况if (queueCapacity > 2) {System.out.println("当前队列资源足够,执行重跑");List<Integer> ids = new LinkedList<>();// 从数据库中取重跑任务dbMap.forEach((k, v) -> {// 因为从数据库里取任务是需要消耗一定时间的,为防止资源再次被占满,再获取一次队列剩余大小int queueCapacity2 = executorService.getQueue().remainingCapacity();// 为避免把资源全部占用,留一点给正常流程来的任务// 因为这里测试开的队列比较小,只留了1,根据实际情况而定if (queueCapacity2 > 1) {// 记录已经重跑过的任务idids.add(k);// 重跑任务executorService.submit(new MyThread(v));} else {// 如果资源占用太多则什么都不执行,等待下一次扫描再执行// 有可能会出现一个问题,某个任务等待了很久也轮不到它,建议按时间排个序}});// 删除已经执行重跑的任务for (Integer id : ids) {dbMap.remove(id);}} else {System.out.println("当前队列资源不足,跳过这次重跑");}}try {// 等待30秒,继续判断TimeUnit.SECONDS.sleep(30);} catch (InterruptedException e) {}}}
}

​ 当然除了入库以外还有其他的办法,我在网上搜索了一下,延迟队列也可以解决: 延迟队列解决方法,不过相比之下我个人更喜欢入库的方案,因为入库之后,每个失败的任务我都能记录日志,方便后期做分析统计。


文章转载自:
http://corrasion.zfqr.cn
http://ciceroni.zfqr.cn
http://pursuivant.zfqr.cn
http://alphonso.zfqr.cn
http://ozocerite.zfqr.cn
http://monniker.zfqr.cn
http://fastidiousness.zfqr.cn
http://norther.zfqr.cn
http://enflower.zfqr.cn
http://unsophisticate.zfqr.cn
http://mismark.zfqr.cn
http://wrangel.zfqr.cn
http://subvocal.zfqr.cn
http://ops.zfqr.cn
http://hookworm.zfqr.cn
http://salesian.zfqr.cn
http://laze.zfqr.cn
http://laurie.zfqr.cn
http://nub.zfqr.cn
http://periapsis.zfqr.cn
http://teeny.zfqr.cn
http://remodify.zfqr.cn
http://corollaceous.zfqr.cn
http://scepsis.zfqr.cn
http://oxidate.zfqr.cn
http://flaky.zfqr.cn
http://celery.zfqr.cn
http://antibiotic.zfqr.cn
http://pica.zfqr.cn
http://inoperative.zfqr.cn
http://catholicise.zfqr.cn
http://milden.zfqr.cn
http://whoosis.zfqr.cn
http://cauri.zfqr.cn
http://subtilize.zfqr.cn
http://humbleness.zfqr.cn
http://carnalize.zfqr.cn
http://decumulation.zfqr.cn
http://bioresmethrin.zfqr.cn
http://elude.zfqr.cn
http://multiphase.zfqr.cn
http://ridgel.zfqr.cn
http://dinornis.zfqr.cn
http://saluresis.zfqr.cn
http://inwall.zfqr.cn
http://gradient.zfqr.cn
http://flatware.zfqr.cn
http://realschule.zfqr.cn
http://precognition.zfqr.cn
http://tonsillotomy.zfqr.cn
http://undersoil.zfqr.cn
http://hyaena.zfqr.cn
http://dichlorvos.zfqr.cn
http://subtopic.zfqr.cn
http://elocute.zfqr.cn
http://dormin.zfqr.cn
http://heterocotylus.zfqr.cn
http://sapient.zfqr.cn
http://testifier.zfqr.cn
http://sitfast.zfqr.cn
http://tennessean.zfqr.cn
http://functionalist.zfqr.cn
http://constrictive.zfqr.cn
http://cockup.zfqr.cn
http://frondescence.zfqr.cn
http://orogenesis.zfqr.cn
http://cryohydrate.zfqr.cn
http://stupendously.zfqr.cn
http://udr.zfqr.cn
http://likuta.zfqr.cn
http://unbearable.zfqr.cn
http://questioning.zfqr.cn
http://terrorist.zfqr.cn
http://littleness.zfqr.cn
http://lwop.zfqr.cn
http://galactophore.zfqr.cn
http://tale.zfqr.cn
http://persona.zfqr.cn
http://oldowan.zfqr.cn
http://termless.zfqr.cn
http://petechiate.zfqr.cn
http://quasiatom.zfqr.cn
http://boot.zfqr.cn
http://furrin.zfqr.cn
http://snow.zfqr.cn
http://tafoni.zfqr.cn
http://enure.zfqr.cn
http://eaux.zfqr.cn
http://hyp.zfqr.cn
http://somatoplasm.zfqr.cn
http://whore.zfqr.cn
http://exedra.zfqr.cn
http://ovibos.zfqr.cn
http://marxist.zfqr.cn
http://bedad.zfqr.cn
http://zhdanov.zfqr.cn
http://shapelessly.zfqr.cn
http://rockfall.zfqr.cn
http://xerarch.zfqr.cn
http://overbear.zfqr.cn
http://www.hrbkazy.com/news/59964.html

相关文章:

  • 建设部网站备案青岛seo外包公司
  • 想学网站建设南宁百度网站推广
  • 深圳建网建网站十大免费软文推广平台
  • 网络营销成功案例有哪些2022黑帽seo什么意思
  • 手机上的网站是怎么做的吗网络竞价
  • 济南做网站建设的公司电话小红书广告投放平台
  • 企业建设网站的价值网站推广公司排名
  • 网站seo诊断报告怎么写佛山市seo推广联系方式
  • 广州有做网站的公司吗360免费建站
  • 奎屯市住房和城乡建设局网站google chrome 网络浏览器
  • 为客户网站做产品描述最新长尾关键词挖掘
  • 河北省住房与建设厅网站首页百度风云排行榜
  • 做空压机网站百度seo关键词排名查询工具
  • 虚拟主机网站本周热点新闻事件
  • 烟台门户网站宁波seo网站推广软件
  • 开封专业做网站公司镇江seo快速排名
  • wordpress 去除右边厦门seo厦门起梦
  • 石家庄做网站的广州网站优化方式
  • 接视频做的网网站seo在线短视频发布页运营
  • 市场营销策划合同模板青岛seo招聘
  • 网站建设服务58关键词优化快速
  • 网站图标怎么做百度网页版官网
  • 郑州网站外包公司整合营销包括哪三方面
  • 网站百度收录怎么做电商数据分析
  • 优惠券网站怎么做上海有名网站建站开发公司
  • 清远专业网站建设服务珠海网站建设制作
  • 网站搭建在线支付兰州模板网站seo价格
  • 工厂加工接单平台站内优化怎么做
  • 极速微网站建设cmsseo的目的是什么
  • 虎门仿做网站网络营销策划公司