记录一点关于list每次以指定的间距分割的代码,仅做一个记录
2016-12-30 10:49
344 查看
这是个对list按指定的尺寸分割的代码,为何要记录这个问题,在我的mysql做批量插入时出现了
Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1875824 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
这个错误,经我们分析,是批量插入一次传递的数据太多,一个方式是修改max_allowed_package 这个参数,那个异常已经说明了解决方式(You can change this value on the server by setting the max_allowed_packet' variable),第二就是对批量插入的数据list进行切割这个效果就好了,因为修改参数还是存在着不确定性,所以还是用切割吧。写了一段小例子测试一下算法,记录一下,其实没有什么指导意义,看这篇文章的可别说我low,附上算法和测试代码:
List<Integer> testlist=new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));
int startindex=10; //这个控制切割的大小,如果太大修改这个参数
for(int i=startindex;;){
if(testlist.size()<i){
int start=i-startindex<0?0:i-startindex;
if( testlist.subList(start, testlist.size()).size()>0){
for (Integer integer : testlist.subList(start, testlist.size())) { //切割后得到的list为 testlist.subList(start, testlist.size())
System.out.print("qiege2="+integer);
}
}
System.out.println();
break;
}else{
for (Integer integer : testlist.subList(i-startindex,i)) { //切割后dedao的list为 testlist.subList(i-startindex,i)
System.out.print("qiege2="+integer);
}
System.out.println();
}
i=i+startindex;
}
很简单,自己记录一下,欢迎提出好的建议。
Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1875824 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
这个错误,经我们分析,是批量插入一次传递的数据太多,一个方式是修改max_allowed_package 这个参数,那个异常已经说明了解决方式(You can change this value on the server by setting the max_allowed_packet' variable),第二就是对批量插入的数据list进行切割这个效果就好了,因为修改参数还是存在着不确定性,所以还是用切割吧。写了一段小例子测试一下算法,记录一下,其实没有什么指导意义,看这篇文章的可别说我low,附上算法和测试代码:
List<Integer> testlist=new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));
int startindex=10; //这个控制切割的大小,如果太大修改这个参数
for(int i=startindex;;){
if(testlist.size()<i){
int start=i-startindex<0?0:i-startindex;
if( testlist.subList(start, testlist.size()).size()>0){
for (Integer integer : testlist.subList(start, testlist.size())) { //切割后得到的list为 testlist.subList(start, testlist.size())
System.out.print("qiege2="+integer);
}
}
System.out.println();
break;
}else{
for (Integer integer : testlist.subList(i-startindex,i)) { //切割后dedao的list为 testlist.subList(i-startindex,i)
System.out.print("qiege2="+integer);
}
System.out.println();
}
i=i+startindex;
}
很简单,自己记录一下,欢迎提出好的建议。
相关文章推荐
- 关于通过代码指定页面控件的事件响应脚本函数的一个细节
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- 链表分割 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以
- 记录与linux的每次邂逅__小白关于mysql脚本安装事前事后的一点感想
- 网上一个关于支持打印的ListView类代码的一点改动
- 记录与linux的每次邂逅__小白关于mysql脚本安装事前事后的一点感想-2
- 关于代码运行效率问题的一个总结和一点疑问
- 关于一个犯罪记录的联想
- 关于反射的一点代码(今天没时间没有加注释,改天加上)
- 自己的记录,关于SSO的服务段和客户端关键代码
- 关于AdoHelper的一个方便之处的代码实现细节
- BSP分割算法补充——关于分割一个三角形
- 将一个大图像分割成几个小图像的代码
- 关于hashtable线程安全的一个关键字和一段代码
- 又找到一个关于农历的代码
- 关于代码折叠的一点改进意见
- VC++中关于ListControl排序的一点心得[原创]
- 一个关于按地址传递和按值传递区别的代码,给新手
- 一个关于asp显示记录的问题
- 关于ACCESS-LIST的一个实验