IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> waterfallProcess -> 正文阅读

[大数据]waterfallProcess

 CodeUtil.waterfallProcess(new WaterfallProcessInterface<FrontendCategoryEntity, Long>() {
                @Override
                public List<FrontendCategoryEntity> getPage(Long sortParam, int size) {
                    return repo.getVirtualAllWaterfall(sortParam, size);
                }

                @Override
                public void process(List<FrontendCategoryEntity> pageList) {
                    processVirtual(pageList);
                }

                @Override
                public int getSize() {
                    return 100;
                }

                @Override
                public Long getNextParam(FrontendCategoryEntity last) {
                    return last.getId();
                }

                @Override
                public Long getFirstParam() {
                    return 0L;
                }
            });

LambdaQueryWrapper<FrontendCategoryDo> wrapper = new LambdaQueryWrapper<>();

            wrapper.eq(FrontendCategoryDo::getIsDelete, SystemConst.SCALE_VALUE0)
                    .eq(FrontendCategoryDo::getIsAll, SystemConst.SCALE_VALUE1)
                    .eq(FrontendCategoryDo::getLevel, SystemConst.SCALE_VALUE3)
                    .eq(FrontendCategoryDo::getName, "全部")
                    .gt(FrontendCategoryDo::getId, startId)
                    .orderByAsc(FrontendCategoryDo::getId)
                    .last("limit " + count);
     List<FrontendCategoryEntity> frontendCategoryEntities = frontendCategoryMapper.selectList(wrapper).stream().map(converter::do2Entity).collect(Collectors.toList());



import java.util.List;

public interface WaterfallProcessInterface<T, P> {

    /**
     * 查询分页数据
     *
     * @param sortParam
     * @param size
     * @return
     */
    List<T> getPage(P sortParam, int size) throws Exception;

    /**
     * 处理
     *
     * @param pageList
     */
    void process(List<T> pageList);

    /**
     * 分页大小
     *
     * @return
     */
    int getSize();

    /**
     * 获取下一次查询参数标记
     *
     * @param last
     * @return
     */
    P getNextParam(T last);

    /**
     * 获取首次参数
     *
     * @return
     */
    P getFirstParam();
}

public class CodeUtil {

    private CodeUtil() {
    }

    /**
     * 注: 多个动态参数可包装对象
     *
     * @param waterfallProcessInterface
     * @param <T>                       查询的对象
     * @param <P>                       动态参数类型
     */
    public static <T, P> long waterfallProcess(WaterfallProcessInterface<T, P> waterfallProcessInterface) throws Exception {
        long count = 0;
        int size = waterfallProcessInterface.getSize();
        List<T> page = waterfallProcessInterface.getPage(waterfallProcessInterface.getFirstParam(), size);
        while (!CollectionUtils.isEmpty(page)) {
            if (Thread.currentThread().isInterrupted()) {
                throw new InterruptedException();
            }

            count += page.size();
            waterfallProcessInterface.process(page);
            if (page.size() < size) {
                break;
            }

            T last = page.get(page.size() - 1);
            page = waterfallProcessInterface.getPage(waterfallProcessInterface.getNextParam(last), size);
        }
        return count;
    }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-12-01 17:46:35  更:2021-12-01 17:49:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:52:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码