999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux系統的地理信息數字水印系統設計與實現

2023-12-01 03:43:46鄒秀珍胡宇宸朱長青
軟件導刊 2023年11期
關鍵詞:信息系統

鄒秀珍,胡宇宸,朱長青

(1.南京吉印信息科技有限公司,江蘇 南京 210013;2.南京師范大學 虛擬地理環境教育部重點實驗室,江蘇 南京 210097)

0 引言

地理信息是國家基礎設施建設與地理信息科學研究的基礎數據,包含了大量的地理位置信息、空間分布特征和地理屬性,被廣泛應用于城市規劃、環境保護、農業管理等領域[1-3]。然而,隨著地理信息的快速增長和廣泛流通,隨之引起的復制、盜版等侵權問題屢禁不止[4-6],不僅無法保障數據提供者的權益,還阻礙了更多的數據共享和創新,無法推動地理信息領域的持續發展。因此,如何解決地理信息開放共享和版權保護之間的矛盾成為了地理信息領域面臨的重要科學問題。

數字水印是一種將特定信息嵌入到數字數據中的技術,通過對數據進行隱蔽性修改,不影響數據的正常使用和感知,但可在需要時提取水印信息以實現版權保護[7-8]。數字水印技術的出現為地理信息的版權保護提供了新思路[9-11],在多年研究中,眾多學者們針對不同格式的地理信息設計了多種數字水印算法[12-14]。現有地理信息數字水印算法可分為空間域和變換域算法兩類。其中,空間域算法直接使用坐標、像素值、亮度值等作為水印信息載體[15];變換域算法將坐標、像素值等從空間域轉換為變換域后,使用轉換后的系數作為水印信息載體[16]。

基于設計的水印算法,學者們逐漸開發了地理信息版權保護系統。張海濤等[17]利用數字水印技術開發了名為GiSeal的軟件,該軟件以矢量數據的空間分布特征為基礎,將水印信息嵌入搭配數據的冗余信息中。周芳妃[18]設計了基于離散傅里葉變換的自適應矢量地圖數字水印算法,基于此開發了適用于矢量地圖的數字水印系統。崔翰川等[19]基于ArcGIS Engine 開發了矢量地理數據數字水印系統,實現了對于矢量地理數據的版權保護。任娜等[20]開發了適用于4D 數據的數字水印系統,實現了對多種格式地理信息的版權保護。鄧曉紅等[21]介紹了數字水印在南京市規劃和自然資源局中,實現數據安全保護中的應用。

雖然,上述開發地理信息數字水印系統現已在各領域得到了廣泛應用,但只適用于Windows 操作系統,不適用基于Linux 內核開發的國產操作系統,因此無法完全滿足科研、政府等機構在多個平臺上實現地理信息版權保護的需求。

相較于Windows 操作系統,國產操作系統由本國技術團隊開發,具有自主可控性[22]。其次,國產操作系統可根據國情、安全需求進行定制開發,以提供更強的安全保護和適應性。在實現GIS 軟件國產化的背景下,雖然開發代碼及內容逐漸實現了國產化,但開發平臺的不安全性對GIS 軟件造成了一定的威脅。因此,開發適用于國產操作系統的GIS 軟件,可提供更好的數據安全、定制化功能、本地技術支持,跨部門合作優勢更強,有助于滿足國內用戶需求,降低外部技術的依賴。地理信息數字水印系統作為保護地理信息版權的關鍵軟件,確保其安全性是維護國家地理信息安全的關鍵所在。因此,開發基于Linux 操作系統的地理信息數字水印系統,真正實現GIS 軟件的自主可控,是當前研究的關鍵問題。

為了解決上述問題,本文使用開源的地理空間數據抽象庫(Geospatial Data Abstraction Library,GDAL),開發了適用于Linux 操作系統的地理信息數字水印系統,實現了地理信息在Linux 操作系統上的版權保護,為地理信息的安全共享和保護提供了新的思路。

1 系統設計

1.1 系統框架

地理信息數字水印系統建設的總體目標是在類型多樣、格式繁多的數據中嵌入可代表版權信息的水印,從而實現版權保護。系統要求快速速寫不同類型的地理信息,且具備跨平臺的能力。因此,數字水印系統基于Linux 操作系統,應用開源且跨平臺的GDAL 庫,采用Java 語言、Swing 框架進行開發,系統架構如圖1 所示。由此可見,本文系統以不同數據類型的數字水印算法為基礎,依據C/S三層架構將其劃分為表示層、業務邏輯層、數據訪問層,不同層級完成不同的業務需求。

Fig.1 System framework圖1 系統框架

(1)表示層。該層是用戶與系統之間的接口,用戶通過該層與系統進行交互操作,可輸入待處理文件的路徑、水印信息,并選擇嵌入的數據格式和方法等,將輸入數據傳遞給業務邏輯層進行處理。

(2)業務邏輯層。該層實現了地理信息數字水印系統的應用功能,具體為版權信息加密方法、水印嵌入算法、水印檢測算法、用戶權限管理、水印日志記錄等,版權信息加密方法可對水印信息進行加密以提升水印的安全性,然后水印嵌入算法將加密后的水印信息嵌入待處理數據中。其中,水印檢測算法可從數字水印數據中提取水印信息,實現水印的檢測和提取;用戶權限管理負責管理系統中用戶的權限,確保數據的安全性和訪問控制;水印日志操作用于記錄水印嵌入和提取過程的操作日志,便于追溯和審計。Linux 操作系統的穩定性和安全性使業務邏輯層在處理版權信息加密、水印嵌入算法和水印檢測算法等關鍵功能時更可靠。同時,Linux 操作系統的良好網絡性能和高并發處理能力可支持大規模數據嵌入和提取任務,滿足業務邏輯層的性能需求。

(3)數據訪問層。該層負責對處理的數據進行讀寫操作,可從存儲介質中讀取待處理數據,并將處理后的數據寫回存儲介質。數據訪問層與業務邏輯層進行交互,將待處理數據傳遞給業務邏輯層進行處理,并存儲處理后的數據。Linux 操作系統的高度兼容性和可擴展性使系統能與各種存儲介質進行交互,包括硬盤、閃存等。此外,Linux還提供了強大的文件系統支持,可高效讀取和寫入數據,確保數據的完整性和安全性。

1.2 系統功能

地理信息數字水印系統采用模塊化的設計,由水印信息生成模塊、水印信息嵌入模塊、水印信息提取與檢測模塊、用戶權限管理模塊、水印日志記錄模塊組成,如圖2所示。

Fig.2 System function module圖2 系統功能模塊

1.2.1 水印信息生成模塊

水印信息生成是地理信息數字水印系統的核心功能之一,該模塊負責生成用于嵌入到待處理數據中的水印信息。在處理界面,用戶可輸入需要嵌入的水印信息,系統將根據用戶輸入的信息生成水印數據,再對水印信息進行加密以提高水印的安全性,生成的水印信息將傳遞至水印信息嵌入模塊進行處理。

1.2.2 水印信息嵌入模塊

水印信息嵌入模塊負責將生成的水印信息嵌入待處理數據中。在處理界面中,用戶可選擇嵌入的數據格式和方法等參數。通過水印信息嵌入模塊,系統將根據用戶選擇的嵌入算法將水印信息嵌入待處理的數據中。水印嵌入過程通過訪問Linux 文件系統與數據訪問層進行交互,從存儲介質中讀取待處理數據,并將處理后的數據寫回存儲介質。

1.2.3 水印信息提取與檢測模塊

水印信息提取與檢測模塊負責從處理后的數據中提取和檢測水印信息。在該模塊中,用戶可選擇進行水印檢測的文件路徑,系統將采用相應的水印檢測算法從待處理數據中提取嵌入的水印信息,并進行驗證和檢測,以判斷數據是否被侵權。

1.2.4 用戶權限管理模塊

用戶權限管理模塊負責管理系統中用戶的權限,確保數據的安全性和訪問控制權限。該模塊與Linux 的用戶管理和權限系統進行集成,確保系統的安全性和可控性,以控制用戶對系統各功能模塊的訪問權限。系統管理員可設置不同用戶的權限級別,限制其訪問和操作系統功能,從而確保只有經過授權的用戶才能進行水印信息生成、嵌入、提取和檢測等操作,以增強系統的安全性。

1.2.5 水印日志記錄模塊

水印日志記錄模塊用于記錄水印嵌入和提取過程的操作并生成日志,以便追溯和審計。該模塊在Linux 環境下運行,利用Linux 的特性和功能來實現日志記錄的安全性和可靠性,并記錄用戶的操作行為、嵌入和提取文件信息、操作時間等關鍵信息以及用戶身份、權限驗證等與Linux 系統相關的額外信息。通過記錄水印操作的日志可用于后續審計、追溯和分析,有助于保障水印操作安全,提供證據支持,當發生問題或糾紛時可進行調查和解決。

2 關鍵技術

2.1 水印信息生成

針對不同的嵌入水印信息,將其分為文本版權信息和圖像版權信息分別進行處理。對于文本版權信息,首先使用快速反應(Quick Response,QR)碼進行編碼,使其轉為具有版權信息的圖像[23];然后將圖像版權信息使用Logistic 混沌映射進行加密。Logistic 混沌映射模型是一種常見的水印信息加密算法[24-25],其特點是對初始值及參數極為敏感,初始值只要有微小的差異就能導致完全不同的結果。應用于圖像置亂的Logistic 混沌系統的公式如式(1)所示。圖3 為使用Logistic 混沌系統加密前后的版權圖像信息。

Fig.3 Copyright image information before and after encryption圖3 加密前后的版權圖像信息

式中:Dn∈(0,1);0 ≤μ≤4;n=0,1,2,…

2.2 水印信息嵌入

2.2.1 矢量數據數字

本文采用的數字水印算法需同時適用于點、線、面數據,且具備較好的不可感知性和魯棒性。基于該設計思想,本文使用基于空間域的數字水印算法為系統核心,算法具體步驟如下:

步驟1:將線和面數據轉為點集合,以點要素為操作對象。

步驟2:計算點集合的最小凸包,并獲得最小凸包的最遠點對。

步驟3:分別計算點集合中其他點距離最遠點對的兩個點的最短距離,這兩個點分別記為Pf(xf,yf)、Pl(xl,yl)。

步驟4:計算點集合內的其他點到點Pf、Pl構成直線的距離D,點(xt,yt)到直線距離的計算公式為:

步驟5:計算點集合內的其他點與點Pf構成的線段距離,并計算該距離與點Pf、Pl構成線段距離的比值r。

步驟6:取距離比值r,根據哈希函數將其量化為水印索引index。

步驟7:獲取加密后的版權圖像,并將其轉為一維序列Bit,然后根據水印索引index獲取該點需要嵌入的水印比特bit。

步驟8:使用量化索引調制(Quantization Index Modulation,QIM)技術[26-27]將待嵌入的水印比特bit嵌入到距離D的小數后第δ位q中,計算公式如下:

式中:q′為距離D小數后第δ位被嵌入后的數值;S為量化步長;在D中使用q′替換q即可得到新的距離D′。

步驟9:重復上述操作,對點Pf、Pl外的其他點依次嵌入水印信息。

2.2.2 柵格數據數字水印嵌入

本文采用的柵格數據水印算法使用基于密鑰矩陣的柵格數據水印算法[28],該算法將水印信息嵌入柵格像元值的最高和次低位平面,通過生成密鑰矩陣進行模板匹配,從而實現水印信息的嵌入和提取。算法具體步驟如下:

步驟1:讀取待嵌入的柵格數據R,R的大小為M×N。

步驟2:讀取原始柵格數據大小,將加密后的水印信息按照柵格數據的大小進行擴頻處理,以得到新的水印信息。

步驟3:首先,遍歷柵格數據的每個像元,將水印信息的對應位與當前像元的最高位進行比較。如果水印信息與最高位相同則記錄該像元的位置,并生成一個密鑰矩陣Key。然后,在密鑰矩陣Key的相應位置處將值設置為1,從而實現了將水印信息嵌入到柵格數據的最高位中,并保持原始像元的最高位值不變。如果水印信息與最高位不相同,則在密鑰矩陣Key的相應位置處將值設置為0,表示該像元未嵌入水印信息。然后,轉至步驟4 進行水印嵌入操作,將產生的密鑰矩陣按照二進制格式進行存儲。

步驟4:采取基于特征修改的嵌入規則將水印信息嵌入柵格數據的次低位,計算公式如下:

式中:Il表示像素值次低位的值。

2.3 水印信息提取

2.3.1 矢量數據數字水印提取

矢量數據數字水印檢測流程是水印嵌入的逆過程,具體步驟如下:

步驟1:重復水印嵌入的步驟1—步驟6,獲取水印索引index′、距離D′′。

步驟2:對距離D′′再次采用QIM 技術,從其小數后δ位的數值q′′中提取嵌入的水印比特bit′。

式中:S為量化步長。

步驟3:為了增加水印的魯棒性,在嵌入時同一水印比特會被多次嵌入到不同的點中。因此,根據水印索引index′和提取出的水印比特bit′,使用多數投票法完成水印信息組合。

步驟4:通常通過計算原始水印信息W與提取出的水印信息W′之間的相似度,來評價水印算法魯棒性。本文采用歸一化相關(Normalized Correlation,NC)值來表征相似度[29],NC值越大表示數據之間的相似度越高。

式中:O*P表示水印圖像的大小;W(i,j)、W′(i,j)分別表示原始水印信息與提出水印信息在(i,j)位置的水印比特;XNOR表示異或非運算。

2.3.2 柵格數據數字水印提取

在對柵格數據進行水印檢測與嵌入時,使用的基于密鑰矩陣的柵格數據水印算法相互對應。本文使用了基于模板匹配的水印提取算法進行水印提取。具體步驟如下:

步驟1:讀取待檢測的柵格數據I′。

步驟2:讀取密鑰矩陣,如果對應位置處的密鑰值為1則根據步驟3 進行水印提取,否則根據步驟4 進行水印提取。

步驟3:在含水印信息的柵格數據像元值的最高位二進制位中提取水印信息,提取規則為:如果該位置最高位為1,則對應的擴頻水印位的值為1;否則,對應的擴頻水印位的值為0。計算公式為:

步驟4:在含水印信息的柵格數據像元值的次低位二進制位提取水印信息,提取規則為:如果該位的二進制最高位為1,則對應的擴頻水印位的值位1;否則,對應的擴頻水印位的值為0。計算公式為:

步驟5:將得到的擴頻水印進行Logistic 逆變換,得到解密后的擴頻水印。

步驟6:將原始水印信息作為待匹配的模板,在提取的擴頻水印信息中搜尋目標。如果柵格數據未經過任何攻擊,可在擴頻水印信息的第一個位置處獲得最佳匹配結果;一旦柵格數據遭受攻擊后,為了得到最佳匹配結果,此時掃描擴頻水印并與原始水印進行匹配,以計算兩者間的相關系數NC。

步驟7:計算所有的相關系數,以提取出具有最大相關系數的塊,并將其作為提取的水印信息。

2.4 Linux系統下矢量數據讀寫

由于水印嵌入和檢測需要對矢量數據的坐標及其他參數進行修改和讀取,因此在Linux 系統中實現矢量數據讀寫是系統的關鍵技術之一。矢量數據數字水印的實現過程中,為了減少水印嵌入對數據精度的影響,需要通過原始數據的容差和分辨率來計算嵌入的位置。

目前,多采用ESRI FileGeoDatabase(FileGDB)存儲矢量數據。不同于Windows 系統,在Linux 系統中GDAL 并不支持讀取FileGDB 內矢量數據容差和分辨率。為了解決該問題,本文首先將ESRI 提供的File Geodatabase API 在Linux 系統中進行編譯,從而實現GDAL 對FileGDB 的寫入操作;然后將其與jfgdb 庫(https://github.com/frett27/jfgdb)編譯后生成的.so 文件用于系統開發軟件的配置中,從而讀取FileGDB 中矢量數據定義和容差。讀取容差的具體操作如下:

首先,創建一個地理數據庫對象,并打開一個地理數據庫;然后,調用getDatasetDefinition()方法獲取指定數據集的定義信息;接下來,對定義信息中的“<XYTolerance> … </XYTolerance>”及“<XYScale>" … </XYScale>”標簽內容進行解析,分別獲得容差和分辨率。

3 系統實現

3.1 主要功能

系統的主要功能由水印嵌入、水印檢測、日志管理、權限管理部分組成,系統界面如圖4所示。

Fig.4 System interface圖4 系統界面

3.1.1 地理信息讀寫

本文使用GDAL 讀寫地理信息,提供了一組功能強大的工具和API,用于讀取、寫入和處理各種地理空間數據格式。GDAL 支持GeoTIFF、ArcGIS Grid 等柵格數據,Shapefile、GeoJSON 等矢量數據及其他常見的地理信息格式[30],相較于ArcGIS Engine 而言具有一些顯著的優點。首先,GDAL 是一個開源庫,免費提供給開發者使用,而ArcGIS Engine 是商業軟件,需要購買許可證;其次,GDAL 具有跨平臺性,可在多個操作系統上使用,包括Windows、Linux 和MacOS 等,開發者可在Linux 環境下開發和運行地理信息讀寫功能,無需進行系統平臺的遷移和調整。

3.1.2 水印信息生成

ZXing 是谷歌開源的支持二維碼、條形碼等圖形的生成類庫,可實現對QR 碼的生成和解碼[31]。因此,本文使用ZXing 庫將文本版權信息轉為QR 碼。首先,將文本版權信息編碼為字符串的形式作為QR 碼的內容;然后,設置大小、糾錯級別、邊距等QR 碼參數;最后,使用ZXing 庫提供的API,將QR 碼內容和參數作為輸入,生成包含版權信息的QR 碼圖像對象,生成的QR 碼圖像對象不做本地存儲和加密操作。

在使用Logistic 混沌系統進行加密時,首先需要初始化邏輯映射的初始值,創建一個長度為圖像像素數量的邏輯映射數組;然后,通過迭代生成邏輯映射數組,按行優先的順序遍歷圖像的每個像素,獲取像素的RGB 值;接下來,將邏輯映射數組中的當前值乘以255,將結果轉換為整數;最后,將圖像像素的RGB 值與邏輯映射數組的當前值進行異或運算,并用改值更新像素的RGB 值。重復上述操作直至遍歷完所有像素。

3.1.3 水印信息嵌入

在實現地理信息的讀寫中,首先使用gdal.AllRegister()方法來初始化GDAL,確保它能正確加載支持的數據格式驅動程序;然后,使用gdal.Open()方法打開地理信息數據集。該方法首先將數據集路徑作為參數,并返回一個gdal.Dataset 對象,表示打開的數據集;然后使用gdal.Get-DriverByName()方法獲取適當的數據驅動程序;最后使用driver.Create()方法創建新的數據集,為存儲嵌入后的數據作準備。

矢量和柵格數據讀寫操作的方法并不相同,需要進行區分。對于柵格數據,通過gdal.Dataset 對象可獲取數據集的相關信息,例如數據集寬度(width)、高度(height)、波段數量(bandCount)等,然后使用gdal.Dataset 對象的GetRasterBand()方法獲取波段對象,并使用ReadAsArray()方法讀取柵格數據的像素值。在使用水印嵌入階段,使用算法對像素值進行修改后,通過gdal.Dataset 對象的WriteArray()方法將處理后的柵格數據寫入數據集。

對于矢量數據集,使用gdal.Dataset 對象的GetLayer()方法獲取圖層對象,并使用遍歷等方法讀取矢量數據的要素和屬性信息。在水印嵌入階段,使用Geometry 類的set-Point()方法對點坐標進行修改。在完成對數據集的讀寫操作后,使用gdal.Dataset 對象的delete()方法關閉數據集,釋放資源,并使用gdal.GDALDestroyDriverManager()方法關閉GDAL 的使用。

對于水印信息是否有效嵌入,本文采用數據是否被改動來進行判斷,即比較嵌入前后的坐標或像元值是否一致,若不一致則認為水印信息有效嵌入。圖5、圖6 分別展示了系統中矢量數據水印嵌入的參數選擇及嵌入進度界面。

Fig.5 Watermark embedding parameter selection interface圖5 水印嵌入參數選擇界面

Fig.6 Watermark embedding progress interface圖6 水印嵌入進度界面

3.1.4 水印信息檢測

水印信息檢測是水印信息嵌入步驟的逆過程,首先需要使用與水印信息嵌入部分相同的步驟打開讀取的數據集。對于柵格數據集,首先使用gdal.Dataset 對象的GetRasterBand()方法獲取波段對象,然后使用ReadAsArray()方法讀取柵格數據的像素值,最后使用水印檢測階段的步驟實現提取水印。

對于矢量數據集,首先使用gdal.Dataset 對象的Get-Layer()方法獲取圖層對象,然后獲取到圖層對象的Geometry 類,最后通過Geometry.GetX()、Geometry.GetX()分別獲取點的X、Y 坐標。基于讀取的像元值和坐標值,首先采用QIM 技術從其中提取出嵌入的水印比特,然后獲取水印索引,最后根據水印索引將水印比特組成完整的水印信息。

在水印信息檢測部分,若提取出的水印信息能正常識別出版權所有,則認為水印信息檢測有效。圖7 為系統的水印檢測結果界面。

Fig.7 Watermark detection result interface圖7 水印檢測結果界面

3.2 實驗與分析

3.2.1 實驗數據

為驗證本文設計系統算法的不可感知性和魯棒性,選取了3 種不同的矢量地理數據和柵格數據用于實驗,相關信息如表1所示。

Table 1 Experimental data information表1 實驗數據信息

3.2.2 不可感知性分析

不可感知性是指經過系統處理后的數據與原始的數據在視覺和精度上是否存在誤差。本文通過計算水印嵌入前后數據坐標與像元值之間均方根誤差(Root Mean Square Error,RMSE)來定量評價算法的不可感知性。

式中:n為頂點或像元數量;x、x′分別表示對應頂點的坐標或像元的像元值;RMSE 值越小,表示兩個數據之間的誤差越小,不可感知性越好。

表2 展示了不同數據不可感知性實驗的結果。由結果可知,6 種數據的頂點坐標或像元值均發生了改變,但改變量非常小,仍屬于可容忍的范圍內。因此,本文系統具有良好的不可感知性。

3.2.3 魯棒性分析

旋轉、縮放、平移(Rotation、Scaling and Translation,RST)是矢量地理數據最常見的操作,也是水印算法面對的最常見的攻擊之一。為了驗證本文設計系統的魯棒性,分別對矢量數據進行不同強度的RST 攻擊,以計算攻擊后水印信息與原始水印信息的NC值。

由表3 實驗結果可知,RST 攻擊后的NC 值均為1.00,這是由于矢量數據水印算法將水印嵌入由點要素最小凸包構建的幾何特征中,在提取水印時不受RST 影響。

Table 3 Experimental results of RST attack表3 RST攻擊實驗結果

高斯隨機噪聲攻擊是柵格數據常見攻擊之一,設定高斯噪聲攻擊均值為0,方差從0.1 依次遞增到0.5,柵格數據攻擊后提出的水印信息與原始水印信息的NC 值如表4 所示。由此可知,3 種柵格數據在各種強度的攻擊下NC 值均大于0.9,表明本文系統對高斯隨機噪聲攻擊具有極強的魯棒性。

Table 4 Experimental results of Gaussian random noise attack表4 高斯隨機噪聲攻擊實驗結果

綜上,本文系統對矢量數據或柵格數據常見的攻擊均具有較好的魯棒性。

4 結語

本文基于GIS 軟件國產化的背景及開發適用于Linux操作系統的地理信息數字水印系統的需求,設計并實現了基于Linux 系統的地理信息數字水印系統。該系統基于開源的GDAL 地理信息處理庫開發而成,系統內部分別封裝了處理矢量和柵格數據的數字水印算法,可滿足不同類型地理信息版權保護的需求。

該系統還是滿足了現階段在Linux 操作系統上使用數字水印系統的迫切需求,可被科研單位、政府機構等在國產操作系統中進行地理數據的版權保護,具有極強的使用價值與現實意義。實驗表明,該系統雖然具有優良的不可感知性,對常見的數據攻擊具有較強的魯棒性強,但對柵格數據數字水印算法的設計過于復雜,無形中增加了柵格數據的處理時間。未來,可采取多線程處理、優化算法設計等措施提升柵格數據的處理效率。

此外,水印嵌入操作仍不可避免地修改了數據,后續可將無損水印和區塊鏈技術相結合,并將其應用于地理信息數據水印系統中。

猜你喜歡
信息系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 欧美精品另类| 精品剧情v国产在线观看| 国产成人91精品免费网址在线| 中国一级特黄视频| 无码一区二区三区视频在线播放| 亚洲成人网在线观看| 亚洲人成网站18禁动漫无码| 国产女主播一区| 亚洲毛片一级带毛片基地| 中文字幕调教一区二区视频| 拍国产真实乱人偷精品| 亚洲高清无在码在线无弹窗| 真实国产乱子伦高清| 亚洲日韩精品欧美中文字幕 | 色综合成人| 99久久这里只精品麻豆| 亚洲第一极品精品无码| 三区在线视频| 欧美激情首页| 亚洲妓女综合网995久久| 成人亚洲国产| 久久综合九色综合97婷婷| 欧美一级色视频| 一区二区午夜| a亚洲视频| 欧美午夜视频| 色偷偷男人的天堂亚洲av| 欧美不卡二区| 午夜视频日本| 国产欧美日韩综合一区在线播放| 亚洲国产成人无码AV在线影院L| 亚洲一级毛片免费观看| 欧美在线网| 精品一区二区三区四区五区| 亚洲一区二区约美女探花| 日韩精品专区免费无码aⅴ| 香蕉eeww99国产在线观看| 国产亚洲精品97AA片在线播放| 成人午夜免费视频| 狼友视频一区二区三区| 一区二区在线视频免费观看| 亚洲一区二区三区国产精品| 制服丝袜 91视频| 亚洲欧美一区二区三区麻豆| 国产精品刺激对白在线| 欧美一区中文字幕| 中文国产成人精品久久| 精品国产中文一级毛片在线看| 成人福利一区二区视频在线| 免费国产好深啊好涨好硬视频| 国产无遮挡裸体免费视频| 中文字幕久久亚洲一区| AV不卡在线永久免费观看| 永久天堂网Av| 色哟哟色院91精品网站| 国产91丝袜| 亚洲精品午夜天堂网页| 伊人精品视频免费在线| 久久免费看片| 女同国产精品一区二区| 久久无码免费束人妻| 国产一级无码不卡视频| 国产在线八区| 国内精品视频| 亚洲欧美一区在线| 欧美一级高清视频在线播放| 日韩福利视频导航| 久久黄色视频影| 天天综合色网| 久久五月视频| 精品91视频| 国产亚洲精品在天天在线麻豆| 色噜噜久久| 26uuu国产精品视频| 国模视频一区二区| 国产亚洲视频播放9000| 老司机精品久久| 91青青草视频| 免费无码AV片在线观看国产| 久热re国产手机在线观看| 午夜福利视频一区| 国产网友愉拍精品视频|