我們致力於電子商務領域。我們以極高的速度處理每一筆訂單。每個訂單都可以根據用戶取消和更換。從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
是否有提高性能的方法嗎?每次取消請求引發時,將所有字符串存儲到列表中,並再次清除文件並寫入文件肯定會導致高延遲。
您使用的是平面文件嗎?你瘋了? – Kayaman
我只是使用一個簡單的文本文件。新的方法是真的可以接受,但我現在不能使用任何數據庫 –
你沒有運行一個高性能的電子商務應用程序,那裏什麼都不能錯過。你正在運行一個可以發生任何事情的玩具項目。使用事務數據庫。這就是他們的目的。 –