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

    網(wǎng)絡(luò)庫(kù)Tbnet及其應(yīng)用分析

    2017-01-19 06:30:31艷,張玲,胡術(shù),李璞,潘
    關(guān)鍵詞:服務(wù)端主線指針

    李 艷,張 玲,胡 術(shù),李 璞,潘 倩

    (1. 四川大學(xué) 計(jì)算機(jī)學(xué)院,四川 成都 610064;2. 四川大學(xué) 國(guó)家空管自動(dòng)化系統(tǒng)技術(shù)重點(diǎn)實(shí)驗(yàn)室,四川 成都610064;3. 四川大學(xué) 計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)驗(yàn)中心,四川 成都 610064)

    網(wǎng)絡(luò)庫(kù)Tbnet及其應(yīng)用分析

    李 艷1,2,張 玲3,胡 術(shù)1,2,李 璞1,2,潘 倩1,2

    (1. 四川大學(xué) 計(jì)算機(jī)學(xué)院,四川 成都 610064;2. 四川大學(xué) 國(guó)家空管自動(dòng)化系統(tǒng)技術(shù)重點(diǎn)實(shí)驗(yàn)室,四川 成都610064;3. 四川大學(xué) 計(jì)算機(jī)基礎(chǔ)教學(xué)實(shí)驗(yàn)中心,四川 成都 610064)

    Tbnet采用生產(chǎn)者-消費(fèi)者隊(duì)列模型,具有附帶回應(yīng)的報(bào)文發(fā)送機(jī)制,對(duì)外提供類庫(kù)型的接口,應(yīng)用具有多樣性。研究了淘寶開(kāi)源網(wǎng)絡(luò)庫(kù)Tbnet的核心設(shè)計(jì)實(shí)現(xiàn)、多樣化使用,內(nèi)容包括Tbnet主要類及其類間關(guān)系,客戶端與服務(wù)端間的連接通信過(guò)程,以O(shè)ceanBase早期版本為代表的淘寶分布式產(chǎn)品對(duì)Tbnet使用的分析,以及該庫(kù)向Windows平臺(tái)的移植工作。

    輸入/輸出線程;工作線程;生產(chǎn)者-消費(fèi)者

    0 引言

    Tbnet廣泛應(yīng)用于TFS、Tair等開(kāi)源分布式系統(tǒng),不同于僅提供數(shù)據(jù)傳輸?shù)膫鹘y(tǒng)網(wǎng)絡(luò)庫(kù),該庫(kù)為客戶端/服務(wù)端提供交互式通信,即客戶端發(fā)出請(qǐng)求,服務(wù)端接收、處理并予以回應(yīng),適用于分布式系統(tǒng)開(kāi)發(fā)。Tbnet采用對(duì)象語(yǔ)義進(jìn)行類的設(shè)計(jì)并大量使用類的繼承,實(shí)際使用時(shí)需繼承IPacketHandler、IServerAdaptor等接口類,重寫類中虛函數(shù)。Tbnet內(nèi)部由一個(gè)處理事件的輸入/輸出線程、一個(gè)超時(shí)檢查線程及工作線程池組成,I/O線程與工作線程間采用單生產(chǎn)者-多消費(fèi)者模式[1]共享加鎖報(bào)文列表。本文分析了Tbnet主要類及其消息通信,對(duì)比分析了分布式產(chǎn)品使用Tbnet的差異性。

    1 內(nèi)部實(shí)現(xiàn)解析

    Tbnet對(duì)用戶提供庫(kù)類型接口,其使用方式呈多樣化。通過(guò)不同方式調(diào)用Transport類對(duì)象,可運(yùn)行為客戶端或服務(wù)端。為與多個(gè)服務(wù)端連接通信,客戶端主線程調(diào)用ConnectionManager類指針與由本機(jī)IP地址及其端口號(hào)轉(zhuǎn)換的無(wú)符號(hào)64位整型ipport提供的serverId標(biāo)識(shí)的服務(wù)端建立連接??蛻舳伺c服務(wù)端分別繼承IPacketHandler、采用對(duì)象適配器模式[2]的IServerAdaptor類,分別重寫handlePacket()實(shí)現(xiàn)報(bào)文處理流程。因繼承的類接口不同,服務(wù)端在I/O線程或工作線程處理報(bào)文,客戶端則在I/O線程處理報(bào)文。

    1.1 主要類

    1.1.1 線程相關(guān)類

    Tbnet采用I/O線程+工作線程池的模型[3],其線程的實(shí)現(xiàn)主要通過(guò)Runnable、DefaultRunnable以及Channel類完成,其中DefaultRunnable繼承自Runnable,內(nèi)部組合CThread類。Transport類繼承自Runnable,創(chuàng)建一個(gè)I/O線程和一個(gè)超時(shí)檢查線程,線程內(nèi)部包含至多一個(gè)eventLoop處理事件;而繼承自DefaultRunnable的PacketQueueThread類則創(chuàng)建工作線程池。

    1.1.2 IOComponent相關(guān)類

    Socket類封裝套接字及其操作函數(shù),SocketEvent類封裝epoll機(jī)制[4],而IOComponent類包含Socket類指針,設(shè)置SocketEvent類指針、引用計(jì)數(shù)及回調(diào)函數(shù)等。TCPAcceptor類繼承自IOComponent,完成類似Acceptor接收器功能,服務(wù)端根據(jù)TCPAcceptor類指針觸發(fā)讀事件執(zhí)行accept()生成已連接套接字的Socket來(lái)創(chuàng)建TCPComponent類指針。TCPComponent繼承自IOComponent類,TCPComponent根據(jù)init函數(shù)傳入的參數(shù)來(lái)判斷選擇客戶端或服務(wù)端,作為客戶端發(fā)起非阻塞連接,服務(wù)端則代表連接成功。

    1.1.3 Channel相關(guān)類

    為跟蹤各報(bào)文交互式通信,Tbnet使用Channel進(jìn)行抽象,通過(guò)對(duì)客戶端Packet設(shè)置信道ID,服務(wù)端回應(yīng)Packet也使用該ID,可確保請(qǐng)求與回應(yīng)一一對(duì)應(yīng)??蛻舳颂幚砘貞?yīng)報(bào)文的IPacketHandler類指針定義在Channel,實(shí)現(xiàn)了客戶端發(fā)送和接受處理報(bào)文的異步化,Channel機(jī)制也為用戶帶來(lái)更多可能性。因定義在主機(jī)間正在使用的Channel數(shù)量有限,為避免不斷申請(qǐng)Channel造成內(nèi)存碎片,客戶端發(fā)送請(qǐng)求報(bào)文需從ChannelPool中獲取一個(gè)空閑Channel,客戶端收到回應(yīng)報(bào)文后將該Channel取出并放回ChannelPool。

    1.1.4 Transport相關(guān)類

    Transport類封裝監(jiān)聽(tīng)與連接,創(chuàng)建Socket、IOComponent類指針,設(shè)置Socket超時(shí)檢查。主線程回調(diào)Socket設(shè)置IP地址、端口等信息;回調(diào)IOComponent創(chuàng)建套接字、設(shè)置套接字選項(xiàng)以及監(jiān)聽(tīng)或連接。因TCPComponent內(nèi)部創(chuàng)建了用于報(bào)文收發(fā)的TCPConnection類指針,Transport類創(chuàng)建的I/O線程在EPollSocketEvent類對(duì)象的驅(qū)動(dòng)下,回調(diào)IOComponent進(jìn)行事件處理。超時(shí)線程遍歷檢查存儲(chǔ)在vector中的內(nèi)部正在使用的超時(shí)IOComponent類指針,再檢查內(nèi)部發(fā)生錯(cuò)誤已移入刪除列表的超時(shí)或引用計(jì)數(shù)≤ -10的IOComponent類指針。

    1.1.5 ConnectionManager相關(guān)類

    ConnectionManager類包含Transport類指針,客戶端首次與指定服務(wù)端建立TCP連接時(shí)采用長(zhǎng)連接復(fù)用的ConnectionManager類指針,調(diào)用Transport類指針建立非阻塞連接,將key為對(duì)應(yīng)服務(wù)端序號(hào)(serverId)、value為主機(jī)間連接的Connection類指針插入map;待雙方再次連接,客戶端主線程不再調(diào)用Transport建立TCP連接,而是在map中根據(jù)serverId查找Connection類指針,通過(guò)該Connection將Packet壓入發(fā)送隊(duì)列,等待I/O線程觸發(fā)寫事件。

    1.2 對(duì)象生命周期管理設(shè)計(jì)

    Tbnet中類繼承、類間相互操作,導(dǎo)致較多類對(duì)象的創(chuàng)建與回收不在自身類中。主線程創(chuàng)建Socket類指針,并根據(jù)Socket創(chuàng)建IOComponent類指針。待I/O線程不再調(diào)用Socket及IOComponent時(shí),主線程IOComponent類的析構(gòu)函數(shù)回收Socket,Transport類的析構(gòu)函數(shù)回收在用鏈表及刪除鏈表中的IOComponent指針對(duì)象。服務(wù)端主線程創(chuàng)建的TCPAcceptor類指針,客戶端主線程以及服務(wù)端I/O線程分別創(chuàng)建的TCPComponent類指針,主機(jī)I/O線程通過(guò)原子計(jì)數(shù)修改這些類指針的引用計(jì)數(shù),待引用計(jì)數(shù)≤-10時(shí),回收該指針。TCPComponent內(nèi)部創(chuàng)建TCPConnection類指針,其析構(gòu)函數(shù)回收該類指針。

    1.3 消息通信

    客戶端與服務(wù)端使用單I/O線程+多線程模型即半同步半異步模式[5],主機(jī)間通信數(shù)據(jù)流程如圖1所示。

    圖1 Tbnet工作線程池處理與回應(yīng)消息通信數(shù)據(jù)流程圖

    客戶端主線程使用工廠類IPacketFactory,根據(jù)數(shù)據(jù)包類型創(chuàng)建Packet類指針,設(shè)置Packet超時(shí)時(shí)間,將分配的Channel信道ID設(shè)置到Packet頭部,再將Packet依次壓入加鎖的發(fā)送隊(duì)列,見(jiàn)步驟1~2;I/O線程將Packet從發(fā)送隊(duì)列移至臨時(shí)隊(duì)列,依次取出Packet并調(diào)用IPacketStreamer類指針將Packet二進(jìn)制轉(zhuǎn)換,Packet組裝后放入輸出緩存,直至臨時(shí)隊(duì)列為空或輸出緩存可寫空間尚未超過(guò)閾值,使用send函數(shù)發(fā)送請(qǐng)求報(bào)文直至輸出緩存為空或發(fā)送次數(shù)超過(guò)10次,見(jiàn)步驟4。服務(wù)端I/O線程使用recv函數(shù)接收請(qǐng)求報(bào)文至空間足夠的輸入緩存,調(diào)用IPacketStreamer類指針解析報(bào)文,獲取packet并放入加鎖的報(bào)文隊(duì)列,見(jiàn)步驟6;工作線程從報(bào)文隊(duì)列取出并處理Packet,接著回調(diào)Connection將設(shè)置了超時(shí)時(shí)間、信道ID的回應(yīng)Packet壓入發(fā)送隊(duì)列,見(jiàn)步驟7~8;服務(wù)端I/O線程觸發(fā)寫事件,從發(fā)送隊(duì)列中取出Packet,組裝并發(fā)送該回應(yīng)報(bào)文,見(jiàn)步驟9;客戶端I/O線程觸發(fā)讀事件,接收并處理報(bào)文,見(jiàn)步驟10。

    2 應(yīng)用分析

    相較于傳統(tǒng)的提供收發(fā)功能的網(wǎng)絡(luò)庫(kù),面向?qū)ο蟮腡bnet不僅在使用上存在較大差異且不能直接使用,開(kāi)發(fā)人員需繼承多個(gè)接口類,重寫成員函數(shù),還需將其他類如Transport實(shí)例化并通過(guò)編碼有機(jī)結(jié)合,方可實(shí)現(xiàn)通信功能。基于Tbnet的實(shí)現(xiàn)呈多樣化,本節(jié)將介紹兩個(gè)典型的應(yīng)用:Tbnet自帶示例代碼和OceanBaseV0.3中的應(yīng)用。

    2.1 示例代碼

    Tbnet提供一個(gè)簡(jiǎn)單的報(bào)文通信反射示例[6],包含客戶端EChoClient與服務(wù)端EChoServer兩個(gè)進(jìn)程。客戶端/服務(wù)端主線程使用Transport對(duì)象建立TCP連接、開(kāi)啟I/O線程及超時(shí)檢查線程、等待線程結(jié)束[7]。示例服務(wù)端無(wú)工作線程池,主機(jī)間消息通信流程如圖2所示。

    圖2 Tbnet I/O線程處理與回應(yīng)消息通信數(shù)據(jù)流程圖

    客戶端主線程分配內(nèi)存,創(chuàng)建字符串類型的Packet類指針,將附帶信道ID的請(qǐng)求Packet壓入加鎖的發(fā)送隊(duì)列,見(jiàn)步驟1~2;I/O線程從發(fā)送隊(duì)列中移出并組裝Packet,發(fā)送請(qǐng)求報(bào)文,見(jiàn)步驟4;服務(wù)端I/O線程接收并解析請(qǐng)求報(bào)文獲取請(qǐng)求Packet,將請(qǐng)求Packet內(nèi)容直接復(fù)制拷貝到回應(yīng)Packet并設(shè)置對(duì)應(yīng)信道ID,再將其壓入發(fā)送隊(duì)列,組裝Packet并發(fā)送回應(yīng)報(bào)文,見(jiàn)步驟6~7;客戶端I/O線程接收回應(yīng)報(bào)文,確認(rèn)收發(fā)數(shù)據(jù)包數(shù)目是否相同,接收完畢關(guān)閉I/O線程,銷毀I/O組件,刪除回應(yīng)數(shù)據(jù)包,見(jiàn)步驟8。

    2.2 OceanBase中的使用

    OceanBase[8]作為分布式關(guān)系數(shù)據(jù)庫(kù),其0.4之前版本均使用Tbnet,除常規(guī)使用,通過(guò)添加WaitObject等待對(duì)象機(jī)制,客戶端可在主線程阻塞等待回應(yīng)報(bào)文。OceanBase采用I/O線程+工作線程池模型[9],主機(jī)間網(wǎng)絡(luò)通信數(shù)據(jù)流程如圖3所示。

    圖3 WaitObject消息通信數(shù)據(jù)流程圖

    客戶端主線程創(chuàng)建含有回應(yīng)報(bào)文序號(hào)(seq_id)的WaitObject類指針,見(jiàn)步驟1;數(shù)據(jù)包設(shè)置附有seq_id的Channel信道ID并將其壓入加鎖發(fā)送隊(duì)列,WaitObject在主線程阻塞等待回應(yīng)報(bào)文,見(jiàn)步驟2~3;客戶端I/O線程向服務(wù)端發(fā)送從發(fā)送隊(duì)列移出并組裝的請(qǐng)求報(bào)文,見(jiàn)步驟5;服務(wù)端I/O線程接收并解析報(bào)文獲取請(qǐng)求Packet,將其放入加鎖的報(bào)文列表,見(jiàn)步驟6;服務(wù)端工作線程獲取報(bào)文并處理,處理完成后工作線程將帶有seq_id的回應(yīng)Packet壓入發(fā)送隊(duì)列,見(jiàn)步驟7~8;服務(wù)端I/O線程組裝并發(fā)送回應(yīng)報(bào)文,見(jiàn)步驟9;客戶端I/O線程接收回應(yīng)報(bào)文并處理,若報(bào)文帶有seq_id,則從map中查找對(duì)應(yīng)WaitObject并將回應(yīng)報(bào)文放入其中,利用條件變量喚醒阻塞等待的主線程;客戶端主線程從WaitObject中獲取回應(yīng)報(bào)文,見(jiàn)步驟10~11。

    3 向Windows平臺(tái)的移植實(shí)現(xiàn)

    Tbnet基于Linux平臺(tái)實(shí)現(xiàn),為便于使用,需向Windows平臺(tái)移植。移植主要思路:(1)Tbnet依賴淘寶另一開(kāi)源實(shí)現(xiàn)Tbsys,即對(duì)系統(tǒng)級(jí)函數(shù)的封裝,跨平臺(tái)移植需先替換Tbsys中的平臺(tái)相關(guān)部分;(2)替換Tbnet中I/O復(fù)用模型調(diào)用的epoll機(jī)制。

    3.1 Tbsys的移植

    開(kāi)源分布式協(xié)調(diào)系統(tǒng)Zookeeper的C語(yǔ)言客戶端的“winport.cpp”文件[10],其包含基于Windows函數(shù)實(shí)現(xiàn)的常見(jiàn)POSIX語(yǔ)義的線程函數(shù),包括線程創(chuàng)建、回收、互斥鎖、自旋鎖、讀寫鎖、條件變量等[11],也加載了socket動(dòng)態(tài)鏈接庫(kù)。該實(shí)現(xiàn)相對(duì)較輕量,滿足Tbnet移植要求,極大地減少了移植工作量。應(yīng)用于IOComponent類指針的引用計(jì)數(shù)通過(guò)Tbsys原子計(jì)數(shù)實(shí)現(xiàn),Tbsys使用AT&T嵌入式匯編實(shí)現(xiàn)32位整數(shù)的原子操作。在Windows平臺(tái),需使用Interlocked系列函數(shù)來(lái)替換Tbsys中atomic類的相關(guān)函數(shù),以此實(shí)現(xiàn)自動(dòng)增加、減少及比較替換功能。

    3.2 事件處理機(jī)制

    Tbnet中EPollSocketEvent類采用epoll機(jī)制實(shí)現(xiàn)I/O復(fù)用模型,移植采用select機(jī)制,通過(guò)繼承SocketEvent實(shí)現(xiàn)。epoll機(jī)制返回事件觸發(fā)的套接字,epoll_ctl()關(guān)注事件,epoll_wait()獲取激活事件;select機(jī)制獲取被觸發(fā)的套接字個(gè)數(shù)后,需遍歷整個(gè)套接字?jǐn)?shù)組查找事件觸發(fā)的套接字。移植中,為操作方便,封裝的SelectSocketEvent類內(nèi)部包含key為Socket類指針、value為Socket關(guān)聯(lián)的IOComponent類指針的map,考慮到跨線程操作map,使用互斥鎖機(jī)制。select處理流程調(diào)整為:(1)遍歷map將套接字描述符關(guān)注事件加入讀描述符集、寫描述符集;(2)有限時(shí)間內(nèi)執(zhí)行select函數(shù),再次遍歷map,將map中迭代器指向的已觸發(fā)事件的value設(shè)置到根據(jù)標(biāo)識(shí)判斷觸發(fā)了讀或?qū)懯录腎OEvent類指針的成員變量IOComponent類指針中,返回觸發(fā)事件數(shù)目。

    4 結(jié)論

    作為支持交互式通信的網(wǎng)絡(luò)庫(kù),Tbnet使用時(shí)需注意:一個(gè)Transport僅有一個(gè)I/O線程,對(duì)于連接多、吞吐量大的應(yīng)用存在瓶頸[12];因服務(wù)端使用工作線程池處理請(qǐng)求報(bào)文,導(dǎo)致報(bào)文的處理順序、回應(yīng)報(bào)文的發(fā)送順序及其接收順序不一致,對(duì)同一客戶端發(fā)出的報(bào)文也存在相同情況,該亂序會(huì)導(dǎo)致應(yīng)用層面問(wèn)題,如先進(jìn)先出;服務(wù)端對(duì)請(qǐng)求報(bào)文的處理既可在I/O線程也可在工作線程中進(jìn)行,客戶端則在I/O線程中處理回應(yīng)報(bào)文,這種將應(yīng)用層的處理放入線程的做法,通常存在線程不安全問(wèn)題,需附加隊(duì)列等處理機(jī)制。

    [1] BEVERIDGE J. Win32 多線程程序設(shè)計(jì)[M]. 侯捷,譯.武漢:華中科技大學(xué)出版社,2002.

    [2] (美)沙洛韋,(美)特羅特.設(shè)計(jì)模式精解[M]. 熊節(jié),譯.北京:清華大學(xué)出版社,2004.

    [3] 陳碩. Linux多線程服務(wù)端編程:使用muduo C++網(wǎng)絡(luò)庫(kù)[M]. 北京:電子工業(yè)出版社,2013.

    [4] STEVENS W R, FENNER B,RUDOFF A M. Unix網(wǎng)絡(luò)編程卷1:套接字聯(lián)網(wǎng)API(第3版)[M]. 北京:人民郵電出版社,2015.

    [5] SCHMIDT D C,STAL M, ROHNERT H, et al.面向模式的軟件體系結(jié)構(gòu) 卷2:用于并發(fā)和網(wǎng)絡(luò)化對(duì)象的模式[M]. 張志祥,任雄偉,肖斌,等,譯.北京:機(jī)械工業(yè)出版社,2003.

    [6] Mao Qi.Tbnet開(kāi)源[EB/OL]. (2013-11-xx)[2015-12-25].http://code.taobao.org/svn/tb-common-utils/.

    [7] STEVENS W R. UNIX網(wǎng)絡(luò)編程卷2:進(jìn)程間通信(第2版)[M]. 楊繼張,譯.北京:人民郵電出版社,2010.

    [8] OceanBase開(kāi)源[EB/OL]. (2014-04-xx)[2016-04-02].http://code.taobao.org/svn/OceanBase/.

    [9]黃貴,莊明強(qiáng). OceanBase分布式存儲(chǔ)引擎[J]. 華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(5):164-173.

    [10] The Apache Software Foundation. Zookeeper開(kāi)源[EB/OL].(2016-01-xx)[2016-05-02].http://www-us.apache.org/dist/zookeeper/.

    [11] BUTENHOF D R. POSIX多線程程序設(shè)計(jì) [M]. 丁磊,曾剛,譯.北京:中國(guó)電力出版社,2003.

    [12] 楊傳輝. 大規(guī)模分布式存儲(chǔ)系統(tǒng):原理解析和架構(gòu)實(shí)戰(zhàn)[M]. 北京:機(jī)械工業(yè)出版社,2013.

    Network library Tbnet and its application

    Li Yan1,2,Zhang Ling3,Hu Shu1,2,Li Pu1,2,Pan Qian1,2

    (1.College of Computer Science, Sichuan University, Chengdu 610064, China; 2.State Key Laboratory of ATC Automation System Technology,Sichuan University, Chengdu 610064, China; 3. Computer Teaching Experiment Center, Sichuan University, Chengdu 610064, China)

    Tbnet uses the queue model of producer-consumer, it can wait for the response when send packet, provide the interface of library type for user, and its application is diversity. This paper studies the core design and implementation of the Taobao open source network library Tbnet. Including inter main classes and their relations in Tbnet, the communication process between the client and the server, an analysis of the use of earlier versions of OceanBase represented by Taobao distributed products on the Tbnet, and the transplantation of the library to Windows platform.

    input/output thread; worker thread;producer-consumer

    TP393.1

    A

    10.19358/j.issn.1674- 7720.2017.01.020

    李艷,張玲,胡術(shù),等. 網(wǎng)絡(luò)庫(kù)Tbnet及其應(yīng)用分析[J].微型機(jī)與應(yīng)用,2017,36(1):66-68,72.

    2016-08-14)

    李艷(1992-),女,碩士研究生,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò),分布式系統(tǒng)理論。

    張玲(1964-),女,學(xué)士,實(shí)驗(yàn)師,主要研究方向:計(jì)算機(jī)應(yīng)用,仿真與網(wǎng)絡(luò)。

    胡術(shù)(1972-),通信作者,男,博士,副教授,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò),操作系統(tǒng)及中間件。E-mail:hushu20050327@163.com。

    猜你喜歡
    服務(wù)端主線指針
    人物報(bào)道的多維思考、主線聚焦與故事呈現(xiàn)
    活力(2019年17期)2019-11-26 00:42:32
    更加突出主線 落實(shí)四個(gè)到位 推動(dòng)主題教育取得實(shí)實(shí)在在成效
    偷指針的人
    云存儲(chǔ)中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
    新時(shí)期《移動(dòng)Web服務(wù)端開(kāi)發(fā)》課程教學(xué)改革的研究
    數(shù)字主線
    在Windows Server 2008上創(chuàng)建應(yīng)用
    為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
    基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
    下沉和整合 遼寧醫(yī)改主線
    精品人妻一区二区三区麻豆| 亚洲精华国产精华液的使用体验| 中国美白少妇内射xxxbb| 成人亚洲精品一区在线观看| 日日啪夜夜撸| 自拍欧美九色日韩亚洲蝌蚪91 | 在线播放无遮挡| 永久网站在线| 一级片'在线观看视频| 99久久综合免费| 欧美丝袜亚洲另类| 久久精品国产亚洲av涩爱| 亚洲精品亚洲一区二区| 亚洲精品国产色婷婷电影| 亚洲国产色片| 精品一区二区三卡| 亚洲电影在线观看av| 草草在线视频免费看| 嫩草影院新地址| 99热这里只有是精品在线观看| 久热这里只有精品99| 欧美区成人在线视频| 久久久久精品久久久久真实原创| 亚洲情色 制服丝袜| 在线 av 中文字幕| a级一级毛片免费在线观看| 国产免费一级a男人的天堂| 亚洲伊人久久精品综合| 亚洲va在线va天堂va国产| 蜜桃久久精品国产亚洲av| 内射极品少妇av片p| 欧美精品一区二区大全| 最近最新中文字幕免费大全7| 少妇猛男粗大的猛烈进出视频| 99热6这里只有精品| 国产一区有黄有色的免费视频| 日韩,欧美,国产一区二区三区| 免费人妻精品一区二区三区视频| 免费大片18禁| 国产亚洲一区二区精品| 十八禁网站网址无遮挡 | 国产91av在线免费观看| 久久久国产精品麻豆| 又大又黄又爽视频免费| 亚洲国产最新在线播放| 亚洲av成人精品一区久久| 一级毛片黄色毛片免费观看视频| 九色成人免费人妻av| 女性被躁到高潮视频| 欧美精品高潮呻吟av久久| 插逼视频在线观看| 自拍欧美九色日韩亚洲蝌蚪91 | 在线观看免费日韩欧美大片 | 成人二区视频| 成人亚洲精品一区在线观看| 亚洲欧洲国产日韩| 久久6这里有精品| 特大巨黑吊av在线直播| 美女脱内裤让男人舔精品视频| 亚洲av男天堂| 成年人午夜在线观看视频| 一级爰片在线观看| 国产成人精品无人区| 亚洲av福利一区| 在现免费观看毛片| 欧美变态另类bdsm刘玥| 久久国产乱子免费精品| 热re99久久国产66热| 三上悠亚av全集在线观看 | 王馨瑶露胸无遮挡在线观看| 日日啪夜夜爽| 国产成人精品无人区| 我的女老师完整版在线观看| 午夜老司机福利剧场| 久久精品国产鲁丝片午夜精品| 国产白丝娇喘喷水9色精品| 久久久久精品久久久久真实原创| 人妻人人澡人人爽人人| 91成人精品电影| 大陆偷拍与自拍| 精品国产一区二区久久| 国产亚洲精品久久久com| 国产成人精品一,二区| 欧美日韩一区二区视频在线观看视频在线| 美女国产视频在线观看| 亚洲精品日本国产第一区| 国产免费又黄又爽又色| 亚洲av国产av综合av卡| 久久综合国产亚洲精品| 黑人巨大精品欧美一区二区蜜桃 | 另类亚洲欧美激情| 精品人妻偷拍中文字幕| a级毛片免费高清观看在线播放| 国产中年淑女户外野战色| 亚洲精品一二三| 欧美亚洲 丝袜 人妻 在线| 在线观看国产h片| 亚洲精品成人av观看孕妇| 夜夜爽夜夜爽视频| 久久久午夜欧美精品| 青春草亚洲视频在线观看| 人妻系列 视频| 少妇被粗大的猛进出69影院 | 另类亚洲欧美激情| 美女主播在线视频| 99久久精品国产国产毛片| 免费人成在线观看视频色| 男人舔奶头视频| 亚洲情色 制服丝袜| 久久久久久久大尺度免费视频| 久久久久久久久久成人| av免费在线看不卡| 在线 av 中文字幕| 日韩在线高清观看一区二区三区| 日本色播在线视频| 亚洲va在线va天堂va国产| 又黄又爽又刺激的免费视频.| 日本-黄色视频高清免费观看| 国产亚洲91精品色在线| 97精品久久久久久久久久精品| kizo精华| 视频区图区小说| 成人无遮挡网站| 中文在线观看免费www的网站| 一级毛片黄色毛片免费观看视频| 丰满乱子伦码专区| 如何舔出高潮| 国产成人精品福利久久| 各种免费的搞黄视频| 丝袜脚勾引网站| 中文资源天堂在线| av免费在线看不卡| 秋霞在线观看毛片| 99精国产麻豆久久婷婷| 亚洲自偷自拍三级| 欧美3d第一页| 国产成人精品福利久久| 国产极品天堂在线| 午夜免费鲁丝| 久久99热6这里只有精品| 99热这里只有是精品50| 91午夜精品亚洲一区二区三区| 日韩强制内射视频| 国产69精品久久久久777片| 免费大片黄手机在线观看| 国产欧美日韩综合在线一区二区 | 成年女人在线观看亚洲视频| 国产极品粉嫩免费观看在线 | 免费在线观看成人毛片| 成人亚洲欧美一区二区av| 各种免费的搞黄视频| 亚洲精品第二区| 不卡视频在线观看欧美| 国产国拍精品亚洲av在线观看| 亚洲欧美日韩另类电影网站| 国产成人freesex在线| 亚洲av男天堂| 少妇人妻精品综合一区二区| 大陆偷拍与自拍| 多毛熟女@视频| 如何舔出高潮| 国产永久视频网站| 99久久综合免费| 欧美97在线视频| 久久99精品国语久久久| 99久久精品国产国产毛片| 少妇的逼水好多| 成人黄色视频免费在线看| 一级毛片我不卡| 成人午夜精彩视频在线观看| 久久99蜜桃精品久久| 一区二区三区免费毛片| 麻豆成人av视频| 国产成人91sexporn| 国产 精品1| 国产成人freesex在线| 国产精品国产三级国产av玫瑰| 狂野欧美激情性bbbbbb| 看十八女毛片水多多多| 黑人猛操日本美女一级片| 欧美 日韩 精品 国产| 国产精品久久久久久久电影| 亚洲精品久久午夜乱码| 国产在线男女| 亚洲一级一片aⅴ在线观看| 久久精品国产亚洲网站| 亚洲电影在线观看av| 丰满迷人的少妇在线观看| 亚洲美女搞黄在线观看| 国产精品国产三级专区第一集| 91精品伊人久久大香线蕉| 欧美97在线视频| 亚洲熟女精品中文字幕| 免费观看的影片在线观看| 97超碰精品成人国产| 亚洲欧洲国产日韩| 另类精品久久| 久久久亚洲精品成人影院| 亚洲,一卡二卡三卡| 成人美女网站在线观看视频| 26uuu在线亚洲综合色| 色婷婷久久久亚洲欧美| 伊人久久精品亚洲午夜| 久久久久视频综合| 熟妇人妻不卡中文字幕| 自拍偷自拍亚洲精品老妇| 成人无遮挡网站| 国产成人午夜福利电影在线观看| 日本wwww免费看| 精品人妻熟女av久视频| 高清午夜精品一区二区三区| 亚洲国产精品一区三区| 久久久国产欧美日韩av| 五月伊人婷婷丁香| 成年人午夜在线观看视频| 看免费成人av毛片| 日韩三级伦理在线观看| 亚洲av免费高清在线观看| 亚洲精品一区蜜桃| 青青草视频在线视频观看| 国产精品伦人一区二区| 蜜桃在线观看..| 亚洲国产日韩一区二区| 一区二区av电影网| 午夜福利影视在线免费观看| 人妻少妇偷人精品九色| 十八禁高潮呻吟视频 | 又粗又硬又长又爽又黄的视频| 国产精品熟女久久久久浪| 亚洲精品一区蜜桃| 国产成人精品无人区| 成人国产av品久久久| 久久6这里有精品| 嘟嘟电影网在线观看| 一级毛片aaaaaa免费看小| 一级毛片黄色毛片免费观看视频| 大片电影免费在线观看免费| 丝袜脚勾引网站| 赤兔流量卡办理| 中文欧美无线码| 男女国产视频网站| 久久精品国产亚洲网站| 99久久精品一区二区三区| 69精品国产乱码久久久| 色婷婷久久久亚洲欧美| 赤兔流量卡办理| 久久女婷五月综合色啪小说| 国产成人freesex在线| 日本wwww免费看| 亚洲四区av| 亚洲欧美成人精品一区二区| 观看av在线不卡| 一级毛片我不卡| 日本欧美视频一区| 久久免费观看电影| 国产成人免费无遮挡视频| 大又大粗又爽又黄少妇毛片口| 亚洲精品日韩在线中文字幕| 综合色丁香网| 蜜桃久久精品国产亚洲av| 在线看a的网站| 日韩强制内射视频| 色视频www国产| 少妇高潮的动态图| 五月玫瑰六月丁香| 国产片特级美女逼逼视频| 五月玫瑰六月丁香| 狠狠精品人妻久久久久久综合| 亚洲精品亚洲一区二区| 国产精品一区www在线观看| 成人亚洲欧美一区二区av| 天美传媒精品一区二区| 尾随美女入室| 日韩强制内射视频| 少妇的逼水好多| 桃花免费在线播放| 超碰97精品在线观看| 亚洲精品aⅴ在线观看| 久久午夜福利片| 亚洲,欧美,日韩| 97在线视频观看| 一级爰片在线观看| 97超视频在线观看视频| 极品少妇高潮喷水抽搐| 国产精品秋霞免费鲁丝片| 国产无遮挡羞羞视频在线观看| 亚洲欧美一区二区三区黑人 | 国产在线男女| √禁漫天堂资源中文www| 亚洲精品一区蜜桃| 日韩伦理黄色片| 99热这里只有是精品在线观看| 天天操日日干夜夜撸| 午夜福利影视在线免费观看| 精品国产露脸久久av麻豆| 国精品久久久久久国模美| 国产精品人妻久久久久久| 国产亚洲欧美精品永久| 新久久久久国产一级毛片| 精品久久久久久久久亚洲| 少妇熟女欧美另类| 亚洲一区二区三区欧美精品| 最近2019中文字幕mv第一页| 国内少妇人妻偷人精品xxx网站| 插阴视频在线观看视频| 亚洲成人av在线免费| 久久青草综合色| 久久久欧美国产精品| 久久久国产一区二区| 丝袜喷水一区| 黑人高潮一二区| 高清毛片免费看| 日韩欧美 国产精品| 久久国内精品自在自线图片| 国产av码专区亚洲av| 精品少妇内射三级| 性高湖久久久久久久久免费观看| 久久国产亚洲av麻豆专区| 日韩成人伦理影院| 亚洲国产精品一区三区| 人妻一区二区av| 亚洲精品国产成人久久av| 久久精品国产亚洲av天美| 国产极品粉嫩免费观看在线 | 老女人水多毛片| 草草在线视频免费看| 国产欧美日韩一区二区三区在线 | av国产精品久久久久影院| 中文资源天堂在线| 在线观看美女被高潮喷水网站| 欧美高清成人免费视频www| 2018国产大陆天天弄谢| 日韩欧美一区视频在线观看 | 亚洲在久久综合| 91久久精品国产一区二区三区| 久久狼人影院| 有码 亚洲区| 亚洲av成人精品一区久久| 我的女老师完整版在线观看| 免费黄频网站在线观看国产| 一本色道久久久久久精品综合| 国产深夜福利视频在线观看| 精品久久久久久电影网| 又爽又黄a免费视频| 亚洲美女视频黄频| 日日啪夜夜爽| 亚洲精品乱久久久久久| 成人美女网站在线观看视频| 爱豆传媒免费全集在线观看| 欧美97在线视频| 中文精品一卡2卡3卡4更新| 在线观看人妻少妇| 久久久久久伊人网av| 老熟女久久久| 日韩大片免费观看网站| 久久久久久久亚洲中文字幕| 国产亚洲欧美精品永久| 80岁老熟妇乱子伦牲交| 搡老乐熟女国产| 人人妻人人看人人澡| 国产精品欧美亚洲77777| 一级毛片aaaaaa免费看小| 九色成人免费人妻av| 男女无遮挡免费网站观看| 欧美精品国产亚洲| 80岁老熟妇乱子伦牲交| 亚洲国产精品一区三区| 国产一区二区三区综合在线观看 | 久久ye,这里只有精品| 成人综合一区亚洲| 国产一区二区在线观看日韩| 黄色视频在线播放观看不卡| 国产亚洲91精品色在线| 好男人视频免费观看在线| 欧美变态另类bdsm刘玥| 国产成人免费观看mmmm| 在线观看www视频免费| 91久久精品电影网| 精品卡一卡二卡四卡免费| 两个人免费观看高清视频 | 国产精品伦人一区二区| 熟女电影av网| 亚洲欧洲精品一区二区精品久久久 | 王馨瑶露胸无遮挡在线观看| 国产又色又爽无遮挡免| 草草在线视频免费看| 最近2019中文字幕mv第一页| 国产男女超爽视频在线观看| 99九九线精品视频在线观看视频| 免费黄频网站在线观看国产| 如日韩欧美国产精品一区二区三区 | 最新的欧美精品一区二区| 一区二区三区乱码不卡18| 国产成人一区二区在线| 久久人人爽人人爽人人片va| 亚洲国产成人一精品久久久| 日韩av在线免费看完整版不卡| 国语对白做爰xxxⅹ性视频网站| 国产探花极品一区二区| 一本—道久久a久久精品蜜桃钙片| 特大巨黑吊av在线直播| 最新的欧美精品一区二区| 国产精品熟女久久久久浪| 成人免费观看视频高清| 在线观看国产h片| 黄色欧美视频在线观看| 又大又黄又爽视频免费| 99久国产av精品国产电影| 欧美日本中文国产一区发布| 黑人猛操日本美女一级片| 国产色婷婷99| 亚洲精品乱久久久久久| 亚洲美女搞黄在线观看| 永久网站在线| 国产高清国产精品国产三级| tube8黄色片| 亚洲伊人久久精品综合| 成年av动漫网址| 国产一区二区在线观看av| 国产色爽女视频免费观看| 一级片'在线观看视频| tube8黄色片| 亚洲精品自拍成人| 最新的欧美精品一区二区| 亚洲婷婷狠狠爱综合网| 熟女av电影| 亚洲av福利一区| 日韩人妻高清精品专区| 偷拍熟女少妇极品色| 91成人精品电影| 亚洲欧美精品专区久久| 国产老妇伦熟女老妇高清| 亚洲成色77777| 久久久久久久精品精品| 欧美97在线视频| 我的女老师完整版在线观看| 18禁动态无遮挡网站| 免费人妻精品一区二区三区视频| 男人爽女人下面视频在线观看| 最近中文字幕2019免费版| av国产精品久久久久影院| a级片在线免费高清观看视频| 国产成人精品婷婷| 久久精品国产a三级三级三级| 欧美日韩视频精品一区| 久久精品国产亚洲网站| 成人毛片a级毛片在线播放| 丰满少妇做爰视频| 免费观看av网站的网址| 久久久久国产精品人妻一区二区| 国产熟女午夜一区二区三区 | 人人妻人人看人人澡| 精品少妇久久久久久888优播| .国产精品久久| 亚洲av免费高清在线观看| 亚洲精品视频女| 国产精品伦人一区二区| 99久久中文字幕三级久久日本| 日韩精品免费视频一区二区三区 | 成人黄色视频免费在线看| 国产深夜福利视频在线观看| 一边亲一边摸免费视频| 亚洲在久久综合| 一二三四中文在线观看免费高清| 亚洲欧美一区二区三区黑人 | 美女国产视频在线观看| 欧美日韩国产mv在线观看视频| 日韩电影二区| 菩萨蛮人人尽说江南好唐韦庄| 久久久久久久大尺度免费视频| 国产 一区精品| 日韩一区二区三区影片| 男女啪啪激烈高潮av片| 日本欧美国产在线视频| 你懂的网址亚洲精品在线观看| 亚洲婷婷狠狠爱综合网| 国产精品一区二区三区四区免费观看| 免费大片18禁| 在线播放无遮挡| 成人影院久久| 免费少妇av软件| 国产欧美另类精品又又久久亚洲欧美| 涩涩av久久男人的天堂| 亚洲国产精品专区欧美| 黑人巨大精品欧美一区二区蜜桃 | 午夜视频国产福利| 久久久精品94久久精品| av视频免费观看在线观看| 一级a做视频免费观看| 亚洲av成人精品一区久久| 色吧在线观看| 中文字幕制服av| 精品国产一区二区久久| 精品亚洲成a人片在线观看| 九九久久精品国产亚洲av麻豆| a级毛色黄片| 免费高清在线观看视频在线观看| a 毛片基地| 亚洲精品aⅴ在线观看| 啦啦啦视频在线资源免费观看| 久久鲁丝午夜福利片| 人人澡人人妻人| 欧美人与善性xxx| 视频中文字幕在线观看| 伦精品一区二区三区| 天堂8中文在线网| 国产探花极品一区二区| 最近中文字幕高清免费大全6| 十八禁网站网址无遮挡 | 伊人久久精品亚洲午夜| 日本爱情动作片www.在线观看| 大又大粗又爽又黄少妇毛片口| 一边亲一边摸免费视频| 在线观看免费视频网站a站| √禁漫天堂资源中文www| 成人午夜精彩视频在线观看| 亚洲精品国产色婷婷电影| 亚洲精华国产精华液的使用体验| 久久影院123| 亚洲欧美日韩东京热| 在现免费观看毛片| 观看av在线不卡| 欧美97在线视频| 啦啦啦中文免费视频观看日本| 免费观看在线日韩| 免费看av在线观看网站| 日韩中文字幕视频在线看片| 亚洲在久久综合| 亚洲av免费高清在线观看| 午夜av观看不卡| 99热这里只有是精品50| 嫩草影院新地址| 三级国产精品欧美在线观看| 国产精品久久久久久久久免| 在线观看三级黄色| 国产欧美亚洲国产| 水蜜桃什么品种好| 九九久久精品国产亚洲av麻豆| 亚洲人成网站在线观看播放| 国模一区二区三区四区视频| 免费高清在线观看视频在线观看| 国产亚洲av片在线观看秒播厂| 欧美国产精品一级二级三级 | 成人国产麻豆网| 亚洲精品国产色婷婷电影| 亚洲第一av免费看| 少妇人妻久久综合中文| 九九爱精品视频在线观看| 国产极品粉嫩免费观看在线 | 色哟哟·www| 免费黄网站久久成人精品| 少妇丰满av| 日韩视频在线欧美| 国产精品三级大全| 欧美人与善性xxx| 99九九在线精品视频 | 国产91av在线免费观看| 97在线视频观看| 久久久久久久久久人人人人人人| 亚洲精品第二区| 一级毛片 在线播放| 欧美+日韩+精品| 久久久久网色| 精品国产一区二区久久| 97超碰精品成人国产| 一本大道久久a久久精品| 亚洲熟女精品中文字幕| av专区在线播放| 国产免费一区二区三区四区乱码| 在线观看免费日韩欧美大片 | 国产精品一区二区性色av| 国产精品久久久久久久久免| 日本猛色少妇xxxxx猛交久久| 人人妻人人澡人人爽人人夜夜| 国产日韩欧美视频二区| 日韩中文字幕视频在线看片| 九草在线视频观看| 午夜激情福利司机影院| 亚洲精品乱久久久久久| 欧美激情极品国产一区二区三区 | 99久国产av精品国产电影| 精品久久久久久久久亚洲| 久热这里只有精品99| 性色avwww在线观看| 91aial.com中文字幕在线观看| 国产免费又黄又爽又色| 卡戴珊不雅视频在线播放| 国产极品天堂在线| 又黄又爽又刺激的免费视频.| 一区二区三区四区激情视频| 日韩一本色道免费dvd| 极品少妇高潮喷水抽搐| 久久久久久久精品精品| 日韩av不卡免费在线播放| 国产日韩欧美亚洲二区| 最近中文字幕高清免费大全6| a级毛片在线看网站| 日本91视频免费播放| 少妇裸体淫交视频免费看高清| 欧美精品人与动牲交sv欧美| 涩涩av久久男人的天堂| 亚洲色图综合在线观看| 这个男人来自地球电影免费观看 | 交换朋友夫妻互换小说| 伊人久久国产一区二区| 人人妻人人爽人人添夜夜欢视频 | 成年人免费黄色播放视频 | 国产女主播在线喷水免费视频网站| 国产深夜福利视频在线观看| 免费大片18禁| 22中文网久久字幕| 又爽又黄a免费视频| 国产高清有码在线观看视频| 男女边摸边吃奶| 观看免费一级毛片|