問題背景:
系統的模組劃分為平台和業務,分別由平台組和業務組各自維護各自的**。
typedef struct plat_container
int a1; /*平台用*/
int a2; /*平台用*/
int *p_an; /*平台用*/
int serv11; /*業務1用*/
int serv12; /*業務1用*/
int servn; /*業務n 用*/
}plat_container_s;
如上所述,大量的業務資料引入導致該資料結構非常龐大。上面是舉例,實際上肯定更複雜,還有指標及併發保護機制。
如下缺點:
1、資料結構龐大,可維護性差
2、大量的業務可能會通過這個資料結構和平台產生耦合。
這種大量的業務資料往裡塞,就像我們吃火鍋時不斷往鍋裡加料一樣,於是我笑稱這種資料結構就是"火鍋模式".
此種資料結構可能很多人已經習慣了,都是這麼寫的,不怕笑話,我現在專案組正是這麼做的,所以我想先自行做個實驗優化這種資料結構,
降低這種業務和平台的耦合度。
我的想法如下:
typedef struct plat_container
int a1; /*平台用*/
int a2; /*平台用*/
int *p_an; /*平台用*/
struct list serv_list; /*業務鏈,業務可以動態擴充套件,當然也可以考慮用指定長度的陣列,比如最多支援1024個業務特性*/
}plat_container_s;
平台提供業務註冊介面,業務初始化時,呼叫該介面平台為業務分配空間,然後把記憶體位址返回給業務。平台把該業務節點掛在平台鎖維護的
業務鍊錶中。業務得到平台分配的記憶體空間後,愛存放什麼資料隨業務怎麼放。業務資料完全對平台透明。平台也看不到業務的資料結構。
如何應對業務資料結構的變更
1 問題描述 近期在做乙個審批工作流的系統,在和客戶交流的過程中,總是聽到 你們的系統要支援我們的業務發展,天我們要上 產品,你們的系統也要支援 產品的審批 當然,不同產品的審批內容不同 流程不同。在這裡先說下怎麼解決業務資料結構的變更。2 解決方法 想要不改程式就實現對業務資料結構變更的支援,基本...
如何學習資料結構和演算法
首先掌握常用的 基礎的。然後在此基礎上往進行擴充套件學習。常用的 基礎的資料結構和演算法有20個。資料結構 陣列 鍊錶 棧 佇列 雜湊表 二叉樹 堆 跳表 圖 trie樹 演算法 遞迴 排序 二分查詢 搜尋 雜湊演算法 貪心演算法 分治演算法 回溯演算法 動態規劃 字串匹配演算法。這些需要一一攻克。...
資料結構 資料結構的起源和研究內容
1,本文論述資料結構的起源和資料結構研究內容 2,高手往往能夠看到初學者看不到的問題 3,為什麼有程式存在 1,程式是為了解決實際問題而存在的 2,從本質上講,程式是解決問題的步驟描述 有了這些步驟,計算機照做就可以了 4,理解實際問題 1,確認問題型別 1,如 數值計算,求最小值個數,排序等 2,...