資料庫能力放通(記錄)

2021-08-31 18:06:15 字數 3252 閱讀 2359

要求資料庫中斷的情況下,部分功能能力放通:

實現思路:本想用csv檔案儲存臨時資料,發現用陣列拼裝太麻煩,後直接採用物件序列化儲存

採用讀寫所運算元據,在業務操作時,捕捉資料庫中斷異常,把物件寫入快取檔案中,

資料庫正常後,任意乙個使用者登陸,開闢乙個執行緒進行讀操作,寫入資料庫,然後刪除快取檔案

過程中發現學序列化追加儲存,無法正常讀取,最後乙個工具類是處理該問題的

/**

* * 快取檔案讀取

* 《讀取快取檔案,對快取資料進行資料庫持久化操作》

* * @author ***

* @version [v01, 2011-9-6]

* @see [相關類/方法]

* @since [產品/模組版本]

*/@scope("prototype")

@component

public class readtask extends thread

catch (exception e)

//4、刪除檔案

readwritelockoperator.delete();

if (null == eventbeanlist || eventbeanlist.isempty())

//3、成功儲存到資料庫(如果出現異常,如果普通異常記錄失敗行數,如果是資料庫中斷,回滾)

listfailist = eventrepository.inserteventlink(eventbeanlist);

if (null == failist || failist.isempty())

//5、對於資料庫突然中斷的資料,覆寫回快取檔案

trycatch (exception e)}}

}

/**

* 檔案讀寫操作類

* 《針對檔案的續寫加入讀寫鎖,避免衝突》

*  * @author  ***

* @version  [v1.0, 2011-9-6]

* @see  [相關類/方法]

* @since  [ecc/c02]

*/@component

public class readwritelocklogic

try}

}catch (exception e)

finally

catch (ioexception e)

}if (null != ois)

catch (ioexception e)

}readlock.unlock();//一定要保證鎖的釋放

}return eventbeanlist;

}/**

* 寫檔案

* * @param eventbeanlist 事件物件

* @param isverride 是否覆蓋

* @return boolean 是否正確寫入

*/public boolean write(listeventbeanlist, boolean isverride)

//        throws exception

}catch (exception e)

}if (!file.exists() && null != eventbeanlist)

}catch (exception e)

}fos = new fileoutputstream(file, isverride);

outsteam = eccobjectoutputstream.newinstance(file, fos);

if (null != eventbeanlist)

}outsteam.flush();

}catch (exception e)

finally

catch (ioexception e)

}if (null != outsteam)

catch (ioexception e)

}writelock.unlock();//一定要保證鎖的釋放

}return true;

}/**

* 刪除檔案

* 如果檔案存在則刪除檔案

* * @return boolean

*/public boolean delete()

catch (exception e)

}return false;

}/**

* 判斷檔案是否存在

* * @return boolean

*/public boolean i***ist()

public string getpath()

public void setpath(string path)

}

/**

* 快取檔案寫入

* 事件bean加密轉換為陣列寫入快取檔案中

* * @author ***

* @version [版本號, 2011-9-7]

* @see [相關類/方法]

* @since [產品/模組版本]

*/@component

public class writetask

else

return response;

}}

/**

* * 針對輸出流的封裝類

* 解決序列化物件追加寫入檔案無法讀取問題

* @author ***

* @version [版本號, 2011-9-9]

* @see [相關類/方法]

* @since [產品/模組版本]

*/public class eccobjectoutputstream extends objectoutputstream

/***

*/@override

protected void writestreamheader()

throws ioexception

else

}/**

* 《預設建構函式》

*///public eccobjectoutputstream(outputstream out, file f) //修改pmd問題

public eccobjectoutputstream(outputstream out)

throws ioexception

}

資料庫設計 能力等級

乙個威客系統,要針對雇主與服務商設計能力等級,具體計算等級方式如下 總的來說就是按照公式查詢出資料然後顯示 為了便於管理,決定將資料存在資料庫中 有人可以是雇主也可以是服務商 所以等級資料可以是一張表 加上等級變更記錄,一共兩張表 等級表為表a,變更表為表b 在等級計算中,註冊時間於當前時間計算出使...

資料庫學習記錄

基本概念 主鍵有2種主鍵的存在。一種是業務主鍵,一種是邏輯主鍵 業務主鍵通常是表裡有的資料作為主鍵使用。一般常見的就是不容易重複的資料,例如 身份證號等 邏輯主鍵就是本來一條資料沒有這個字段,但是我們擔心會出現重複資料,我們自己生成乙個讓此條資料成為唯一的重要字段,在一張表裡很明顯的主鍵建立方式是乙...

資料庫記錄處理

新建乙個表 名字為t3,屬性id為 int型別 主鍵,給自增,name 為 varchar型別 非空約束 age int 型別,int型別,非空屬性 create table t3 id int primary key auto increment,name varchar 20 not null,...