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

免费空间访客100个网站招远网站建设联系电话

免费空间访客100个网站,招远网站建设联系电话,公众号首图制作网站,关于建设网站的外国参考文献一、背景 数据回滚 二、难点 2.1 需要处理的数据涉及多达数万个用户#xff0c;每个用户涉及的表达到10个 2.2 时间紧急#xff0c;需要快速回滚,数据需要完整 2.3 数据存在重复或空缺问题 三、解决方案 3.1 数据多#xff0c;使用分批处理#xff0c;把大任务分割成若…一、背景 数据回滚 二、难点 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 {ListInteger list new ArrayList();for (int i 1; i 100; i) {list.add(i);}concurrentProcess(list);}/*** * 并行处理全部异步任务执行完才一起返回** param list* throws ExecutionException* throws InterruptedException*/public void concurrentProcess(ListInteger list) throws ExecutionException, InterruptedException {// 定义一个集合切割为小任务时每个任务的大小int taskSize 5;ListListInteger divideList divide(list, taskSize);// 创建一个CompletableFuture数组用于存储异步操作的结果CompletableFutureVoid[] futures new CompletableFuture[divideList.size()];// 循环10次每次执行一次异步操作for (int i 0; i divideList.size(); i) {int index i;CompletableFutureVoid future CompletableFuture.runAsync(() - {// 异步操作可以在这里执行你的任务try {simulateLongDurationTasks(divideList.get(index));} catch (InterruptedException e) {e.printStackTrace();}System.out.println(异步操作 index 执行完成);}, threadPoolExecutor);// 将CompletableFuture对象存储到数组中futures[i] future;}// 使用CompletableFuture.allOf等待所有异步操作完成CompletableFutureVoid allOf CompletableFuture.allOf(futures);// 阻塞等待所有异步操作完成allOf.get();System.out.println(所有异步操作执行完成);}/*** 集合切分** param origin* param size* param T* return*/public T ListListT divide(ListT 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(ListInteger 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.hkea.cn/news/14421215/

相关文章:

  • 网站自建苏州企业做网站
  • 网站维护包括哪些怎么创建一个公司网站
  • 网站建设优化兰州个人网页设计风格分析
  • 营销网站的优势是什么电商网站开发选题依据
  • 站长工具seo综合查询论坛效果图制作收费标准
  • 专做商铺中介网站wordpress最大上传2m
  • 建设一个教程视频网站需要什么资质dw公司网页制作
  • 购物网站哪个便宜涡阳哪里有做网站的
  • 自己建设网站要多久互联网公司排名情况
  • 个人备案的网站名称电子商务网站建设与维护展望
  • 专业微网站电话建网站挣钱 优帮云
  • 手机app界面怎么做网站建设 设计 优化 维护
  • 网站建设的空间选择机械网站优化
  • 保险网站 源码apicloud和uniapp哪个好
  • 网站如何做背景音乐WordPress设置用户访问个数
  • 网站优化软件推荐wordpress建站 域名
  • 网站的制作流程建设六马路小学网站
  • 网站开发用什么框架合适江宁网站建设报价
  • 专业做相册书的网站编程软件是怎么做出来的
  • 网站后台发布文章网络营销官网
  • 湛江建站服务国外浏览器app
  • 个人门户网站建设流程方圆网通网站建设公司
  • 北京做网站开发的公司网站中的人力资源建设
  • 编写这个网站模板要多少钱定制网站建设
  • 学生个人网站建设方案书框架栏目windows server2012 wordpress
  • jsp网站怎么运行前端开发语言有哪些
  • 茂名放心营销网站开发商务贸易网站建设
  • 聊城做网站公司信息钓鱼网站下载
  • 网站建设总结材料观影楼网站
  • 产品介绍网站htmlwordpress最大上传尺寸