• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種.NET環(huán)境下敏捷數(shù)據(jù)持久化框架的設(shè)計與實現(xiàn)

    2023-10-27 00:50:27肖志勇
    現(xiàn)代信息科技 2023年17期

    摘? 要:文章論述了直接使用數(shù)據(jù)庫程序應(yīng)用接口的不足并對當(dāng)前流行的數(shù)據(jù)持久化框架技術(shù)特點進行了分析。結(jié)合項目的具體需求,參考當(dāng)前已有的數(shù)據(jù)持久化框架的設(shè)計思路給出一種利用自定義屬性和反射技術(shù)實現(xiàn)對象關(guān)系映射功能與數(shù)據(jù)本地持久化的軟件框架的設(shè)計與實現(xiàn),該框架除實現(xiàn)對象關(guān)系映射功能外,對項目所需數(shù)據(jù)關(guān)聯(lián)關(guān)系的體現(xiàn)、數(shù)據(jù)的快速查找與本地持久化等功能均有較好的支持。

    關(guān)鍵詞:.NET;自定義屬性;反射;數(shù)據(jù)持久化;XML;NoSQL

    中圖分類號:TP311? 文獻標(biāo)識碼:A? 文章編號:2096-4706(2023)17-0027-05

    Design and Implementation of a Agile Data Persistence Framework under the .NET Environment

    XIAO Zhiyong

    (The 713th Search Institute of CSSC, Zhengzhou? 450015, China)

    Abstract: This paper describes the shortage of using database API directly and analyzes the current popular data persistence framework technical characteristics. Combined with the specific requirements of the project, referring to the design mentalities of the current existing data persistence framework, this paper gives a kind of design and implementation of software framework by using custom attributes and reflection technology to achieve the object relationship mapping function and data local persistence. In addition to realizing the object relationship mapping function, this framework provides convenient support for the embodiment of data association required by the project, rapid data search and local persistence and other functions.

    Keywords: .NET; custom attribute; reflection; data persistence; XML; NoSQL

    0? 引? 言

    ORM(Object Relational Mapping)框架通過面向?qū)ο笾械念惻c類之間的所屬關(guān)系表示關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)表和表之間依賴關(guān)系,是一種只需通過處理相關(guān)類對象即可對數(shù)據(jù)庫中的特定數(shù)據(jù)進行操作[1]的數(shù)據(jù)持久化軟件框架。ORM框架為程序操作數(shù)據(jù)庫數(shù)據(jù)提供了一種便捷的方法[2],也是開發(fā)者解決面向?qū)ο箝_發(fā)與數(shù)據(jù)庫之間的匹配常用的技術(shù)手段[3]。

    現(xiàn)有ORM框架主要有Hibernate[4,5]、Mybati[6]等,但框架自身在項目開發(fā)過程中的應(yīng)用卻引入了諸如:對使用者沒有完全屏蔽數(shù)據(jù)庫差異、框架本身邏輯結(jié)構(gòu)與機制復(fù)雜較難掌握、數(shù)據(jù)訪問性能不佳以及框架對數(shù)據(jù)本地文件方式持久化需求支持不足等問題。

    本文以.NET[7]框架為基礎(chǔ)實現(xiàn)了一個敏捷的數(shù)據(jù)持久化框架,框架本身通過采用ORM技術(shù)在屏蔽底層數(shù)據(jù)庫差異的同時兼顧數(shù)據(jù)的查找效率并利用基于XML的序列化和反序列化方法完成數(shù)據(jù)的本地持久化功能[8,9]。

    1? ORM框架的目標(biāo)與設(shè)計思路

    1.1? 主要設(shè)計目標(biāo)

    根據(jù)項目實際需求,當(dāng)前設(shè)計的ORM框架應(yīng)具備以下特點:

    1)約定優(yōu)于配置(convention over configuration),數(shù)據(jù)模型自身不能引入其他配置信息;

    2)應(yīng)充分考慮通過數(shù)據(jù)模型展示數(shù)據(jù)間關(guān)系的直觀性;

    3)在數(shù)據(jù)組織上應(yīng)考慮查找效率;

    4)應(yīng)支持?jǐn)?shù)據(jù)的本地持久化需求;

    5)操作數(shù)據(jù)的邏輯應(yīng)盡可能復(fù)用,提高軟件開發(fā)生產(chǎn)率、降低代碼規(guī)模。

    1.2? 設(shè)計思路

    數(shù)據(jù)庫訪問框架均支持從數(shù)據(jù)庫當(dāng)中提取數(shù)據(jù)然后生成對應(yīng)的數(shù)據(jù)集合的功能。應(yīng)用程序可以很容易地通過框架提供的數(shù)據(jù)訪問功能接口讀取數(shù)據(jù)庫中指定的數(shù)據(jù)集合。

    但反過來,當(dāng)某個描述數(shù)據(jù)庫表的數(shù)據(jù)集合或該集合中的數(shù)據(jù)元素(即數(shù)據(jù)表中的記錄)被修改后,由于該集合或該集合中的元素中沒有包含除數(shù)據(jù)內(nèi)容以外的其他數(shù)據(jù)庫相關(guān)信息,因此對該集合或該集合中元素進行的修改無法直接被保存到數(shù)據(jù)庫對應(yīng)的表中,相關(guān)操作均需在軟件業(yè)務(wù)層面給予維護,增加了系統(tǒng)業(yè)務(wù)層的邏輯復(fù)雜性。應(yīng)用程序與數(shù)據(jù)庫與間的數(shù)據(jù)交互如圖1所示。

    屬性是一種向類型添加信息并影響類型行為的方法[10],它是面向?qū)ο筇赜械腞TTI(運行時類型信息)功能的擴展。用戶可以在類的定義過程中通過添加自定義屬性把一些附帶信息標(biāo)識在該類中(這些包含自定義屬性的類定義下文稱為“數(shù)據(jù)模型”),在使用數(shù)據(jù)模型時利用反射機制可以讀取定義的用戶自定義屬性中包含的內(nèi)容作為業(yè)務(wù)邏輯的輸入信息。

    針對本數(shù)據(jù)持久化框架中的ORM數(shù)據(jù)模型,如圖2所示:通過自定義屬性,可以將數(shù)據(jù)庫相關(guān)表定義信息以自定義屬性的方式包含在相應(yīng)數(shù)據(jù)模型中。當(dāng)對應(yīng)的數(shù)據(jù)信息出現(xiàn)更改時,由專門的數(shù)據(jù)解析層將發(fā)生的數(shù)據(jù)更改結(jié)合該信息附帶的數(shù)據(jù)庫定義信息生成對應(yīng)的數(shù)據(jù)庫訪問語句,提交數(shù)據(jù)庫完成對涉及內(nèi)容的更改。

    同時,本文所述框架進一步利用自定義屬性的特性結(jié)合基于XML的序列化與反序列化技術(shù),以文件讀寫的方式,可完成數(shù)據(jù)的本地持久化功能。

    綜上所述,與數(shù)據(jù)庫表對應(yīng)“數(shù)據(jù)模型”的自定義屬性添加方式(位置)和內(nèi)容是本數(shù)據(jù)持久化方案的關(guān)鍵,它直接關(guān)系到數(shù)據(jù)解析層的設(shè)計與數(shù)據(jù)持久化功能的實現(xiàn)方式,同時自定義屬性添加位置與描述內(nèi)容也是該數(shù)據(jù)持久化框架與其他采用類似解決方案的數(shù)據(jù)持久化框架的區(qū)別所在。如在文獻[11]中的論述中也提出了采用自定義屬性來對數(shù)據(jù)庫表定義進行映射的思路,但其自定義屬性的目的是借助自定義屬性生成NHibernate[12]框架運行所需特定數(shù)據(jù)庫配置類,所述自定義屬性的定義目的和定義方式與本文所述設(shè)計理念完全不同。

    2? 框架實現(xiàn)

    2.1? 數(shù)據(jù)模型的文法定義

    本方案確定通過在描述數(shù)據(jù)庫表的類中添加描述數(shù)據(jù)庫表結(jié)構(gòu)的自定義屬性的方式來生成一種包含數(shù)據(jù)庫表結(jié)構(gòu)相關(guān)信息的類。

    根據(jù)實際需要,當(dāng)前SQL語言解析層定義了整型、浮點型、字符串、時間日期和字節(jié)流五種數(shù)據(jù)庫數(shù)據(jù)類型,其他數(shù)據(jù)類型可在今后的項目開發(fā)過程中隨需要進行添加?!癉ataBaseAttribute”“TableAttribute”“FieldAttribute”和“IdentityAttribute”均為自定義屬性,在下面文法定義表述中被認(rèn)為是關(guān)鍵字。

    數(shù)據(jù)模型數(shù)據(jù)定義部分的文法定義如下(采用Managed C++描述):

    [DataBaseAttribute(數(shù)據(jù)庫名稱)]

    [TableAttribute(表名稱)]

    public ref class 類名稱

    {

    {[FieldAttribute(列名稱,列別名)] {<主鍵標(biāo)識>}<數(shù)據(jù)類型> 變量名稱;}

    [FieldAttribute(列名稱,列別名)] {<主鍵標(biāo)識>}<數(shù)據(jù)類型> 變量名稱;

    };

    〈主鍵標(biāo)識〉→[IdentityAttribute(SelfIncrease| Ordinary)]

    〈數(shù)據(jù)類型〉→int | float | String ^ | DateTime/byte[]

    數(shù)據(jù)庫名稱,表名稱,列名稱,列別名,類名稱→〈字符〉﹛〈字符〉 | 〈數(shù)字〉﹜

    〈數(shù)字〉→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ﹛〈數(shù)字〉﹜

    〈字符〉→A | B | ‥ | Y | Z | a | b | ‥ | y | z | ﹛〈字符〉﹜

    按上述形式定義的數(shù)據(jù)模型中包含了數(shù)據(jù)庫表結(jié)構(gòu)中用于生成數(shù)據(jù)操作語句(SQL)的全部信息。將這些數(shù)據(jù)模型的實例作為圖2所示數(shù)據(jù)解析層的輸入,實例附帶的自定義屬性信息(即數(shù)據(jù)庫表結(jié)構(gòu)信息)和實例自身的變量取值可滿足生成SQL語句的需要,通過生成的SQL語句可以對相應(yīng)數(shù)據(jù)庫中的內(nèi)容進行操作。

    在實際的實施過程中,通過編制相關(guān)的代碼自動生成工具,讀取數(shù)據(jù)庫中相關(guān)表的結(jié)構(gòu)定義信息(即數(shù)據(jù)庫中的數(shù)據(jù)字典),可自動完成數(shù)據(jù)模型的代碼編制工作。

    2.2? 數(shù)據(jù)關(guān)聯(lián)關(guān)系的描述

    關(guān)系型數(shù)據(jù)庫的基本原理是集合論,通過定義二維表和使用笛卡兒乘積描述二維表之間的關(guān)系來完成設(shè)計[13]。數(shù)據(jù)間的關(guān)系通過二維表來體現(xiàn),可歸納為:“一對一”“一對多”和“多對多”三種情況。

    從面向?qū)ο蟮慕嵌瓤?,對象之間的聚合關(guān)系也可歸納為上述三種情況。在工程實現(xiàn)層面,一般將復(fù)雜的“多對多”關(guān)系通過解耦變?yōu)閮蓚€“一對多”的關(guān)系給予簡化。同時,從集合的角度看,“一對一”的關(guān)系可以被認(rèn)為是“一對多”關(guān)系的特化,因此在實現(xiàn)層面的設(shè)計中,只需解決“一對多”數(shù)據(jù)關(guān)系的映射即可較好地描述數(shù)據(jù)間的關(guān)系。

    關(guān)系型數(shù)據(jù)庫中,通過二維表之間的“主-外鍵”定義來表現(xiàn)的“一對多”數(shù)據(jù)關(guān)系,綜上所述,該數(shù)據(jù)關(guān)系可以通過定義“主-外鍵”涉及的數(shù)據(jù)模型類之間的聚合關(guān)系來體現(xiàn)。

    上述關(guān)系在數(shù)據(jù)庫設(shè)計層面、數(shù)據(jù)模型定義層面和代碼實現(xiàn)層面的示例如圖3所示。在數(shù)據(jù)庫設(shè)計層面,通過主-外鍵關(guān)系可以確認(rèn)TableB為TabelA的從表;在數(shù)據(jù)模型定義層面,表TabelA對應(yīng)數(shù)據(jù)模型與表TableB對應(yīng)的數(shù)據(jù)模型之間建立“一對多”聚合關(guān)系;在代碼實現(xiàn)層面,表TableA對應(yīng)的數(shù)據(jù)模型類提供一個存放TableB數(shù)據(jù)模型類實例的集合屬性,表TableB對應(yīng)的數(shù)據(jù)模型類提供一個存放TableA數(shù)據(jù)模型類實例的屬性。

    在實際實現(xiàn)過程中,同樣可通過編制代碼自動生成工具,讀取數(shù)據(jù)字典中的各數(shù)據(jù)表之間的“主-外鍵關(guān)系”定義完成相關(guān)關(guān)系屬性的獲取,以及數(shù)據(jù)在增加、刪除、修改時數(shù)據(jù)關(guān)聯(lián)關(guān)系自動維護機制等功能的代碼編制工作。

    2.3? NoSQL的數(shù)據(jù)組織方式與數(shù)據(jù)本地持久化實現(xiàn)

    系統(tǒng)在運行時為了提高數(shù)據(jù)的響應(yīng)速率、擴展性以及分布式處理的需求,需要在隨機存儲器(RAM)中構(gòu)造復(fù)雜的對象實例,并且快速地訪問這些對象實例。由于RAM是臨時性的存儲器,如果需要保存系統(tǒng)執(zhí)行現(xiàn)場,必須使這些復(fù)雜對象的生存期跨越程序的執(zhí)行期,因此借助外部存儲器對這些數(shù)據(jù)進行持久化[14]操作就成為必然的要求。

    綜合考慮上述需求,框架借鑒典型內(nèi)存數(shù)據(jù)庫(MMDB)Redis[15]中對數(shù)據(jù)組織的方式,將當(dāng)前數(shù)據(jù)庫中每個表涉及的數(shù)據(jù)在內(nèi)存中以行式鍵值模型[16]的方式進行組織,以此提高數(shù)據(jù)查詢的響應(yīng)速率并滿足擴展性和分布式處理的需求。

    行式鍵值模型的核心是將原關(guān)系數(shù)據(jù)庫表中的每行數(shù)據(jù)轉(zhuǎn)變?yōu)橐粋€(或若干個)Hash結(jié)構(gòu),形成一個Key-Value映射集合。利用Key去定位Value在理想狀態(tài)下是一個復(fù)雜度為O(1)的操作。在本框架的數(shù)據(jù)組織方案中,Key值不用經(jīng)過編碼的字符串表示而是將數(shù)據(jù)表中的主鍵列進行包裝生成一個對應(yīng)的“鍵值類”,Value值為數(shù)據(jù)表對應(yīng)數(shù)據(jù)模型的實例,實例中每個字段是對應(yīng)數(shù)據(jù)的列,其取值為對應(yīng)列的值。通過重新定義“鍵值類”的Hash值生成機制,確保其Hash算法的正確與高效,進而確保查詢效率。數(shù)據(jù)處理和組織過程如圖4所示。

    由于XML遵循嚴(yán)格語法規(guī)范,具有擴展性好、數(shù)據(jù)共享與重用簡單、便于跨平臺傳遞等優(yōu)點,因此本框架的數(shù)據(jù)本地持久化方案采用XML的組織方式實現(xiàn)。

    由于數(shù)據(jù)在內(nèi)存中采用行式鍵值模型的方式進行組織,數(shù)據(jù)容器本身序列化的思路是:容器內(nèi)的每一個“Key-Value”元素定義成一個名稱為“item”的節(jié)點;對應(yīng)的Key值作為“item”節(jié)點的下一級節(jié)點其名稱定義為“key”;對應(yīng)的Value值同樣作為“item”節(jié)點的下一級節(jié)點其名稱定義為“value”。同時,數(shù)據(jù)容器中存放Key和Value的實例由于都是繼承自.NET框架下的object類,因此只需在類定義時標(biāo)注上框架預(yù)定義的自定義屬性標(biāo)簽即可完成上述對應(yīng)數(shù)據(jù)實例的序列化與反序列化功能[17]。

    3? 框架實現(xiàn)說明

    3.1? ORM驅(qū)動層的泛型化實現(xiàn)

    泛型是C#編程語言的一種特性,通過使用該特性涉及的泛型類、泛型函數(shù)、泛型代理(事件)和泛型接口等元素進行功能實現(xiàn),使得程序具有更高的抽象度,以此為基礎(chǔ)可顯著提高代碼的復(fù)用程度。

    泛型編程技術(shù)為實現(xiàn)通用的ORM驅(qū)動層和數(shù)據(jù)的本地持久化功能提供了高效可用的技術(shù)手段,其實現(xiàn)的各功能模塊關(guān)系如圖5所示。

    圖中,AbstractDao和Dal類是對不同類型數(shù)據(jù)庫數(shù)據(jù)訪問方式的抽象表述;OracleDal是當(dāng)前支持的Oracle數(shù)據(jù)庫的ORM驅(qū)動層的具體實現(xiàn),其內(nèi)部主要數(shù)據(jù)操作功能函數(shù)采用了泛型函數(shù)的方式進行定義與實現(xiàn);TransactionManager用于實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)操作的原子性和一致性功能;GenericManager泛型類對OracleDal按IGenericManager泛型接口的定義對數(shù)據(jù)訪問接口進行封裝,通過該泛型接口對不同數(shù)據(jù)庫的訪問方式進行標(biāo)準(zhǔn)化定義,為后續(xù)框架針對不同數(shù)據(jù)庫的支持提供便利,同時方便上層業(yè)務(wù)在不同類型數(shù)據(jù)庫之間的遷移與部署;GenericRecorderCollection泛型類負(fù)責(zé)對數(shù)據(jù)的NoSQL方式的存儲進行組織同時通過其繼承的AbstractXMLSerializer類實現(xiàn)數(shù)據(jù)的序列化與反序列化以及本地持久化功能。

    3.2? 框架各功能模塊邏輯關(guān)系

    框架各功能部分的邏輯關(guān)系如圖6所示。整個框架是一個分層Layer[18]模式的應(yīng)用,其中的數(shù)據(jù)庫訪問控制是一個Singleton[19]模式的應(yīng)用。

    系統(tǒng)通過調(diào)用數(shù)據(jù)管理層的相關(guān)功能,完成對數(shù)據(jù)的增、刪、改、查等操作;數(shù)據(jù)管理層對系統(tǒng)應(yīng)用屏蔽了描述數(shù)據(jù)庫表的集合實例,相關(guān)的數(shù)據(jù)操作通過SQL語言解析層被最終反映到數(shù)據(jù)庫當(dāng)中。數(shù)據(jù)庫中的數(shù)據(jù)通過數(shù)據(jù)集合生成模塊按數(shù)據(jù)持久化層對數(shù)據(jù)的相關(guān)要求(數(shù)據(jù)模型中添加的各種數(shù)據(jù)庫相關(guān)自定義屬性)進行打包,生成描述數(shù)據(jù)庫表數(shù)據(jù)集合實例。配置模塊中存放了各層直接需要共享的接口定義,枚舉類型等公共信息。通過底層SQL語言解析層和XML的序列化反序列化功能模塊,框架可以同時實現(xiàn)對數(shù)據(jù)在遠(yuǎn)端和本地的持久化功能。

    4? 結(jié)? 論

    本框架是一個功能齊全的基于ORM設(shè)計思想的數(shù)據(jù)持久化框架,具有數(shù)據(jù)模型定義簡單、使用方便的優(yōu)點,在處理“一對多”表關(guān)系時非常便捷,適用于以關(guān)系型數(shù)據(jù)庫為中心同時又要求具備較高的數(shù)據(jù)查詢響應(yīng)速率對可擴展性、分布式處理以及數(shù)據(jù)本地持久化有相應(yīng)需求的應(yīng)用。

    設(shè)計與實現(xiàn)過程中,通過遵循基于Layer模式的Class-Type體系結(jié)構(gòu),各層之間的耦合度較低,整個框架易于擴展、維護。

    在基金項目所屬算法仿真平臺的研制過程中,通過應(yīng)用該框架,項目所需數(shù)據(jù)之間復(fù)雜依賴關(guān)系得到較好體現(xiàn)與維護;算法驗證平臺相關(guān)數(shù)據(jù)結(jié)構(gòu)設(shè)計與定義實現(xiàn)之間的迭代周期明顯縮短;NoSQL的數(shù)據(jù)表示方式對該算法驗證平臺的分布式運行起到較好的支持作用。

    本框架涉及數(shù)據(jù)模型定義、數(shù)據(jù)關(guān)系定義、數(shù)據(jù)的NoSQL組織方式與數(shù)據(jù)持久化方法等設(shè)計思想不僅可在.NET平臺下進行實現(xiàn),通過利用Qt框架中的MetaObject以及C++語言的模板編程等技術(shù),上述設(shè)計思想可基于Qt框架進行實現(xiàn)。

    參考文獻:

    [1] 丁昊志.對象關(guān)系映射模型研究 [D].北京:華北電力大學(xué),2006.

    [2] 梁文菲,黃厚寬.對象/關(guān)系映射技術(shù)與面向?qū)ο髷?shù)據(jù)庫技術(shù)比較分析 [J].中國科技信息,2006(21):154-156.

    [3] AMBLER S W. Mapping objects to relational databases:O/R mapping in detail [EB/OL].[2023-01-26].http://www.agiledata.org/essays/mappingObjects.html.

    [4] JOHNSON R,HOELLER J. Expert One-on-One J2EE Development without EJB [M].JavaEye,譯.北京:電子工業(yè)出版社,2005.

    [5] GAVIN K,CHRISTIAN B. Hibernate 實戰(zhàn):第2版 [M].蒲成,譯.北京:清華大學(xué)出版社,2016.

    [6] 陳永政,張正龍.Java EE 框架技術(shù) Spring-MVC+Spring+MyBatis [M].西安:西安電子科技大學(xué)出版社,2017:182-204.

    [7] Microsoft. .NET Framework 開發(fā)人員指南:.NET Framework 概述 [EB/OL].[2023-01-26].https://learn.microsoft.com/zh-cn/dotnet/framework/get-started/overview.

    [8] Microsoft. .NET Framework 開發(fā)人員指南:編寫自定義屬性 [EB/OL].[2023-01-26].https://docs.microsoft.com/zh-cn/dotnet/standard/attributes/writing-custom-attributes.

    [9] Microsoft. NET Framework 開發(fā)人員指南:反射 [EB/OL].[2023-01-26].https://docs.microsoft.com/zh-cn/dotnet/framework/reflection-and-codedom/reflection.

    [10] L?WY J. .NET組件程序設(shè)計:第2版 [M].劉如鴻,譯.北京:電子工業(yè)出版社,2007 544-545.

    [11] 鐘云.對象關(guān)系映射(ORM)的研究與基于C#.NET的部分實現(xiàn) [D].上海:上海海事大學(xué),2006.

    [12] NHibernate. The object-relational mapper for .NET [EB/OL].[2023-01-26].https://www.nhibernate.info/.

    [13] 薩師煊.數(shù)據(jù)庫系統(tǒng)概論:第3版 [M].北京:高等教育出版社,2003:45-82.

    [14] 俞建,張燎軍.數(shù)據(jù)庫訪問技術(shù)研究 [J].計算機與現(xiàn)代化,2004(10):29-31.

    [15] redis. Documentation [EB/OL].[2023-01-26].https://redis.io/docs/.

    [16] 張俊,廖雪花,余旭玲,等.關(guān)系型數(shù)據(jù)庫內(nèi)存化存儲模型研究 [J].計算機工程與應(yīng)用,2021,57(19):123-128.

    [17] Microsoft. .NET Framework中的對象序列化 [EB/OL].[2023-01-26].https://learn.microsoft.com/zh-cn/previous-versions/dotnet/articles/ms973893(v=msdn.10).

    [18] BUSCHMANN F,MEUNIER R,ROHNERT R,等.面向模式的軟件體系結(jié)構(gòu)卷1:模式系統(tǒng) [M].賁可榮,郭福亮,趙皚,等譯.北京:機械工業(yè)出版社,2003:18-19.

    [19] GAMMA E,HELM E,JOHNSON R,等.設(shè)計模式-可復(fù)用面向?qū)ο筌浖幕A(chǔ) [M].李英軍,馬曉星,蔡敏,等譯.北京:機械工業(yè)出版社,2000:84-89.

    作者簡介:肖志勇(1977—),男,回族,河南新鄉(xiāng)人,高級工程師,工學(xué)碩士,研究方向:人工智能與分布式計算。

    久9热在线精品视频| 欧美日韩国产mv在线观看视频| 国产精品久久久久久精品电影小说| 欧美 日韩 精品 国产| 欧美黑人精品巨大| 久久久久久久久久久久大奶| 一级毛片 在线播放| 91精品伊人久久大香线蕉| 国产亚洲av高清不卡| 巨乳人妻的诱惑在线观看| 国产精品一区二区在线观看99| 伊人亚洲综合成人网| 亚洲激情五月婷婷啪啪| 国产免费福利视频在线观看| 国产在视频线精品| 不卡av一区二区三区| 老司机深夜福利视频在线观看 | 欧美中文综合在线视频| 色网站视频免费| 精品久久久久久久毛片微露脸 | 国产男女超爽视频在线观看| 亚洲一区二区三区欧美精品| 国产极品粉嫩免费观看在线| 国产成人免费观看mmmm| 男女边吃奶边做爰视频| 久久精品久久精品一区二区三区| 一区二区三区乱码不卡18| 97人妻天天添夜夜摸| 另类精品久久| 亚洲国产毛片av蜜桃av| 亚洲第一青青草原| 久久鲁丝午夜福利片| 久久女婷五月综合色啪小说| 人成视频在线观看免费观看| 中文欧美无线码| 一区二区av电影网| 日韩av免费高清视频| 50天的宝宝边吃奶边哭怎么回事| 咕卡用的链子| 亚洲精品国产区一区二| 免费少妇av软件| 欧美激情 高清一区二区三区| 免费观看人在逋| 欧美成狂野欧美在线观看| 亚洲av男天堂| 国产精品免费大片| 精品欧美一区二区三区在线| 大片电影免费在线观看免费| 夫妻午夜视频| 大片电影免费在线观看免费| 久久影院123| 青青草视频在线视频观看| 精品一区二区三区av网在线观看 | 建设人人有责人人尽责人人享有的| 日韩中文字幕欧美一区二区 | 69精品国产乱码久久久| 亚洲国产av新网站| 成人影院久久| 色播在线永久视频| 欧美人与性动交α欧美软件| 婷婷色综合www| 久久人人97超碰香蕉20202| www.av在线官网国产| 一区在线观看完整版| av国产精品久久久久影院| 美女视频免费永久观看网站| www.999成人在线观看| 久久精品亚洲av国产电影网| 国产成人免费无遮挡视频| 晚上一个人看的免费电影| 亚洲精品美女久久av网站| 成年人黄色毛片网站| 久久久久精品国产欧美久久久 | 久久久精品区二区三区| 久久久国产欧美日韩av| 又大又爽又粗| 女警被强在线播放| 亚洲精品美女久久av网站| 大香蕉久久网| 国产亚洲欧美在线一区二区| 精品少妇黑人巨大在线播放| 18禁国产床啪视频网站| 精品久久久久久久毛片微露脸 | 黄色毛片三级朝国网站| 看免费av毛片| 91九色精品人成在线观看| 亚洲欧美日韩另类电影网站| 国产成人系列免费观看| 成在线人永久免费视频| 国产极品粉嫩免费观看在线| 国产精品一区二区免费欧美 | 欧美精品啪啪一区二区三区 | 一级毛片女人18水好多 | 国产亚洲精品久久久久5区| 又大又黄又爽视频免费| 精品欧美一区二区三区在线| 免费在线观看日本一区| 久久人人爽人人片av| 久久久久久久国产电影| 91字幕亚洲| 久久国产精品男人的天堂亚洲| 亚洲成av片中文字幕在线观看| 汤姆久久久久久久影院中文字幕| 真人做人爱边吃奶动态| av天堂在线播放| 中文字幕另类日韩欧美亚洲嫩草| 自拍欧美九色日韩亚洲蝌蚪91| a 毛片基地| 免费看不卡的av| 亚洲美女黄色视频免费看| 啦啦啦中文免费视频观看日本| 狠狠精品人妻久久久久久综合| 午夜福利免费观看在线| 熟女少妇亚洲综合色aaa.| 日韩 亚洲 欧美在线| 18禁国产床啪视频网站| 日韩一卡2卡3卡4卡2021年| 日韩免费高清中文字幕av| 国产成人系列免费观看| 国产黄色免费在线视频| 午夜免费鲁丝| 自线自在国产av| 中文字幕人妻丝袜制服| 久久影院123| 国产高清视频在线播放一区 | 纵有疾风起免费观看全集完整版| 我的亚洲天堂| 亚洲国产精品国产精品| 视频在线观看一区二区三区| 热re99久久国产66热| 国产日韩欧美亚洲二区| 国产精品国产三级专区第一集| av国产精品久久久久影院| 亚洲国产精品国产精品| 国产成人影院久久av| 黄色怎么调成土黄色| 成人国产一区最新在线观看 | 欧美日韩av久久| 久久av网站| 国产一区二区三区av在线| 久久久久国产一级毛片高清牌| 99国产精品一区二区蜜桃av | 蜜桃国产av成人99| av有码第一页| 国产亚洲午夜精品一区二区久久| 每晚都被弄得嗷嗷叫到高潮| 亚洲国产精品一区二区三区在线| 国精品久久久久久国模美| 人人妻,人人澡人人爽秒播 | 亚洲午夜精品一区,二区,三区| 另类亚洲欧美激情| 亚洲熟女精品中文字幕| 欧美 亚洲 国产 日韩一| 日韩视频在线欧美| 久9热在线精品视频| 亚洲av片天天在线观看| 人妻 亚洲 视频| 亚洲一卡2卡3卡4卡5卡精品中文| 中文乱码字字幕精品一区二区三区| 国产又色又爽无遮挡免| 免费不卡黄色视频| 国产视频一区二区在线看| 女人久久www免费人成看片| 大码成人一级视频| 午夜激情av网站| 精品人妻熟女毛片av久久网站| 久久这里只有精品19| 免费在线观看视频国产中文字幕亚洲 | 在线观看www视频免费| 女性生殖器流出的白浆| 一级毛片电影观看| 乱人伦中国视频| 欧美精品一区二区大全| 91精品国产国语对白视频| 亚洲国产毛片av蜜桃av| 最黄视频免费看| 中文字幕精品免费在线观看视频| 在线精品无人区一区二区三| 自拍欧美九色日韩亚洲蝌蚪91| 国产精品一二三区在线看| 久久女婷五月综合色啪小说| 欧美另类一区| 久久久国产欧美日韩av| 亚洲一卡2卡3卡4卡5卡精品中文| 在现免费观看毛片| 国产欧美日韩精品亚洲av| 女人精品久久久久毛片| 精品少妇一区二区三区视频日本电影| 国产高清不卡午夜福利| 国产片内射在线| 自线自在国产av| 久久久久久久久久久久大奶| 天天躁日日躁夜夜躁夜夜| 久热这里只有精品99| 女警被强在线播放| 久久久精品区二区三区| 亚洲黑人精品在线| 欧美乱码精品一区二区三区| 欧美黄色片欧美黄色片| 亚洲综合色网址| 妹子高潮喷水视频| 亚洲av欧美aⅴ国产| 校园人妻丝袜中文字幕| tube8黄色片| 91国产中文字幕| 高清欧美精品videossex| 免费在线观看完整版高清| 亚洲国产av影院在线观看| 曰老女人黄片| 欧美日韩综合久久久久久| 日韩中文字幕视频在线看片| 中文乱码字字幕精品一区二区三区| 国产91精品成人一区二区三区 | 亚洲国产日韩一区二区| 黑人猛操日本美女一级片| 成人国产一区最新在线观看 | 国产爽快片一区二区三区| 亚洲一码二码三码区别大吗| 好男人视频免费观看在线| 欧美变态另类bdsm刘玥| 亚洲精品乱久久久久久| 丝瓜视频免费看黄片| 久久精品成人免费网站| 色婷婷久久久亚洲欧美| 亚洲精品美女久久av网站| 一边亲一边摸免费视频| 日本五十路高清| 婷婷色麻豆天堂久久| 女人爽到高潮嗷嗷叫在线视频| 国产一卡二卡三卡精品| 免费久久久久久久精品成人欧美视频| 极品少妇高潮喷水抽搐| 大香蕉久久成人网| 一二三四在线观看免费中文在| 夫妻性生交免费视频一级片| xxxhd国产人妻xxx| kizo精华| 国产精品三级大全| 亚洲国产毛片av蜜桃av| 免费不卡黄色视频| 久久人人97超碰香蕉20202| 久久精品成人免费网站| 手机成人av网站| 亚洲av电影在线进入| 国产高清videossex| 男女午夜视频在线观看| 亚洲欧美成人综合另类久久久| 久久国产精品影院| 国产成人精品久久二区二区91| 啦啦啦在线免费观看视频4| 午夜福利乱码中文字幕| 可以免费在线观看a视频的电影网站| 999精品在线视频| 亚洲一码二码三码区别大吗| 99久久99久久久精品蜜桃| 一本一本久久a久久精品综合妖精| 成人国语在线视频| 亚洲精品一区蜜桃| 欧美日韩一级在线毛片| 欧美亚洲日本最大视频资源| 十八禁人妻一区二区| 中文字幕精品免费在线观看视频| 成在线人永久免费视频| 热re99久久国产66热| 亚洲国产精品999| xxx大片免费视频| 天天躁夜夜躁狠狠躁躁| 免费观看a级毛片全部| 欧美精品亚洲一区二区| 你懂的网址亚洲精品在线观看| av国产精品久久久久影院| 另类亚洲欧美激情| 欧美中文综合在线视频| 男女无遮挡免费网站观看| 免费观看av网站的网址| 欧美日韩视频高清一区二区三区二| h视频一区二区三区| 日本vs欧美在线观看视频| 激情视频va一区二区三区| 国产福利在线免费观看视频| 99国产精品一区二区三区| 久久精品人人爽人人爽视色| 久久 成人 亚洲| 1024香蕉在线观看| 伦理电影免费视频| av在线app专区| 免费观看a级毛片全部| 少妇 在线观看| 性色av乱码一区二区三区2| 国产成人av激情在线播放| 日韩 欧美 亚洲 中文字幕| 99热国产这里只有精品6| 激情视频va一区二区三区| 伊人亚洲综合成人网| av国产精品久久久久影院| 91成人精品电影| 精品国产一区二区三区久久久樱花| 观看av在线不卡| 黄片播放在线免费| 亚洲图色成人| 人人妻人人澡人人爽人人夜夜| xxx大片免费视频| av不卡在线播放| 国产在线观看jvid| 永久免费av网站大全| 久久久精品94久久精品| 亚洲欧美激情在线| 欧美黑人欧美精品刺激| 最黄视频免费看| 精品国产国语对白av| 日韩视频在线欧美| 久久精品亚洲av国产电影网| 咕卡用的链子| 亚洲精品久久成人aⅴ小说| 麻豆国产av国片精品| 午夜两性在线视频| 在线观看免费日韩欧美大片| 亚洲三区欧美一区| 超色免费av| 一二三四在线观看免费中文在| 满18在线观看网站| 我要看黄色一级片免费的| 亚洲成色77777| 丁香六月欧美| 成人免费观看视频高清| 久久青草综合色| a级片在线免费高清观看视频| 日本猛色少妇xxxxx猛交久久| 天天影视国产精品| 久久久国产一区二区| 国产精品麻豆人妻色哟哟久久| 一区在线观看完整版| 不卡av一区二区三区| 国产爽快片一区二区三区| 欧美日韩亚洲高清精品| 久久国产精品大桥未久av| www.精华液| 晚上一个人看的免费电影| 一级片免费观看大全| 婷婷丁香在线五月| 亚洲国产最新在线播放| 十八禁高潮呻吟视频| 久久精品国产亚洲av涩爱| 高清黄色对白视频在线免费看| 99热网站在线观看| 搡老乐熟女国产| 国产在视频线精品| 一边摸一边做爽爽视频免费| 999久久久国产精品视频| 久久精品熟女亚洲av麻豆精品| 在线天堂中文资源库| 亚洲国产精品一区二区三区在线| 青青草视频在线视频观看| 国产成人系列免费观看| 香蕉国产在线看| 亚洲,一卡二卡三卡| 亚洲成人免费av在线播放| 在线观看免费日韩欧美大片| 一本久久精品| 中文字幕人妻丝袜一区二区| 免费不卡黄色视频| 一级黄片播放器| 岛国毛片在线播放| 国产一区亚洲一区在线观看| 亚洲精品成人av观看孕妇| 国产欧美日韩精品亚洲av| 国产成人91sexporn| 不卡av一区二区三区| 精品一区二区三卡| 亚洲av国产av综合av卡| 菩萨蛮人人尽说江南好唐韦庄| 国产精品一区二区免费欧美 | 亚洲av电影在线观看一区二区三区| 一边摸一边做爽爽视频免费| 亚洲第一青青草原| 成年美女黄网站色视频大全免费| 久久综合国产亚洲精品| 一二三四在线观看免费中文在| 成年人免费黄色播放视频| 欧美精品一区二区免费开放| 国产成人精品久久二区二区免费| av欧美777| 免费看十八禁软件| 久久影院123| 女人高潮潮喷娇喘18禁视频| a级毛片在线看网站| 99九九在线精品视频| 午夜福利,免费看| av又黄又爽大尺度在线免费看| 丝袜在线中文字幕| 一级片免费观看大全| 国产免费一区二区三区四区乱码| 尾随美女入室| 熟女少妇亚洲综合色aaa.| 91国产中文字幕| av不卡在线播放| 成人免费观看视频高清| 搡老乐熟女国产| 国产淫语在线视频| 各种免费的搞黄视频| 每晚都被弄得嗷嗷叫到高潮| 色精品久久人妻99蜜桃| 精品国产国语对白av| 欧美日本中文国产一区发布| 免费av中文字幕在线| 韩国精品一区二区三区| 只有这里有精品99| 色婷婷久久久亚洲欧美| 性高湖久久久久久久久免费观看| 精品第一国产精品| 韩国精品一区二区三区| 男的添女的下面高潮视频| 热re99久久国产66热| 亚洲第一青青草原| 国产亚洲欧美精品永久| 99久久人妻综合| 香蕉国产在线看| 亚洲欧美精品综合一区二区三区| 一级毛片黄色毛片免费观看视频| 一区二区三区四区激情视频| 午夜免费男女啪啪视频观看| 午夜激情久久久久久久| 丝瓜视频免费看黄片| 香蕉国产在线看| 一级a爱视频在线免费观看| 中文字幕另类日韩欧美亚洲嫩草| 久久青草综合色| 国产熟女欧美一区二区| 久久 成人 亚洲| 国产高清不卡午夜福利| 国产精品久久久久久精品电影小说| 亚洲精品自拍成人| 老汉色∧v一级毛片| 亚洲欧美成人综合另类久久久| 精品亚洲成国产av| 美女扒开内裤让男人捅视频| 欧美黄色片欧美黄色片| 丝袜美足系列| 亚洲一码二码三码区别大吗| 天堂俺去俺来也www色官网| 美女主播在线视频| 国产av一区二区精品久久| 99热网站在线观看| 国产欧美日韩一区二区三区在线| 黄色 视频免费看| 在线天堂中文资源库| 国产精品 欧美亚洲| videos熟女内射| 黄色片一级片一级黄色片| 亚洲欧美激情在线| 99国产精品一区二区蜜桃av | 国产精品免费视频内射| 99九九在线精品视频| 欧美精品高潮呻吟av久久| 69精品国产乱码久久久| 日本欧美国产在线视频| 人妻一区二区av| av网站在线播放免费| 国语对白做爰xxxⅹ性视频网站| 男人舔女人的私密视频| 色94色欧美一区二区| 亚洲av国产av综合av卡| 中文字幕av电影在线播放| 老熟女久久久| 51午夜福利影视在线观看| 成人三级做爰电影| 亚洲欧美精品综合一区二区三区| 两个人免费观看高清视频| 亚洲精品日韩在线中文字幕| 日日摸夜夜添夜夜爱| 精品亚洲成a人片在线观看| 如日韩欧美国产精品一区二区三区| 国产精品免费视频内射| 永久免费av网站大全| 在现免费观看毛片| 男女免费视频国产| 免费日韩欧美在线观看| 肉色欧美久久久久久久蜜桃| 91精品国产国语对白视频| 人妻一区二区av| 亚洲精品国产色婷婷电影| 极品少妇高潮喷水抽搐| 一区二区三区精品91| 王馨瑶露胸无遮挡在线观看| 国产主播在线观看一区二区 | 久久热在线av| 久久久久久久国产电影| 高清黄色对白视频在线免费看| 久久影院123| 精品亚洲成国产av| 超色免费av| 国产精品99久久99久久久不卡| 黄色一级大片看看| 啦啦啦视频在线资源免费观看| 日韩,欧美,国产一区二区三区| 国产99久久九九免费精品| 黄色视频不卡| 欧美中文综合在线视频| 男人添女人高潮全过程视频| 久9热在线精品视频| 精品少妇内射三级| 天天添夜夜摸| 久久国产亚洲av麻豆专区| 亚洲av美国av| 在线观看国产h片| 91麻豆精品激情在线观看国产 | 久久精品久久久久久久性| 亚洲国产av新网站| 午夜福利一区二区在线看| 日日爽夜夜爽网站| 交换朋友夫妻互换小说| 中文字幕制服av| 成人三级做爰电影| 在线天堂中文资源库| 欧美性长视频在线观看| 亚洲色图 男人天堂 中文字幕| 无遮挡黄片免费观看| 成人18禁高潮啪啪吃奶动态图| 天天添夜夜摸| 亚洲欧美激情在线| 亚洲av男天堂| 亚洲av美国av| 2021少妇久久久久久久久久久| 青草久久国产| 在线观看一区二区三区激情| 校园人妻丝袜中文字幕| 久久99一区二区三区| 飞空精品影院首页| 欧美日韩亚洲国产一区二区在线观看 | 电影成人av| 女人被躁到高潮嗷嗷叫费观| 亚洲精品国产一区二区精华液| 日韩,欧美,国产一区二区三区| 五月天丁香电影| 亚洲一卡2卡3卡4卡5卡精品中文| 美女中出高潮动态图| 久久久久久久精品精品| 大型av网站在线播放| 女人被躁到高潮嗷嗷叫费观| 美女扒开内裤让男人捅视频| 女人久久www免费人成看片| 黄色视频在线播放观看不卡| 亚洲人成电影免费在线| 午夜影院在线不卡| www.精华液| 亚洲成人国产一区在线观看 | 亚洲黑人精品在线| 日韩一区二区三区影片| 亚洲美女黄色视频免费看| 丝瓜视频免费看黄片| 国产视频首页在线观看| 一级毛片黄色毛片免费观看视频| 亚洲精品中文字幕在线视频| 大片电影免费在线观看免费| 欧美日本中文国产一区发布| 丝袜脚勾引网站| 国产成人一区二区三区免费视频网站 | 久久久久久久久久久久大奶| 日韩制服丝袜自拍偷拍| 久久午夜综合久久蜜桃| 中文字幕人妻丝袜制服| 晚上一个人看的免费电影| 亚洲国产中文字幕在线视频| 午夜福利在线免费观看网站| 秋霞在线观看毛片| 亚洲成国产人片在线观看| 亚洲男人天堂网一区| 国产精品熟女久久久久浪| 在线观看免费午夜福利视频| 久久亚洲精品不卡| 久久精品国产综合久久久| 中文欧美无线码| 日韩 欧美 亚洲 中文字幕| 在线观看免费高清a一片| 丝袜人妻中文字幕| 国产一区有黄有色的免费视频| 国产99久久九九免费精品| 天天躁夜夜躁狠狠久久av| 女人高潮潮喷娇喘18禁视频| 我的亚洲天堂| 电影成人av| 丁香六月天网| 黄色怎么调成土黄色| 最近最新中文字幕大全免费视频 | 亚洲五月婷婷丁香| 在线亚洲精品国产二区图片欧美| 十八禁人妻一区二区| 欧美日韩黄片免| 精品熟女少妇八av免费久了| 纯流量卡能插随身wifi吗| 精品熟女少妇八av免费久了| 999久久久国产精品视频| 操出白浆在线播放| 老汉色∧v一级毛片| 欧美人与性动交α欧美精品济南到| 飞空精品影院首页| 欧美日韩福利视频一区二区| 每晚都被弄得嗷嗷叫到高潮| 99精品久久久久人妻精品| 狠狠精品人妻久久久久久综合| 99热国产这里只有精品6| 日韩制服丝袜自拍偷拍| 亚洲伊人久久精品综合| 91字幕亚洲| 少妇人妻久久综合中文| 天天躁狠狠躁夜夜躁狠狠躁| 夫妻午夜视频| 岛国毛片在线播放| a级毛片黄视频| 日本色播在线视频| www.自偷自拍.com| 国产男人的电影天堂91| 人人妻人人爽人人添夜夜欢视频| 国精品久久久久久国模美| 久久国产精品大桥未久av|