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

用源码网站好优化吗外贸网站要怎么做

用源码网站好优化吗,外贸网站要怎么做,企业网站优化徽号liu7yin出本词效果抖快均可做a7,wordpress 4.9.2一、背景 数据回滚 二、难点 2.1 需要处理的数据涉及多达数万个用户,每个用户涉及的表达到10个 2.2 时间紧急,需要快速回滚,数据需要完整 2.3 数据存在重复或空缺问题 三、解决方案 3.1 数据多,使用分批处理,把大任务分割成若…
一、背景

数据回滚

二、难点

2.1 需要处理的数据涉及多达数万个用户,每个用户涉及的表达到10个
2.2 时间紧急,需要快速回滚,数据需要完整
2.3 数据存在重复或空缺问题

三、解决方案

3.1 数据多,使用分批处理,把大任务分割成若干个小任务
3.2 时间紧,使用多线程CompletableFuture处理,提高处理效率
3.3 mysql数据有些是重复,需要去重,使用not exist处理,保障数据完整

四、案例代码
@Slf4j
public class DataRollBackProcessTest {// 自定义线程池ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 10, 600,TimeUnit.SECONDS, new ArrayBlockingQueue<>(2000));@Testpublic void startTest() throws ExecutionException, InterruptedException {List<Integer> list = new ArrayList<>();for (int i = 1; i <= 100; i++) {list.add(i);}concurrentProcess(list);}/*** * 并行处理,全部异步任务执行完才一起返回** @param list* @throws ExecutionException* @throws InterruptedException*/public void concurrentProcess(List<Integer> list) throws ExecutionException, InterruptedException {// 定义一个集合切割为小任务时每个任务的大小,int taskSize = 5;List<List<Integer>> divideList = divide(list, taskSize);// 创建一个CompletableFuture数组,用于存储异步操作的结果CompletableFuture<Void>[] futures = new CompletableFuture[divideList.size()];// 循环10次,每次执行一次异步操作for (int i = 0; i < divideList.size(); i++) {int index = i;CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {// 异步操作,可以在这里执行你的任务try {simulateLongDurationTasks(divideList.get(index));} catch (InterruptedException e) {e.printStackTrace();}System.out.println("异步操作 " + index + " 执行完成");}, threadPoolExecutor);// 将CompletableFuture对象存储到数组中futures[i] = future;}// 使用CompletableFuture.allOf等待所有异步操作完成CompletableFuture<Void> allOf = CompletableFuture.allOf(futures);// 阻塞,等待所有异步操作完成allOf.get();System.out.println("所有异步操作执行完成");}/*** 集合切分** @param origin* @param size* @param <T>* @return*/public <T> List<List<T>> divide(List<T> origin, int size) {if (origin == null || origin.size() == 0) {return Collections.emptyList();}int block = (origin.size() + size - 1) / size;return IntStream.range(0, block).boxed().map(i -> {int start = i * size;int end = Math.min(start + size, origin.size());return origin.subList(start, end);}).collect(Collectors.toList());}/*** 模拟耗时的任务* <p>* 需求背景:* 需要把一组用户的数据复制到另一组用户,生成sql脚本如下,为了简略,* 使用Thread.sleep替换耗时任务* <p>* -- 把B用户的数据插入到A用户,且A用户不存在相同的数据* sql使用点1: INSERT INTO student  from* sql使用点2: NOT EXISTS** INSERT INTO student (uid, STATUS, age, sex) SELECT* 61442, -- A用户* STATUS,* age,* sex* FROM* student t1* WHERE* t1.uid = 682801 -- B用户* AND t1. STATUS = 1* AND NOT EXISTS (* SELECT* t2.id* FROM* student t2* WHERE* t2.uid = 61442* AND t2.age = t1.age* AND t2.sex = t1.sex* );*/public void simulateLongDurationTasks(List<Integer> subList) throws InterruptedException {if (subList == null || subList.size() == 0) {return;}int sleepSeconds = subList.stream().mapToInt(e -> e).reduce(0, Integer::sum);log.info("thread id:{}, thread name:{}, thread states:{}, Thread.activeCount:{}, thread sleep:{}",Thread.currentThread().getId(),Thread.currentThread().getName(),Thread.currentThread().getState(),Thread.activeCount(),sleepSeconds);Thread.sleep(sleepSeconds);}
}
五、总结

使用分批处理,结合多线程,提高处理效率
多线程处理需要考虑系统资源竞争问题、顺序问题

http://www.yayakq.cn/news/533692/

相关文章:

  • 广州易网网站建设重庆做网站_重庆网站建设_重庆网络推广_重庆网络公司
  • 网站未备案会怎么样佛山网站搭建公司哪家好
  • 做网站对公司的作用aspnet网站开发实例项目
  • 建站后角度是不是0广西南宁建设职业学图书馆网站
  • 淘金企业网站建设服务哈尔滨seo网络推广
  • 如何看网站做打好坏公司网站架构
  • 夜晚很晚视频免费素材网站公司做网站让拍照备案
  • 如何选择邯郸网站制作专业做网站制作的公司
  • access建网站如何搭建英文网站
  • 简述网站建设的过程知识库管理系统方案
  • 软件开发 网站开发 不同龙岗教育网官网
  • 手机网站设计字体多大万网网站模板
  • 公司网站地址信息门户网站怎么做
  • 借个网站备案号赣州市建设工程质量监督管理站网站
  • 网站开发架构师海贼王路飞和女帝做的网站
  • 专注做动漫的门户网站企业网站后台管理系统模板
  • 企业网络营销网站设计个性化WordPress网站
  • wordpress 可视化建站山西太原室内设计学校
  • 广州百度网站搭建广州注册公司新政策
  • 凡科一个注册做2个网站上海高端网站制作公司
  • lua做网站wordpress采集文章后定时发布
  • 设计网站企业网站建设公司推广产品的软文怎么写
  • 电子商务在线网站建设嘉兴 企业网站 哪家
  • 高端网站建设 深圳张家港江阴网站制作
  • 建个可以注册会员网站多少钱做查询系统网站
  • 创建一个网站需要多少钱全国企业系统网站建设
  • 做网站工作的怎么填职务嘉兴优化网站哪家好
  • 西安电商网站制作北京做网络工程公司的网站
  • python做网站多么个人理财的网站开发
  • 网站开发后 怎么换前端网校网站建设多少钱