91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

DDD是什么?DDD核心概念梳理

jf_ro2CN3Fa ? 來源:悟空聊架構(gòu) ? 作者:悟空聊架構(gòu) ? 2023-09-07 11:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

DDD 是什么,DDD 的英文全稱是 Domain-Driven Design,翻譯過來就是領域驅(qū)動設計。

這種設計一般是用在微服務的系統(tǒng)中,當我們聊微服務的時候,爭論最多的就是如何進行微服務的拆分,這也是最讓人產(chǎn)生爭議的地方。

當我們聊微服務也必然會會聊到中臺,中臺又是什么呢?

中臺

中臺從 2015 年提出,就已經(jīng)被我們熟知,但是每個人對中臺的認識可能都千差萬別,有沒有一個大家都比較認可的定義呢?

將通用的可復用的業(yè)務能力沉淀到中臺業(yè)務模型,實現(xiàn)企業(yè)級能力復用。

因此中臺面臨的首要問題就是中臺領域模型的重構(gòu)。

而中臺落地時,依然會面臨微服務設計和拆分的問題。

微服務 :中臺落地時需要用微服務進行支撐。

中臺 :復用業(yè)務,實現(xiàn)企業(yè)級能力復用。

DDD :對中臺進行領域建模,實現(xiàn)適合企業(yè)發(fā)展的中臺。

DDD 可以說是微服務和中臺的產(chǎn)品經(jīng)理。我們?nèi)憳I(yè)務功能時,是面向領域的,而不是面向數(shù)據(jù)庫表來實現(xiàn)代碼的。

二、DDD 是什么?

DDD 的核心思想:是通過領域驅(qū)動設計方法定義領域模型,從而確定業(yè)務和應用邊界,保證業(yè)務模型與代碼模型的一致性。

DDD 是一種處理高度復雜領域的設計思想,它試圖分離技術(shù)實現(xiàn)的復雜性,并圍繞業(yè)務概念構(gòu)建領域模型來控制業(yè)務的復雜性,以解決軟件難以理解,難以演進的問題。

戰(zhàn)略設計 :主要從業(yè)務視角出發(fā),建立業(yè)務領域模型,劃分領域邊界,建立通用語言的限界上下文,限界上下文可以作為微服務設計的參考邊界。

戰(zhàn)術(shù)設計 :則從技術(shù)視角出發(fā),側(cè)重于領域模型的技術(shù)實現(xiàn),完成軟件開發(fā)和落地,包括:聚合根、實體、值對象、領域服務、應用服務和資源庫等代碼邏輯的設計和實現(xiàn)。

三、DDD 架構(gòu)分層

首先我們來看下架構(gòu)分層的原理圖:

a5df8832-4d1e-11ee-a25d-92fbcf53809c.png

用戶接口

用戶接口層主要包含用戶界面、Web 服務。

用戶接口層負責向用戶顯示信息和解釋用戶指令。這里的用戶可能是:用戶、程序、自動化測試和批處理腳本等等。

應用層

應用層不應該有業(yè)務邏輯。它是很薄的一層,理論上不應該有業(yè)務規(guī)則或邏輯,主要面向用例和流程相關(guān)的操作。

應用服務是在應用層的,它負責服務的組合、編排和轉(zhuǎn)發(fā),負責處理業(yè)務用例的執(zhí)行順序以及結(jié)果的拼裝,以粗粒度的服務通過 API 網(wǎng)關(guān)向前端發(fā)布。還有,應用服務還可以進行安全認證、權(quán)限校驗、事務控制、發(fā)送或訂閱領域事件等。

領域?qū)?/p>

領域?qū)又饕獙崿F(xiàn)企業(yè)的核心業(yè)務邏輯,和之前的三層架構(gòu)的 Service 層很像。

領域?qū)赢斨杏职酆?,聚合里面就帶有聚合根、實體、值對象、領域服務等領域模型中的領域?qū)ο蟆?/p>

領域模型的業(yè)務邏輯主要通過實體和領域服務來實現(xiàn),采用充血模型來時先所有與之相關(guān)的業(yè)務功能。充血模型后面會解釋。當單一實體(或值對象)不能實現(xiàn)時,領域服務就來進行聚合多個實體(或值對象),來實現(xiàn)復雜的業(yè)務邏輯。

基礎層

基礎層為其他各層提供通用的技術(shù)和基礎服務,包括數(shù)據(jù)庫服務、消息中間件、對象存儲、緩存服務等。

它是封裝了所有的基礎服務,當切換基礎組件時,只用稍微修改下基礎服務就可以了。

比如之前用的對象文件存儲組件是阿里的,現(xiàn)在想換成騰訊的了,稍微改下基礎服務,切換成騰訊的就可以了,不用去改業(yè)務邏輯代碼。

這個就是采用了依賴倒置的原則,通過解耦來保持獨立的核心業(yè)務邏輯。

傳統(tǒng)三層架構(gòu)轉(zhuǎn) DDD 四層架構(gòu)

傳統(tǒng)的三層架構(gòu)就是 controller->service->model 這種模型,我們的思維習慣就是基于數(shù)據(jù)庫的表來開發(fā)業(yè)務功能。這種分層架構(gòu)給開發(fā)人員帶來了便利,但是如果有其他人過來看你的代碼,他會很難從業(yè)務角度去理解,因為這些代碼都是為操作數(shù)據(jù)庫的表而寫。

有了 DDD 之后,代碼是面向業(yè)務功能的,而不是面向數(shù)據(jù)庫表的。

DDD 分層架構(gòu)將業(yè)務邏輯層的服務拆分到了應用層和領域?qū)?。應用層快速響應前端的變化,領域?qū)訉崿F(xiàn)領域模型的能力。

三層架構(gòu)數(shù)據(jù)訪問采用 DAO 方式;DDD 分層架構(gòu)的數(shù)據(jù)庫等基礎資源訪問,采用了倉儲(Repository)設計模式,通過依賴倒置實現(xiàn)各層對基礎資源的解耦。

四、DDD 中各種 Object

數(shù)據(jù)持久化對象 (Persistent Object, PO),與數(shù)據(jù)庫結(jié)構(gòu)一一映射,它是數(shù)據(jù)持久化過程中的數(shù)據(jù)載體。

領域?qū)ο?/strong> ( Domain Object, DO),微服務運行時核心業(yè)務對象的載體, DO 一般包括實體或值對象。

數(shù)據(jù)傳輸對象 ( Data Transfer Object, DTO),用于前端應用與微服務應用層或者微服務之間的數(shù)據(jù)組裝和傳輸,是應用之間數(shù)據(jù)傳輸?shù)妮d體。

視圖對象 (View Object, VO),用于封裝展示層指定頁面或組件的數(shù)據(jù)。

微服務基礎層 的主要數(shù)據(jù)對象是PO。在設計時,我們需要先建立DO和PO的映射關(guān)系。大多數(shù)情況下DO和PO是一一對應的。但也有DO和PO多對多的情況。在DO和PO數(shù)據(jù)轉(zhuǎn)換時,需要進行數(shù)據(jù)重組。對于DO對象較多復雜的數(shù)據(jù)轉(zhuǎn)換操作,你可以在聚合用工廠模式來實現(xiàn)。當DO數(shù)據(jù)需要持久化時,先將DO轉(zhuǎn)換為PO對象,由倉儲實現(xiàn)服務完成數(shù)據(jù)庫持久化操作。當DO需要構(gòu)建和數(shù)據(jù)初始化時,倉儲實現(xiàn)服務先從數(shù)據(jù)庫獲取PO對象,將PO轉(zhuǎn)換為DO后,完成DO數(shù)據(jù)構(gòu)建和初始化。

領域?qū)?/strong> 主要是DO對象。DO是實體和值對象的數(shù)據(jù)和業(yè)務行為載體,承載著基礎的核心業(yè)務邏輯,多個依賴緊密的DO對象構(gòu)成聚合。領域?qū)覦O對象在持久化時需要轉(zhuǎn)換為PO對象。

應用層 主要對象有DO對象,但也可能會有DTO對象。應用層在進行不同聚合的領域服務編排時,一般建議采用聚合根ID的引用方式,應盡量避免不同聚合之間的DO對象直接引用,避免聚合之間產(chǎn)生依賴。

在涉及跨微服務的應用服務調(diào)用時,在調(diào)用其他微服務的應用服務前,DO會被轉(zhuǎn)換為DTO,完成跨微服務的DTO數(shù)據(jù)組裝,因此會有DTO對象。在前端調(diào)用后端應用服務時,用戶接口層先完成DTO到DO的轉(zhuǎn)換,然后DO作為應用服務的參數(shù),傳導到領域?qū)油瓿蓸I(yè)務邏輯處理。

用戶接口層主要完成DO和DTO的互轉(zhuǎn),完成微服務與前端應用數(shù)據(jù)交互和轉(zhuǎn)換。facade接口服務在完成后端應用服務封裝后,會對多個DO對象進行組裝,轉(zhuǎn)換為DTO對象,向前端應用完成數(shù)據(jù)轉(zhuǎn)換和傳輸。facade接口服務在接收到前端應用傳入的DTO后,完成DTO向多個DO對象的轉(zhuǎn)換,調(diào)用后端應用服務完成業(yè)務邏輯處理。前端應用主要是VO對象。展現(xiàn)層使用VO進行界面展示,通過用戶接口層與應用層采用DTO對象進行數(shù)據(jù)交互。

五、領域分類

在研究和解決業(yè)務問題時,DDD 會按照一定的規(guī)則將業(yè)務領域進行細分,當領域細分到一定的程度后,DDD 會將問題范圍限定在特定的邊界內(nèi),在這個邊界內(nèi)建立領域模型,進而用代碼實現(xiàn)該領域模型,解決相應的業(yè)務問題。簡言之,DDD 的領域就是這個邊界內(nèi)要解決的業(yè)務問題域。

領域又可以分為多個子域,子域又包含核心域、通用域和支撐域。

a600c8e4-4d1e-11ee-a25d-92fbcf53809c.png

核心域 :核心業(yè)務,決定產(chǎn)品和公司核心競爭力的子域。

通用域 :同時被多個子域使用的通用功能子域。

支撐域 :支持其他子域,非核心域和通用域。

六、實現(xiàn) DDD 流程

a62982ac-4d1e-11ee-a25d-92fbcf53809c.png

第一步 :事件風暴,這里的風暴可以理解為頭腦風暴,領域?qū)<視驮O計、開發(fā)人員一起建立領域模型。

第二步 :對領域中涉及到的場景(用戶故事)進行分析。

第三步 :分析了場景之后,就要定義領域?qū)ο?。設計實體、找出聚合根、設計值對象、設計領域事件、設計領域服務、設計倉儲。

第四步 :領域?qū)ο笮枰瑯I(yè)務邏輯,所以會形成一個代碼模型的映射。

第五步 :根據(jù)代碼模型進行代碼落地。

六、限界上下文和通用語言

限界上下文

領域邊界就是通過限界上下文來定義的。

用來封裝通用語言和領域?qū)ο?,提供上下文環(huán)境,保證在領域之內(nèi)的一些術(shù)語、業(yè)務相關(guān)對象等(通用語言)有一個確切的含義,沒有二義性。

理論上限界上下文就是微服務的邊界。我們將限界上下文內(nèi)的領域模型映射到微服務,就完成了從問題域到軟件的解決方案。

如果不考慮技術(shù)異構(gòu)、團隊溝通等其它外部因素,一個限界上下文理論上就可以設計為一個微服務。

邏輯邊界:微服務內(nèi)聚合之間的邊界是邏輯邊界。它是一個虛擬的邊界,強調(diào)業(yè)務的內(nèi)聚,可根據(jù)需要變成物理邊界,也就是說聚合也可以獨立為微服務。

物理邊界:微服務之間的邊界是物理邊界。它強調(diào)微服務部署和運行的隔離,關(guān)注微服務的服務調(diào)用、容錯和運行等。

代碼邊界:不同層或者聚合之間代碼目錄的邊界是代碼邊界。它強調(diào)的是代碼之間的隔離,方便架構(gòu)演進時代碼的重組。

通用語言

DDD 分析和設計過程中的每一個環(huán)節(jié)都需要保證限界上下文內(nèi)術(shù)語的統(tǒng)一,在代碼模型設計的時侯就要建立領域?qū)ο蠛痛a對象的一一映射,從而保證業(yè)務模型和代碼模型的一致,實現(xiàn)業(yè)務語言與代碼語言的統(tǒng)一。

七、實體

實體概念

實體和值對象是組成領域模型的基礎單元。

類包含了實體的屬性和方法,通過這些方法實現(xiàn)實體自身的業(yè)務邏輯。

實體以 DO(領域?qū)ο螅┑男问酱嬖?,每個實體對象都有唯一的 ID。字段的值可以變。

實體是看得到、摸得著的實實在在的業(yè)務對象,實體具有業(yè)務屬性、業(yè)務行為和業(yè)務邏輯。

實體特點

有 ID 標識,通過 ID 判斷相等性,ID 在聚合內(nèi)唯一。依附于聚合根,生命周期由聚合根管理。實體一般會持久化,但是與數(shù)據(jù)庫持久化對象不一定是一對一的關(guān)系。實體可以引用聚合內(nèi)的聚合根、實體和值對象。

如下代碼所示,Product 屬于商品實體,有商品唯一 id。Location 屬于值對象,后面會講解值對象。

publicclassProduct{//商品實體
privatelongid;//值對象,商品唯一id
privateStringname;//單一屬性值對象
privateLocationlocation;//屬性值對象,被實體引用
}

publicclassLocation{//值對象,無主鍵id
privateStringcountry;//值對象
privateStringprovince;//值對象
privateStringcity;//值對象
privateStringstreet;//值對象
}

實體類通常采用充血模型。

充血模型和貧血模型的區(qū)別

貧血模型:數(shù)據(jù)和業(yè)務邏輯分開到不同的類中,比如 Model 類和 Service 類。

充血模型:數(shù)據(jù)和業(yè)務邏輯封裝在同一個實體類中。

八、值對象

值對象概念

值對象描述了領域中的一件東西,這個東西是不可變的,它將不同的相關(guān)屬性組合成了一個概念整體。

值對象是 DDD 領域模型中的一個基礎對象,它跟實體一樣都來源于事件風暴所構(gòu)建的領域模型,都包含了若干個屬性,它與實體一起構(gòu)成聚合。

值對象只是若干個屬性的集合,只有數(shù)據(jù)初始化操作和有限的不涉及修改數(shù)據(jù)的行為,基本不包含業(yè)務邏輯。值對象的屬性集雖然在物理上獨立出來了,但在邏輯上它仍然是實體屬性的一部分,用于描述實體的特征。

值對象的特點

無 ID,不可變,無生命周期,用完就不需要了。值對象之間通過屬性值判斷相等性。核心本質(zhì)是值,是一組概念完整的屬性組成的集合,用于描述實體的狀態(tài)和特征,值對象盡量只引用值對象。

九、聚合和聚合根

聚合

聚合就是由業(yè)務和邏輯緊密關(guān)聯(lián)的實體和值對象組合而成。

聚合是數(shù)據(jù)修改和持久化的基本單元,每一個聚合對應一個倉儲,實現(xiàn)數(shù)據(jù)的持久化。

聚合有一個聚合根和上下文便捷,根據(jù)業(yè)務單一職責和高內(nèi)聚原則,定義了聚合內(nèi)部應該包含哪些實體和值對象,而聚合之間的邊界是松耦合的。

聚合屬于 DDD 領域?qū)?,領域?qū)影鄠€聚合,共同實現(xiàn)核心業(yè)務邏輯。

聚合內(nèi)的實體以充血模型實現(xiàn)個體業(yè)務能力,以及業(yè)務邏輯的高內(nèi)聚。

跨多個實體的業(yè)務邏輯通過領域服務來實現(xiàn),跨多個聚合的業(yè)務邏輯通過應用服務來實現(xiàn)。

特點 :高內(nèi)聚、低耦合,它是領域模型中最底層的邊界,可以作為拆分微服務的最小單位,但是不建議對微服務過度拆分。一個聚合可以作為一個微服務,以滿足版本的高頻發(fā)布和極致的彈性伸縮能力。一個微服務也可以包含多個聚合,可以進行拆分和組合。

聚合根

聚合根是為了避免由于復雜數(shù)據(jù)模型缺少統(tǒng)一的業(yè)務規(guī)則控制,從而導致聚合、實體之間數(shù)據(jù)不一致性的問題。

聚合可以比作組織,聚合根就是這個組織的負責人。

外部對象不能直接訪問聚合內(nèi)實體,需要先訪問聚合根,再導航到聚合內(nèi)部實體。

特點 :聚合根是實體,有實體的特點,具有全局唯一標識,有獨立的生命周期。一個聚合只有一個聚合根,聚合根在聚合內(nèi)對實體和值對象采用直接對象引用的方式進行組織和協(xié)調(diào),聚合根和聚合根之間通過 ID 關(guān)聯(lián)的方式實現(xiàn)聚合之間的協(xié)同。

十、領域事件

領域事件用來表示領域中發(fā)生的事件。一個領域事件將導致進一步的業(yè)務操作,在實現(xiàn)業(yè)務解耦的同時,有助于形成完成的業(yè)務閉環(huán)。

領域事件驅(qū)動設計可以切斷領域模型之間的強依賴關(guān)系,事件發(fā)布完成后,發(fā)布方不必關(guān)心后續(xù)訂閱方事件處理是否成功,可以實現(xiàn)領域模型的解耦,維護領域模型的獨立性和數(shù)據(jù)的一致性。微服務之間的數(shù)據(jù)不必要求強一致性,而是基于事件的最終一致性。

領域事件的執(zhí)行需要一系列的組件和技術(shù)來支撐:事件的構(gòu)建和發(fā)布、事件數(shù)據(jù)持久化、事件總線、消息中間件、事件接收和處理。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    27

    文章

    9418

    瀏覽量

    156348
  • Web服務器
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    25270
  • 驅(qū)動設計
    +關(guān)注

    關(guān)注

    1

    文章

    113

    瀏覽量

    15743
  • 解耦控制
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    10452

原文標題:「查缺補漏」,DDD 核心概念梳理

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ddd

    誰有java版的OA源碼
    發(fā)表于 07-31 10:46

    真心求助 為什么我的程序生成時鐘后會死機啊

    程序目的是血型配對指示器,匹配符合要求T燈亮不符合要求F燈亮entity ddd is Port ( a : inSTD_LOGIC_VECTOR (3 downto 0);b
    發(fā)表于 12-20 18:20

    一文幫你梳理Cortex與ARMv8等基礎概念

    到底什么是Cortex、ARMv8、arm架構(gòu)、ARM指令集、soc?一文幫你梳理基礎概念【科普】1. 從0開始學ARM-安裝Keil MDK uVision集成開發(fā)環(huán)境
    發(fā)表于 12-14 08:20

    黑客攻防入門與進階ddd

    黑客攻防入門與進階ddd黑客攻防入門與進階ddd
    發(fā)表于 02-23 15:45 ?9次下載

    DDD_RH137K_FAB地段10008104.1 W7修訂版2

    DDD_RH137K_FAB地段10008104.1 W7修訂版2
    發(fā)表于 05-24 16:18 ?0次下載
    <b class='flag-5'>DDD</b>_RH137K_FAB地段10008104.1 W7修訂版2

    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--轉(zhuǎn)"

    "Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--轉(zhuǎn)"
    發(fā)表于 12-01 18:06 ?6次下載
    "Scalable, Distributed Systems Using Akka, Spring Boot, <b class='flag-5'>DDD</b>, and Java--轉(zhuǎn)"

    Kafka的核心概念

    Kafka 是主流的消息流系統(tǒng),其中的概念還是比較多的,下面通過圖示的方式來梳理一下 Kafka 的核心概念,以便在我們的頭腦中有一個清晰的認識。
    的頭像 發(fā)表于 06-20 14:24 ?1652次閱讀

    為什么需要DDD?DDD怎么解決問題?

    它有三個關(guān)鍵詞:領域,驅(qū)動,設計。領域,是要探索業(yè)務的邊界;驅(qū)動,表示前者是后者的決定性因素;設計,包括產(chǎn)品設計,UIUE設計,軟件設計。
    的頭像 發(fā)表于 01-30 10:19 ?2337次閱讀

    為什么要用洋蔥架構(gòu)?洋蔥架構(gòu)層是如何構(gòu)成的

    領域驅(qū)動設計(Domain-driven design,DDD)是一種為復雜需求開發(fā)軟件的方法,它將軟件的實現(xiàn)與不斷發(fā)展的核心業(yè)務概念模型緊密地結(jié)合在一起。
    的頭像 發(fā)表于 02-02 11:35 ?1840次閱讀

    用好DDD必須先過Spring Data這關(guān)

    DDD 是一種領域驅(qū)動的設計方法,旨在通過建立對領域模型的清晰理解來解決業(yè)務問題。和事務腳本不同,DDD 使用面向?qū)ο笤O計來應對復雜的業(yè)務場景。
    的頭像 發(fā)表于 03-07 09:38 ?2730次閱讀

    一文理解DDD領域驅(qū)動設計

    2004年Eric Evans 發(fā)表Domain-Driven Design –Tackling Complexity in the Heart of Software (領域驅(qū)動設計),簡稱Evans DDD。
    的頭像 發(fā)表于 05-25 14:21 ?1586次閱讀
    一文理解<b class='flag-5'>DDD</b>領域驅(qū)動設計

    DDD驅(qū)動如何設計?如何進行領域建模?

    DDD是Eric Evans在2003年出版的《領域驅(qū)動設計:軟件核心復雜性應對之道》(Domain-Driven Design: Tackling Complexity in the Heart
    的頭像 發(fā)表于 07-18 14:11 ?1949次閱讀
    <b class='flag-5'>DDD</b>驅(qū)動如何設計?如何進行領域建模?

    談談后端架構(gòu)的演進過程:N-Layered和DDD架構(gòu)介紹

    在本文中,我們討論了 N-layered、DDD、六邊形、洋蔥和清潔架構(gòu)。這些只是眾多存在的架構(gòu)中的一部分,是一些比較出名的架構(gòu)。你可能還聽說過 BCE、DCI 等。
    發(fā)表于 08-16 10:08 ?1274次閱讀
    談談后端架構(gòu)的演進過程:N-Layered和<b class='flag-5'>DDD</b>架構(gòu)介紹

    DDD學習與感悟——向屎山?jīng)_鋒

    軟件系統(tǒng)是通過軟件開發(fā)來解決某一個業(yè)務領域或問題單元而產(chǎn)生的一個交付物。而通過軟件設計可以幫助我們開發(fā)出更加健壯的軟件系統(tǒng)。因此,軟件設計是從業(yè)務領域到軟件開發(fā)之間的橋梁。而DDD是軟件設計中的其中
    的頭像 發(fā)表于 09-24 13:31 ?1007次閱讀
    <b class='flag-5'>DDD</b>學習與感悟——向屎山?jīng)_鋒

    在DVEVM上通過ddd運行Demo

    電子發(fā)燒友網(wǎng)站提供《在DVEVM上通過ddd運行Demo.pdf》資料免費下載
    發(fā)表于 10-15 10:05 ?0次下載
    在DVEVM上通過<b class='flag-5'>ddd</b>運行Demo