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

    一種大數(shù)據(jù)分析組件的自動(dòng)化開發(fā)集成方法

    2016-08-05 07:58:01吳懷林馬志柔
    關(guān)鍵詞:開源語句代碼

    陳 茜 吳懷林 馬志柔 劉 杰 鐘 華

    1(中國科學(xué)院大學(xué) 北京 100049)2(中國科學(xué)院軟件研究所 北京 100190)

    ?

    一種大數(shù)據(jù)分析組件的自動(dòng)化開發(fā)集成方法

    陳茜1,2吳懷林2馬志柔2劉杰2鐘華2

    1(中國科學(xué)院大學(xué)北京 100049)2(中國科學(xué)院軟件研究所北京 100190)

    摘要隨著大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)分析需求日趨多樣化,大數(shù)據(jù)分析工具自帶的算法庫已無法滿足個(gè)性化的數(shù)據(jù)分析需求,亟需開發(fā)或集成新的算法。但現(xiàn)有的大數(shù)據(jù)分析工具算法開發(fā)集成學(xué)習(xí)成本高,給新算法的開發(fā)集成帶來一定困難。提出一種針對大數(shù)據(jù)分析工具自動(dòng)化開發(fā)集成算法的方法,算法以組件的形式集成到分析工具中。首先定義組件模型,其次給出組件模型自動(dòng)化生成流程,最后重點(diǎn)分析組件代碼的自動(dòng)生成和代碼檢測問題,給出基于元信息的代碼生成方案和基于Soot控制流的靜態(tài)代碼檢測方法。實(shí)驗(yàn)表明,該方法可以完成大數(shù)據(jù)分析組件的自動(dòng)化開發(fā)集成。

    關(guān)鍵詞大數(shù)據(jù)分析組件Soot控制流分析代碼生成

    0引言

    隨著互聯(lián)網(wǎng)的快速發(fā)展,我們已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,越來越多的機(jī)構(gòu)組織開始重視數(shù)據(jù)分析帶來的價(jià)值,人們對數(shù)據(jù)分析的需求也迅速提升。許多優(yōu)秀的算法分析師致力于數(shù)據(jù)分析算法開發(fā)優(yōu)化的同時(shí),日趨增長的大數(shù)據(jù)分析業(yè)務(wù)亟需業(yè)務(wù)部門的分析師完成。集成化的大數(shù)據(jù)分析工具正是連接兩者的紐帶,它可以集成開發(fā)者開發(fā)好的數(shù)據(jù)分析算法,供業(yè)務(wù)分析師使用。

    Haflow正是這樣的一個(gè)集成化的大數(shù)據(jù)分析工具。該工具以組件為設(shè)計(jì)單位,具有拖拽式流程設(shè)計(jì)界面,以分布式集群Hadoop為組件運(yùn)行的基礎(chǔ)設(shè)施,組件間通過HDFS文件傳遞數(shù)據(jù)[1]。除了Haflow,目前市場上已經(jīng)有一些成熟的數(shù)據(jù)分析工具,如Weka[2]、Clementine、R[3]等。這些工具本身集成了一些優(yōu)秀的數(shù)據(jù)分析算法,數(shù)據(jù)分析師固然可以利用這些工具自帶的算法進(jìn)行數(shù)據(jù)挖掘分析。但是當(dāng)遇到特定的數(shù)據(jù)分析需求,需要開發(fā)和實(shí)現(xiàn)新的數(shù)據(jù)分析算法時(shí),這些數(shù)據(jù)分析工具卻并未提供很好的平臺算法擴(kuò)展接口和算法開發(fā)工具,方便算法的快速開發(fā)和集成。以Weka為例,擴(kuò)展現(xiàn)有的算法庫,添加一個(gè)新的算法需要完成以下步驟:1) 按照Weka接口和規(guī)范編寫新的算法;2) 建立合理的目錄結(jié)構(gòu),定位算法所在的包;3) 修改Weka啟動(dòng)時(shí)加載的系統(tǒng)配置文件[4]。這必然增加了算法開發(fā)和集成的復(fù)雜程度,給算法開發(fā)人員帶來了學(xué)習(xí)負(fù)擔(dān)。

    為了解決大數(shù)據(jù)分析工具算法集成開發(fā)復(fù)雜的問題,本文基于現(xiàn)有的大數(shù)據(jù)分析工具Haflow提出一種自動(dòng)的算法開發(fā)集成方法。通過該方法,屏蔽算法開發(fā)人員與工具適配的工作,免去算法開發(fā)人員研究平臺接口規(guī)范的麻煩,使其只需關(guān)注在算法的實(shí)現(xiàn)和優(yōu)化工作上,從而提高算法開發(fā)人員的工作效率。另外本文還利用靜態(tài)代碼分析的方法檢測現(xiàn)有開源代碼中不符合工具規(guī)范的部分,從而實(shí)現(xiàn)開源代碼的自動(dòng)化集成??傊?,利用該方法,可以快速地為Haflow大數(shù)據(jù)分析工具開發(fā)和集成開源算法,從而解決數(shù)據(jù)分析算法開發(fā)集成困難的問題。

    1相關(guān)研究

    相關(guān)研究主要調(diào)研了主流的商業(yè)數(shù)據(jù)分析工具算法開發(fā)現(xiàn)狀和學(xué)術(shù)界數(shù)據(jù)分析組件自動(dòng)化開發(fā)方案。

    在數(shù)據(jù)挖掘領(lǐng)域,國內(nèi)外針對不同的應(yīng)用場景研究開發(fā)了不同的數(shù)據(jù)分析工具。主流的數(shù)據(jù)分析工具包括:SAS、SPSS、Weka以及R語言等。研究這些工具上的算法開發(fā)解決方案,SAS、SPSS由于不開源,基本無法為其開發(fā)自定義的算法。R和Weka是開源的,前文中以及提到為Weka編寫新算法需要三步,Weka并未提供自動(dòng)化的算法開發(fā)方法;R是一個(gè)開放式平臺,R提供了包結(jié)構(gòu)的解決方案來管理算法,開發(fā)的新的算法需要滿足包結(jié)構(gòu)的標(biāo)準(zhǔn)。Haflow是一個(gè)基于組件的大數(shù)據(jù)分析工具[1],該工具構(gòu)建在分布式集群上,以HDFS為底層文件系統(tǒng),提供可擴(kuò)展的組件接口。數(shù)據(jù)分析算法可以以組件的形式集成到工具平臺上,并且支持異構(gòu)底層的算法。Haflow雖然提供了開放接口來支持組件開發(fā)集成,但沒有提供自動(dòng)化的方法,開發(fā)人員要學(xué)習(xí)Haflow本身的接口,熟悉Haflow的處理邏輯才能開發(fā)組件。對于開源算法的集成,也需要開發(fā)人員找出算法中不符合平臺規(guī)范的地方,代價(jià)很高。

    綜上所述,現(xiàn)有的大數(shù)據(jù)分析工具給出的算法開發(fā)和集成方案為:提供可擴(kuò)展的算法開發(fā)接口,新組件的開發(fā)需要實(shí)現(xiàn)該接口,滿足包結(jié)構(gòu)管理規(guī)范,但沒有給出自動(dòng)化的組件開發(fā)集成方案。

    除了以上提到的商業(yè)數(shù)據(jù)分析工具,學(xué)術(shù)界提出了以下研究方法。

    采用模型驅(qū)動(dòng)的代碼生成方法,利用系統(tǒng)提供的模型組件定義數(shù)據(jù)挖掘過程,該過程是一個(gè)邏輯模型,與具體實(shí)現(xiàn)技術(shù)無關(guān)。邏輯模型經(jīng)過系統(tǒng)的后臺解析成物理模型,然后在系統(tǒng)中執(zhí)行。通過Jet模板解析的方式來生成物理模型代碼,Jet解析器將用戶參數(shù)和代碼模板轉(zhuǎn)換成可執(zhí)行Java代碼[5]。該方法實(shí)現(xiàn)了數(shù)據(jù)挖掘組件的自動(dòng)化開發(fā)過程,但沒有提供開源算法集成到數(shù)據(jù)分析工具的解決方案。

    利用靜態(tài)代碼分析方法可以對程序中的代碼進(jìn)行檢測分析,Soot是McGill大學(xué)的Sable研究小組于1996年開發(fā)的Java字節(jié)碼優(yōu)化框架[6],其目標(biāo)是開發(fā)能夠更快更好地理解與執(zhí)行Java程序的工具[7]。通過 Soot 提供的過程內(nèi)和過程間的分析與優(yōu)化支持,用戶可以很方便地獲得每個(gè)方法的控制流圖和各個(gè)折衷級別上的全局調(diào)用圖[8]。在學(xué)術(shù)研究中,Soot還被用來檢測分析程序中的缺陷[9]。本文將利用Soot分析開源算法中的輸入輸出語句代碼,從而完成開源算法的集成。

    2大數(shù)據(jù)分析組件的自動(dòng)化開發(fā)集成

    本文將研究如何自動(dòng)化開發(fā)和集成大數(shù)據(jù)分析算法到Haflow工具中。Haflow將平臺上的分析算法定義為組件,首先要了解組件的概念,然后給出自動(dòng)化集成和開發(fā)這些組件的步驟和處理框架。

    2.1大數(shù)據(jù)分析組件模型

    由圖1可以看出組件模型由三部分構(gòu)成:組件元信息、組件實(shí)體和組件接口,可以表示為V=(M,E,I)。

    圖1 組件模型

    具體介紹如下:

    M為組件元信息:定義組件的描述,繼承Haflow提供的抽象類來滿足其規(guī)范,是組件被平臺識別和管理的基礎(chǔ)。

    E為組件實(shí)體:是組件功能的實(shí)現(xiàn)部分,是集成或者全新開發(fā)的算法部分,支持Java、MapReduce、R、Hive等多種底層異構(gòu)平臺。

    I為組件接口:是組件的輸入輸出部分,用來滿足與其他組件的匹配,將相鄰兩個(gè)組件的匹配轉(zhuǎn)換為中間數(shù)據(jù)結(jié)點(diǎn)的匹配。

    從具體代碼實(shí)現(xiàn)上看,一個(gè)組件可以理解為一個(gè)Jar包,是由Java代碼按照規(guī)定的包結(jié)構(gòu)打包生成。Java源碼按照功能的不同區(qū)分成兩部分:組件元信息Java類和組件實(shí)現(xiàn)Java類。組件接口Java代碼段分布在兩者之中,組件Jar包結(jié)構(gòu)如圖2所示。

    圖2 組件Jar包結(jié)構(gòu)圖

    元信息Java類由ID、組件參數(shù)以及根據(jù)底層平臺不同繼承實(shí)現(xiàn)的不同組件抽象類三部分組成。實(shí)體部分可以是以Main函數(shù)作為調(diào)用入口的一個(gè)Java類,也可以是由Main函數(shù)做入口調(diào)用的多個(gè)Java類。組件接口部分比較特殊不是單獨(dú)的Java類,而是由兩部分代碼段組成:元信息Java類中描述組件輸入輸出的參數(shù)部分和實(shí)體Java文件中對這些輸入輸出進(jìn)行處理的部分。Haflow底層是HDFS文件系統(tǒng),組件協(xié)同工作需要以HDFS文件作為接口標(biāo)準(zhǔn),即前一個(gè)組件輸出的HDFS文件作為與其相連的后一個(gè)組件的輸入。如圖3所示,組件的輸入輸出會(huì)以鍵值對(Key,Value)的形式作為Main函數(shù)的命令行參數(shù)傳遞到組件實(shí)體類內(nèi),實(shí)體類讀取Main函數(shù)的Args參數(shù)即可讀到輸入輸出文件所在的地址。

    圖3 組件接口文件處理機(jī)制

    2.2組件自動(dòng)化開發(fā)集成處理流程

    Haflow的組件主要有兩種來源:一是算法工程師自己從頭開始編寫的全新的算法包裝成組件;另一種是將Mahout、Weka等開源的算法適配成工具支持的組件。

    兩種來源的算法要集成到平臺上成為組件。首先,要能被Haflow平臺識別,這就需要自動(dòng)生成組件的元信息;其次,Mahout、Weka中有部分單機(jī)算法,對輸入輸出文件的處理都是單機(jī)方法,不滿足Haflow接口文件處理要求,需要自動(dòng)化檢測這部分代碼,給出需要修改的片段;最后,修改后的算法本身可以作為組件實(shí)體,連同自動(dòng)生成的組件元信息按照一定的包組織結(jié)構(gòu)生成Jar包提交到Haflow上。按照以上三步就完成了組件自動(dòng)化開發(fā)集成,流程如圖4所示。

    圖4 組件自動(dòng)化開發(fā)集成處理流程

    3方法實(shí)現(xiàn)及關(guān)鍵技術(shù)研究

    3.1組件元信息自動(dòng)化生成

    Haflow對于組件元信息有統(tǒng)一的規(guī)范,可以抽象成一個(gè)元信息邏輯模型LM=(ID,Property,Platform)。該邏輯模型從用戶的角度來定義,ID是自動(dòng)為組件生成的唯一標(biāo)識,Property是組件的參數(shù)信息,Platform代表組件依賴的底層平臺,不同的平臺對應(yīng)的物理模型不一樣。組件開發(fā)人員只需要填寫抽象邏輯模型要求的字段,從而屏蔽了其對底層平臺學(xué)習(xí)的成本。

    采用基于元數(shù)據(jù)邏輯模型的文本模板替換算法實(shí)現(xiàn)組件元信息Java類的自動(dòng)生成,處理流程如圖5所示。核心思想是定制一套文本模板,模板分為靜態(tài)和動(dòng)態(tài)部分。根據(jù)組件元數(shù)據(jù)信息的不同,組件生成引擎加載文本模板,將靜態(tài)部分直接復(fù)制,動(dòng)態(tài)部分根據(jù)元數(shù)據(jù)信息生成不同的代碼,最終自動(dòng)化生成元信息Java文件。元信息代碼生成工作方式如圖6所示,元數(shù)據(jù)邏輯模型本質(zhì)是標(biāo)識組件元信息的一套鍵值對。文本模板顯式標(biāo)明了這些這些鍵值對該被替換的位置,替換算法的任務(wù)就是將文本模板的變量替換和根據(jù)底層物理平臺不同集成實(shí)現(xiàn)不同的抽象類。

    圖5 組件元信息自動(dòng)生成處理流程

    圖6 元信息代碼生成工作方式

    替換算法將文本模板中帶有$符號的變量被替換成參數(shù)鍵值對中實(shí)際值,按照底層平臺模型不同分別選擇繼承AbstractJavaModule、AbstractHiveModule、AbstractSqoopModule或AbstractMapReductModule不同的類。這些支持底層平臺的抽象類是預(yù)先寫好的,只要選擇需要的類型繼承。替換算法的偽代碼如算法1所示,首先將文本模板讀入輸入流中,然后遍歷參數(shù)鍵值對,查找文本模板輸入流中的相應(yīng)Key值,替換成Value即可。另外Haflow具有可擴(kuò)展性,組件元信息中可實(shí)現(xiàn)用戶自定義的組件配置參數(shù)處理,用戶利用鍵值對<$type,custom>標(biāo)記參數(shù)里有需要自定義處理的類型。然后給出自定義的處理方法,替換算法會(huì)用該方法重寫上面提到的抽象類中的getArguments方法。最后給出生成的組件元信息Java類。

    算法1替換算法

    Input: ModulePropertyMap, ModuleTemplate

    Output: ModuleMetaJavaFile

    Read ModuleTemplate file into MTInputStream;

    for each MP in MoudlePropertyMap:

    key ← MP.key; value ← MP.value

    //用戶自定義類型,需重寫讀取參數(shù)方法

    if key==type && value==custom:

    needtooverride is true

    Endif

    //將文本模板中的變量替換成參數(shù)鍵值對中的實(shí)際值

    replace key in MTInputStream to value

    if needtooverride is true

    override getArguments function

    Endif

    Write MTInputStream into ModuleMetaJavaFile

    3.2基于Soot控制流的靜態(tài)組件代碼檢測

    開源算法對于命令行輸入輸出的處理多樣化,不同的代碼有不同的處理邏輯,要找到代碼中對于特定參數(shù)的讀寫語句是一個(gè)十分復(fù)雜繁瑣的工作。主要有兩個(gè)難點(diǎn):找到輸入文件地址從命令行參數(shù)變量開始到最終被賦值的存儲(chǔ)輸入文件地址的變量;找到對該變量進(jìn)行文件讀寫的語句。

    以Mahout中的單機(jī)代碼TrainLogistic為例,代碼的部分相關(guān)片段如下:

    public class TrainLogistic{

    private static String inputFile;

    ?

    public static void main(String[] args){

    mainToOutput(args,new PrintWriter());

    }

    static void mainToOutput(String[] args,PrintWriter o){

    if(parseArgs(args)){

    BufferedReader in= open(inputFile);

    ?

    }

    }

    private static boolean parseArgs(String[] args){

    Option inputFile = builder.withLongName(″input″)

    ?

    CommandLine cmdLine=parse.parseAndHelp(args);

    TrainLogistic.inputFile=getStringArgument(cmdLine,inputFile);

    }

    從中可以看出,輸入文件參數(shù)從Main函數(shù)的命令行參數(shù)讀入后,并未在Main函數(shù)體內(nèi)直接處理,而是傳遞多次到parseArgs函數(shù)中。而該函數(shù)體中又沒有對args參數(shù)直接處理,而是調(diào)用了其他類的函數(shù)進(jìn)行處理。經(jīng)過多次非本類的成員函數(shù)處理后,最終賦值給本類的成員變量InputFile,這才完成了兩個(gè)難點(diǎn)中的第一步。找到最終的InputFile變量后,查看對其文件讀寫語句,發(fā)現(xiàn)inputFile作為函數(shù)open的調(diào)用參數(shù),分析open函數(shù)體內(nèi)語句,最終找到對inputFile變量的文件處理語句,完成了難點(diǎn)中的第二步。

    為了解決以上兩個(gè)難點(diǎn),我們采用Soot代碼分析工具來獲得代碼的控制流圖UnitGraph,從而跟蹤代碼對輸入?yún)?shù)的處理語句。

    基于Soot控制流的靜態(tài)代碼檢測算法核心思想如下:

    1) 從處理args的函數(shù)作為入口,跟蹤args中保存輸入或輸出路徑的變量被傳遞到的函數(shù)和變量;

    2) 根據(jù)變量類型以及對其的相關(guān)處理判斷這些變量是目標(biāo)輸入輸出變量的可能性;

    3) 將可能是目標(biāo)變量的作為“污染”變量;

    4) 進(jìn)一步跟蹤,發(fā)現(xiàn)“污染”變量作為參數(shù)的函數(shù),且函數(shù)返回值是InputStream、OutputStream、Reader、Writer及其子類,且函數(shù)調(diào)用是第三方類庫中的函數(shù)或者初始化構(gòu)造函數(shù)時(shí),報(bào)警該行;

    5) 重復(fù)步驟2)-步驟4),直到算法分析完。

    為了實(shí)現(xiàn)以上算法,需要利用Soot中的一些基本對象和方法。Scene用來保存整個(gè)分析發(fā)生的場景,可以設(shè)置要分析的包含main函數(shù)的類和應(yīng)用類,以及采用過程間還是過程內(nèi)分析。SootClass是裝入Soot中的單個(gè)類,而SootMethod是類中的一個(gè)方法,Body是存儲(chǔ)SootMethod的實(shí)現(xiàn)代碼,Unit是Body中具體的語句,UnitsChain是Body中Units組成的鏈,UnitGraph表示一個(gè)具體方法生成的控制流圖,Unit有多種類型。例如定義語句IdentityStmt、調(diào)用語句InvokeStmt、賦值語句AssignStmt以及判斷語句IfStmt、跳轉(zhuǎn)語句GotoStmt等。Local表示臨時(shí)變量,F(xiàn)ield是成員變量,兩者都叫作Value。

    結(jié)合Soot的基本對象和方法,基于以上核心思想,得到最終的靜態(tài)檢測算法如算法2所示。

    算法2基于Soot控制流的靜態(tài)代碼檢測算法

    Input: classname,classpath,key, IORegex

    Output: JavaSourceCodeLineNum, WarnLevel

    MAIN(String,String,String,String)

    globalTargetList←Null

    //全局變量,用來保存成員變量中屬于目標(biāo)變量的部分

    load classes into Scene

    //配置分析場景

    set whole mode

    //設(shè)置為過程間分析模式

    methods←sootclass.getMethods

    for each method in methods:

    if method is Main:

    call ANALYSIS(method, paras)

    End MAIN

    ANALYSIS(SootMethod,Int[])

    paraList←Null

    //記錄該函數(shù)的調(diào)用參數(shù)變量

    localTargetList←Null

    //記錄函數(shù)體內(nèi)目標(biāo)變量

    taintList←Null

    //記錄被key污染的變量

    body←get body from method

    graph← new UnitGraph(body)

    for each unit in graph

    switch condition in rule 1

    case 1:

    get newMethod and newParas

    ANALYSIS(newMethod,newParas)

    case 2:

    add to paraList,globalTargetList, taintList or localTargetList

    if returnType in IORegex

    print line based on rule 2

    End ANALYSIS

    輸入數(shù)據(jù)是待分類組件實(shí)體的類名、類所在的路徑、命令行參數(shù)args中與輸入或輸出相關(guān)的關(guān)鍵字、需要捕獲的函數(shù)返回值類型對應(yīng)的正則表達(dá)式(即輸入輸出流及其子類)。輸出是單機(jī)讀寫輸入或輸出文件的Java源代碼所在的行以及該行的危險(xiǎn)度級別。算法包括一個(gè)主函數(shù)MAIN,完成將類轉(zhuǎn)換成中間代碼的準(zhǔn)備工作,并且獲得類中的所有方法。算法還包括靜態(tài)代碼分析函數(shù)ANALYSIS,該函數(shù)用來分析類中單獨(dú)的方法片段,調(diào)用參數(shù)是SootMethod和調(diào)用參數(shù)中需要被跟蹤的參數(shù)位置。ANALYSIS遍歷要分析方法的UnitGraph,按照表1作出相應(yīng)的動(dòng)作,包括遞歸調(diào)用ANALYSIS方法或者將相關(guān)變量加入四個(gè)List中的一個(gè)。當(dāng)正在遍歷的unit語句返回值符合IORegex,并且參數(shù)在四個(gè)List中時(shí),按照表2給出報(bào)警的源代碼行數(shù)和報(bào)警級別。其中重點(diǎn)介紹四個(gè)List,四個(gè)List都是用來記錄與輸入的Key相關(guān)的變量。paraList是用來保存函數(shù)調(diào)用參數(shù)中與key相關(guān)的變量,localTargetList用來記錄某個(gè)方法內(nèi)部與key直接相關(guān)的臨時(shí)變量,taintList是間接相關(guān)的臨時(shí)變量。兩者的區(qū)別是targetList是我們要找的value值所在的變量,而taintList是可能為value值的變量。最后將跨函數(shù)的變量,比如成員變量,存儲(chǔ)在globalTargetList中。

    表1跟蹤規(guī)則

    表2 報(bào)警規(guī)則

    參數(shù)函數(shù)報(bào)警等級taintList中的變量第三方類庫函數(shù)低(L0)輸入流構(gòu)造函數(shù)中(L1)targetList中的變量第三方類庫函數(shù)中(L1)輸入流構(gòu)造函數(shù)高(L2)paraList中的變量第三方類庫函數(shù)中(L1)輸入流構(gòu)造函數(shù)高(L2)

    4實(shí)驗(yàn)驗(yàn)證

    4.1實(shí)驗(yàn)?zāi)康暮蛿?shù)據(jù)選取

    實(shí)驗(yàn)是為了驗(yàn)證基于Soot控制流的靜態(tài)代碼檢測算法的準(zhǔn)確性。使用該算法能夠?qū)z測出開源算法庫中對輸入輸出關(guān)鍵詞單機(jī)讀寫的代碼,從而找到代碼中不滿足Haflow要求的代碼行,給出報(bào)警。選取機(jī)器學(xué)習(xí)領(lǐng)域著名的開源算法Mahout中的例子以及要集成進(jìn)Haflow的開源文本分析算法進(jìn)行實(shí)驗(yàn)。

    4.2評價(jià)標(biāo)準(zhǔn)

    采用準(zhǔn)確率(P)、召回率(R)、有效性(E)三者結(jié)合的評價(jià)標(biāo)準(zhǔn),定義算法給出的報(bào)警語句數(shù)目為NumOfWarn。其中確實(shí)判斷正確的語句數(shù)目為NumOfRight,待檢測的類中實(shí)際應(yīng)該報(bào)警的語句數(shù)目為NumOfShouldWarn。當(dāng)語句被正確報(bào)警時(shí),給出的報(bào)警等級與實(shí)際報(bào)警等級相符的語句數(shù)目為NumOfRightLevel,給出評價(jià)標(biāo)準(zhǔn)公式如下:

    (1)

    (2)

    (3)

    4.3實(shí)驗(yàn)結(jié)果

    首先給出兩個(gè)測試案例,mahout-examples包中TrainLogistic類是單機(jī)處理輸入輸出文件的類[10]。使用該類對本文提到的算法進(jìn)行測試,定位類中對輸入單機(jī)處理的代碼行并且報(bào)警。算法得到的結(jié)果和人工審核結(jié)果對比如表3所示,可以看出準(zhǔn)確率75%,召回率100%,有效性67%。

    表3 TrainLogistic中輸入處理報(bào)警的行

    定位類中對輸出單機(jī)處理的代碼行并且報(bào)警,算法得到的結(jié)果和人工審核結(jié)果對比如表4所示,準(zhǔn)確率75%,召回率100%,有效性100%。

    表4 TrainLogistic中輸出處理報(bào)警的行

    按照以上方法,對mahout-example中的其他以main函數(shù)為入口的主類用該方法進(jìn)行測試,給出測試結(jié)果如圖7所示。

    圖7 mahout-example中部分代碼的實(shí)驗(yàn)結(jié)果

    從結(jié)果中可以看出,該算法的召回率一直穩(wěn)定在100%,這就保證了該方法不會(huì)漏掉開源代碼中有問題的代碼片段。從圖7中可以看出,前十一個(gè)程序都是單機(jī)程序,其準(zhǔn)確率平均值為73%,表明找到的語句基本與輸入輸出處理相關(guān);后五個(gè)代碼的準(zhǔn)確率為0,這是由于后五個(gè)代碼均是MapReduce代碼,并沒有需要修改的代碼。前十一個(gè)程序的有效性平均值為91%,表明算法對于認(rèn)為有問題的語句給出的相關(guān)性判斷即報(bào)警等級基本正確。利用報(bào)警等級來優(yōu)化了算法的準(zhǔn)確率,開發(fā)人員可以優(yōu)先修改報(bào)警等級高的語句,大大提高了工作效率。

    5結(jié)語

    大數(shù)據(jù)分析工具的組件開發(fā)和集成往往非常復(fù)雜,缺少自動(dòng)化的方法。結(jié)合大數(shù)據(jù)分析工具Haflow,本文提出了一種大數(shù)據(jù)分析組件自動(dòng)化開發(fā)集成的方法。方法主要包括組件元信息代碼自動(dòng)生成和開源組件代碼的靜態(tài)檢測兩方面。利用開源Mahout代碼對靜態(tài)檢測算法進(jìn)行實(shí)驗(yàn)驗(yàn)證,結(jié)果表明,該算法效果較好,能夠相對準(zhǔn)確地找到開源代碼中需要修改的語句,方便開源組件的集成。在未來的工作中,將進(jìn)一步考慮利用Soot代碼生成的方法,自動(dòng)化修改有問題的代碼行,從而進(jìn)一步提高組件集成的自動(dòng)化程度。

    參考文獻(xiàn)

    [1] 趙薇,劉杰,葉丹.基于組件的大數(shù)據(jù)分析服務(wù)平臺[J].計(jì)算機(jī)科學(xué),2014,41(9):75-79.

    [2] Hall M,Frank E,Holmes G,et al.The WEKA data mining software:an update[J].ACM SIGKDD explorations newsletter,2009,11(1):10-18.

    [3] Ihaka R,Gentleman R.R:a language for data analysis and graphics[J].Journal of computational and graphical statistics,1996,5(3):299-314.

    [4] Bouckaert R R,Frank E,Hall M,et al.WEKA Manual for Version 3-7-8[EB/OL].http://prdownloads.sourceforge.net/weka/WekaManual-3-7-12.pdf.

    [5] 黃斌,許舒人,蒲衛(wèi).基于MapReduce的數(shù)據(jù)挖掘平臺設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(2):495-501.

    [6] Vallée-Rai R,Co P,Gagnon E,et al.Soot-a Java bytecode optimization framework[C]//Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research.IBM Press,1999:13.

    [7] Einarsson A,Nielsen J D.A survivor’s guide to Java program analysis with soot[EB/OL].http://www.brics.dk/SootGuide/sootsurvivorsguide.pdf.

    [8] 李遠(yuǎn)玲,陳華,劉麗.Soot的Java程序控制流分析及圖形化輸出[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,18(10):88-92.

    [9] 佟超,王建新,齊建東.基于形式化規(guī)約的缺陷規(guī)則庫構(gòu)建與檢測方法[J].Computer Engineering and Applications,2014,50(13):66-72,102.

    [10] Anil R,Dunning T,Friedman E.Mahout in action[M].Manning,2011.

    收稿日期:2015-02-06。國家自然科學(xué)基金項(xiàng)目(61170074,6120 2065);國家科技支撐計(jì)劃項(xiàng)目(2015BAH06F01,2012BAH14B02)。陳茜,碩士生,主研領(lǐng)域:大數(shù)據(jù)分析,軟件工程。吳懷林,工程師。馬志柔,工程師。劉杰,副研究員。鐘華,研究員。

    中圖分類號TP3

    文獻(xiàn)標(biāo)識碼A

    DOI:10.3969/j.issn.1000-386x.2016.07.008

    AN AUTOMATIC DEVELOPMENT AND INTEGRATION APPROACH FOR BIG DATA ANALYSIS MODULES

    Chen Xi1,2Wu Huailin2Ma Zhirou2Liu Jie2Zhong Hua2

    1(UniversityofChineseAcademyofSciences,Beijing100049,China)2(InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China)

    AbstractAs the coming of big data era, the need of data analysis is becoming increasingly diverse, this results in the incapability of big data analysis tools to meet the customised data analysis requirements by using its own build-in algorithm libraries, to develop or integrate new algorithm is urgently necessary. But existing big data analysis tools algorithm has high learning cost in development and integration, and makes it difficult to develop and integrate a new one. This paper proposes an approach targeted at the automatic algorithms development and integration for big data analysis tools, the algorithms are integrated into analysis tools as modules. The approach first defines the module model, and then presents the automatic generation flow of the module model, finally it puts the emphasis on analysing the automatic code generation and code detection method of modules, and proposes the metadata-based code generation scheme and the Soot control flow-based static code detection algorithm. As the experiment shows, this approach can complete the automatic development and integration for big data analysis modules.

    KeywordsBig data analysisModuleSoot control flow analysisCode generation

    猜你喜歡
    開源語句代碼
    重點(diǎn):語句銜接
    五毛錢能買多少頭牛
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    精彩語句
    大家說:開源、人工智能及創(chuàng)新
    開源中國開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
    開源計(jì)算機(jī)輔助翻譯工具研究
    夜夜夜夜夜久久久久| 啦啦啦免费观看视频1| 啦啦啦 在线观看视频| 久久精品成人免费网站| 正在播放国产对白刺激| 亚洲五月色婷婷综合| 国产真人三级小视频在线观看| 日韩视频一区二区在线观看| 亚洲成a人片在线一区二区| 可以在线观看毛片的网站| 日本黄色视频三级网站网址| 国产精品二区激情视频| 久久久久九九精品影院| 久久国产精品人妻蜜桃| 一级a爱视频在线免费观看| 亚洲av成人不卡在线观看播放网| 成人免费观看视频高清| 69精品国产乱码久久久| 一级毛片女人18水好多| 老熟妇仑乱视频hdxx| 国产成年人精品一区二区 | 日韩精品中文字幕看吧| 国产xxxxx性猛交| 中文字幕另类日韩欧美亚洲嫩草| 99久久综合精品五月天人人| 欧美日韩av久久| 欧美日本亚洲视频在线播放| 亚洲av电影在线进入| 两性夫妻黄色片| 欧美中文综合在线视频| 午夜激情av网站| 国产在线观看jvid| 亚洲一码二码三码区别大吗| 欧美中文综合在线视频| 国产精品亚洲一级av第二区| 欧美黑人欧美精品刺激| 一级作爱视频免费观看| 日日爽夜夜爽网站| 韩国精品一区二区三区| 香蕉丝袜av| 国产亚洲欧美98| 亚洲欧美一区二区三区久久| 欧美日本亚洲视频在线播放| 黑丝袜美女国产一区| 精品久久久精品久久久| 人人妻,人人澡人人爽秒播| 国产黄a三级三级三级人| 欧美色视频一区免费| 9色porny在线观看| 国产高清视频在线播放一区| av有码第一页| 老司机午夜十八禁免费视频| 国产熟女xx| 国产av在哪里看| 亚洲性夜色夜夜综合| 欧美日韩福利视频一区二区| 美国免费a级毛片| 国产三级在线视频| 51午夜福利影视在线观看| 久久草成人影院| 亚洲自偷自拍图片 自拍| 亚洲国产毛片av蜜桃av| a级毛片在线看网站| 日本三级黄在线观看| 精品福利观看| 亚洲久久久国产精品| 成人黄色视频免费在线看| 黄色怎么调成土黄色| 欧美日韩黄片免| 久久精品影院6| 久久久国产成人免费| 免费观看精品视频网站| 女人高潮潮喷娇喘18禁视频| 精品福利永久在线观看| 欧美久久黑人一区二区| 欧美一区二区精品小视频在线| 国产精品一区二区三区四区久久 | 亚洲激情在线av| 国产成人影院久久av| 国产aⅴ精品一区二区三区波| 精品少妇一区二区三区视频日本电影| 在线天堂中文资源库| 在线观看免费午夜福利视频| 色播在线永久视频| 国产又色又爽无遮挡免费看| 久久性视频一级片| 国产1区2区3区精品| 亚洲av成人不卡在线观看播放网| 高清黄色对白视频在线免费看| 国产激情久久老熟女| 一级a爱视频在线免费观看| 久久天堂一区二区三区四区| 日本一区二区免费在线视频| 在线十欧美十亚洲十日本专区| 99re在线观看精品视频| 久久久久九九精品影院| 50天的宝宝边吃奶边哭怎么回事| 久久久久久人人人人人| 性色av乱码一区二区三区2| 精品欧美一区二区三区在线| 侵犯人妻中文字幕一二三四区| 免费av毛片视频| 一区二区三区精品91| 黄色怎么调成土黄色| 日韩免费av在线播放| 免费高清在线观看日韩| 国产成人啪精品午夜网站| 女同久久另类99精品国产91| 亚洲精品美女久久久久99蜜臀| 在线观看日韩欧美| 成人永久免费在线观看视频| 18禁国产床啪视频网站| 久久这里只有精品19| 欧美乱色亚洲激情| 婷婷六月久久综合丁香| 日韩高清综合在线| 久久久久国产一级毛片高清牌| 黄色a级毛片大全视频| 黄色毛片三级朝国网站| 美女国产高潮福利片在线看| 91成人精品电影| av视频免费观看在线观看| 亚洲精品美女久久久久99蜜臀| 免费高清在线观看日韩| 大型av网站在线播放| 十八禁人妻一区二区| 黄片大片在线免费观看| 国产国语露脸激情在线看| svipshipincom国产片| 午夜免费鲁丝| 久久久久国产精品人妻aⅴ院| 在线观看免费视频日本深夜| 18禁观看日本| 一区二区日韩欧美中文字幕| 国产免费现黄频在线看| 青草久久国产| 亚洲av片天天在线观看| av在线播放免费不卡| 日韩大码丰满熟妇| 国产成人免费无遮挡视频| av天堂在线播放| 18禁美女被吸乳视频| 丰满人妻熟妇乱又伦精品不卡| 国产一区二区三区视频了| 露出奶头的视频| 欧美成人免费av一区二区三区| 水蜜桃什么品种好| videosex国产| 亚洲精品国产色婷婷电影| 色哟哟哟哟哟哟| 日韩视频一区二区在线观看| 国产aⅴ精品一区二区三区波| 久久婷婷成人综合色麻豆| 国产成人精品在线电影| 成人亚洲精品av一区二区 | 日本一区二区免费在线视频| 老司机在亚洲福利影院| 久久精品人人爽人人爽视色| 丰满人妻熟妇乱又伦精品不卡| 亚洲一区二区三区色噜噜 | 久久久久久久久免费视频了| 亚洲国产毛片av蜜桃av| 一区在线观看完整版| 一本综合久久免费| 99精品欧美一区二区三区四区| 美女 人体艺术 gogo| 99国产精品一区二区三区| 欧美黑人精品巨大| 一级作爱视频免费观看| 激情在线观看视频在线高清| 欧美日韩中文字幕国产精品一区二区三区 | 亚洲熟妇中文字幕五十中出 | 午夜福利欧美成人| 免费在线观看黄色视频的| 不卡av一区二区三区| 18禁国产床啪视频网站| www国产在线视频色| 女同久久另类99精品国产91| 日韩精品免费视频一区二区三区| 亚洲一卡2卡3卡4卡5卡精品中文| 日韩国内少妇激情av| 一a级毛片在线观看| 亚洲人成电影观看| 不卡av一区二区三区| 黄片小视频在线播放| 久久这里只有精品19| 激情在线观看视频在线高清| 老汉色av国产亚洲站长工具| 人妻久久中文字幕网| 热re99久久精品国产66热6| 天天添夜夜摸| 国产高清国产精品国产三级| 在线视频色国产色| 99香蕉大伊视频| 成人永久免费在线观看视频| 亚洲自拍偷在线| 亚洲成av片中文字幕在线观看| cao死你这个sao货| 久久人人爽av亚洲精品天堂| 巨乳人妻的诱惑在线观看| 欧美乱妇无乱码| 日韩免费高清中文字幕av| 久久精品国产清高在天天线| www国产在线视频色| 久久久久久免费高清国产稀缺| 久久中文字幕人妻熟女| 我的亚洲天堂| 黄色女人牲交| 欧美中文日本在线观看视频| 老熟妇仑乱视频hdxx| 99国产精品一区二区蜜桃av| 国产亚洲精品综合一区在线观看 | 91麻豆精品激情在线观看国产 | 欧美人与性动交α欧美软件| 日韩欧美国产一区二区入口| av网站免费在线观看视频| 99精品在免费线老司机午夜| 国产av一区二区精品久久| 国产精品秋霞免费鲁丝片| 欧美日韩精品网址| 中文字幕另类日韩欧美亚洲嫩草| 久久 成人 亚洲| 两个人免费观看高清视频| 国产成人av教育| 欧美精品亚洲一区二区| 黄频高清免费视频| 亚洲国产欧美网| 丰满的人妻完整版| 91麻豆av在线| 新久久久久国产一级毛片| 一区二区三区精品91| 国产免费男女视频| 国产免费现黄频在线看| 淫妇啪啪啪对白视频| 免费少妇av软件| 国产欧美日韩一区二区精品| 一边摸一边做爽爽视频免费| 亚洲黑人精品在线| 久久精品国产综合久久久| 久久中文看片网| 性欧美人与动物交配| 色哟哟哟哟哟哟| 日韩av在线大香蕉| 精品国产国语对白av| 亚洲第一青青草原| 久久伊人香网站| 免费看a级黄色片| 91国产中文字幕| 热99国产精品久久久久久7| 久久久水蜜桃国产精品网| 欧美中文综合在线视频| 丁香欧美五月| 国产区一区二久久| 伊人久久大香线蕉亚洲五| 在线观看午夜福利视频| 欧美不卡视频在线免费观看 | 中文字幕精品免费在线观看视频| 成人亚洲精品一区在线观看| 久久青草综合色| 婷婷六月久久综合丁香| 色婷婷av一区二区三区视频| 天天躁夜夜躁狠狠躁躁| 欧美色视频一区免费| 国产乱人伦免费视频| 久久精品人人爽人人爽视色| 免费在线观看日本一区| 99热只有精品国产| 国产人伦9x9x在线观看| 男女做爰动态图高潮gif福利片 | 精品第一国产精品| 国产高清激情床上av| 女人精品久久久久毛片| 国产精品影院久久| 国产极品粉嫩免费观看在线| 色哟哟哟哟哟哟| 免费搜索国产男女视频| 欧美日韩瑟瑟在线播放| 免费女性裸体啪啪无遮挡网站| 啦啦啦在线免费观看视频4| 国产欧美日韩一区二区三| 少妇的丰满在线观看| 少妇粗大呻吟视频| 欧美色视频一区免费| 国产精品免费视频内射| 精品福利永久在线观看| 老司机亚洲免费影院| 国产精品爽爽va在线观看网站 | 黄片大片在线免费观看| 亚洲五月色婷婷综合| 亚洲七黄色美女视频| 一级毛片高清免费大全| 国产午夜精品久久久久久| 91大片在线观看| 国产精品香港三级国产av潘金莲| 久久久久久亚洲精品国产蜜桃av| 午夜精品国产一区二区电影| 在线观看日韩欧美| 妹子高潮喷水视频| 91国产中文字幕| av免费在线观看网站| 午夜亚洲福利在线播放| 亚洲av片天天在线观看| 在线天堂中文资源库| 久久人妻av系列| 男人舔女人下体高潮全视频| 国产单亲对白刺激| 亚洲国产精品sss在线观看 | 国产欧美日韩一区二区三区在线| 久9热在线精品视频| 亚洲人成网站在线播放欧美日韩| 18美女黄网站色大片免费观看| 99国产精品一区二区三区| 亚洲av电影在线进入| 国产99久久九九免费精品| 亚洲成人国产一区在线观看| av天堂久久9| 一区福利在线观看| 欧美另类亚洲清纯唯美| 男女下面进入的视频免费午夜 | 久久这里只有精品19| 手机成人av网站| 亚洲人成77777在线视频| 亚洲色图综合在线观看| 日韩三级视频一区二区三区| 黑人猛操日本美女一级片| 午夜福利欧美成人| 欧美另类亚洲清纯唯美| 巨乳人妻的诱惑在线观看| 最新在线观看一区二区三区| 久久久国产欧美日韩av| 老司机午夜十八禁免费视频| 亚洲伊人色综图| 国产av又大| 夜夜看夜夜爽夜夜摸 | 又黄又粗又硬又大视频| 亚洲一卡2卡3卡4卡5卡精品中文| 国产一区二区三区在线臀色熟女 | 最近最新免费中文字幕在线| 精品久久蜜臀av无| 曰老女人黄片| 亚洲av美国av| 热99re8久久精品国产| 老司机靠b影院| 两个人看的免费小视频| 亚洲午夜理论影院| 免费高清在线观看日韩| 9191精品国产免费久久| 亚洲九九香蕉| 免费在线观看视频国产中文字幕亚洲| 18禁美女被吸乳视频| 一本综合久久免费| 久久人妻熟女aⅴ| 午夜福利影视在线免费观看| 天堂中文最新版在线下载| 国产成+人综合+亚洲专区| 一个人免费在线观看的高清视频| 国产成人精品久久二区二区免费| 美女高潮到喷水免费观看| 午夜免费鲁丝| 亚洲中文av在线| 国产激情欧美一区二区| 五月开心婷婷网| 免费一级毛片在线播放高清视频 | 嫁个100分男人电影在线观看| 侵犯人妻中文字幕一二三四区| 一级片免费观看大全| 午夜激情av网站| 精品福利永久在线观看| 又紧又爽又黄一区二区| 久久性视频一级片| 一进一出抽搐gif免费好疼 | 国产xxxxx性猛交| 99久久综合精品五月天人人| 亚洲精品久久成人aⅴ小说| 国产精品久久电影中文字幕| 国产精品国产av在线观看| 国产片内射在线| 亚洲激情在线av| www.精华液| 国产av一区二区精品久久| 久久伊人香网站| 在线永久观看黄色视频| 两个人看的免费小视频| 久久久水蜜桃国产精品网| 啦啦啦在线免费观看视频4| 亚洲久久久国产精品| 日韩大尺度精品在线看网址 | 亚洲一卡2卡3卡4卡5卡精品中文| 久久人人97超碰香蕉20202| 国产av又大| 午夜视频精品福利| 性少妇av在线| 国产真人三级小视频在线观看| 成人亚洲精品av一区二区 | 日韩大尺度精品在线看网址 | 精品熟女少妇八av免费久了| 人人妻,人人澡人人爽秒播| 操美女的视频在线观看| 国产xxxxx性猛交| www.精华液| 他把我摸到了高潮在线观看| 午夜免费鲁丝| 一个人免费在线观看的高清视频| 中文字幕精品免费在线观看视频| 免费搜索国产男女视频| 亚洲欧美激情在线| 别揉我奶头~嗯~啊~动态视频| 亚洲专区中文字幕在线| 在线av久久热| 99re在线观看精品视频| 中文字幕最新亚洲高清| 中文字幕人妻丝袜一区二区| 一区二区三区国产精品乱码| 午夜亚洲福利在线播放| 九色亚洲精品在线播放| 成年人黄色毛片网站| 国产欧美日韩一区二区三区在线| av片东京热男人的天堂| 日韩 欧美 亚洲 中文字幕| 免费av中文字幕在线| 亚洲,欧美精品.| 免费在线观看日本一区| 天天添夜夜摸| 一边摸一边抽搐一进一出视频| 中亚洲国语对白在线视频| 午夜两性在线视频| 国产欧美日韩综合在线一区二区| 亚洲自拍偷在线| 国产亚洲欧美精品永久| 亚洲第一青青草原| 成人精品一区二区免费| 男女之事视频高清在线观看| 美国免费a级毛片| 成年人免费黄色播放视频| 级片在线观看| 亚洲国产看品久久| 日本vs欧美在线观看视频| 国产无遮挡羞羞视频在线观看| 大陆偷拍与自拍| 91大片在线观看| 亚洲国产毛片av蜜桃av| 成年人黄色毛片网站| 亚洲男人的天堂狠狠| 999久久久国产精品视频| 久久精品亚洲av国产电影网| 久久香蕉精品热| 国产欧美日韩一区二区精品| 国产av在哪里看| 精品午夜福利视频在线观看一区| 久久天堂一区二区三区四区| 国产精品野战在线观看 | 国产精品99久久99久久久不卡| 嫁个100分男人电影在线观看| 12—13女人毛片做爰片一| 99久久国产精品久久久| 国产欧美日韩一区二区三区在线| 国产欧美日韩一区二区精品| 午夜两性在线视频| 日韩av在线大香蕉| 超碰成人久久| 欧美激情高清一区二区三区| 啦啦啦在线免费观看视频4| 欧美老熟妇乱子伦牲交| 精品久久久久久成人av| 国产在线观看jvid| 97超级碰碰碰精品色视频在线观看| 成人av一区二区三区在线看| 久久性视频一级片| 侵犯人妻中文字幕一二三四区| 国产精品久久久久久人妻精品电影| 精品久久久精品久久久| 视频区欧美日本亚洲| 欧美最黄视频在线播放免费 | 成年人黄色毛片网站| 一级a爱视频在线免费观看| 18禁美女被吸乳视频| 精品久久久精品久久久| 极品教师在线免费播放| 丝袜美足系列| 亚洲av日韩精品久久久久久密| 亚洲午夜理论影院| 精品福利永久在线观看| 身体一侧抽搐| 欧美中文日本在线观看视频| 国产一卡二卡三卡精品| 午夜日韩欧美国产| 一级片免费观看大全| 丝袜在线中文字幕| 久久精品国产99精品国产亚洲性色 | 夜夜看夜夜爽夜夜摸 | 激情视频va一区二区三区| 三级毛片av免费| 亚洲国产看品久久| 亚洲精品久久午夜乱码| 香蕉丝袜av| 亚洲五月色婷婷综合| 国产精品美女特级片免费视频播放器 | 亚洲成人精品中文字幕电影 | 免费少妇av软件| 国产日韩一区二区三区精品不卡| 精品久久久久久久毛片微露脸| 亚洲av五月六月丁香网| 99精品久久久久人妻精品| 午夜视频精品福利| 欧美色视频一区免费| 国产99白浆流出| 亚洲色图 男人天堂 中文字幕| 精品人妻在线不人妻| 看免费av毛片| 亚洲七黄色美女视频| 丰满饥渴人妻一区二区三| 性少妇av在线| 久久天堂一区二区三区四区| 国产亚洲精品综合一区在线观看 | av免费在线观看网站| 国产熟女午夜一区二区三区| 日本欧美视频一区| 亚洲精品久久午夜乱码| 亚洲国产精品一区二区三区在线| 亚洲精品国产区一区二| 老司机午夜福利在线观看视频| 99热只有精品国产| 成人永久免费在线观看视频| 在线观看免费日韩欧美大片| 欧美日本亚洲视频在线播放| 国产aⅴ精品一区二区三区波| 免费高清在线观看日韩| 国产亚洲av高清不卡| 亚洲人成伊人成综合网2020| 他把我摸到了高潮在线观看| 亚洲av片天天在线观看| 麻豆av在线久日| 日韩欧美国产一区二区入口| 黄色丝袜av网址大全| 久久久国产精品麻豆| 水蜜桃什么品种好| 69精品国产乱码久久久| 国产精品久久久av美女十八| 人妻丰满熟妇av一区二区三区| 男女之事视频高清在线观看| 亚洲精品中文字幕在线视频| 亚洲欧美精品综合久久99| 十八禁网站免费在线| 不卡av一区二区三区| 男人操女人黄网站| 精品国产一区二区三区四区第35| 国产精品电影一区二区三区| 精品福利永久在线观看| 18禁观看日本| 丰满人妻熟妇乱又伦精品不卡| 午夜福利免费观看在线| 国产精品亚洲一级av第二区| 国产区一区二久久| 99精品欧美一区二区三区四区| 高清欧美精品videossex| 两性夫妻黄色片| 亚洲第一av免费看| 窝窝影院91人妻| 久久久久久久久久久久大奶| 亚洲av成人不卡在线观看播放网| 国产高清videossex| 久久中文字幕人妻熟女| 热re99久久精品国产66热6| 久久草成人影院| 日韩三级视频一区二区三区| 亚洲色图av天堂| 日本wwww免费看| 国产91精品成人一区二区三区| 亚洲一区二区三区不卡视频| 久久午夜亚洲精品久久| 搡老岳熟女国产| 窝窝影院91人妻| 最近最新免费中文字幕在线| 女人高潮潮喷娇喘18禁视频| 久久久久久久久免费视频了| 欧美成人性av电影在线观看| 亚洲专区中文字幕在线| 正在播放国产对白刺激| 少妇裸体淫交视频免费看高清 | 亚洲aⅴ乱码一区二区在线播放 | 亚洲成国产人片在线观看| 十八禁网站免费在线| 老熟妇乱子伦视频在线观看| 精品一区二区三区四区五区乱码| 亚洲第一青青草原| 老司机亚洲免费影院| 国产精品美女特级片免费视频播放器 | 精品国产一区二区三区四区第35| 国产99久久九九免费精品| 老鸭窝网址在线观看| 亚洲 国产 在线| 国产av一区在线观看免费| 精品久久久久久久毛片微露脸| 日本黄色视频三级网站网址| 成人三级做爰电影| 亚洲av电影在线进入| 久久久久久免费高清国产稀缺| 中文字幕色久视频| 美女高潮到喷水免费观看| 女同久久另类99精品国产91| 狂野欧美激情性xxxx| 在线天堂中文资源库| 久久国产精品影院| 国产单亲对白刺激| 国产亚洲欧美在线一区二区| 亚洲欧美激情在线| 人妻久久中文字幕网| 一个人免费在线观看的高清视频| 精品国产亚洲在线| 午夜老司机福利片| 99re在线观看精品视频| 夜夜夜夜夜久久久久| 国产精品电影一区二区三区| 免费高清视频大片| 精品国产国语对白av|