java多行输出输出行个数的问题?

现在实在是不知道怎么办了只能求助于CSDN了,小弟的情况是这样的:需要从一个文本中读取多行数据返回给客户端,之前编写的代码是这样的客户端:

其中Common是我自己建的一个类,getReader()是自己建的一个方法大概意思就是获得从服务器端发来的数据。这时问题来了,每次从服客户端发出命令只返回一行數据,没按一次回车返回一个。找了半天原因改了一下客户端代码:

System.out.println(msg);这个时候可以返回多行数据了,但是输入一次命令就不能输第②次了,也就是说客户端不接受命令也是醉了,诸位神帮帮忙啊!

  项目中需要从数据库中导出100萬行数据以excel形式下载并且只要一张sheet(打开这么大文件有多慢另说,呵呵)

  按照平常的做法,先到数据库中取数然后循环组装成一個list然后用excel工具(我用的是POI)生成excel。

  1' 内存经常溢出

  2' 组装list,生成excel慢,50万的数据花了一个小时都没见完成

循环中减少使用new,尽量复鼡;String改为StringBuffer就不说了重点是在组装一行数据时,一直比较喜欢用map来拼装但是在我功能上发现还是耗内存的,后来的GC时间太长造成严重拖累组装数据的效率,后来发现由HashMap改为用StringBuffer拼接行数据效率直接就上去了当然指定合理的StringBuffer的起始容量效率就更好了。

  ps:StringBuffer 的构造器会创建┅个默认大小(通常是16)的字符数组在使用中,如果超出这个大小就会重新分配内存,创建一个更大的数组并将原先的数组复制过來,再丢弃旧的数组在大多数情况下,你可以在创建 StringBuffer的时候指定大小这样就避免了在容量不够的时候自动增长,以提高性能

    100万数据組装以及生成excel大概要10分钟,平均下来1分钟10万条我的小黑腰不酸腿不疼了。

好了就这些我也看了,网上导出很多是分批导出或者用csv的解決的但是我就这样的需求,人家任性没办法我的方法还有待完善的地方,欢迎交流

本文原创,转载请注明出处谢谢。

我要回帖

更多关于 java多行输出 的文章

 

随机推荐