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

宁波网站建设平台分析网站建设指引

宁波网站建设平台分析,网站建设指引,高端的网站建设公司哪家好,高安做网站一、背景 数据回滚 二、难点 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.w-s-a.com/news/334739/

相关文章:

  • python做网站教程微网站 举例
  • 百度喜欢什么样的网站如何引用网站上的资料做文献
  • 如何给网站添加网站地图军刀seo
  • 模板网站开发推广陈村大良网站建设
  • 建设工程网站单位名单广州微信网站建设效果
  • 网站开发选择框代码字节小程序开发教程
  • 杭州网站设计精选柚v米科技免费的简历制作
  • 网站域名 没有续费做外贸怎样上外国网站
  • 购物网站功能模块设计电子工程网站有哪些
  • 网站营销公司哪家好wordpress主题 破解主题
  • 做网站就是做服务中国效能建设网站
  • 唐河企业网站制作怎么样抖音seo排名软件哪个好
  • 做棋牌网站团队wordpress无限加载
  • 思创医惠网站建设微网站是手机网站吗
  • 宁波海曙网站建设市场营销管理
  • 网站被降权了怎么办做网站网页维护手机App开发
  • 营销型网站建设熊掌号tomcat 网站开发
  • 东莞网站建设seo广州 flash 网站
  • js网站评论框租房网站那些地图区域统计怎么做的
  • 企业门户网站平台建设招标采购文件长沙做网站找哪家好
  • 关于实验室建设的英文网站图文分销系统开发
  • wordpress 媒体库管理自己的网站什么做优化
  • 网站建设基本流程价格厦门seo网站推广
  • 辽宁响应式网站建设价格企业所得税率
  • 网站编辑及seo招聘上海做网站公司做网站的公司
  • 杭州四喜做网站建设么ja.wordpress.org
  • 旅游网站策划书企业公司名字大全
  • 营销型网站的标准郑州新密网站建设
  • 建设网站的公司管理公司网站设计
  • 手机网站有什么区别是什么意思不让网站开发公司进入后台