昨天被安排了乙個任務,要生成撫順地區所有的聯通和移動的手機號,最後要隨機匯出,每50w乙個文字.
開發思路是先找到所有的撫順號段,然後生成號段下所有的手機號,最後隨機匯出成文字.
看了一下我們的資料庫,撫順地區所有的號段一共有32個(可能不夠,不過我們的資料庫裡就這麼多,酬和用吧.不少了.),每個號段下有10000個號,最近就是3200000個手機號..
生成號碼不是難事.關鍵是生成**以後,從資料庫中取出320w資料,然後要隨機排列輸出,嘗試了各種辦法以後終於還是失敗,總是會記憶體溢位,要不然就是效率太低..
晚上回家突然想到乙個辦法,我何必要最後隨機抽出資料呢?為什麼不直接就做出隨機的資料呢?讓資料在資料庫中隨機儲存,然後之後分頁查詢,每次查詢50w儲存檔案就ok了啊...早上到單位一試驗果然有效..
首先是生成隨機資料的地方.隨機資料並不是說手機號碼隨機生成,如果隨機生成號碼還有驗證是否重複很麻煩,直接隨機生成主鍵id,然後儲存呵呵,一切ok.
int index = 0;
int number = 0;
string numberstr = "";
string part = "";
string pattern = "0000 ";
decimalformat df = new decimalformat(pattern);
connection connection = ormdao.jdbctemplate.getconnection();
connection.setautocommit(false);
string sql = "insert into t_phonexy (id,phone,part,number,prefix) values (?,?,?,?,?)";
preparedstatement prest = connection.preparestatement(sql, resultset.type_scroll_sensitive,resultset.concur_read_only);
//生成4000000萬個id.使用linkedlist提高插入效率
listids = new linkedlist();
while(number < 4000000)
//對400w個id隨機打亂隨機.
collections.shuffle(ids);
//將linkedlist轉換為陣列,提高取資料的效率
integer idss = new integer[400000];
idss = ids.toarray(idss);
//記錄取數索引
int idsindex = 0;
for(index = 0 ;index資料庫mysql5.0 表型別myisam.只有主鍵索引. 耗時 :0時-9分-35秒
我又測試了一下,注釋掉隨機主鍵部分的**,看看耗時是多少.耗時 :0時-8分-46秒
只慢了不到一分鐘,只慢了49秒而已~~
剩下的工作就簡單多了,取出資料,生成檔案.
class.forname("com.mysql.jdbc.driver");
connection connection = drivermanager.getconnection("jdbc:mysql://localhost:3306/xbexam?characterencoding=utf-8", "root", "123123");
// connection connection = ormdao.jdbctemplate.getconnection();
statement statement = connection.createstatement();
resultset resultset = statement.executequery(sql);
system.out.println("*****資料庫訪問結束*****==");
listlist = new linkedlist();
while(resultset.next())
int count = 0;
int filecount = 0;
while(iterator.hasnext())
count++;
} //寫出檔案
file file = new file("d:/"+filecount+".txt");
filecount++;
file.createnewfile();
filewriter filewriter = new filewriter(file);
filewriter.write(buffer.tostring());
filewriter.flush();
filewriter.close();
生成檔案..耗時 :0時0分-13秒...簡直~~~簡直~~
一切都搞定了..呵呵~~**要留好,不一定什麼時候還能用得上.
使用python,批量生產條形碼
在工作中,有時會遇見需要將數字轉換為條碼的問題,每次都需要開啟條碼轉換的 一次次的轉換後截圖,一兩個還行,但是當需要轉換的數量較多時,就會顯得特別麻煩,弄不好還會遺漏或者重複,為了解決這個問題,使用python寫了以下指令碼,用來解決此問題 1 安裝python barcode庫和pillow庫 需...
2023年前我國載人飛船將批量生產
我國空間站建成後,負責運送航天員的載人飛船將根據空間站任務需要,像航班一樣發射。全國人大代表 中國航天科技集團 五院載人飛船系統總設計師張柏楠 9 日向記者表示,未來我國飛船將告別 訂製 開始小批量生產。在我國載人航天工程空間實驗室任務階段,主要任務是突破和掌握關鍵技術,載人飛船主要根據攻關任務確定...
傳英特爾欲批量生產上網本 採用Android系統
英特爾最近公布了其第四財季的財報,由於市場對計算機的整體需求下滑,導致其營收大幅下滑.在該公司 會議上,其ceo歐德寧與分析師談及了上網本現象,暗示上網本不會大規模蠶食筆記本的銷售份額,只會逐漸增加整個市場的份額.不過無論如何,上網本的銷售量在不斷增長,英特爾當然會加入到任何具有增長潛力的領域中去....