• <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é)碩士,研究方向:人工智能與分布式計算。

    久久国产精品男人的天堂亚洲| 夜夜夜夜夜久久久久| 久久狼人影院| 精品久久久久久电影网| 最近最新中文字幕大全免费视频| 啦啦啦啦在线视频资源| 99热国产这里只有精品6| 精品乱码久久久久久99久播| 9热在线视频观看99| 视频区图区小说| 精品一区二区三卡| 美女福利国产在线| 最近最新免费中文字幕在线| 三上悠亚av全集在线观看| 首页视频小说图片口味搜索| 中文字幕人妻丝袜一区二区| 女性被躁到高潮视频| 99热网站在线观看| 国产一卡二卡三卡精品| 一本久久精品| 日本av免费视频播放| 国产一卡二卡三卡精品| 国产精品免费视频内射| 国产成人av教育| 亚洲国产精品999| 我要看黄色一级片免费的| 青春草视频在线免费观看| 在线观看免费日韩欧美大片| 欧美日韩国产mv在线观看视频| 午夜影院在线不卡| 日本vs欧美在线观看视频| 女人被躁到高潮嗷嗷叫费观| 视频在线观看一区二区三区| 曰老女人黄片| 亚洲欧美一区二区三区黑人| 欧美日韩成人在线一区二区| 欧美av亚洲av综合av国产av| 搡老熟女国产l中国老女人| 亚洲精品自拍成人| 男女床上黄色一级片免费看| 亚洲精品国产av蜜桃| 大片免费播放器 马上看| 桃花免费在线播放| 亚洲国产欧美一区二区综合| 国产91精品成人一区二区三区 | 久久久久久久久免费视频了| 精品熟女少妇八av免费久了| 中文字幕另类日韩欧美亚洲嫩草| 美女中出高潮动态图| 男人爽女人下面视频在线观看| 国产av国产精品国产| 一本色道久久久久久精品综合| 最近中文字幕2019免费版| 丁香六月天网| av电影中文网址| 精品久久蜜臀av无| 51午夜福利影视在线观看| 日韩视频在线欧美| 在线 av 中文字幕| 桃花免费在线播放| 国产有黄有色有爽视频| 国产真人三级小视频在线观看| 亚洲精品成人av观看孕妇| xxxhd国产人妻xxx| 欧美人与性动交α欧美精品济南到| 在线观看一区二区三区激情| 国产精品熟女久久久久浪| 国产男人的电影天堂91| 中国美女看黄片| 国产又爽黄色视频| 99热全是精品| 搡老乐熟女国产| 中文字幕色久视频| 国产成人影院久久av| 欧美激情极品国产一区二区三区| 亚洲伊人色综图| 亚洲av成人一区二区三| 免费久久久久久久精品成人欧美视频| 汤姆久久久久久久影院中文字幕| 男女之事视频高清在线观看| 国产伦人伦偷精品视频| h视频一区二区三区| 精品少妇一区二区三区视频日本电影| 色视频在线一区二区三区| 日韩制服骚丝袜av| 国产精品 国内视频| 90打野战视频偷拍视频| 少妇精品久久久久久久| 美女视频免费永久观看网站| 超碰成人久久| 淫妇啪啪啪对白视频 | 国产亚洲午夜精品一区二区久久| 免费高清在线观看视频在线观看| 一个人免费在线观看的高清视频 | 日韩欧美一区视频在线观看| 国产高清视频在线播放一区 | videosex国产| 日韩电影二区| 国产精品1区2区在线观看. | 在线观看免费午夜福利视频| 欧美黑人欧美精品刺激| 成人国产一区最新在线观看| 国产高清videossex| 精品免费久久久久久久清纯 | 深夜精品福利| 91字幕亚洲| 色老头精品视频在线观看| 欧美黄色淫秽网站| 悠悠久久av| 人人妻人人澡人人看| 美女脱内裤让男人舔精品视频| 亚洲第一av免费看| 在线观看www视频免费| 高清欧美精品videossex| 久久久久久久久免费视频了| 最近最新中文字幕大全免费视频| 国产精品香港三级国产av潘金莲| 午夜两性在线视频| 中文字幕精品免费在线观看视频| 欧美久久黑人一区二区| 亚洲免费av在线视频| 亚洲天堂av无毛| 大陆偷拍与自拍| 久久久欧美国产精品| 少妇粗大呻吟视频| 黄色视频在线播放观看不卡| 9色porny在线观看| 可以免费在线观看a视频的电影网站| 99精国产麻豆久久婷婷| 亚洲第一青青草原| 日韩视频在线欧美| 999久久久国产精品视频| 午夜激情av网站| 国产免费视频播放在线视频| 亚洲国产中文字幕在线视频| 后天国语完整版免费观看| 亚洲精品自拍成人| 国产成人精品无人区| 日本黄色日本黄色录像| 青春草视频在线免费观看| 久久亚洲国产成人精品v| 国产精品久久久av美女十八| 91成人精品电影| 日本五十路高清| 亚洲精品中文字幕在线视频| 久久国产精品影院| 曰老女人黄片| 欧美日韩精品网址| 中文字幕高清在线视频| 高潮久久久久久久久久久不卡| 久久久国产一区二区| 国产一区二区三区av在线| 亚洲人成电影观看| 一级,二级,三级黄色视频| 久久精品人人爽人人爽视色| 女性生殖器流出的白浆| 国产欧美日韩精品亚洲av| 一区二区日韩欧美中文字幕| 午夜免费观看性视频| 国产av一区二区精品久久| 精品少妇一区二区三区视频日本电影| 手机成人av网站| 美女主播在线视频| 欧美国产精品va在线观看不卡| 老司机福利观看| 麻豆国产av国片精品| 老熟女久久久| 亚洲国产av影院在线观看| 精品第一国产精品| 爱豆传媒免费全集在线观看| e午夜精品久久久久久久| 中文欧美无线码| 又大又爽又粗| 日韩欧美免费精品| 亚洲av日韩在线播放| 大型av网站在线播放| 一二三四社区在线视频社区8| 捣出白浆h1v1| 人妻一区二区av| 国产精品久久久人人做人人爽| 欧美黄色片欧美黄色片| 亚洲国产精品999| 久久毛片免费看一区二区三区| 午夜福利乱码中文字幕| 欧美精品高潮呻吟av久久| 国产淫语在线视频| 在线观看免费视频网站a站| 日韩欧美一区视频在线观看| 久久中文看片网| 中文字幕人妻丝袜一区二区| 在线亚洲精品国产二区图片欧美| 波多野结衣一区麻豆| 国产精品一二三区在线看| 夫妻午夜视频| 久久精品久久久久久噜噜老黄| 1024视频免费在线观看| 久久精品人人爽人人爽视色| 欧美激情 高清一区二区三区| 精品人妻在线不人妻| 午夜精品国产一区二区电影| 国产成人欧美| 一区二区三区激情视频| 不卡av一区二区三区| 午夜日韩欧美国产| 国产免费一区二区三区四区乱码| 少妇猛男粗大的猛烈进出视频| 久久人人爽av亚洲精品天堂| 各种免费的搞黄视频| 极品人妻少妇av视频| 91国产中文字幕| 欧美日韩一级在线毛片| 免费人妻精品一区二区三区视频| 免费观看人在逋| 性高湖久久久久久久久免费观看| 亚洲精品一区蜜桃| 老司机靠b影院| 九色亚洲精品在线播放| 91大片在线观看| 久久久久久亚洲精品国产蜜桃av| 女警被强在线播放| 中文字幕人妻丝袜制服| 狠狠婷婷综合久久久久久88av| 在线看a的网站| 亚洲精品中文字幕一二三四区 | 免费在线观看日本一区| 淫妇啪啪啪对白视频 | 午夜91福利影院| 无限看片的www在线观看| 一边摸一边抽搐一进一出视频| 黑人巨大精品欧美一区二区mp4| 国产精品免费视频内射| 777久久人妻少妇嫩草av网站| 美女国产高潮福利片在线看| 国产精品一区二区精品视频观看| av在线老鸭窝| 日韩电影二区| 精品乱码久久久久久99久播| 欧美激情极品国产一区二区三区| 成年美女黄网站色视频大全免费| 免费观看人在逋| 电影成人av| 国产av又大| 三级毛片av免费| 成人国语在线视频| 国产人伦9x9x在线观看| av国产精品久久久久影院| 精品高清国产在线一区| 欧美激情久久久久久爽电影 | 美女脱内裤让男人舔精品视频| 久久精品国产亚洲av高清一级| 欧美日韩视频精品一区| 一本色道久久久久久精品综合| 国产人伦9x9x在线观看| av电影中文网址| 蜜桃国产av成人99| 老熟女久久久| 男女无遮挡免费网站观看| 国产精品久久久人人做人人爽| 国产精品一区二区在线观看99| 汤姆久久久久久久影院中文字幕| 热99re8久久精品国产| 美女扒开内裤让男人捅视频| 黄色毛片三级朝国网站| 老司机深夜福利视频在线观看 | 久久久国产精品麻豆| 久久99一区二区三区| 在线观看免费午夜福利视频| 国产精品免费大片| 中文字幕av电影在线播放| 中文字幕精品免费在线观看视频| 老司机亚洲免费影院| 在线观看www视频免费| 下体分泌物呈黄色| 一级黄色大片毛片| 国产亚洲精品第一综合不卡| 国产精品久久久人人做人人爽| 成在线人永久免费视频| 成人黄色视频免费在线看| 91麻豆av在线| av欧美777| 亚洲男人天堂网一区| 午夜福利在线免费观看网站| 99国产精品一区二区蜜桃av | 十分钟在线观看高清视频www| 成年人黄色毛片网站| 国产黄色免费在线视频| 亚洲欧美一区二区三区黑人| 亚洲激情五月婷婷啪啪| 男人操女人黄网站| 极品人妻少妇av视频| e午夜精品久久久久久久| 精品欧美一区二区三区在线| 国产高清videossex| 国产成人av激情在线播放| 国精品久久久久久国模美| 一本久久精品| 超碰97精品在线观看| 青春草视频在线免费观看| 日本精品一区二区三区蜜桃| 大香蕉久久网| 免费高清在线观看日韩| 欧美日韩成人在线一区二区| 首页视频小说图片口味搜索| 亚洲色图综合在线观看| 久久精品亚洲熟妇少妇任你| 黄色视频在线播放观看不卡| 日韩欧美国产一区二区入口| 亚洲精品一二三| 男女下面插进去视频免费观看| 色婷婷av一区二区三区视频| 成人影院久久| a级毛片黄视频| 91成人精品电影| 日韩,欧美,国产一区二区三区| 中文字幕人妻丝袜制服| 欧美成狂野欧美在线观看| 亚洲免费av在线视频| 高潮久久久久久久久久久不卡| 丝袜美足系列| 丰满饥渴人妻一区二区三| 丝瓜视频免费看黄片| 宅男免费午夜| 精品国产乱码久久久久久男人| 狠狠狠狠99中文字幕| 成人黄色视频免费在线看| √禁漫天堂资源中文www| 热re99久久国产66热| 麻豆乱淫一区二区| 国产精品久久久av美女十八| 大香蕉久久网| 大香蕉久久成人网| 2018国产大陆天天弄谢| 少妇猛男粗大的猛烈进出视频| 国产精品国产三级国产专区5o| 国产一区有黄有色的免费视频| 宅男免费午夜| 久久人妻熟女aⅴ| 亚洲色图 男人天堂 中文字幕| 后天国语完整版免费观看| 亚洲欧洲精品一区二区精品久久久| 建设人人有责人人尽责人人享有的| 久久狼人影院| 最近中文字幕2019免费版| 中文字幕人妻熟女乱码| 伦理电影免费视频| 丰满少妇做爰视频| 久久久久久免费高清国产稀缺| 青春草视频在线免费观看| 大陆偷拍与自拍| 操出白浆在线播放| 精品国产乱子伦一区二区三区 | 他把我摸到了高潮在线观看 | 成年人免费黄色播放视频| 国产成人精品久久二区二区91| 国产麻豆69| 丁香六月欧美| 婷婷色av中文字幕| 亚洲男人天堂网一区| 精品免费久久久久久久清纯 | 两性午夜刺激爽爽歪歪视频在线观看 | 男男h啪啪无遮挡| 夜夜骑夜夜射夜夜干| 亚洲av成人不卡在线观看播放网 | 极品人妻少妇av视频| 制服人妻中文乱码| 少妇 在线观看| 在线观看人妻少妇| 搡老岳熟女国产| 在线天堂中文资源库| 两性夫妻黄色片| 黑人猛操日本美女一级片| 女性被躁到高潮视频| 女人被躁到高潮嗷嗷叫费观| 精品一品国产午夜福利视频| 久久久国产精品麻豆| 美女主播在线视频| 中文字幕最新亚洲高清| 老司机亚洲免费影院| 97在线人人人人妻| 国产一区二区三区综合在线观看| 视频在线观看一区二区三区| 亚洲avbb在线观看| 成人影院久久| 777久久人妻少妇嫩草av网站| 欧美精品高潮呻吟av久久| 美女高潮到喷水免费观看| 后天国语完整版免费观看| 中国国产av一级| 亚洲国产精品成人久久小说| 在线观看一区二区三区激情| 国产精品九九99| 久久香蕉激情| 国产精品一区二区在线不卡| 五月天丁香电影| 久久久国产欧美日韩av| 一二三四社区在线视频社区8| 丝袜人妻中文字幕| e午夜精品久久久久久久| 亚洲 欧美一区二区三区| 国产无遮挡羞羞视频在线观看| 国产免费av片在线观看野外av| 久久久久久久久久久久大奶| 成人三级做爰电影| 热re99久久国产66热| 日本猛色少妇xxxxx猛交久久| 国产精品久久久久久人妻精品电影 | 亚洲第一av免费看| 无限看片的www在线观看| 欧美+亚洲+日韩+国产| 亚洲精品美女久久久久99蜜臀| 日本一区二区免费在线视频| 丝袜美足系列| 涩涩av久久男人的天堂| 美女脱内裤让男人舔精品视频| 久久久久久亚洲精品国产蜜桃av| 欧美人与性动交α欧美软件| 成年动漫av网址| 亚洲精品中文字幕一二三四区 | 两性夫妻黄色片| 欧美大码av| av免费在线观看网站| 久久国产精品男人的天堂亚洲| 亚洲一区二区三区欧美精品| 久久午夜综合久久蜜桃| 婷婷色av中文字幕| 五月开心婷婷网| 精品久久久久久电影网| 亚洲欧美一区二区三区久久| 搡老岳熟女国产| 男女边摸边吃奶| 人人妻人人添人人爽欧美一区卜| 纯流量卡能插随身wifi吗| 久久女婷五月综合色啪小说| 夜夜夜夜夜久久久久| 不卡av一区二区三区| 国产精品久久久人人做人人爽| 日本av免费视频播放| 午夜日韩欧美国产| 免费少妇av软件| 精品福利永久在线观看| 91麻豆av在线| 亚洲国产精品成人久久小说| 亚洲国产精品999| 一进一出抽搐动态| 国产精品一区二区精品视频观看| 在线精品无人区一区二区三| 99国产精品一区二区蜜桃av | 99久久综合免费| 嫩草影视91久久| cao死你这个sao货| 性色av乱码一区二区三区2| 欧美国产精品一级二级三级| 欧美日韩亚洲高清精品| 色94色欧美一区二区| 美女扒开内裤让男人捅视频| 亚洲熟女毛片儿| 久久人妻福利社区极品人妻图片| 国产日韩一区二区三区精品不卡| 欧美+亚洲+日韩+国产| 大型av网站在线播放| 亚洲精品久久午夜乱码| 在线观看一区二区三区激情| 欧美日韩成人在线一区二区| 女人爽到高潮嗷嗷叫在线视频| 久久天堂一区二区三区四区| 久久久精品国产亚洲av高清涩受| 少妇 在线观看| 19禁男女啪啪无遮挡网站| 国产97色在线日韩免费| 国产精品1区2区在线观看. | 国内毛片毛片毛片毛片毛片| 亚洲精品国产色婷婷电影| 18禁观看日本| 日韩欧美免费精品| 国产精品欧美亚洲77777| 国产成人欧美| 久久国产精品大桥未久av| 一本色道久久久久久精品综合| 国产精品免费视频内射| 蜜桃在线观看..| 久久精品久久久久久噜噜老黄| 午夜91福利影院| 精品国产一区二区三区四区第35| 亚洲精品久久久久久婷婷小说| 黄色毛片三级朝国网站| 亚洲欧美色中文字幕在线| 久久精品国产亚洲av高清一级| 热99re8久久精品国产| xxxhd国产人妻xxx| 亚洲午夜精品一区,二区,三区| 亚洲一区中文字幕在线| avwww免费| 如日韩欧美国产精品一区二区三区| 99国产精品99久久久久| 精品国产一区二区三区四区第35| a级毛片在线看网站| av在线播放精品| 精品亚洲成a人片在线观看| 亚洲人成77777在线视频| 色综合欧美亚洲国产小说| 久热爱精品视频在线9| 在线天堂中文资源库| 欧美一级毛片孕妇| 亚洲欧美日韩另类电影网站| 亚洲精品国产精品久久久不卡| 性少妇av在线| 久久久久国产精品人妻一区二区| 久久精品国产亚洲av高清一级| 午夜福利影视在线免费观看| 亚洲性夜色夜夜综合| 亚洲中文日韩欧美视频| 成人免费观看视频高清| 国精品久久久久久国模美| 久久久久精品人妻al黑| 我的亚洲天堂| 亚洲精品美女久久av网站| 久久人人爽av亚洲精品天堂| 亚洲av美国av| 黄片播放在线免费| www.999成人在线观看| 国产日韩一区二区三区精品不卡| 亚洲精品粉嫩美女一区| 超碰成人久久| 亚洲美女黄色视频免费看| av线在线观看网站| 丰满人妻熟妇乱又伦精品不卡| 老汉色av国产亚洲站长工具| 两性午夜刺激爽爽歪歪视频在线观看 | 日韩有码中文字幕| 在线观看一区二区三区激情| 黄片播放在线免费| 99国产综合亚洲精品| 精品少妇一区二区三区视频日本电影| 日韩有码中文字幕| 精品视频人人做人人爽| 久久久久久久精品精品| 51午夜福利影视在线观看| 久久久久国产精品人妻一区二区| 国产成人av教育| 亚洲欧美色中文字幕在线| 国产精品一区二区免费欧美 | 欧美激情久久久久久爽电影 | av一本久久久久| 精品人妻熟女毛片av久久网站| 中文字幕精品免费在线观看视频| 电影成人av| 亚洲全国av大片| 免费久久久久久久精品成人欧美视频| 十八禁网站免费在线| 欧美 亚洲 国产 日韩一| 超色免费av| 国产在线一区二区三区精| www.精华液| 黄色视频不卡| 欧美日韩精品网址| 亚洲人成电影免费在线| 午夜影院在线不卡| 人人澡人人妻人| 欧美日韩亚洲综合一区二区三区_| 久久人人爽人人片av| 色婷婷av一区二区三区视频| 国产精品国产av在线观看| 少妇猛男粗大的猛烈进出视频| 天天操日日干夜夜撸| 另类精品久久| 中文精品一卡2卡3卡4更新| 中文字幕人妻丝袜一区二区| 久久精品亚洲熟妇少妇任你| 久久久国产成人免费| 巨乳人妻的诱惑在线观看| 淫妇啪啪啪对白视频 | 啦啦啦中文免费视频观看日本| 精品免费久久久久久久清纯 | 国产精品熟女久久久久浪| 如日韩欧美国产精品一区二区三区| 在线观看人妻少妇| 两个人看的免费小视频| 精品免费久久久久久久清纯 | 窝窝影院91人妻| 人人妻人人澡人人爽人人夜夜| 黑人欧美特级aaaaaa片| 制服诱惑二区| 中文字幕精品免费在线观看视频| 午夜福利乱码中文字幕| 精品第一国产精品| 人人妻人人爽人人添夜夜欢视频| 亚洲国产精品一区三区| 亚洲av日韩精品久久久久久密| 黑人操中国人逼视频| 69av精品久久久久久 | 精品一区二区三区四区五区乱码| 伊人久久大香线蕉亚洲五| 亚洲国产av影院在线观看| 97在线人人人人妻| 两人在一起打扑克的视频| 欧美在线黄色| 欧美另类亚洲清纯唯美| 午夜福利乱码中文字幕| √禁漫天堂资源中文www| 热99久久久久精品小说推荐| 亚洲欧洲精品一区二区精品久久久| 宅男免费午夜| 一级毛片女人18水好多| 国产亚洲欧美在线一区二区| 久久精品国产综合久久久| 高清黄色对白视频在线免费看| 黄色视频在线播放观看不卡| 青草久久国产| 成人av一区二区三区在线看 | 动漫黄色视频在线观看| 国产欧美日韩综合在线一区二区| 国产深夜福利视频在线观看| 欧美一级毛片孕妇| 人妻 亚洲 视频| 看免费av毛片|