gpt4 book ai didi

java - 在 JAVA 中从文件中高性能删除字符串

转载 作者:行者123 更新时间:2023-12-02 02:35:31 26 4
gpt4 key购买 nike

我们致力于电子商务领域。我们以非常高的速度处理每个订单。每个订单都可以根据用户取消和更换。

无论发生什么情况,订单都不能错过。因此,无论我们收到什么订单,我们都会以字符串的形式存储在文件中,当用户取消订单或订单被填写时,我们就会从文件中删除相应的字符串。

还可能存在用户一次可以取消 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

有没有办法提高性能?每次提出取消请求时,将所有字符串存储到列表中并再次清除文件并写入文件肯定会导致高延迟。

最佳答案

好吧,让我们尝试一下 -

是的,您可以通过一些微调来提高性能。

  1. 根据事务量将文件分割成更小的 block 。可以是每天 1 个文件,甚至每小时 1 个文件。
  2. 我相信您的方法中的 clordID 参数是 orderid,在其中的订单 id 中维护日期,例如 ddMMyyyy-orderid。
  3. 当您收到删除请求时,首先从订单 ID 中提取日期,然后打开属于该天的文件。这将减少您需要迭代的行数。

注意:-我相信您没有运行任何电子商务网站,而是在做一些学校暑期项目。但如果您将其用于实时应用程序。请听听那些已经给你很好建议的人。

关于java - 在 JAVA 中从文件中高性能删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com