亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種動(dòng)態(tài)加載性質(zhì)的cim內(nèi)存庫(kù)生成方法

文檔序號(hào):8487675閱讀:221來(lái)源:國(guó)知局
一種動(dòng)態(tài)加載性質(zhì)的cim內(nèi)存庫(kù)生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及電力系統(tǒng)數(shù)據(jù)處理方法,具體來(lái)說(shuō)涉及一種動(dòng)態(tài)加載性質(zhì)的CM內(nèi)存 庫(kù)生成方法。
【背景技術(shù)】
[0002] 國(guó)際電工技術(shù)委員會(huì)IEC定義了 一種電力系統(tǒng)通用信息模型CIM (Common Information Model,通用信息模型)。CIM提供了一個(gè)關(guān)于電力系統(tǒng)信息的全面邏輯視圖, 是一個(gè)代表電力企業(yè)所有主要對(duì)象的抽象模型,包括了這些對(duì)象的公有類(lèi)和屬性,以及它 們之間的關(guān)系。
[0003] 使用CIM描述電力系統(tǒng)數(shù)據(jù)使得每種業(yè)務(wù)對(duì)象都有了一個(gè)特定的類(lèi)名,包含明確 的屬性和關(guān)聯(lián)定義,便于對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一描述和管理,也使得將電力設(shè)備對(duì)象之間映射成 面向?qū)ο缶幊陶Z(yǔ)言中的內(nèi)存對(duì)象成為可能。CIM類(lèi)中屬性和關(guān)聯(lián)的統(tǒng)稱(chēng)為性質(zhì)。當(dāng)對(duì)象性 質(zhì)取值為空的時(shí)讀取該性質(zhì)得到的值為缺省值。
[0004] 在電力自動(dòng)化分析等領(lǐng)域,將按照CM組織的對(duì)象加載到內(nèi)存中進(jìn)行業(yè)務(wù)邏輯分 析處理的作為已經(jīng)很常見(jiàn),但多數(shù)是輕量級(jí)模型,數(shù)據(jù)量在幾十萬(wàn),而百萬(wàn)甚至千萬(wàn)級(jí)的數(shù) 據(jù)平臺(tái)很少有通過(guò)內(nèi)存庫(kù)提供數(shù)據(jù)訪(fǎng)問(wèn)效率的做法。
[0005] -種是通過(guò)代碼生成工具直接將CM類(lèi)中的類(lèi)、屬性、關(guān)聯(lián)映射成編程語(yǔ)言中的 類(lèi)、屬性和引用是常用的內(nèi)存庫(kù)生成方法。CIM中的每個(gè)性質(zhì),都被生成了實(shí)體變量,加載數(shù) 據(jù)后,無(wú)論是否取值都會(huì)占用8個(gè)字節(jié)的內(nèi)存空間。這種方法的缺點(diǎn)在于:第一:對(duì)于取值 稀疏的電力模型,即CM模型中某類(lèi)的屬性多,而實(shí)際數(shù)據(jù)中屬性取值多數(shù)為空的情況下, 內(nèi)存浪費(fèi)很多?,F(xiàn)實(shí)情況中,由于CIM模式的業(yè)務(wù)覆蓋率廣,對(duì)象性質(zhì)定義很多,多數(shù)CM 屬性有值的概率不到一半,對(duì)于千萬(wàn)對(duì)象級(jí)數(shù)據(jù),至少有幾個(gè)G的內(nèi)存被浪費(fèi),也使得低配 置的硬件環(huán)境無(wú)法支撐大數(shù)據(jù)量的內(nèi)存庫(kù)。第二:由于CIM對(duì)象的性質(zhì)還有缺省值的概念, 對(duì)于未設(shè)置值的屬性不能簡(jiǎn)單的用null代替,因?yàn)閷傩杂锌赡鼙辉O(shè)置了 null值,這種情 況不能應(yīng)用缺省值。因此需要額外為每個(gè)對(duì)象定義一個(gè)bool型的是否設(shè)置了取值的標(biāo)識(shí), 每個(gè)性質(zhì)多占4個(gè)字節(jié)的內(nèi)存。
[0006] 此外,采用通用的對(duì)象描述構(gòu)建內(nèi)存庫(kù)是另一種構(gòu)建方式。此種方式使用一個(gè)通 用的數(shù)據(jù)類(lèi)型來(lái)描述所有對(duì)象,所有的屬性、關(guān)聯(lián)以映射表的方式存儲(chǔ)在內(nèi)存中。這種做 法只保存有值的對(duì)象,沒(méi)有值的性質(zhì)不占用內(nèi)存。這種基于對(duì)象通用描述和性質(zhì)映射表的 CM內(nèi)存庫(kù)缺點(diǎn)在于:第一:不能發(fā)揮面向?qū)ο笤谔匦?,無(wú)法使用get、set方法直接訪(fǎng)問(wèn)對(duì) 象屬性,也不能為特定的類(lèi)增加會(huì)修改方法實(shí)現(xiàn)。第二:性質(zhì)映射表采用key-value方式存 儲(chǔ),每個(gè)key都是一個(gè)字符串,還有每個(gè)對(duì)象映射表本身所占的內(nèi)存,使得有對(duì)象的性質(zhì)內(nèi) 存占用量翻倍。第三:當(dāng)進(jìn)行性質(zhì)訪(fǎng)問(wèn)時(shí),必須進(jìn)程字符串比較才能從映射表中定位到性質(zhì) 取值,字符串方式比較效率低,即使采用hash算法,也有一定的性能損失。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明的目的在于提供一種動(dòng)態(tài)加載性質(zhì)的CIM內(nèi)存庫(kù)生成方法,本方法可以在 基本不影響效率的情況下,有效的減少基于CIM的面向?qū)ο髢?nèi)存庫(kù)的資源占用,對(duì)于取值 稀疏的電力模型尤其明顯的。內(nèi)存占用的大幅減少使得重量級(jí)數(shù)據(jù)平臺(tái)的內(nèi)存庫(kù)構(gòu)建不再 受過(guò)高的內(nèi)存要求限制,能夠進(jìn)行快速業(yè)務(wù)分析和提供高速數(shù)據(jù)訪(fǎng)問(wèn)能力。
[0008] 本發(fā)明的目的可通過(guò)以下的技術(shù)措施來(lái)實(shí)現(xiàn):
[0009] -種動(dòng)態(tài)加載性質(zhì)的CIM內(nèi)存庫(kù)生成方法,包括如下步驟:
[0010] 第一步:生成元信息代碼
[0011] 根據(jù)CIM模型生成靜態(tài)代碼,包括類(lèi)名、性質(zhì)名稱(chēng)到靜態(tài)索引號(hào)的映射、性質(zhì)名稱(chēng) 到數(shù)據(jù)類(lèi)型的映射、性質(zhì)的缺省值。
[0012] a)將CM模型中的每一個(gè)類(lèi)生成相同名稱(chēng)的代碼類(lèi);
[0013] b)為所述代碼類(lèi)中的屬性生成代碼中的字段,所述字段的名稱(chēng)和數(shù)據(jù)類(lèi)型與CIM 模型相同;
[0014] C)為所有字段生成缺省值靜態(tài)常量,CM模型里有缺省值的常量取值為缺省值, 沒(méi)有缺省值的常量取值為空;
[0015] d)為每個(gè)字段生成一個(gè)整型性質(zhì)靜態(tài)索引號(hào),從0開(kāi)始;
[0016] 第二步:生成性質(zhì)信息代碼
[0017] 在每個(gè)所述代碼類(lèi)中定義一個(gè)性質(zhì)取值數(shù)組,用于動(dòng)態(tài)存儲(chǔ)性質(zhì)取值,數(shù)組的大 小初始為0,即空數(shù)組,在加載數(shù)據(jù)的時(shí)候根據(jù)實(shí)際有取值的性質(zhì)個(gè)數(shù)動(dòng)態(tài)調(diào)整數(shù)組的大 小。另外根據(jù)CM模型中的類(lèi)中性質(zhì)的個(gè)數(shù),定義一個(gè)或多個(gè)long型數(shù)據(jù)標(biāo)識(shí),用來(lái)管理 性質(zhì)是否被設(shè)置取值以及配合在性質(zhì)取值數(shù)組中定位性質(zhì)。
[0018] 一個(gè)long型變量有64個(gè)bit,可以管理64個(gè)性質(zhì)。當(dāng)某個(gè)bit取值為1時(shí),代表 該bit所對(duì)應(yīng)的性質(zhì)被設(shè)置了取值,性質(zhì)取值數(shù)組中為此性質(zhì)分配一個(gè)存儲(chǔ)單元;當(dāng)某個(gè) bit取值為0時(shí),代表此bit所對(duì)應(yīng)的性質(zhì)未設(shè)置取值,性質(zhì)取值數(shù)組中不會(huì)為其分配存儲(chǔ) 單元。
[0019] 第三步:定位性質(zhì),計(jì)算出用于在性質(zhì)取值數(shù)組中定位性質(zhì)的動(dòng)態(tài)索引號(hào);動(dòng)態(tài) 索引號(hào)的計(jì)算過(guò)程為:根據(jù)性質(zhì)靜態(tài)索引號(hào)找到對(duì)應(yīng)的bit位,如果此bit位為1,計(jì)算出 在此bit位之前的bit位為1的個(gè)數(shù),就是此性質(zhì)的動(dòng)態(tài)索引號(hào);對(duì)于bit位為0的性質(zhì), 不存在動(dòng)態(tài)索引號(hào)。
[0020] 第四步:設(shè)置性質(zhì)取值
[0021] 設(shè)置性質(zhì)取值首先判斷l(xiāng)ong型標(biāo)識(shí)中,性質(zhì)的靜態(tài)索引號(hào)所對(duì)應(yīng)的bit位的取 值。如果取值為1,則根據(jù)第三步找到相應(yīng)的存儲(chǔ)單元,將性質(zhì)取值存放到存儲(chǔ)單元中。
[0022] 如果對(duì)應(yīng)的bit為取值為0,說(shuō)明當(dāng)前數(shù)組中沒(méi)有對(duì)應(yīng)的存儲(chǔ)單元,需要擴(kuò)充性質(zhì) 取值數(shù)組。首先開(kāi)辟新的性質(zhì)取值數(shù)組,大小比原來(lái)大1,然后將當(dāng)前性質(zhì)靜態(tài)索引號(hào)之前 所有有值的性質(zhì)按順序拷貝到新的性質(zhì)取值數(shù)組,再將當(dāng)前性質(zhì)要設(shè)置的值放到性質(zhì)取值 數(shù)組的下一個(gè)元素,最后將當(dāng)前性質(zhì)靜態(tài)索引號(hào)之后的全部有值的性質(zhì)按順序拷貝到新性 質(zhì)取值數(shù)組中。將對(duì)象中記錄數(shù)組的引用指向新的性質(zhì)取值數(shù)組,如果必要,釋放舊的性質(zhì) 取值數(shù)組的內(nèi)存。
[0023] 第五步:獲取性質(zhì)取值
[0024] 如果long型標(biāo)識(shí)中表明進(jìn)行讀取訪(fǎng)問(wèn)的性質(zhì)沒(méi)有設(shè)置值,即bit位為0,如果性質(zhì) 定義了缺省值就返回缺省值,否則返回空。
[0025] 本發(fā)明對(duì)比現(xiàn)有技術(shù),有如下優(yōu)點(diǎn):
[0026] 本發(fā)明是一種根據(jù)CM模型生成面向?qū)ο蟪绦虼a的方法。本方法不對(duì)每個(gè)CIM 性質(zhì)生成存儲(chǔ)變量和bool型的取值設(shè)置標(biāo)識(shí),也不通過(guò)占內(nèi)存較多的映射表來(lái)存儲(chǔ)性質(zhì) 取值,而是通過(guò)一種基于數(shù)組的動(dòng)態(tài)尋址算法來(lái)實(shí)現(xiàn)所有性質(zhì)的存儲(chǔ)和訪(fǎng)問(wèn),對(duì)于重量級(jí) 稀疏型電力模型,節(jié)省內(nèi)存特別明顯。
【具體實(shí)施方式】
[0027] -種動(dòng)態(tài)加載性質(zhì)的CIM內(nèi)存庫(kù)生成方法,包括如下步驟:
[0028] 第一步:生成元信息代碼
[0029] 根據(jù)CIM模型生成靜態(tài)代碼,包括類(lèi)名、性質(zhì)名稱(chēng)到靜態(tài)索引號(hào)的映射、性質(zhì)名稱(chēng) 到數(shù)據(jù)類(lèi)型的映射和性質(zhì)的缺省值。
[0030] 第二步:生成性質(zhì)信息代碼
[0031] 根據(jù)CM類(lèi)和性質(zhì)定義生成程序類(lèi),每個(gè)類(lèi)中定義一個(gè)空數(shù)組,用于動(dòng)態(tài)存儲(chǔ)性 質(zhì)取值。另外根據(jù)CIM類(lèi)中性質(zhì)的個(gè)數(shù),定義一個(gè)或多個(gè)long型數(shù)據(jù)標(biāo)識(shí),用來(lái)管理性質(zhì) 是否被設(shè)置取值以及配合在數(shù)組中尋址。
[0032] 一個(gè)long型變量有64個(gè)bit,可以管理64個(gè)性質(zhì)。當(dāng)bit取值為1時(shí),代表該性 質(zhì)被設(shè)置了取值,性質(zhì)取整數(shù)組中會(huì)有一個(gè)與之對(duì)應(yīng)的存儲(chǔ)單元;當(dāng)bit取值為0時(shí),代表 此性質(zhì)未設(shè)置取值,性質(zhì)取值數(shù)組中不會(huì)為其分配存儲(chǔ)單元。
[0033] 第三步:定位性質(zhì)
[0034] 因?yàn)樾再|(zhì)取值數(shù)組并不是為所有性質(zhì)分配存儲(chǔ)單元,不存在一一對(duì)應(yīng)關(guān)系,因此 第一步生成的性質(zhì)索引號(hào)不能直接用于訪(fǎng)問(wèn)數(shù)組中的存儲(chǔ)單元。根據(jù)long型數(shù)據(jù)標(biāo)識(shí)的 取值和索引號(hào)可以計(jì)算出用于在數(shù)組中定位性質(zhì)的動(dòng)態(tài)索引號(hào)。例如,性質(zhì)"name"的靜態(tài) 索引號(hào)是5,在它之前,索引號(hào)為0和3的也有值,其他為空,那么性質(zhì)"name"的動(dòng)態(tài)索引號(hào) 為2。動(dòng)態(tài)索引號(hào)并不是一直不變的,如果靜態(tài)索引號(hào)為4的性質(zhì)也被設(shè)置的取值,這時(shí)性 質(zhì)"name"的動(dòng)態(tài)索引號(hào)就變成了 3。
[0035] 因?yàn)樾再|(zhì)取值數(shù)組并不是為所有性質(zhì)分配存儲(chǔ)單元,不存在一一對(duì)應(yīng)關(guān)系,因此 第一步生成的性質(zhì)靜態(tài)索引號(hào)不能直接用于訪(fǎng)問(wèn)數(shù)組中的存儲(chǔ)單元。根據(jù)long型數(shù)據(jù)標(biāo) 識(shí)的取值和靜態(tài)索引號(hào)可以計(jì)算出用于在數(shù)組中定位性質(zhì)的動(dòng)態(tài)索引號(hào)。
【主權(quán)項(xiàng)】
1. 一種動(dòng)態(tài)加載性質(zhì)的CIM內(nèi)存庫(kù)生成方法,其特征在于包括如下步驟: 第一步:生成元信息代碼 a) 將CIM模型中的每一個(gè)類(lèi)生成相同名稱(chēng)的代碼類(lèi); b) 為所述代碼類(lèi)中的屬性生成代碼中的字段,所述字段的名稱(chēng)和數(shù)據(jù)類(lèi)型與CIM模型 相同; c) 為所有字段生成缺省值靜態(tài)常量,CIM模型里有缺省值的常量取值為缺省值,沒(méi)有 缺省值的常量取值為空; d) 為每個(gè)字段生成一個(gè)整型性質(zhì)靜態(tài)索引號(hào),從O開(kāi)始; 第二步:生成性質(zhì)信息代碼 在每個(gè)所述代碼類(lèi)中定義一個(gè)性質(zhì)取值數(shù)組,用于動(dòng)態(tài)存儲(chǔ)性質(zhì)取值,數(shù)組的大小初 始為0,即空數(shù)組,在加載數(shù)據(jù)的時(shí)候根據(jù)實(shí)際有取值的性質(zhì)個(gè)數(shù)動(dòng)態(tài)調(diào)整數(shù)組的大小;另 外根據(jù)CIM模型中的類(lèi)中性質(zhì)的個(gè)數(shù),定義一個(gè)或多個(gè)long型數(shù)據(jù)標(biāo)識(shí),用來(lái)管理性質(zhì)是 否被設(shè)置取值以及配合在性質(zhì)取值數(shù)組中定位性質(zhì); 第三步:定位性質(zhì),計(jì)算出用于在性質(zhì)取值數(shù)組中定位性質(zhì)的動(dòng)態(tài)索引號(hào);動(dòng)態(tài)索引 號(hào)的計(jì)算過(guò)程為:根據(jù)性質(zhì)靜態(tài)索引號(hào)找到對(duì)應(yīng)的bit位,如果此bit位為1,計(jì)算出在此 bit位之前的bit位為1的個(gè)數(shù),就是此性質(zhì)的動(dòng)態(tài)索引號(hào);對(duì)于bit位為0的性質(zhì),不存 在動(dòng)態(tài)索引號(hào); 第四步:設(shè)置性質(zhì)取值 設(shè)置性質(zhì)取值首先判斷l(xiāng)ong型標(biāo)識(shí)中,性質(zhì)的靜態(tài)索引號(hào)所對(duì)應(yīng)的bit位的取值;如 果取值為1,則根據(jù)第三步找到相應(yīng)的存儲(chǔ)單元,將性質(zhì)取值存放到存儲(chǔ)單元中; 如果對(duì)應(yīng)的bit為取值為0,說(shuō)明當(dāng)前數(shù)組中沒(méi)有對(duì)應(yīng)的存儲(chǔ)單元,需要擴(kuò)充性質(zhì)取值 數(shù)組;首先開(kāi)辟新的性質(zhì)取值數(shù)組,大小比原來(lái)大1,然后將當(dāng)前性質(zhì)靜態(tài)索引號(hào)之前所有 有值的性質(zhì)按順序拷貝到新的性質(zhì)取值數(shù)組,再將當(dāng)前性質(zhì)要設(shè)置的值放到性質(zhì)取值數(shù)組 的下一個(gè)元素,最后將當(dāng)前性質(zhì)靜態(tài)索引號(hào)之后的全部有值的性質(zhì)按順序拷貝到新性質(zhì)取 值數(shù)組中;將對(duì)象中記錄數(shù)組的引用指向新的性質(zhì)取值數(shù)組,如果必要,釋放舊的性質(zhì)取值 數(shù)組的內(nèi)存; 第五步:獲取性質(zhì)取值 如果long型標(biāo)識(shí)中表明進(jìn)行讀取訪(fǎng)問(wèn)的性質(zhì)沒(méi)有設(shè)置值,即bit位為0,如果性質(zhì)定義 了缺省值就返回缺省值,否則返回空。
【專(zhuān)利摘要】本發(fā)明的目的在于提供一種動(dòng)態(tài)加載性質(zhì)的CIM內(nèi)存庫(kù)生成方法,包括如下步驟:第一步:生成元信息代碼;第二步:生成性質(zhì)信息代碼;第三步:定位性質(zhì);第四步:設(shè)置性質(zhì)取值;以及,第五步:獲取性質(zhì)取值。本方法不對(duì)每個(gè)CIM性質(zhì)生成存儲(chǔ)變量和bool型的取值設(shè)置標(biāo)識(shí),也不通過(guò)占內(nèi)存較多的映射表來(lái)存儲(chǔ)性質(zhì)取值,而是通過(guò)一種基于數(shù)組的動(dòng)態(tài)尋址算法來(lái)實(shí)現(xiàn)所有性質(zhì)的存儲(chǔ)和訪(fǎng)問(wèn),對(duì)于重量級(jí)稀疏型電力模型,節(jié)省內(nèi)存特別明顯。
【IPC分類(lèi)】G06F9-445
【公開(kāi)號(hào)】CN104809008
【申請(qǐng)?zhí)枴緾N201510119258
【發(fā)明人】高雅, 杜雙育, 王紅斌, 范穎, 謝善益, 楊強(qiáng), 王彬, 馬金寶
【申請(qǐng)人】廣東電網(wǎng)有限責(zé)任公司電力科學(xué)研究院, 威海欣智信息科技有限公司
【公開(kāi)日】2015年7月29日
【申請(qǐng)日】2015年3月18日
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1