標籤:統一 開發 ... 更新 附加 ble 額外 序列化 記憶體位址
//1)非持久化程式.
//2)非持久化程式中的持久化.
//3)持久化程式.
//4)面向持久化開發的對比.
//5)某些持久化工具使用.
//6)小結.
//2)
//假如武器倉庫非常龐大.100w條甚至更多.
//那麼這個資料就必須持久化了.放在記憶體是不現實的.
//也不能一次從檔案中讀出.所以只能分批讀起.
//之前倉庫的public屬性,必須改為private.封裝起來.
//只提供,插入資料,和讀起資料的方法.
//到這裡突然發現.忽視了一個問題.
//持久化之後.之前儲存了武器指標的地方.就是一個遺漏了.
//雖然使用智能指標.可以避免null 指標的問題.
//但是要對這個資料做處理的時候.就會出現問題.
//比如,更換武器.
//之前的武器必須把used設定為false.
//但是可能此資料已經在檔案中了.更改了記憶體的資料.但是無法反應到檔案中.
//思考了一下,必須給所有需要持久化的資料,附加一個檔案索引標誌.
//當持久化時,把標誌補充上去.這樣所有的資料,都可以知道自己是否已經持久化了.
//記憶體中的操作,必須檢測,並作出判斷,是否要額外對外部資料進行更新.
//所以,記憶體持久化後,更新外部檔案索引到記憶體.
//對記憶體的操作,檢測是否已經持久化,並作出對應的操作.以保持資料一致性.但對於外部操作來說,不必知道資料是否持久.
//目前來說,持久化要解決的就是如何把原來通過指標定位元據的方法,在外部檔案中實現,加個外部檔案的索引給資料本身.就好了.
//一個是記憶體流和記憶體的關係(通過指標),一個是記憶體流和外部資料流的關係(通過2者都加一個外部資料索引)
//而外部資料和外部資料的相互關係,也是通過外部資料索引.
//所以是否,一開始就面向資料庫開發.就已經解決了物件導向開發後,補充持久方案這種情況,需要的額外處理?
//比如自增列的值.就好比一個對象的記憶體位址.而沒有自增列的表.就表示捨去對象的地址比較法,而用記憶體中的對象的成員資料群組合來對比.
//ok.邏輯通了.開工測試.
//發現還有一個問題.持久化後的資料,如果要載入到記憶體中,如何讓已經存在的刪除.只保留一份?難道要採用鏈表模式,保留全域鏈頭?
//怎麼有點複雜了...難道要根據引數,來決定是否持久化.避免不統一問題.但是這個應該會影響資料的一致性.如果碰到程式中斷問題.
//思索無果.
//非持久化的思路開發,要完美轉到持久化.好像會死人.
//只能考慮即時的持久,才不會讓開發難度擴大.最多封裝一下,持久層.方便之後採用更靈活的方法..那基本就屬於面向資料庫開發了.沒辦法啊,關係型資料庫這麼流行.
//參考了一下最廣泛使用的orm,一般有3種方式.Single-table,Joined-subclass,Table-per-concrete-class
//選擇Table-per-concrete-class,第一種簡單,但違背資料3範式.第二種,不錯,但是可以稍微複雜了點.反正通過視圖,可以也可以串連.
//每個具體類一個表,這樣,產生對象時可以很簡單的知道要插入資料了.表包含從基類繼承的所有資料成員.、
序列化。草稿。