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

一個面向院校信息領域的最終用戶編程語言

2014-10-21 20:04:55汪玨龔建偉柏鵬賈穎
電子世界 2014年6期

汪玨 龔建偉 柏鵬 賈穎

【摘要】隨著IT應用的推廣和Web 2.0的興起,用戶的個性化應用需求越來越多,如何迅速地滿足用戶大量的開發和維護需求成為軟件開發面臨的一個重要問題。能否讓最終用戶也能開發軟件?選擇中職院校Web信息系統為研究領域,研究最終用戶編程技術,設計了一個面向最終用戶的Web信息領域特定語言VUDSL,并開發了相應的編程工具,讓不具有軟件工程知識的最終用戶能使用可視化編程的方式開發出信息系統。VUDSL目前已在實際中成功試用。

【關鍵詞】最終用戶編程;可視化編程;領域特定語言

An end-user programming language for college information domain

Wang Jue1 ?Gong JianWei1 ?Bai Peng1 ?Jia Ying2

(1.Zhejiang Traffic Technician College,Zhejiang 321015;2.School of Software,Shanghai Jiao Tong University,Shanghai 200240)

Abstract:With the promotion of IT applications and the rise of Web 2.0,mass users'individual requirements continue to emerge.How to quickly meet usersdevelopment and maintenance requirements has been a critical problem of software development.Is it possible for end-users to develop software?This paper chooses college Web information systems as the research field,studies the end-user programming technology,designs an end-user oriented domain-specific language for college Web information system-VUDSL,and develops appropriate programming tools.The tools support end-users without the knowledge of software engineering to develop target information systems by visual programming.VUDSL has been successfully tested in practice.

Key word:End-user programming;Visual Programming;DSL

1.引言

軟件技術發展至今,軟件供不應求的現象依舊很嚴重,如何緩解這一矛盾一直是軟件工程領域面臨的一個重要問題。除了模型驅動開發、代碼自動生成、敏捷開發過程等,最終用戶編程(End-user Programming)可能將是有效解決上述問題的方法之一。最終用戶編程不僅可以利用數量巨大的最終用戶資源,而且可以解決傳統的應用開發方法中IT人員對業務需求理解不足的問題,從而能更加快速高效地開發出滿足實際需要的軟件產品。至今,最終用戶編程在一些商業軟件的應用中得到了普及,比如在文字處理器中錄制宏,電子表格計算和定義電子郵件過濾器等[1]。另外MIT多媒體實驗室和谷歌等也在最終用戶編程領域做了大量研究工作,并取得了一定的研究成果。

Ko、Myers和Aung等人描述了最終用戶在試圖學習和使用編程語言的過程中可能存在六個障礙:設計障礙、選擇障礙、協調障礙、使用障礙、理解障礙和信息障礙[2],最終用戶直接編程是很困難的。因此,在面向最終用戶的編程中,提供可視化的圖形化編程方式將減少用戶編程的障礙,大大提高用戶的編程效率。

本文以中職院校Web信息系統領域為研究的對象,研究設計了面向最終用戶的可視化的Web信息領域特定語言VUDSL,并開發了VUDSL的可視化編程工具,用戶只需通過拖拉可視化的圖形塊的“搭積木”方式即可完成編程的工作。

2.院校信息領域特定語言VUDSL的研究

2.1 VUDSL的設計目標

中職院校Web信息系統領域特定語言VUDSL的設計目標如下:

(1)面向最終用戶:VUDSL的主要設計目標是解決文獻[2]中提到的六個障礙,將IT領域與中職院校業務領域融合起來,解決中職院校Web信息系統領域業務需求復雜多變、軟件產品供不應求的問題。

(2)覆蓋中職院校Web信息系統領域的應用功能:應用功能主要包括教務管理、學生管理、教學管理等,為了覆蓋這些功能VUDSL應該有足夠的表達能力,能夠完成這些應用的定義。

(3)目標語言無關性:VUDSL能夠轉化成多平臺、多解決方案的目標代碼,比如J2EE、ASP和PHP等。

2.2 VUDSL的總體設計

中職院校Web信息系統是一個典型的信息系統,適合采用MVC的架構,結合目前Web領域一些比較流行的MVC框架(如SSH)和中職院校Web信息系統的領域特性,本文將VUDSL設計為四個部分:模型(Model)、邏輯(Logic)、頁面(View)、頁面動作流(Page Action Flow,簡稱PAF)。VUDSL的元模型如圖1所示。

圖1 VUDSL元模型

(1)模型用于定義應用的持久化數據,它有若干實體類(entity)組成,每一個實體類擁有多個屬性以及多個方法,每個實體類在數據庫中有一個對應的表,用于長久存放數據,表格的字段和實體類的屬性是一一對應的。

(2)邏輯用于定義應用的處理邏輯,它由若干邏輯動作組成,邏輯動作能夠對數據實體進行操作,邏輯動作和數據實體一起可以表示出復雜的處理邏輯,邏輯動作可以通過跳轉到一個邏輯動作或者頁面而和其他邏輯動作或頁面關聯起來。

(3)頁面用于定義應用的展現方式,它由多個頁面節點組成,一個頁面節點由多個頁面元素組成。頁面與邏輯動作之間的參數傳遞通過Web應用中的session實現,即頁面或者邏輯動作需要傳遞參數時,它將參數保存于session當中,在傳遞的目標頁面或者邏輯動作中,該參數將被讀取到。

(4)頁面動作流用于定義目標信息系統的業務處理邏輯的流程,業務邏輯的流程主要通過頁面和邏輯動作之間的跳轉關系的定義來體現。

以下各節將分別對VUDSL的四個組成部分進行詳細描述。

2.3 頁面動作流

中職院校Web信息系統領域包括的主要應用有學生管理、教學管理、考試管理、成績管理等,分析該領域的特點發現該領域中的應用有很強的流程化特性,因此在VUDSL的設計中定義了PAF來表示該領域的流程。

最終用戶在編程時,可能存在程序設計障礙和協調障礙(即不知道組件間如何協調工作),本文在VUDSL中設計PAF能解決最終用戶編程時的設計障礙問題,最終用戶只需要定義好業務流程,圍繞這個業務流程定義就能很輕松地搭建目標信息系統。

中職院校Web信息系統是由一系列的并列的業務流程Bi(i=1,2,3,...,n)組成,一個業務流程Bi可以用一系列有組織的業務節點來表示Bi=,其中,Bs是一個業務流程的開始節點,一個業務流程有且僅有一個開始節點,標識該業務流程的入口;Bp=表示業務流程中的所有頁面的節點集合,每個頁面節點Bpi可以用于數據的顯示和錄入,頁面節點的詳細定義由VUDSL的頁面完成;Ba=是業務流程中所有邏輯動作的節點集合,邏輯動作的定義由VUDSL的邏輯完成,其功能主要是對數據實體進行操作以及定義各種操作的組織結構;L=

  • 是業務流程中節點間的有向連接關系的集合,它可以用于連接Bs、Bpi、Bai中任意兩個或者兩個Bpi節點、兩個Bai節點。在VUDSL中,所有的跳轉關系都被可視化為節點間的連接關系,這樣在頁面動作流圖中能夠直觀地顯示或定義業務流程的先后依賴關系。頁面動作流的可視化圖符如表1所示。

    表1 頁面動作流圖符

    名稱 圖符

    開始節點

    頁面節點

    動作節點

    有向連線

    2.4 模型

    最終用戶在編程時,可能存在理解障礙和使用障礙,因此在VUDSL設計了模型,通過對模型中數據實體的定義,來引導最終用戶完成概念模型到數據模型的轉換。

    VUDSL模型的每個屬性擁有一種數值類型,每個實體由多個屬性構成。數據實體本身也是一種屬性類型,這樣數據實體間就存在了關聯關系。模型的可視化圖符如表2所示:

    表2 模型圖符

    名稱 圖符

    實體名稱

    屬性

    2.5 邏輯

    VUDSL的邏輯動作節點Bai由多個有組織的程序語句塊組成,這些語句塊可以是順序拼接也可以是內部嵌入。用戶將相應的語句塊拖拽拼接起來即可完成業務邏輯的定義。VUDSL的語句塊可以分為三類:值語句塊(ValueBlock)、可嵌套語句塊(NestableBlock)和可測試語句塊(TestableBlock)。

    值語句塊用于定義變量或獲取變量,代表了一個有值返回的一個操作。VUDSL中定義的值語句塊有獲取全局變量語句塊(GetBlobal-Block)、字符串語句塊(StringBlock),如圖2所示,其中varName為變量名稱,類型為字符串,語句塊返回的是該全局變量的值。字符串語句塊中value為字符串語句塊的值,類型為字符串。

    圖2 值語句塊的成員

    圖3 可嵌套語句塊的成員

    可嵌套語句塊用于表示業務邏輯的程序結構,包括順序結構、分支結構、循環結構等。一個邏輯動作節點有一個作為入口的根語句塊,該語句塊即為一個可嵌套語句塊,表示業務邏輯從這個語句塊開始。VUDSL中定義的可嵌套語句塊有:條件語句塊(IfBlock)、循環語句塊(WhileBlock)、跳轉語句塊(OutputBlock)、設置全局變量語句塊(SetGlobalBlock)、更新變量語句塊(UpdateBlock)等,如圖3所示。

    其中條件語句塊由三個嵌套進去的語句塊組成,condition為一個可測試語句塊,如果該語句塊的測試條件成立則邏輯進入有一些順序組成的可嵌套邏輯塊集合content集合中。可嵌套語句塊的順序組合的集合也是一個可嵌套語句塊。循環語句塊中condition為可測試語句塊,如果測試條件成立則循環執行content集合中的可嵌套語句塊。跳轉語句塊中的name表示一個跳轉名稱。設置全局變量語句塊設置變量名為varName的全局變量,變量的值為value值語句塊的返回值。更新變量語句塊更新變量名為varName的值為value值語句塊的返回值。

    可測試語句塊表示條件分支和循環分支的測試條件,典型的可測試語句塊包括相等語句塊(EqualsBlock)、大于(GreaterThanBlock)、小于(LessThanBlock)、并且(AndBlock)和或者(OrBlock)等語句塊,其定義都是一個二元的可測試語句塊:相等語句塊中,當左右值相等時語句塊返回真,大于、小于與此類似。并且語句塊中當左右可測試語句塊的返回都為真的時候返回真,否則返回假,或者語句塊與此類似。如圖4所示。

    圖4 可測試語句塊的成員

    邏輯部分的可視化圖符,如表3所示。

    表3 邏輯圖符

    名稱 圖符

    如果—則

    循環

    等于

    大于

    小于

    或者

    并且

    保存

    變量

    查找

    跳轉

    2.6 頁面

    VUDSL的頁面節點Bpi有三類元素組成:控件、頁面綁定的實體、綁定關系,可以表示為Bpi=,其中,Pc為頁面控件的集合,一個頁面的內容主要通過頁面控件來定義;Pe是和一個頁面節點綁定的數據實體集合,表明該頁面節點要輸入或輸出的數據。綁定關系集合Pb中每個綁定Pbi指明哪個實體和哪個頁面控件綁定,比如一個簡單的登錄界面包含登錄表單控件、數據實體用戶和二者間的綁定。

    頁面節點和邏輯動作節點一般(除了只用于顯示的頁面和只更新數據的動作)都有數據實體輸出。頁面節點的輸出由頁面中的按鈕元素和鏈接元素定義,這二者都會定義一個輸出的標志字符串;在邏輯動作節點中,這樣的標志字符串有跳轉語句塊定義。頁面節點和邏輯動作節點的輸出實體都為該節點使用或定義的數據實體。在VUDSL中,參數傳遞通過Web應用的session來實現,每個節點的數據實體都會被存入session中。

    頁面的可視化圖符如表4所示。

    表4頁面圖符

    名稱 圖符

    表單

    數據表

    3.VUDSL編程工具的實現

    在采用2個中職院校Web信息系統(選課系統和導師申請招生系統)對VUDSL語言進行案例手工驗證后,我們設計和實現了VUDSL編程工具,以更好地支持VUDSL編程,生成可執行的代碼。

    3.1 總體架構

    VUDSL編程工具的架構如圖5所示,它由VUDSL可視化編輯器和UDSL到J2EE的代碼轉換器組成。最終用戶使用VUDSL可視化編輯器進行應用的定義,編輯器可以將信息系統的VUDSL代碼表示序列化為一種中間DSL代碼——UDSL。UDSL代碼作為UDSL到J2EE代碼轉換器的輸入,最終被轉換成可編譯部署的J2EE代碼。UDSL代碼刪除了VUDSL代碼的可視化特性,使得目標代碼的轉換更直接和方便。雖然,工具目前僅實現了Java代碼的生成,但VUDSL本身和目標代碼是無關的,完全可以生成其他語言的代碼。

    圖5 VUDSL編程工具的架構

    3.2 VUDSL編程工具的設計與實現

    VUDSL可視化編程器分為三個模塊:定義模塊、錯誤檢測模塊和UDSL轉換器模塊,如圖6所示。定義模塊主要用于定義頁面動作流、頁面、模型和邏輯,錯誤檢測模塊主要是對最終用戶在定義模塊中定義的內容進行實時檢測,如果存在錯誤會及時提醒用戶。用戶完成VUDSL模型的定義后,UDSL轉換器會根據用戶的操作及時地生成相應的UDSL,用戶可以導出生成的UDSL。

    VUDSL可視化編輯器采用Java來實現,其中VUDSL的可視化通過使用Swing工具包實現。VUDSL每個部分在定義器中都有對應的表示,錯誤檢測模塊通過監測用戶的輸入,對用戶定義的內容進行檢測,UDSL轉換器根據UDSL的語法以及該語法和VDUSL的對應關系,將信息系統的VUDSL表示轉化為UDSL代碼。

    圖6 VUDSL可視化編輯器的結構

    3.3 UDSL到Java的代碼轉換器的設計與實現

    程序轉換技術目前比較成熟的有基于轉換器的代碼生成、模板化生成器和基于重寫規則的程序轉換。經過分析UDSL語言的特點,本文選取了基于重寫規則的轉換技術,研究和開發從UDSL代碼到J2EE代碼的轉換工具。本文采用了基于Eclipse插件的體系結構來實現該轉換工具,選取Stratego/XT框架作為程序轉換的核心框架,并選擇了開源項目Spoofax作為平臺。

    基于重寫規則的程序轉換流程如圖7所示,第一步,在管道的源端,讀入輸入的程序文本,并將其轉換為解析樹或抽象語法樹;第二步,將語法樹作修改變換,達到目標語言的抽象語法樹;最后,將輸出樹再轉換為程序文本。

    圖7 程序轉換的流程

    4.應用實踐

    本文所設計的VUDSL語言及工具在浙江交通技師學院進行了試用。為了驗證語言及工具的有效性,本文采用了A組和B組對比實驗的方法,兩組分別獨立開發招生系統。A組由浙江交通技師學院的3個老師來開發,經過一個星期的培訓學習,他們使用了4天時間開發了系統。圖8和圖9分別是由A組使用VUSDL定義的導師申請招生的頁面動作流和申請招生邏輯。B組由一年J2EE開發經驗的大二的學生來進行開發。

    圖8 導師申請招生頁面動作流

    圖9 導師申請招生邏輯

    由于使用了最終用戶編程的思想,開發工作量有了明顯的變化,A組和B組的開發情況對比如表5所示。

    表5 開發情況對比

    A組最終用戶開發(VUDSL) B組程序員開發(J2EE)

    培訓時間 7天 0天

    開發時間 4天 10天

    開發工作量 8人天 28人天

    上述應用實踐表明:

    (1)VUDSL能支持最終用戶的應用開發,開發更簡單。VUDSL針對特定領域,領域的共性部分語言有預定義的模型、頁面、邏輯,最終用戶在開發時只需對目標信息系統的個性業務流程的部分進行定制。

    (2)VUDSL開發更快,最終用戶直接編程的總工作量和程序員開發相比,工作量大大降低。主要表現在:由于程序員和最終用戶間可能存在對業務需求理解不一致的問題,最終用戶對需求的理解更準確到位;兩組使用的編程語言的不同,A組使用的VUDSL特定領域相關語言比B組使用的通用編程語言有更高的抽象層次。

    (3)VUDSL的表達能力較強,能支持中職院校Web信息系統的常規功能的開發。本文實驗時選取的應用案例有一定的代表性,覆蓋了中職院校Web信息系統中常用的功能,包含很多較為復雜的業務流程。

    5.相關工作

    最終用戶編程已經存在很多具有代表性的DSL語言及相應的開發環境。文獻[3]綜述了最終用戶編程的不同的方法,包括演示編程、腳本編程、電子表格編程、及時編程等。文獻[4]綜述了最終用戶編程時面臨的挑戰以及設計一個最終用戶編程工具時需要注意的一些關鍵問題。目前最終用戶編程主要是針對兒童游戲、手機、電子表格等領域。在兒童編程領域,MIT多媒體實驗室做了大量的研究工作。Logo是Papert和他的同事提出的一種面向兒童的圖形化的編程語言[5]。LogoBlocks是對Logo語言的一種擴展,兒童可以通過操作不同大小和形狀的彩色編程塊來編程[6]。和Logo語言相比,該語言使得編程對于兒童來說更為簡單和有趣。Scratch是一個優秀的兒童編程語言,它是由MIT多媒體實驗室的研究組成員共同開發完成的一套新的程序語言,Scratch語言是專門為八歲以上兒童設計,通過Scratch語言兒童可以通過可視化的方式創造性地設計出屬于自己的程序[7]。為了滿足兒童的編程需要,文獻[8]為兒童設計一款圖形化的編程工具,設計了事件、動作、狀態等不同的編程塊。文獻[9]結合兒童用戶的使用體驗及文獻[8]的編程塊的思想,為兒童設計了一款筆交互方式編程的工具。

    以上的研究主要是針對兒童領域的,在電子表格領域,為了滿足最終用戶進行復雜電子表格設計的需要,文獻[10]設計了一款面向終端用戶的筆式表單應用開發工具,該工具提供了統一的筆式表單界面和典型應用開發模板,可以幫助用戶快速開發滿足需求的表單應用。

    在手機領域,谷歌的Google有一款支持最終用戶定制手機應用的工具軟件App Inventor。App inventor是一個可視化的“編程塊”語言,支持最終用戶通過拼接模板的方式來創建手機應用[11]。

    目前,針對中職院校Web信息系統領域的DSL的研究不是很多,已經比較成熟的研究比如WebDSL,WebDSL定義了豐富的數據模型,它是一個用來構建Web應用的DSL語言[12]。該語言不是面向最終用戶的,它不支持可視化,語言本身的語法復雜。相對于通用編程語言而比,該語言的抽象層次也不高,另外由于該語言的領域特性不夠,不能很好地滿足最終用戶編程的需求。本文的主要貢獻是針對最終用戶領域,提出了一種可視化的編程方案,允許最終用戶通過拖拉“積木”的可視化的方式,快速地搭建出滿足實際應用需求的Web信息系統。

    6.總結和展望

    本文以中職院校Web信息系統為研究領域,研究最終用戶編程技術,設計了一個面向最終用戶的可視化的中職院校Web信息領域特定語言VUDSL,并開發了相應的編程工具。文中詳細描述了VUDSL語言的設計及其可視化編程工具的開發。最后通過對浙江交通技師學院的老師進行培訓,選取了典型的應用實例,并通過A組和B組對比實驗,對本文的可視化最終用戶編程方案進行檢驗。通過實驗論證了該可視化編程語言有足夠的表達力,使用本文的可視化編輯工具可以幫助最終用戶高效的開發Web應用。今后還將對該工具的易用性、穩定性、完整性等方面進行進一步的完善和改進。

    參考文獻

    [1]H.Lieberman,F.Paternó,M.Klann,V.Wulf.End-User Development:an Emerging Paradigm[M].End User Development,Springer,2006.

    [2]Ko A J,Myers B A,Aung H H.Six Learning Barriers in End-

    User Programming Systems[C].2004 IEEE Symposium on Visual Languages and Human Centric Computing,2004:199-206.

    [3]Dao A T N,B?g P H.End-user Programming[D].Aalborg University,2010.

    [4]Andrew J.Ko,Robin Abraham,et al.The state of the art in end-user software engineering[J].ACM Computing Surveys.2011,43 (3):Article No.21.

    [5]Kelleher C,Pausch R.Lowering the barriers to programming:a taxonomy of programming environments and languages for novice programmers[J].ACM Computer Survey,2005,37(2):83-137.

    [6]Ramos,J.J.G.;Silva,F.A.;V.Oliveira;Alves,L.T.;DAbreu,J.V.V.Development of open hardware and software components for low cost pedagogical robotics programs.In:Anais do IX Simpósio Brasileiro de Automa??o Inteligente(SBAI 2009),Brasília,DF.In Portuguese.

    [7]Maloney J,Resnick M,Rusk N,et al.The scratch programming language and environment[J].ACM Transactions on Computing Education(TOCE),2010,10(4):16.

    [8]Xiajian C,Danli W,Hongan W.Design and implementation of a graphical programming tool for children[C].2011 IEEE International Conference on Computer Science and Automation Engineering(CSAE).IEEE,2011,4:572-576.

    [9]王婷婷,王丹力,路璐,等.面向兒童的圖形化編程語言和工具[J].計算機輔助設計與圖形學學報,2013,25(4):584-591.

    [10]樊銀亭,滕東興,馬翠霞,等.EUDTPFA:一個面向終端用戶的筆式表單應用開發工具[J].計算機輔助設計與圖形學學報,2011,23(10):1629-1640.

    [11]Wolber D.App inventor and real-world motivation[C].Proceedings of the 42nd ACM technical symposium on Computer science education.ACM,2011:601-606.

    [12]Hemel Z,Groenewegen D M,Kats L C L,et al.Static consistency checking of web applications with WebDSL[J].Journal of Symbolic Computation,2011,46(2):150-182.

    項目名稱:交通中職院校數字校園建設研究與實踐(計劃編號:2013T08)。

    作者簡介:

    汪玨,碩士,浙江交通技師學院講師,主要研究方向:軟件工程。

    龔建偉,浙江交通技師學院高級講師。

    柏鵬,浙江交通技師學院講師。

    賈穎,上海交通大學軟件學院在讀研究生。

  • 主站蜘蛛池模板: 成人精品在线观看| 国产成人h在线观看网站站| 黄色不卡视频| 国产成a人片在线播放| a级毛片免费看| 日本欧美在线观看| 无码精品国产VA在线观看DVD | 欧美区国产区| 毛片手机在线看| 亚洲无码A视频在线| 国产成人夜色91| 欧美日韩在线成人| 国产激情第一页| 在线视频亚洲色图| 亚洲久悠悠色悠在线播放| 亚洲va视频| 丰满少妇αⅴ无码区| 亚洲欧洲免费视频| 亚洲欧美日韩成人在线| Jizz国产色系免费| 亚洲第一视频网| 免费高清毛片| 国产免费高清无需播放器| 日韩精品专区免费无码aⅴ| 特级毛片免费视频| av在线手机播放| 影音先锋丝袜制服| 国产精品视频久| 高清视频一区| 99热亚洲精品6码| 亚洲人成影院在线观看| 中文字幕日韩视频欧美一区| 最近最新中文字幕在线第一页| 亚洲丝袜第一页| 国产福利免费在线观看| 综合人妻久久一区二区精品| 狠狠色噜噜狠狠狠狠色综合久| 中文字幕在线一区二区在线| 99这里只有精品在线| 强乱中文字幕在线播放不卡| 一级片一区| 毛片a级毛片免费观看免下载| 国产激爽爽爽大片在线观看| 色噜噜综合网| 美臀人妻中出中文字幕在线| 国产色网站| 午夜激情婷婷| 国产伦片中文免费观看| 国产欧美日韩资源在线观看| 亚洲一区二区精品无码久久久| 国产成人综合日韩精品无码首页 | 精品乱码久久久久久久| 国产真实二区一区在线亚洲 | 无码aⅴ精品一区二区三区| 国产精品开放后亚洲| 久久中文无码精品| 亚洲综合18p| 婷婷色婷婷| AV在线麻免费观看网站| 熟女日韩精品2区| 久久天天躁夜夜躁狠狠| 久青草国产高清在线视频| 国产精品19p| 中文无码毛片又爽又刺激| 免费精品一区二区h| 国产网站一区二区三区| 日本国产一区在线观看| 久久久久青草大香线综合精品| 精品国产aⅴ一区二区三区| 日本欧美视频在线观看| 国产一级裸网站| 国产网站黄| 国产本道久久一区二区三区| 国产精品大尺度尺度视频| 精品国产一二三区| 欧美在线精品怡红院 | 国产精品护士| 2021亚洲精品不卡a| 国产成人精品高清在线| 亚洲成人黄色在线| 91高清在线视频| 一区二区三区在线不卡免费|