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;
        }
    }

  • 相关阅读:
    open_basedir restriction in effect的错误及其解决办法
    SNMP-网络管理协议
    安装cacti监控系统
    并发时-修改Linux系统下的最大文件描述符限制
    js new date()说明
    阿里云ECS环境部署 centos 6.5
    sysbench
    http_load
    LeetCode: Spiral Matrix
    LeetCode:Length of Last Word
  • 原文地址:https://www.cnblogs.com/lingepeiyong/p/3965807.html
Copyright © 2011-2022 走看看