zoukankan      html  css  js  c++  java
  • 解决因为链表过长,sql查询慢的问题

    /**
     * 解决因为链表过长,sql查询慢的问题
     * 使用分治算法,先切分链表,然后查询结果,最后合并结果
     *
     * @author lingpy
     * @since 1.0
     */
    public class DivideAndConquerUtil {
        /**
         *
         * @param dataList 元数据
         * @param exceuter 执行类
         * @return
         * @throws Exception
         */
        public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter)throws Exception{
            return query(dataList,exceuter,100);
            
        }
        
        /**
         *
         * @param dataList
         * @param exceuter
         * @param subArrayLength 切分的粒度
         * @return
         * @throws Exception
         */
        @SuppressWarnings("unchecked")
        public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter,int subArrayLength)throws Exception{
            if(dataList == null || dataList.size() <= subArrayLength){
                return exceuter.execute(dataList);
            }
            R result = null;
            int start = 0, end = start;
            while(start < dataList.size()){
                end = start + subArrayLength;
                if(end  > dataList.size()){
                    end = dataList.size();
                }
                R r = exceuter.execute(dataList.subList(start, end));
                if(result == null){
                    result = r;
                }else{
                    result.putAll(r);
                }
                start = end;
            }
            return result;
        }
        
        public interface Executer<R,E>{
            R execute(List<E> dataList) throws Exception;
        }
    }

  • 相关阅读:
    CentOS6.5下安装Redis2.8.6和phpredis2.2.4扩展
    Centos系统安装 phpredis 扩展
    在centos6.3用yum安装redis
    CentOS 安装图形化界面方法
    解决Eclipse中文乱码
    apache mod_alias模块功能介绍
    php 使用serialize() 和 unserialize() 让对象成超级变量
    eclipse导入php项目
    php多文件上传类(含示例)
    PHP多图片上传类推荐
  • 原文地址:https://www.cnblogs.com/lingepeiyong/p/3965807.html
Copyright © 2011-2022 走看看