Java8通用Builder创建对象 来自 https://blog.csdn.net/zhou_fan_xi/article/details/104015465
Java探针-Java Agent技术-阿里面试题 来自 https://www.cnblogs.com/aspirant/p/8796974.html
java8 Predicate https://blog.csdn.net/w605283073/article/details/89410918
循环次数
int cycleTime = (listSize + singleInsertMaxCount - 1) / singleInsertMaxCount https://blog.csdn.net/yuzhic/article/details/1896878
ConcurrentReferenceHashMap 好像具有concurretnhashmap和weakhashmap的特点,该类来自spring,在spring中做缓存用的 comparator https://www.cnblogs.com/skywang12345/p/3324788.html https://blog.csdn.net/u012250875/article/details/55126531 Arrays.parallelSort();按照自定义的比较方式来排序 String.compareTo(按字母排序)
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5, THREAD_FACTORY_BUILDER.build()); public static void getAndProcessStaticsAggResult(String timeStamp) { RUNLOG.info(LogInfoHelper.buildRunLog(), "start aggs CDN_STATISTICS log with timeStamp: {}", timeStamp); List completableFutureList = new ArrayList<>(); //1、聚合CN_statistics日志 completableFutureList.add(CompletableFuture.supplyAsync(()-> EsClientUtil.queryAndProcessStaticsData("CN_statistics", timeStamp, VQEConstant.CN_STATICTIS, false, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE), EXECUTOR_SERVICE)); //2、聚合CN_total_httpcode日志 completableFutureList.add(CompletableFuture.supplyAsync(() -> EsClientUtil.queryAndProcessStaticsData("CN_total_httpcode", timeStamp, VQEConstant.CN_TOTAL_HTTPCODE, true, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE), EXECUTOR_SERVICE)); //3、聚合CN_domain_httpcode日志 completableFutureList.add(CompletableFuture.supplyAsync(() ->EsClientUtil.queryAndProcessStaticsData("CN_domain_httpcode", timeStamp, VQEConstant.CN_DOMAIN_HTTPCODE, true, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE), EXECUTOR_SERVICE)); //4、聚合CN_flow日志 completableFutureList.add(CompletableFuture.supplyAsync(() ->EsClientUtil.queryAndProcessStaticsData("CN_flow", timeStamp, VQEConstant.CN_FLOW, false, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE), EXECUTOR_SERVICE)); //5、聚合CN_request_hit日志 completableFutureList.add(CompletableFuture.supplyAsync(() ->EsClientUtil.queryAndProcessStaticsData("CN_request_hit", timeStamp, VQEConstant.CN_REQUEST_HIT, false, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE), EXECUTOR_SERVICE)); CompletableFuture[] futures = new CompletableFuture[5]; // 等待所有异步任务执行完毕 CompletableFuture.allOf(completableFutureList.toArray(futures)).join(); RUNLOG.info(LogInfoHelper.buildRunLog(), "end aggs CDN_STATISTICS log with timeStamp: {}, will delete data in es!", timeStamp); //6、删除该时间段内数据 EsClientUtil.deleteByTimeStamp(timeStamp, VQEConstant.UM_INDEX_STATICTIS, VQEConstant.STATICTIS_TYPE); }
Optional beans = xxx; if(!beans.isPresent()){//这里只判断了list是否为null,并未判断size为零的情况。
}
MapUtils.isEmpty Collections.emptyList()