[英]High Performance deletion of a String from file in JAVA
我們致力於電子商務領域。 我們以很高的速度處理每個訂單。 每個訂單都可以根據用戶取消和替換。
無論發生什么情況,都不能錯過訂單。 因此,無論收到什么定單,我們都會以字符串形式存儲在文件中,並且當用戶取消定單或定單被執行時,我們將從文件中刪除相應的字符串。
也可能會出現這樣的情況,例如用戶一次可以取消50個以上的訂單。 結果,從文件中刪除字符串的通用方法:將所有字符串存儲在文件中並通過在列表中進行搜索將其刪除會導致很高的延遲。
對於一個取消請求,這不是問題,但是當用戶一次要取消所有訂單時,這種方法會引起很大的問題。
我當前用於從文件中刪除字符串的代碼:
public void deleteFromFile(String clordID) throws InterruptedException {
//delete based on clorid from the file
BufferedReader in = null;
String line = null;
try {
in = new BufferedReader(new FileReader(dir + "\\pendingOrders.txt"));
List<String> listLines = new ArrayList<>();
while ((line = in.readLine()) != null) {
if (!(line.contains(clordID))) { // check for Order ID which is unique for every string
listLines.add(line);
}
}
in.close();
BufferedWriter bufferedWriter1 = new BufferedWriter(new FileWriter(dir + "\\pendingOrders.txt"));
bufferedWriter1.write("");
bufferedWriter1.close();
BufferedWriter bufferedWriter2 = new BufferedWriter(new FileWriter(dir + "\\pendingOrders.txt", true));
for (String msg : listLines) {
bufferedWriter2.write(msg + "\n");
}
//in.close();
bufferedWriter2.close();
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
}//Delete
有沒有辦法提高性能? 每次提出取消請求時,將所有字符串存儲到列表中,然后再次清除文件並寫入文件中,肯定會導致高延遲。
好吧,讓我們見識一下-
是的,您幾乎不需要微調就可以提高性能。
注意:-我相信您沒有在運營任何電子商務網站,而是在做一些學校暑期項目。 但是,如果您將其用於實時應用程序。 請聽聽已經給您很好建議的人們。
盡管在我的評論中提到了使用文件的陷阱,再看一下您的代碼,我仍然可以找到以下改進之處,
PS:同樣,正如我在評論中所指出的,還有許多其他評論,如果這是真正的電子商務網站並投入生產,那將是一場災難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.