百万個の銀行カード番号を生成
1339 ワード
この間、あるテスト友达は百万本の重複しないデータを生成するプログラムを書くように手伝ってもらい、テストの仕事をして使いました.そこで、ご飯を食べ終わってから会議を書き始めました.今日は暇があってブログを見に来ました.何もないことに気づきました.このコードを伝えました.この過程を覚えておくためだけです.
最初は百万本を生成するのは100万回のサイクルカウントを書く方法にほかならないと思っていましたが、使用中に70万程度でメモリオーバーフローの問題が発生していることがわかりました.そこでコード分割を行い、50万回書きました.
コードは次のとおりです.
最初は百万本を生成するのは100万回のサイクルカウントを書く方法にほかならないと思っていましたが、使用中に70万程度でメモリオーバーフローの問題が発生していることがわかりました.そこでコード分割を行い、50万回書きました.
コードは次のとおりです.
import static java.lang.System.out;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Arrays;
/**
* : , 2 ,
* @author thinkpad
*
*/
public class Test {
public static final int BUFSIZE = 1024 * 8;
// 1
public static String OUT_FILE_1="D://bank1.csv";
// 2
public static String OUT_FILE_2="D://bank2.csv";
//
public static String OUT_PUT_FILE="D:/output.csv";
//
public static String COMMA_SPLIT=",";
//
public static String LINE_SPLIT="
";
/**
*
* , 2
*/
public static long produce(String outFileName,long b_no){
File outfile=new File(outFileName);
long b_max_no=b_no+500000;
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(outfile));
StringBuffer sb_t=new StringBuffer();
while(b_no