2012-06-13 34 views
2

短版: 如果你有保存當前的日期和時間,每一分鐘,覆蓋現有的條目,你會怎麼做呢?repetetively寫入數據庫或文本文件

將它寫入文本文件,數據庫或第三個選項?可能什麼會被認爲是最佳實踐。

我的場景是我想知道,在應用程序啓動時,應用程序最後一次運行的時間。

長版本:

我有一個性能問題,也許也適當的編碼風格。

我有一個應用程序,跟蹤食物庫存,當有些東西變得陳舊,必須刪除。 有一個timertask運行每分鐘檢查庫存中的當前項目,如果他們超過了他們被認爲是過時的日期和時間。

的問題是,如果應用程序關閉並重新啓動,項目在了停機期間陳舊不會被選中。對於重複的方法

runeveryminute = new TimerTask() { 

     @Override 
     public void run() { 

       for (Item i : lager.getAllItems) { 

        if (i.getMinutesTillStale == 0) { 
        JOptionPane.showConfirmDialog(MainFrame.this,"WARNING", 
        "Alarm", 
        JOptionPane.OK_CANCEL_OPTION); 
        } 
       } 
      } 
     } 
    }; 

我真的不同意檢查,如果事情已經過時的這種方式,但它是一個學校項目,所以它不是那麼重要

代碼。

我增加了一個窗口監聽的主機,但我不確定如果我可以依靠它,趕上意外崩潰,像電源故障。

+0

爲什麼不檢查啓動? –

+0

我認爲JavaFX可以爲您節省大量的工作和時間。戴夫是對的!檢查啓動時間,或者安排一下即可完成所有更新! –

+1

您是否考慮過寫入文件不是每一分鐘,而是作爲程序關閉的一部分?所以你在關機時寫一次。 – Thomas

回答

0

這取決於如何定義i.getMinutesTillStale。 如果某件物品在停機時間內陳舊過時,getMinutesTillStale會給出一個負值? 然後您可以將條件更改爲i.getMinutesTillStale <= 0

建議: 你存儲在數據庫中的項目的信息? 例如,記錄等itemIddatestoredexpiryperiod(or dateofExpiry) 然後可以寫一個存儲過程或其與計時器時間作爲輸入的查詢。 它會檢查所有已過期的項目,並向您發送這些項目的列表。

讓我知道這是否有幫助。

+0

是的,如果他們已經過時,它會返回一個負值。但是我想避免的是爲已經引起警報的物品創建警報。 如果我只通過minstillstale方法,我會警報所有陳舊的產品,不管以前的報警。 – KristianMedK

+0

@ user744610是否將某個項目標記爲「已報警」選項?有什麼要說的是,你會永遠趕上每一個過期的項目過期嗎?如果您只是每分鐘檢查一次,我都看不到'== 0'的準確性。一個項目可能在計時器執行前30秒過期 - 會爲該項目設置「getMinutesTillStale == 0」嗎? – cklab

+0

如果無法確切知道程序崩潰的時間,那我認爲這將是下一個最好的事情。 – KristianMedK