精华内容
下载资源
问答
  • 计算是从从一个ResultSet中遍历...之前好好的,突然间程序就跑的很慢很慢…… SQL与程序都没有问题的情况下,到底会是什么问题导致? 跑程序是之前和现在都是用myeclipse直接跑的 真心不知道问题在哪,求好心人提点。
  • java循环次数多很慢的问题解决方法

    千次阅读 2018-08-19 10:14:02
    java循环次数多很慢的问题解决方法 解决方法: 直接上源码,本例子使用了分治编程,可以复制运行一下,不用依赖第三方包。86400次循环内嵌套1000000次循环演示。 ...

    java循环次数多很慢的问题解决方法

    解决方法:

    直接上源码,本例子使用了分治编程,可以复制运行一下,不用依赖第三方包。86400次循环内嵌套1000000次循环演示。

    http://www.yayihouse.com/yayishuwu/chapter/1498

    展开全文
  • Java实现数据分页

    千次阅读 2019-01-25 12:28:53
    2.按照分页数据查找数据:后期查询稍微一点,内存占用的较少 一般都会选择第二种,因为计算机中,性能总是和内存挂钩的,而且第二种也可以避免查无用数据,因此就以第二种讲解,第一种比第二种简单的多。 使用分页...

    今天来说一说分页的实现,传统的分页主要分为两种:
    1.数据全部查出再分页:后期查询速度快,会占有较多的内存
    2.按照分页数据查找数据:后期查询稍微慢一点,内存占用的较少
    一般都会选择第二种,因为计算机中,性能总是和内存挂钩的,而且第二种也可以避免查无用数据,因此就以第二种讲解,第一种比第二种简单的多。

    使用分页必不可少的是在数据库查询数据,那数据库分页都需要的参数是必须传过去的,只有这样才能使用数据库查数据
    

    那么要传什么参数进去呢?先看一看百度的分页效果
    在这里插入图片描述
    而且我还专门数了数百度每页的记录数是14条,看到这些有没有感到豁然开朗,没错,这样就可以利用数据库实现分页查找了。

    limit x,y;有了前边的数据是不是就可以算出x和y了,因此,在我们实现分页的处理需要传进去的参数就是每页的条数和当前页数。
    总页数可以通过数据库聚合函数和传入的参数计算而来(如果有余数就加一页)
     totalPageNum = totalRecords%pageSize==0?(totalRecords/pageSize):(totalRecords/pageSize+1);
    

    实现思想很简单,下来看看通过代码提取的分页模型

    以每个页面只有九个页码为里例子,当然那个页码数可以随便加多少,百度的页码是十页,我感觉十页不太好看(没有对称美)就选择九页
    

    主要的逻辑点在下边这块代码

       /*此处是用于计算开始页和结束页(均匀分配)
            *如果总数超过九页,如果计算出的当前页码小于等于0,那就说明currentPage不大于四,那就从1开始,那就+8算出结束页,如果结束页大于总页数 ,那就按照结束页-8算出开始页,否则就少于9页,从1开始。
            */
            startPage = currentPageNum - 4; //5
            endPage = currentPageNum + 4;  //13
            //看看总页数够不够9页
            if(totalPageNum>9){
                //超过了9页
                if(startPage < 1){
                    startPage = 1;
                    endPage = startPage+8;
                }
                if(endPage>totalPageNum){
                    endPage = totalPageNum;
                    startPage = endPage-8;
                }
            }else{
                //不够9页
                startPage = 1;
                endPage = totalPageNum;
            }
    

    分页模型方法的代码

     public PageModel(int currentPageNum,int totalRecords,int pageSize){
            this.currentPageNum = currentPageNum;
            this.totalRecords = totalRecords;
            this.pageSize=pageSize;
            //计算查询记录的开始索引
            startIndex = (currentPageNum-1)*pageSize;
            //计算总页数
            totalPageNum = totalRecords%pageSize==0?(totalRecords/pageSize):(totalRecords/pageSize+1);  
            startPage = currentPageNum - 4; //5
            endPage = currentPageNum + 4;  //13
           if(totalPageNum>9){
                if(startPage < 1){
                    startPage = 1;
                    endPage = startPage+8;
                }
                if(endPage>totalPageNum){
                    endPage = totalPageNum;
                    startPage = endPage-8;
                }
            }else{
                startPage = 1;
                endPage = totalPageNum;
            }
        }
    

    点击下一页事件的代码

      public int getNextPageNum() {
            nextPageNum = currentPageNum+1;
            if(nextPageNum>totalPageNum){
                nextPageNum = totalPageNum;
            }
            return nextPageNum;
        }
    

    点击上一页事件的代码

    public int getPrePageNum() {
            prePageNum = currentPageNum-1;
            if(prePageNum<1){
                prePageNum = 1;
            }
            return prePageNum;
        }
    

    然后就可以根据这戏数据轻松愉快的查询数据了并且处理后返回给前台,这些代码太简单就不写了,主要是分页原理和逻辑分析。

    有什么写到不对的地方见谅,这仅仅是我的理解,或者可以在下方帮忙纠正。文章很短都是精华。

    展开全文
  • 之前的处理逻辑是将所有的数据遍历,根据客户的车辆信息一个个去调用接口。 这么长时间,肯定要优化。想了想:可以将查出来的所有数据分片,分n片,启动n个线程,分别去执行查接口的功能。由于公司使用的服务器一般...

    有个需求调用了外部接口查询客户的违章信息,一共一千多辆车,查看日志的时候这段程序居然跑了有半个多小时。

    之前的处理逻辑是将所有的数据遍历,根据客户的车辆信息一个个去调用接口。

    这么长时间,肯定要优化。想了想:可以将查出来的所有数据分片,分n片,启动n个线程,分别去执行查接口的功能。由于公司使用的服务器一般四核cpu,所以使用可以将数据分成8片,并启动8个线程。(一个并发程序开多少线程合适?

     

    一、首先是启动8个线程,这里使用了JUC的线程池。

    有一篇专门介绍创建线程池的方法:《Java ExecutorService四种线程池的例子与说明》

    二、然后将数据分片

    之前也专门写过一个文章,可以出门左拐,这里就不详细介绍了。 ==》List分片处理

    三、处理数据

     

    由于是单机程序,是将所有的数据查出来,然后分片处理,所以不会出现各种并发类型问题。但是还是有一个小小的问题,之前计算这段程序的处理时间失效了。原因是之前用主线程记录时间,程序也跑在主线程上,所以只需要在程序的前后new 两个时间,计算差值就可以了。现在使用子线程处理数据后,这样处理就不可以了。

    之前处理运行时间的逻辑:

    @RequestMapping("send-break-rules-msg")
        public void sendMsgToClient() {
            Date startDate = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            log.info("<<<<<<<<<<<<<<<send break rules msg start at:{}>>>>>>>>>>>>>>", sdf.format(startDate));
    
            // 从数据库查数据
    
            // ......
    
            // 查询外部接口,处理数据       
    
            Date endDate = new Date();
            log.info("<<<<<<<<<<<<<<<send break rules msg end at:{}>>>>>>>>>>>>>>", sdf.format(endDate));
            log.info("<<<<<<<<<<<<<<<send break rules msg cost:{}>>>>>>>>>>>>>>", endDate.getTime() - startDate.getTime());
        }

    在主线程中使用CountDownLatch工具类,在每个子线程的处理逻辑最后加上 countDownLatch.countDown();

    经过这样的处理之后,这段程序完美的别控制在了5分钟以内。

    展开全文
  • 计算图的最小生成树的算法有多种,但这些算法都可以看做是 贪心算法的一种特殊情况,这些算法的不同之处在 于保存切分和判定权重最小的横切边的方式。
  • JAVA数据流概念及标准数据流的实现

    千次阅读 2017-06-30 22:52:26
    为了更有效地进行数据的输入/输出操作,Java将各种数据源的数据,抽象为“数据流”,及stream。数据流:是指一组有顺序的、有起点和终端的字节集合,是对输入/输出的总称。2、数据流的分类:2.1、根据数据流的流向,...

    1、数据流的概念

    计算机程序中,获取数据的方式有多种,比如:程序中直接给出、键盘输入、从数据文件中读取、从数据库中读取、通过网络读取等。
    为了更有效地进行数据的输入/输出操作,Java将各种数据源的数据,抽象为“数据流”,及stream。

    数据流:是指一组有顺序的、有起点和终端的字节集合,是对输入/输出的总称。

    2、数据流的分类:

    2.1、根据数据流的流向,可以将其分为输入流和输出流。
    输入流的起点被称为源,程序是从指向源的输入流中读取源中的数据。
    输入流中的数据只能读,不能写。

    输出流的终点被称为目的地,程序通过向输出流中写入数据,把信息传递道目的地。
    输出流中的数据只能写,不能读。

    输入输出流示意图

    2.2、根据数据的传输单位,数据流可以分为字符流和字节流。
    字节流(byte stream)以字节为单位,进行数据传输,可用于读写二进制数据。
    字节流类一般以InputStream/OutputStream结尾。
    字符流(character stream)以字符为单位,进行数据传输,用于处理文本数据,支持Unicode编码。
    字符流一般以Reader/Writer结尾。

    Java在java.io和java.util.zip包中,提供多种数据流类。

    **

    3、缓冲区:

    **
    数据流的操作,会涉及到外部设备,而,外部设备的读写速度比内存的读写速度要慢很多。如果直接在内存和外部设备之间传输数据,会音外部设备的速度限制,使得数据的传输效率变得很慢。在这种情况下,我们使用缓冲区的方法来提高内存与外部设备之间的数据传输效率。

    缓冲区示意图

    缓冲区是在内存中,特地开辟出来的一块用于数据传输的空间。
    只有当缓冲区的数据处于空或者满的时候,才会触发系统对外部设备进行写或读操作。
    正是由于减少了传输数据时,系统对外部设备的调用次数,减少了调用时间开销,使得数据传输的整体效率提好。

    4、Java的标准数据流:

    Java的标准数据流分为标准输入流、标准输出流和标准错误输出流等。
    Java通过系统类System实现标准输入/输出的功能。System的3个成员in、out和err分别对应于标准输入、标准输出和标准错误输出,其使用如下:

    import java.io.IOException;
    
    public class FileClass {
    
        public static void main(String [] args){
            System.out.println("这里是标准输出流。");
            try{
                System.out.println("请输入一个字符:");
                System.out.println("下面是标准输入流:");
                int a = 0;
                a = System.in.read();
                System.out.println("输入字符的ASCII码为:" + a);
            } catch(IOException e){
                e.printStackTrace();
            }
    
            System.err.println("这里是标准错误输出流");
        }
    }

    输出结果如下:

    这里是标准输出流。
    请输入一个字符:
    下面是标准输入流:
    b
    输入字符的ASCII码为:98
    这里是标准错误输出流
    展开全文
  • Java基本数据结构总结

    千次阅读 2016-06-06 13:17:14
    一直没有仔细的系统学习Java,之前一直用的是python和c/c++,但是既然要走上大数据的道路,那么一定逃脱不开java的。下面在网上找到一些资料并结合相关的书进行整理总结。java.util包,包含集合框架、遗留的 ...
  • Java基本数据类型详解

    千次阅读 2011-11-08 13:50:57
    当然初期Java的运行速度很慢,基本数据类型能在一定程度上改善性能。如果你想编写纯的面向对象的程序,用包装器类是取代基本数据类型就可以了。 1、基本类型的存储空间。byte--8位,short--16位,int--32位,long...
  • java中的数据

    千次阅读 2017-03-13 17:17:42
    好了,让我们来学一下Java中的数据流吧~! 概念 * IO流用来处理设备之间的数据传输 * Java数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * 流按流向分为两种:输入流,输出流。 * 流按操作类型分为两...
  • 在读1000条数据以内时候就几毫秒构造一条,在读到七八千条数据的时候就特别特别了。想知道要怎么加快后面的处理速度呢?(一共要处理50w条数据) (这是几千条后打印的时间: 构造Athlete ::= ,8990,GER,38,...
  • java实现数据分页展示

    千次阅读 2018-10-26 22:37:22
    在开发中我们经常需要从后端查询数据到前端页面展示,当我们的数据很多的时候就可以使用到分页技术,会使得我们的数据显示更加美观合理。 分页分类 有两种分页方式: “假分页” 其实就是采用前端技术对数据进行...
  • JAVA常用数据结构及原理分析

    千次阅读 2015-06-26 23:30:54
    前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balabala讲了一堆,现在总结一下。java.util包中三个重要的接口及特点:List(列表)、Set(保证集合中元素唯一)、Map(维护多个key-value...
  • JAVA常用数据结构及原理分析(面试总结)

    万次阅读 多人点赞 2017-05-21 17:27:58
    最近准备面试,因此整理一份Java中常用的数据结构资料,方便面试; java.util包中三个重要的接口及特点:List(列表)、Set(保证集合中元素唯一)、Map(维护多个key-value键值对,保证key唯一)。其不同子类的...
  • 数据是基础,算法是灵魂 版权声明,本文来自门心叼龙的博客,属于原创内容,转载请注明出处。... 源码下载地址:... 初级篇:Java数据结构与算法初级篇之数组、集合和散列表 中级篇:Ja...
  • Java基础---JAVA基本数据类型,关键字

    千次阅读 2015-08-02 12:01:42
    JAVA的关键字: 1.基本数据类型 2.类、方法和变量修饰符关键字 3.访问修饰符关键字 4.流程控制关键字 5. 错误处理 6. 包相关 7. 变量引用 8. 保留字
  • 如需转载请标明出处:... 本章我们学习使用java脚本进行数据处理。 数据情况 以嵌套Json结构为例进行解析,Json如下: { “id”: “0001”, “name”: “Joe”, “age”: 88, “children”: [ { “...
  • Java计算二进制数中1的个数

    千次阅读 2018-11-18 15:18:18
    前言 逐位法 查表法 Brian Kernighan法 分治法 Hamming Weight法 Hamming Weight优化法 ... 昨天学习全组合时,突然涉及到如何计算二进制中1的问题,我就直接使用的Integer.bitCount的...
  • java数据结构分析及优化

    千次阅读 2011-04-12 19:40:00
    java数据结构分析及优化
  • Java输入输出数据

    千次阅读 2017-12-15 08:48:51
    目录(?)[+]1什么是IO 2数据流的基本概念 1 数据流2 输入流Input Stream 3 输出流数据流...命令行参数标准输入输出数据流4javaIO层次体系结构 5 非流式文件类–File类 6 JavaIO流类库 io流的四个基本类io流的具体分类
  • 如题:最近在基于Android手机加速度传感器的数据开发手势动作识别,在安卓终端上需要执行实时计算任务,于是产生了疑问——计算时统一使用float还是double类型数据
  • 浅谈Java数据结构中的常见问题

    万次阅读 多人点赞 2019-08-29 09:34:13
    1、常用数据结构 数据结构是指相互之间存在着一种或多种关系的...缺点:数组大小固定后无法扩容,只能存储一种类型的数据,添加删除操作。适用场景:适用于需频繁查找,对存储空间要求不高,少添加删除。 2)...
  • Java(2)-Java IO输入输出流

    万次阅读 多人点赞 2012-04-01 11:28:55
    Java中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的...
  • Java数据类型—BigDecimal

    千次阅读 2021-01-16 19:23:38
    1. 当我们在进行有着高精度的计算要求的时候不要使用double和float 因为它们有着精度丢失的问题 2. 如果使用BigDecimal的时候,不要选择double值作为初始化的值,因为它同样会引入精度的问题 3. 如果你使用...
  • Java后端服务明显变诊断思路

    千次阅读 2019-03-21 18:07:49
    Java后端服务明显变诊断思路
  • 数据是基础,算法是灵魂 本文出自门心叼龙的博客,属于原创类容,转载请注明出处。... 源码下载地址:... 初级篇:Java数据结构与算法初级篇之数组、集合和散列表 中级篇:Java数据结...
  • 61. 基本数据类型优于包装类 Java 有一个由两部分组成的类型系统,包括基本类型(如 int、double 和 boolean)和引用类型(如 String 和 List)。每个基本类型都有一个对应的引用类型,称为包装类型。与 int、double...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些...Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...
  • java 数据结构和存储方式

    千次阅读 2016-03-01 09:54:33
     Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack ...ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直
  • Java基础问题整理

    万次阅读 多人点赞 2020-04-07 11:44:14
    备注:针对基本问题做一些基本的总结,不是详细解答!...4.HashMap1.7与HashMap1.8的区别,从数据结构上、Hash值的计算上、链表数据的插入方法、内部Entry类的实现上分析? 5.Hash1.7是基于数组...
  • 为什么Java永远比C++

    千次阅读 2014-08-11 17:20:05
    转载的文章,其中谈到了java比C ...耍过Java程序,或者用Java码过程序的人都晓得,Java要比用C++写成的原生程序要。这是咱用Java时已经承认的事实。   不过,很多人想要说服我们说这只不过是暂时的,他们说Java

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,144
精华内容 65,657
关键字:

java计算数据很慢

java 订阅