Java模拟数据量过大时批量处理数据实现

代码:

import java.util.ArrayList;
import java.util.List;
/**
 * 模拟批量处理数据
 * 当数据量过大过多导致超时等问题可以将数据进行分批处理
 * @author 【】
 *
 */
public class BatchUtil {

	public static void listBatchUtil(List<Integer> lists) {

		System.out.println(lists);
		// 定义批处理的数据数量(即批处理条件)
		int num = 10;
		// 判断集合数量,如果小于等于定义的数量(即未达到批处理条件),直接进行处理
		if (lists.size() <= num) {

			System.out.println(lists.size());
			System.out.println(lists.toString().substring(1, lists.toString().lastIndexOf("]")));

			return;
		}
		// 如果大于定义的数量,按定义数量进行批处理
		int  times = lists.size()/num + 1;

		System.out.println("一共要进行"+times+"次批处理");
		// 遍历分批处理次数,并进行批处理
		for (int i = 0; i < times; i++) {
			// 定义要进行批处理的临时集合
			List<Integer> tempList = new ArrayList<>();
			// 将要批处理数据放入临时集合中
			for (int j = i*num; j < lists.size(); j++) {
				tempList.add(lists.get(j));
				if (tempList.size() == num) {
					break;
				}
			}

			// 进行批处理
			System.out.println("======================进行第"+(i+1)+"次批处理=======================");
			System.out.println(tempList.size());
			System.out.println(tempList.toString().substring(1, tempList.toString().lastIndexOf("]")));
			System.out.println("=========================================================");
		}
	}

	public static void main(String[] args) {
		List<Integer> lists = new ArrayList<>();
		for (int i = 1; i <= 26; i++) {
			lists.add(i);
		}
		listBatchUtil(lists);
	}
}

实现效果:

原文地址:https://www.cnblogs.com/Big-Boss/p/9543667.html

时间: 2024-10-06 09:02:53

Java模拟数据量过大时批量处理数据实现的相关文章

MongoDB数据量较大时如何构建索引--减少业务最少影响

在数据量较大或请求量较大,直接建立索引对性能有显著影响时,可以利用复制集(数据量较大时一般为线上环境,使用复制集为必然选择或者使用分片.)中部分机器宕机不影响复制集工作的特性,继而建立索引. 备注:添加索引的表使用WT引擎,数据量有1.5亿左右. 1. 副本集配置参数 节点1: $ more shard1.conf dbpath=/data/users/mgousr01/mongodb/dbdata/shard1_1 logpath=/data/users/mgousr01/mongodb/lo

斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: 使用比较大的训练集(意味着不可能过拟合),此时方差会比较低:此时,如果在逻辑回归或者线性回归模型中加入很多参数以及层数的话,则偏差会很低.综合起来,这会是一个很好的高性能的学习算法. 原文地址:https://www.cnblogs.com/chenwenyan/p/8326027.html

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat

数据量很大的排序问题 大量数据如何排序

某天参加阿里面试,技术面的时候,面试官问了排序问题: 问题一:若有1T的数据,比如 只有两列,身份证号和姓名 需要实现由大到小排序,你用什么办法,能否做到 复杂度为O(n),说说你的思路和想法? 问题二:有10个G的数据,也是一样,比如两列,身份证号和姓名,如果两条数据一样,则表示该两条数据重复了,现在给你512的内存,把这10G中重复次数最高的10条数据取出来. 我的思路是:这么大的数据,用普通的排序一定不行, 可以这样,用身份证号的前三位切割这个数据,这样会分成999份, 每一份再进行排序,

针对数据量较大的表,需要进行跨库复制,采用navcat 实现sqlite数据库跨数据库的数据表迁移 [转载]

2014年12月13日 14:36 新浪博客 (转自http://www.cnblogs.com/nmj1986/archive/2012/09/17/2688827.html) 需求: 有两个不同的SQLite数据库 A.B,需要将B数据库中的表复制到A数据库中去,数据量较小的时候,可以在数据库可视化工具Navicat中直接将表导成.sql文件,然后将sql文件在另一个数据库运行即可.但是当数据量较大时,这样操作会丢失一部分数据.因此针对这种情况可采用下述方法: 解决办法: (1)使用软件:S

第9条:用生成器表达式来改写数据量较大的列表推导式

核心知识点: (1)当输入的数据量较大时,列表推导可能会因为占用太多内存而出问题. (2)由生成器表达式所返回的迭代器,可以逐次产生输出值,从而避免内存用量问题. (3)把某个生成器表达式所返回的迭代器,放在另一个生成器表达式的for子表达式中,即可将二者结合起来. (4)串在一起的生成器表达式执行速度很快. 列表推导式的缺点是:在推导过程中,对于输入序列中的每个值来说,可能都要创建仅含一项元素的全新列表. 当输入的数据比较少时,不会出任何问题,但如果输入的数据非常多,那么可能会消耗大量内存,并

Web传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时

eb传输,前台的参数数据量过大[json格式的字符串],可能达到几M,ajax调用后台方法时,无法传递问题分析:tomcat上默认post提交大小为2M,左右,超过这个大小了,就会传值不成功解决方法:修改post提交大小的限制大小,在server.xml上修改,如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8

Sql server 大数据量插入速度慢或丢失数据解决办法

问题描述:我的设备每秒2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,找了好多解决方法,整理了两种效果比较明显的解决办法: 第一种:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|

关于android中gridview数据量很大的时候,在加载gridview时会出现卡顿的现象

好的解决办法就是先加载一定数量的数据,然后在最下方提示正在加载! 动态加载就是把放入adapter中的数据分好几次加载.在用户拖动gridview时再加载一定的数据,和sina微博的客户端类似. 给gridview添加OnScrollListener监听事件默认会覆盖下面两个方法: 下面列举个列子: <com.ui.widget.LazyGridView xmlns:android="http://schemas.android.com/apk/res/android" andr