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

    面向異步機制的自動重構(gòu)方法研究

    2021-01-07 07:04:54紀銘涵齊林張楊董士程李朝帥
    河北科技大學學報 2021年5期

    紀銘涵 齊林 張楊 董士程 李朝帥

    摘 要:為了解決并行處理中同步阻塞會浪費系統(tǒng)資源和影響程序性能的問題,提出了一種基于CompletableFuture異步機制的自動重構(gòu)方法。首先,使用WALA靜態(tài)程序分析工具進行訪問者模式分析、逃逸分析、別名分析以及數(shù)據(jù)流分析等靜態(tài)程序分析技術(shù),確定共享變量數(shù)據(jù)的操作方式;然后,基于CompletableFuture機制設(shè)置4種異步重構(gòu)模式;最后,根據(jù)不同模式實現(xiàn)異步機制的自動重構(gòu)?;诖朔椒?,在Eclipse平臺下開發(fā)了自動重構(gòu)工具AsynRef,并對HSQLDB,Jenkins,JGroups和SPECjbb2005等4個大型實際應(yīng)用程序進行自動重構(gòu),從重構(gòu)個數(shù)、改變的代碼行數(shù)、準確性和重構(gòu)后程序性能等方面對AsynRef進行評估,對4個程序所包含的919個同步方法共完成387個異步機制轉(zhuǎn)換。結(jié)果顯示,使用AsynRef進行異步機制重構(gòu)后,程序執(zhí)行性能有8%到39%的不同程度的提升。AsynRef可以有效完成代碼異步化自動重構(gòu),與傳統(tǒng)手動重構(gòu)相比,有效提升了異步化的重構(gòu)效率。

    關(guān)鍵詞:并行處理;同步機制;異步機制;靜態(tài)程序分析;自動重構(gòu)

    中圖分類號:TP311?? 文獻標識碼:A

    doi:10.7535/hbkd.2021yx05008

    收稿日期:2021-06-15;修回日期:2021-09-22;責任編輯:王淑霞

    基金項目:國家自然科學基金(61440012);河北省自然科學基金(18960106D);河北省高等學??茖W研究計劃重點項目(ZD2019093)

    第一作者簡介:紀銘涵(1997—),女,河北邢臺人,碩士研究生,主要從事并發(fā)處理、軟件自動重構(gòu)方面的研究。

    通訊作者:張 楊副教授。E-mail:zhangyang@hebust.edu.cn

    An automated refactoring approach for asynchronous mechanism

    JI Minghan,QI Lin,ZHANG Yang,DONG Shicheng,LI Chaoshuai

    (School of Information Science and Engineering,Hebei University of Science and Technology,Shijiazhuang,Hebei,050018,China)

    Abstract:As synchronous blocking wastes system resources and affects program performance in concurrent processing,an automatic refactoring approach based on the asynchronous mechanism of CompletableFuture was proposed.Firstly,several static analyses by Wala static program analysis tool,such as visitor pattern analysis,alias analysis,and data flow analysis were used in this approach,so that the operation mode of shared variable data was determined.Then four asynchronous refactoring modes were set based on the asynchronous mechanism of CompletableFuture.Finally,the code was refactored according to different modes.An automatic tool AsynRef was implemented by Eclipse and four large-scale practical applications such as HSQLDB,Jenkins,JGroups,and SPECjbb2005 were automatically refactored by AsynRef.AsynRef was evaluated via the number of refactored locks,changed lines of code,accuracy,program performance after refactoring.Among the 919 synchronous methods contained in the four programs,387 asynchronous mechanism conversions were completed.After Asynref was used for asynchronous mechanism refactoring,the program execution performance was improved by 8% to 39%.AsynRef can refactor for aynchronized mechanism effectively.Compared to manual refactoring,the refactoring efficiency is improved significantly.

    Keywords:

    concurrent processing;synchronization mechanism;asynchronous mechanism;static program analysis;automatic refactoring

    隨著并發(fā)程序設(shè)計方法越來越多地被應(yīng)用于多線程程序開發(fā),為了保證程序的正確性,開發(fā)人員通過使用同步機制的方法進行控制,確保了程序正確穩(wěn)健地運行。然而,由于存在不必要的同步控制,使用粗粒度的同步機制會使得開銷更大,從而導致執(zhí)行效率降低。在Java語言中,同步鎖簡單易用,在并發(fā)程序開發(fā)中得到了廣泛使用,但由于在使用同步鎖修飾整個方法體時會造成粗粒度同步保護的問題,使得程序性能無法得到保證。

    使用多線程實現(xiàn)程序并行化是并發(fā)程序編程中的主要方式,但是對于臨界區(qū)的操作與訪問會引入數(shù)據(jù)競爭等并發(fā)問題。另外線程個數(shù)的設(shè)置也是有限制的,因此提高系統(tǒng)性能不能僅通過增加線程數(shù)來實現(xiàn),使用同步機制進行編程方式是阻塞式的,會造成系統(tǒng)資源的浪費。異步機制是達到程序并行執(zhí)行的另一種方式,所謂異步就是通過將當前任務(wù)線程與主應(yīng)用程序線程分開,達到獨立運行的效果。使用異步機制可以有效避免同步機制的阻塞影響,進一步提高程序性能。越來越多的研究著眼于并發(fā)程序中的同步機制與異步機制,一些研究使用自動重構(gòu)工具幫助程序員在多種鎖機制之間進行轉(zhuǎn)換,如針對重入鎖以及讀寫鎖提出了一種自動重構(gòu)算法[1],或者面向可定制鎖[2]和郵戳鎖[3]的自動重構(gòu)方法,以及在進行優(yōu)化同步瓶頸的研究中提出的一種鎖分解方式[4]。但大多數(shù)研究還是僅針對同步機制,缺少對同步機制與異步機制兩者間關(guān)系以及2種機制之間相互轉(zhuǎn)換的研究,雖然人們已經(jīng)對并發(fā)程序中同步機制有了較深的探索,但并沒有考慮到異步機制在并發(fā)編程中的作用。

    異步機制已經(jīng)被應(yīng)用到物聯(lián)網(wǎng)[5-7]、 WEB應(yīng)用[8-12]、移動端開發(fā)[13-15]和代碼重構(gòu)[16-19]等多個領(lǐng)域。李夏君 [5]對使用異步編程的程序進行分析,結(jié)果表明使用異步編程有效提高了云平臺的執(zhí)行速度,并且使用異步編程的方式更加簡單。RAVINDRANATH等[6]提出了一組程序分析技術(shù)檢測異步回調(diào)實例,并將這種帶有錯誤優(yōu)先協(xié)議的回調(diào)重構(gòu)為promises,提供異步回調(diào)的替代方案。目前,雖然許多學者已經(jīng)認識到異步機制對并發(fā)程序開發(fā)的重要性,并且在實際應(yīng)用中廣泛使用了異步編程,但目前缺少對并發(fā)程序中異步機制自動重構(gòu)方法的研究。

    針對并行處理中同步阻塞浪費系統(tǒng)資源和影響程序性能的問題,本文提出了一種異步機制的自動重構(gòu)方法,采用WALA[20]軟件分析工具中多種靜態(tài)程序分析方法,如訪問者模式分析、逃逸分析、別名分析、數(shù)據(jù)流分析等確定進行異步重構(gòu)的代碼,然后獲得共享變量數(shù)據(jù)操作方式,最后基于CompletableFuture機制實現(xiàn)異步重構(gòu)?;诖朔椒ǎ贓clipse平臺下設(shè)計了一個可以進行異步機制自動重構(gòu)的插件工具AsynRef,以實現(xiàn)源碼級別的重構(gòu),幫助開發(fā)者完成代碼異步化的自動轉(zhuǎn)換。在實驗中,對4種大型實際應(yīng)用程序進行自動重構(gòu),從重構(gòu)個數(shù)、改變的代碼行數(shù)、準確性和重構(gòu)后程序性能等方面對AsynRef進行評估。

    1 同步機制與異步機制性能對比

    在Java 1.5中提供了Callable和Future機制,使用這2種機制可以實現(xiàn)異步方式執(zhí)行程序,但在獲取程序執(zhí)行結(jié)果時仍需同步等待獲得,因此并不能實現(xiàn)真正意義上的異步。在Java 8中,為了實現(xiàn)真正意義上的異步執(zhí)行效果,提出了新的Future機制即CompletableFuture機制,不同于原有的Future機制,CompletableFuture實現(xiàn)了在異步任務(wù)完成時,通過傳入的回調(diào)對象,調(diào)用回調(diào)方法并得到異步執(zhí)行的結(jié)果。

    為了說明使用CompletableFuture機制進行異步化程序的可行性,對文件讀取與寫入的耗時操作進行了同步和異步2種執(zhí)行方式的性能對比,分別對50,100,300 M文件進行100次讀取操作。該段測試程序選自openjdk-jdk 10項目,使用Files.write()和Files.readAllBytes()方法對文件進行讀寫,通過對這2種方法進行異步方式改寫,得到2種執(zhí)行方式的時間對比。圖1是分別使用同步機制和異步機制對3種不同大小文件進行寫操作的執(zhí)行時間對比圖,3種不同大小文件使用異步方式的執(zhí)行時間均少于同步方式的執(zhí)行時間,并且隨著文件的增大,異步方式的優(yōu)勢更加明顯。圖2是分別使用同步機制和異步機制對100 M文件進行讀操作與寫操作的執(zhí)行時間對比圖,無論是對于讀操作還是寫操作,異步方式的執(zhí)行時間更短。

    對比上述文件的讀取程序,通過異步機制改進后程序的執(zhí)行時間較同步方式有所縮短,說明在某些情況下異步機制執(zhí)行程序提高了程序的性能。

    2 異步重構(gòu)模式

    2.1 重構(gòu)框架

    異步重構(gòu)首先通過靜態(tài)程序分析方法對并發(fā)程序進行分析,然后對可以進行重構(gòu)的代碼通過異步模式進行判斷,最后進行相應(yīng)的異步模式重構(gòu)。對于一個源程序代碼,先提取對應(yīng)的抽象語法樹,再使用訪問者模式對抽象語法樹中各個節(jié)點進行遍歷,然后使用多種程序靜態(tài)分析方法進行程序分析。其中逃逸分析用來分析共享變量動態(tài)作用域,別名分析用來解決鎖集中的別名問題,數(shù)據(jù)流分析用來分析共享變量依賴關(guān)系。異步模式判斷模塊根據(jù)數(shù)據(jù)流分析結(jié)果進行4種異步重構(gòu)模式的判斷,并選擇相應(yīng)的模式進行重構(gòu)。重構(gòu)過程主要是對源程序的抽象語法樹進行節(jié)點添加、修改等操作,最終將原有的程序執(zhí)行過程轉(zhuǎn)換為異步執(zhí)行的過程。面向異步機制的重構(gòu)框架如圖3所示。

    2.2 程序靜態(tài)分析

    使用WALA工具對程序進行相應(yīng)的靜態(tài)程序分析。首先,通過訪問者模式遍歷程序中的所有方法,通過WALA分析獲得所有變量的訪問指令,遍歷函數(shù)調(diào)用圖每個節(jié)點,得到每個節(jié)點下的字段訪問指令;其次,使用逃逸分析確定可以進行異步轉(zhuǎn)換的同步方法中的共享變量,利用別名分析去除別名現(xiàn)象對重構(gòu)的影響;最后,對共享變量進行數(shù)據(jù)流分析,根據(jù)分析結(jié)果對異步重構(gòu)模式進行判斷。

    2.2.1 逃逸分析

    雖然使用同步機制可以保證共享數(shù)據(jù)的準確性,但由于粗粒度的同步保護開銷很大,在并發(fā)程序開發(fā)過程中存在不必要的同步操作,導致程序的執(zhí)行效率降低,可通過使用逃逸分析方法進行鎖消除達到同步優(yōu)化的目的[21]。在進行異步機制的自動重構(gòu)之前,通過逃逸分析確定當前共享變量的使用范圍,保證當前共享變量指針的生命周期只在當前線程。

    使用WALA收集到所有變量訪問操作后,收集所有共享變量accessField訪問存入集合VASet中進行逃逸分析。通過收集類中可能存在逃逸現(xiàn)象的字段,定義escapeFields并存入收集到的所有字段,

    定義逃逸訪問操作集合escapeSet,判斷訪問操作的訪問字段是否在escapeFields中。利用WALA中mayEscape方法對集合escapeSet進行分析,確定是否發(fā)生逃逸。使用逃逸分析方法分析共享變量的使用范圍,對程序進行鎖消除,對于不發(fā)生逃逸的共享變量進行異步機制的轉(zhuǎn)換,具體分析過程如圖4所示。

    2.2.2 別名分析

    通過逃逸分析確定可以進行異步機制轉(zhuǎn)換的方法,同時在進行異步代碼重構(gòu)前,需要對共享變量鎖監(jiān)視器對象是否存在別名進行分析。別名分析就是對共享變量進行指針分析,當同一個內(nèi)存地址被多個共享變量指向時即產(chǎn)生別名,通過別名分析減少由于別名而造成的對分析結(jié)果的影響[22]。使用別名分析可以有效避免進行異步重構(gòu)時,由于共享變量產(chǎn)生別名問題而造成代碼重構(gòu)錯誤的問題。

    在別名分析中,設(shè)置MonitorSet為監(jiān)視器集合,其中monitor_i為監(jiān)視器對象,監(jiān)視器monitor_i的指向集為PoniterSet_i。若2個監(jiān)視器對象的指向集交集不空,則說明2個監(jiān)視器互為別名,并將其存入別名集aliasSet中,對于沒有產(chǎn)生別名問題的鎖監(jiān)視器對象再重構(gòu)進行實例化,具體分析過程如圖5所示。

    2.2.3 數(shù)據(jù)流分析

    數(shù)據(jù)流分析通過對程序中語義信息進行分析,得到程序中數(shù)據(jù)的變化結(jié)果[23]。在進行異步重構(gòu)時,對共享變量進行數(shù)據(jù)流分析,確定異步重構(gòu)的模式。使用控制流圖CFG生成程序數(shù)據(jù)流圖DFG,對圖中各個節(jié)點進行遍歷,通過對共享變量進行數(shù)據(jù)流分析,可以確定對共享變量的操作是單一方法或是多個方法,以及多個方法間是否有依賴關(guān)系。對當前的共享變量進行數(shù)據(jù)流分析,若只涉及一個方法則以字符T存入數(shù)據(jù)操作序列S中,反之以字符F存入數(shù)據(jù)操作序列S中,具體分析過程如圖6所示。

    2.3 基于CompletableFuture的異步模式

    根據(jù)上述靜態(tài)分析方法,每個節(jié)點返回的數(shù)據(jù)操作結(jié)果可以將異步執(zhí)行代碼分成單個異步執(zhí)行任務(wù)和多個異步執(zhí)行任務(wù)2類,使用CompletableFuture異步機制給出4種異步代碼執(zhí)行的實現(xiàn)模式。

    1)模式1 該模式主要針對單個異步執(zhí)行任務(wù),并且這個任務(wù)沒有返回值,通過使用Completable-Future類中提供的靜態(tài)方法runAsync()完成對異步任務(wù)的執(zhí)行。

    2)模式2 該模式主要針對單個異步執(zhí)行任務(wù),并且這個任務(wù)有返回值,通過使用CompletableFuture類中提供的靜態(tài)方法supplyAsync()完成對異步任務(wù)的執(zhí)行。

    3)模式3 該模式主要針對多個異步執(zhí)行任務(wù),當調(diào)用方CompletableFuture的計算完成時,通過使用方法whenComplete()執(zhí)行下一個異步任務(wù)。

    4)模式4 該模式主要針對多個異步執(zhí)行任務(wù),并且多個任務(wù)間是以串行方式執(zhí)行,即前一個有返回值的異步任務(wù)執(zhí)行結(jié)束后,返回值作為下一個任務(wù)的參數(shù)。

    5)模式4a 前一個有返回值的異步任務(wù)執(zhí)行結(jié)束,返回值作為下一個有參數(shù)有返回值的異步任務(wù)參數(shù),通過使用方法thenApplyAysnc()完成對下一個異步任務(wù)的執(zhí)行。

    6)模式4b 前一個有返回值的異步任務(wù)執(zhí)行結(jié)束,返回值作為下一個有參數(shù)無返回值的異步任務(wù)參數(shù),通過使用方法thenAcceptAysnc()完成對下一個異步任務(wù)的執(zhí)行。

    2.4 重構(gòu)算法

    在異步機制的自動重構(gòu)算法中,首先生成當前代碼對應(yīng)的AST樹,然后對所有方法節(jié)點進行遍歷,篩選出所有使用同步的方法,對方法中的共享變量進行別名分析后,根據(jù)控制流分析使用相應(yīng)的異步重構(gòu)模式進行代碼改寫,最后將重構(gòu)后的代碼重新添加到AST樹上完成重構(gòu)過程。

    使用訪問者模式遍歷并發(fā)程序中同步方法,獲取每一個待重構(gòu)方法Bmethod的鎖監(jiān)視器對象,如果當前方法是同步方法,則使用逃逸分析對共享變量是否逃逸進行分析。具體重構(gòu)過程如圖7所示。對于不發(fā)生逃逸現(xiàn)象的共享變量,使用別名分析得到可以進行重構(gòu)的同步方法鎖集合(行3)。接下來利用數(shù)據(jù)流分析共享變量,從而獲得異步重構(gòu)模式正則匹配字符串str(行4),進行同步機制消除(行6)。在異步模式判斷過程中,在一個同步方法中,根據(jù)匹配序列對應(yīng)的共享變量順序,選擇對應(yīng)的異步重構(gòu)模式進行代碼重構(gòu)。若當前方法有返回值,并且當前共享變量異步重構(gòu)模式匹配字符串為T時,則使用異步模式2進行重構(gòu)(行18—19);若當前方法有返回值,并且當前共享變量異步重構(gòu)模式匹配字符串為F時,則使用異步模式4a進行重構(gòu)(行20—21);若當前方法沒有返回值,并且當前共享變量異步重構(gòu)模式匹配字符串為T時,則使用異步模式1進行重構(gòu)(行9—10);若當前方法沒有返回值,并且當前共享變量異步重構(gòu)模式匹配字符串為F時,若共享變量間有依賴關(guān)系,即前一個有返回值的異步任務(wù)執(zhí)行結(jié)束,其返回值需要作為下一個異步任務(wù)的參數(shù),此時則使用異步模式4b進行重構(gòu)(行14),如果沒有依賴關(guān)系則使用異步模式3進行重構(gòu)(行13)。根據(jù)不同的異步模式進行代碼重構(gòu)改寫后,最后返回重構(gòu)后的異步方法Amethod,并更新原代碼的AST樹完成重構(gòu)。

    2.5 重構(gòu)工具實現(xiàn)

    針對異步機制的自動重構(gòu),開發(fā)了重構(gòu)工具AsynRef。該工具利用Eclipse平臺進行開發(fā),最終以插件形式實現(xiàn)。通過對重構(gòu)工具中的基礎(chǔ)類進行擴展,實現(xiàn)相關(guān)異步模式重構(gòu)邏輯,得到異步機制自動重構(gòu)工具,重構(gòu)界面如圖8所示。

    3 實驗評估

    3.1 實驗配置

    所有實驗在惠普Z240工作站上完成。CPU為Intel Core i7-7700 3.60 GHz,有4個處理核,同時支持8線程運行,內(nèi)存為8 GB,使用Windows 10操作系統(tǒng),開發(fā)環(huán)境為Eclipse 4.11,JDK版本為1.8.0_211,程序分析工具WALA的版本為1.52。

    3.2 測試程序

    使用HSQLDB,Jenkins,JGroups,SPECjbb2005等4個真實程序?qū)synRef進行有效性和適用性驗證。4種真實程序分別取自不同的應(yīng)用領(lǐng)域,所含代碼行數(shù)等也有較大差別。其中HSQLDB是數(shù)據(jù)庫程序,Jenkins是服務(wù)器程序,JGroups是群組通訊工具,SPECjbb2005是服務(wù)器測試程序。4個程序及配置如表1所示。

    3.3 結(jié)果及分析

    在工具驗證階段,對4個真實程序進行了自動重構(gòu),并由多個指標給出驗證結(jié)果。

    1)異步重構(gòu)個數(shù)

    首先,選取HSQLDB,Jenkins,JGroups,SPECjbb2005等實際應(yīng)用程序?qū)μ岢龅姆椒ê凸ぞ哌M行評估。從實驗結(jié)果可以看出,雖然源程序中有很多使用鎖機制的方法,但由于程序執(zhí)行本身不能進行異步化處理,相較于不同鎖機制間的重構(gòu)轉(zhuǎn)換,異步轉(zhuǎn)換的個數(shù)會較少。4種異步模式重構(gòu)的程序個數(shù)如表2所示。

    2)重構(gòu)前后改變的代碼行數(shù)

    使用SLOCCount工具對重構(gòu)前后程序的代碼行數(shù)進行統(tǒng)計,可以較為直觀地看到自動重構(gòu)工具減少的工作量,更加直觀地反映自動重構(gòu)工具所帶來的優(yōu)勢。

    選取的4個應(yīng)用程序共包含471 218行代碼,重構(gòu)過程增加了4 106行代碼,重構(gòu)后為475 324行代碼。由于使用異步方式進行程序執(zhí)行需要引入較多的代碼,所以相較于源程序,雖然可以進行異步重構(gòu)的個數(shù)不多,但是帶來的代碼行數(shù)的改變還是較大的。對于HSQLDB程序來說,異步重構(gòu)前后改變的代碼行數(shù)最多,達到2 160行;對于Jenkins,SPECjbb2005和JGroups測試程序,分別增加了1 010,207和729行。

    3)重構(gòu)前后性能對比

    對比重構(gòu)前后程序的各項運行指標,對使用異步機制后的程序進行分析。在HSQLDB程序中提供了基準測試程序,通過改變業(yè)務(wù)數(shù)等參數(shù)進行測試。測試結(jié)果如圖9所示,其中橫坐標為處理事務(wù)數(shù),分別給出了事務(wù)數(shù)為100 000到500 000的情況,縱坐標為事務(wù)處理率。可以看到在處理事務(wù)數(shù)為100 000的程序時,使用異步后的程序事務(wù)率要遠遠低于源程序的;在事務(wù)數(shù)為200 000時,異步后的程序事務(wù)率有了提升,但依舊低于源程序;在事務(wù)數(shù)為300 000時,兩者的事務(wù)率基本持平;事務(wù)數(shù)為400 000和500 000時原程序的事務(wù)率有了下降,但使用異步的程序事務(wù)率要高于源程序。使用異步的程序事務(wù)率值呈現(xiàn)上升趨勢,說明在處理少量事務(wù)的時候,使用異步機制并不能帶來性能的提升,但隨著事務(wù)數(shù)不斷提高,異步機制的優(yōu)勢逐漸顯現(xiàn),證明在處理更多數(shù)據(jù)的時候異步機制具有更好的程序性能。

    對于Jenkins程序,選取2個單元測試程序?qū)synRef工具進行測試,執(zhí)行時間結(jié)果如圖10所示。其中對于FunctionsTest程序進行異步重構(gòu)后,程序的執(zhí)行時間沒有出現(xiàn)明顯變化,而使用異步機制運行之后,F(xiàn)ielPathTest程序運行時間減少了39%。

    對于JGroups選取了4個測試程序進行測試,運行結(jié)果如圖11所示,其中縱坐標是群組間信息請求處理率。對于RoundTrip,RoundTripRpc,UnicastTest和UnicastTestRpc程序,在使用異步機制進行執(zhí)行后,請求處理率都有所提升,分別提升了13.5%,12.8%,8%和17%。

    圖12和圖13給出了SPECjbb2005程序在進行異步重構(gòu)前后的執(zhí)行結(jié)果。圖12是隨著線程數(shù)的改變程序吞吐量變化的情況,由圖12可知,使用異步執(zhí)行程序的吞吐量一直低于源程序的吞吐量,說明使用異步機制并不一定都能提升程序性能。圖13給出了在不同線程數(shù)執(zhí)行下,程序運行時堆內(nèi)存占總內(nèi)存的比例,可以得知在10種不同的線程數(shù)執(zhí)行情況中,只有2種情況下的堆內(nèi)存使用比是重構(gòu)前程序高于重構(gòu)后程序的,大多數(shù)情況下還是采用異步之后的堆內(nèi)存使用比更高,而在執(zhí)行線程數(shù)為8時,重構(gòu)前程序的堆內(nèi)存使用比遠遠高于重構(gòu)后程序,說明使用異步機制執(zhí)行程序在不同情況下對程序的提升程度是不同的。

    4)重構(gòu)的正確性驗證

    并發(fā)程序異步化后,相應(yīng)的方法不再是同步執(zhí)行,導致程序的準確性不足以得到保證,雖然在異步重構(gòu)模式中有針對寫操作進行原子操作轉(zhuǎn)換,但還可能存在“ABA”的問題,需要對程序重構(gòu)前后進行驗證。主要對如下2個方面進行正確性驗證,一是通過手動檢測方式對每一處更改為異步執(zhí)行的代碼進行語法檢測,保證程序在執(zhí)行前不存在錯誤;二是將白盒測試與黑盒測試相結(jié)合,利用設(shè)置斷點的方式檢測重構(gòu)后各個方法執(zhí)行過程中數(shù)據(jù)的準確性,使用黑盒測試檢測功能代碼,重構(gòu)前后的輸出結(jié)果一致。

    首先,對異步執(zhí)行的代碼進行語法檢測,通過Eclipse編譯錯誤檢測以及手工檢查每一個測試程序中異步重構(gòu)的代碼,發(fā)現(xiàn)每一處都符合所提出的異步重構(gòu)模式,并且人工檢測代碼語義都符合重構(gòu)前的功能。其次,對重構(gòu)后程序代碼的數(shù)據(jù)正確性進行檢測,通過采用白盒測試與黑盒測試相結(jié)合的方式,檢測到相同輸入數(shù)據(jù)時,異步重構(gòu)前后方法輸出結(jié)果一致,且在方法執(zhí)行過程中方法體內(nèi)部共享變量數(shù)據(jù)準確。最終結(jié)果表明,并未發(fā)現(xiàn)錯誤,異步重構(gòu)后的程序可以正確運行。

    4 結(jié) 語

    針對并行處理中同步阻塞會浪費系統(tǒng)資源和影響程序性能的問題,提出了一種面向異步機制的自動重構(gòu)方法。該方法利用訪問者模式分析、逃逸分析、別名分析以及數(shù)據(jù)流分析等多種程序分析技術(shù),可以將同步代碼自動重構(gòu)為基于CompletableFuture機制的4種異步模式。在實驗中通過4個實際應(yīng)用程序驗證了該方法的有效性,利用重構(gòu)工具完成了287個同步方法、4 106行代碼的重構(gòu)過程,表明該工具可以完成異步機制的自動重構(gòu)。對比異步重構(gòu)前后的程序執(zhí)行時間等指標發(fā)現(xiàn),使用異步機制可以有效提高并發(fā)程序的執(zhí)行效率。但是,由于異步機制本身的復雜性,本文仍存在不足,未來將研究更多的異步重構(gòu)模式以及適合異步機制執(zhí)行的應(yīng)用場景,使用更多的實際應(yīng)用程序?qū)χ貥?gòu)工具進行評估驗證。

    參考文獻/References:

    [1] SCHFER M,DOLBY J,SRIDHARANM,et al.Correct refactoring of concurrent java code[C]//.ECOOP 2010-object-oriented Programming.Berlin:Springer-Verlag Berlin Heidelberg,2010:225-249.

    [2] ZHANG Y,SHAO S,LIU H,et al.Refactoring java programs for customizable locks based on bytecode transformation[J].IEEE Access,2019,7:66292-66303.

    [3] ZHANG Y,DONG S C,ZHANG X Y,et al.Automated refactoring for stampedlock[J].IEEE Access,2019,7:104900-104911.

    [4] YU T T,PRADEL M.SyncProf:Detecting,localizing,and optimizing synchronization bottlenecks[C]//Proceedings of the 25th International Symposium on Software Testing and Analysis.New York:Association for Computing Machinery,2016:389-400.

    [5] 李夏君.物聯(lián)網(wǎng)應(yīng)用開發(fā)運用C#多線程異步編程的研究[J].信息與電腦(理論版),2018(5):162-165.

    LI Xiajun.Research on application and development of IoT application using c# multithreaded asynchronous programming[J].China Computer & Communication,2018(5):162-165.

    [6] RAVINDRANATH L,NATH S,PADHYE J,et al.Automatic and scalable fault detection for mobile applications[C]//Proceedings of the 12th Annual International Conference on Mobile systems,Applications,and Services.New York:Association for Computing Machinery,2014:190-203.

    [7] LIN Y,RADOI C,DIG D.Retrofitting concurrency for android applications through refactoring[C]//Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering.New York:Association for Computing Machinery,2014:341-352.

    [8] LIN Y,DIG D.Refactorings for android asynchronous programming[C]//2015 30th IEEE/ACM International Conference on Automated Software Engineering(ASE).Lincoln:IEEE,2015:836-841.

    [9] KIM M S,WELLINGS A.Refactoring asynchronous event handling in the real-time specification for java[C]//2009 21st Euromicro Conference on Real-Time Systems.Dublin,Ireland:IEEE,2009:25-34.

    [10]HSIAO C H,NARAYANASAMY S,KHAN E M I,et al.AsyncClock:Scalable inference of asynchronous event causality[J].ACM SIGPLAN Notices,2017,52(4):193-205.

    [11]JANIN D.An equational modeling of asynchronous concurrent programming[C]//Trends in Functional Programming.Springer,Cham:Springer Nature Switzerland,2020:180-203.

    [12]VIEIRA H T,CAIRES L,SECO J C.The conversation calculus:a model of service-oriented computation[C]//Programming Languages and Systems.Berlin:Springer-Verlag Berlin Heidelberg,2008:269-283.

    [13]ABADI M,KEIDAR-BARNER S,PIDAN D,et al.Verifying parallel code after refactoring using equivalence checking[J].International Journal of Parallel Programming,2019,47(1):59-73.

    [14]KRISHNAN G P,TSANTALIS N.Unification and refactoring of clones[C]//2014 Software Evolution Week- IEEE Conference on Software Maintenance,Reengineering,and Reverse Engineering(CSMR-WCRE).Belgium:IEEE,2014:104-113.

    [15]JURNEKA P,HANEK P,BARABAS M,et al.A method for parallel software refactoring for safety standards compliance[C]//8th IET International System Safety Conference incorporating the Cyber Security Conference 2013.Cardiff:IEEE,2013:1-6.

    [16]ATKEY R,SANNELLA D.Threadsafe:Static analysis for java concurrency[J].Electronic Communications of the EASST,2015.doi:10.14279/tuj.eceasst.72.1025.

    [17]NATH S,LIN F X Z,RAVINDRANATH L,et al.SmartAds:Bringing contextual ads to mobile apps[C]//Proceeding of the 11th Annual International Conference on Mobile systems.New York:Association for Computing Machinery,2013:111-124.

    [18]鄭雅潔.并行程序中同步機制的軟件自動重構(gòu)方法研究與實現(xiàn)[D].石家莊:河北科技大學,2018.

    ZHENG Yajie.Research and Implementation of Software Automatic Refactoring Method for Synchronization Mechanism in Parallel Program[D].Shijiazhuang:Hebei University of Science and Technology,2018.

    [19]邵帥.面向細粒度讀寫鎖的自動重構(gòu)方法研究[D].石家莊:河北科技大學,2020.

    SHAO Shuai.An Automated Refactoring Approach for Fine-grained Lock[D].Shijiazhuang:Hebei University of Science and Technology,2020.

    [20]IBM T J.Watson Libraries for Analysis(WALA)[EB/OL].[2020-11-20].http://wala.sourceforge.net.

    [21]WANG L,SUN X K.Escape analysis for synchronization removal[C]//Proceedings of the 2006 ACM Symposium on Applied Computing.New York:Association for Computing Machinery,2006:1419-1423.

    [22]張楊,梁亞楠,張冬雯,等.并發(fā)程序中數(shù)據(jù)競爭檢測方法[J].計算機應(yīng)用,2019,39(1):61-65.

    ZHANG Yang,LIANG Yanan,ZHANG Dongwen,et al.Data race detection approach in concurrent programs[J].Journal of Computer Applications,2019,39(1):61-65.

    [23]ATHAIYA S,KOMONDOOR R,KUMAR K N.Data flow analysis of asynchronous systems using infinite abstract domains[C]//Programming Languages and Systems.Cham: Springer International Publishing,2021:30-58.

    а√天堂www在线а√下载| 亚洲专区中文字幕在线| 91麻豆av在线| 两性夫妻黄色片| 午夜亚洲福利在线播放| 亚洲人成77777在线视频| 美女高潮到喷水免费观看| 一a级毛片在线观看| 国产在线观看jvid| 国产在线观看jvid| 日韩精品免费视频一区二区三区| 人人妻,人人澡人人爽秒播| 欧美一区二区精品小视频在线| 老汉色∧v一级毛片| 男人舔女人的私密视频| 激情视频va一区二区三区| 一区二区日韩欧美中文字幕| 一个人观看的视频www高清免费观看 | 亚洲国产欧美日韩在线播放| 国产欧美日韩精品亚洲av| 又大又爽又粗| 日韩欧美在线二视频| 不卡av一区二区三区| 久久久久久人人人人人| 色综合站精品国产| 一级作爱视频免费观看| 亚洲欧美日韩高清在线视频| 日本免费一区二区三区高清不卡 | 久久精品亚洲av国产电影网| xxx96com| 国产成人欧美| 成人免费观看视频高清| 精品一区二区三区四区五区乱码| 欧美乱码精品一区二区三区| 欧美日本亚洲视频在线播放| 18禁美女被吸乳视频| 欧美黄色淫秽网站| 久久精品亚洲精品国产色婷小说| 亚洲国产精品sss在线观看 | 亚洲av片天天在线观看| 国产三级在线视频| 日日干狠狠操夜夜爽| 性少妇av在线| 精品国产国语对白av| 伊人久久大香线蕉亚洲五| 1024香蕉在线观看| 欧美日韩视频精品一区| 国产成人免费无遮挡视频| 老汉色∧v一级毛片| 男女床上黄色一级片免费看| a级片在线免费高清观看视频| 日韩视频一区二区在线观看| 久99久视频精品免费| av国产精品久久久久影院| 亚洲精品国产区一区二| 久久精品人人爽人人爽视色| 国产单亲对白刺激| 一本大道久久a久久精品| 久久欧美精品欧美久久欧美| 免费观看人在逋| e午夜精品久久久久久久| 午夜日韩欧美国产| 国产一区在线观看成人免费| 亚洲一区二区三区欧美精品| 50天的宝宝边吃奶边哭怎么回事| 精品电影一区二区在线| 久久中文字幕一级| 国产单亲对白刺激| 日日爽夜夜爽网站| 国产激情欧美一区二区| 丰满迷人的少妇在线观看| √禁漫天堂资源中文www| 女人被狂操c到高潮| 久久草成人影院| 成年女人毛片免费观看观看9| 婷婷丁香在线五月| 成人18禁在线播放| www.熟女人妻精品国产| 亚洲精品久久午夜乱码| 真人做人爱边吃奶动态| 麻豆久久精品国产亚洲av | 精品熟女少妇八av免费久了| 国内久久婷婷六月综合欲色啪| 好看av亚洲va欧美ⅴa在| 亚洲中文字幕日韩| 在线永久观看黄色视频| 男人的好看免费观看在线视频 | 天天添夜夜摸| 少妇的丰满在线观看| 免费在线观看视频国产中文字幕亚洲| 婷婷六月久久综合丁香| 高清毛片免费观看视频网站 | 99re在线观看精品视频| 高清毛片免费观看视频网站 | 黄色女人牲交| 国产成人影院久久av| 久久午夜综合久久蜜桃| 国产成人欧美| 淫秽高清视频在线观看| 人妻久久中文字幕网| 亚洲色图av天堂| 91麻豆精品激情在线观看国产 | 国产男靠女视频免费网站| 黄色视频,在线免费观看| 欧美丝袜亚洲另类 | 国产又色又爽无遮挡免费看| 中国美女看黄片| 黑人欧美特级aaaaaa片| 神马国产精品三级电影在线观看 | 女同久久另类99精品国产91| 男女床上黄色一级片免费看| 女人精品久久久久毛片| 久热爱精品视频在线9| 欧美老熟妇乱子伦牲交| 精品国产一区二区久久| 国产成+人综合+亚洲专区| 搡老岳熟女国产| 免费搜索国产男女视频| 丰满人妻熟妇乱又伦精品不卡| 日韩中文字幕欧美一区二区| 亚洲av电影在线进入| 十分钟在线观看高清视频www| 免费日韩欧美在线观看| 亚洲成人国产一区在线观看| 中文字幕人妻熟女乱码| www日本在线高清视频| 亚洲片人在线观看| 99精品久久久久人妻精品| 亚洲av成人一区二区三| 一区二区日韩欧美中文字幕| 99久久国产精品久久久| 超碰成人久久| 99精品欧美一区二区三区四区| 亚洲一卡2卡3卡4卡5卡精品中文| 午夜福利影视在线免费观看| 久久精品国产亚洲av香蕉五月| 十八禁人妻一区二区| 高潮久久久久久久久久久不卡| 老熟妇仑乱视频hdxx| 亚洲人成77777在线视频| 色综合欧美亚洲国产小说| 一级a爱视频在线免费观看| 十八禁网站免费在线| 操美女的视频在线观看| 亚洲专区国产一区二区| 99国产精品免费福利视频| 99热国产这里只有精品6| 在线观看舔阴道视频| 午夜福利欧美成人| 国产精品成人在线| 日日摸夜夜添夜夜添小说| 最好的美女福利视频网| 日韩高清综合在线| 欧美乱码精品一区二区三区| 宅男免费午夜| 性少妇av在线| 亚洲专区国产一区二区| 极品教师在线免费播放| 人人澡人人妻人| 大型黄色视频在线免费观看| 交换朋友夫妻互换小说| 亚洲情色 制服丝袜| 好男人电影高清在线观看| 久久人妻福利社区极品人妻图片| 日韩欧美在线二视频| 亚洲国产欧美日韩在线播放| 亚洲黑人精品在线| 亚洲 欧美一区二区三区| 国产av在哪里看| 69av精品久久久久久| 最近最新中文字幕大全电影3 | 在线国产一区二区在线| 亚洲视频免费观看视频| 亚洲成a人片在线一区二区| 国产精品99久久99久久久不卡| 国产精品二区激情视频| 国产色视频综合| 黄片播放在线免费| 久久久国产欧美日韩av| 男人操女人黄网站| 久久久久国产精品人妻aⅴ院| 国产91精品成人一区二区三区| 一进一出抽搐动态| 9热在线视频观看99| 日本精品一区二区三区蜜桃| 性欧美人与动物交配| 一级a爱视频在线免费观看| 天堂动漫精品| 99久久综合精品五月天人人| 99久久久亚洲精品蜜臀av| 叶爱在线成人免费视频播放| 国产高清国产精品国产三级| 亚洲伊人色综图| 色精品久久人妻99蜜桃| 久久精品亚洲精品国产色婷小说| 欧美日本中文国产一区发布| √禁漫天堂资源中文www| 精品国产亚洲在线| videosex国产| 欧美日韩一级在线毛片| 最新美女视频免费是黄的| 久久 成人 亚洲| 激情视频va一区二区三区| 久久婷婷成人综合色麻豆| 男女下面进入的视频免费午夜 | 国产精品av久久久久免费| 国产成人影院久久av| 免费久久久久久久精品成人欧美视频| 好看av亚洲va欧美ⅴa在| 男人舔女人的私密视频| 天堂√8在线中文| 免费看十八禁软件| 中出人妻视频一区二区| 欧美激情久久久久久爽电影 | 日日干狠狠操夜夜爽| 午夜免费鲁丝| 一区二区日韩欧美中文字幕| 成人国语在线视频| 欧美一区二区精品小视频在线| 亚洲aⅴ乱码一区二区在线播放 | av超薄肉色丝袜交足视频| 国产激情欧美一区二区| 欧美激情 高清一区二区三区| 十分钟在线观看高清视频www| 久久精品91蜜桃| 黄频高清免费视频| 在线国产一区二区在线| 长腿黑丝高跟| 国产精品一区二区在线不卡| 91成人精品电影| 一区二区三区精品91| 老司机深夜福利视频在线观看| 99热只有精品国产| 熟女少妇亚洲综合色aaa.| 女人被躁到高潮嗷嗷叫费观| 视频在线观看一区二区三区| 日韩国内少妇激情av| 亚洲熟妇熟女久久| 正在播放国产对白刺激| 久久国产精品男人的天堂亚洲| 99精品久久久久人妻精品| 九色亚洲精品在线播放| 欧美日韩乱码在线| 一级毛片高清免费大全| 日本精品一区二区三区蜜桃| 天堂影院成人在线观看| 国产主播在线观看一区二区| 久久久国产成人精品二区 | 十分钟在线观看高清视频www| 久久久久久免费高清国产稀缺| 免费女性裸体啪啪无遮挡网站| xxxhd国产人妻xxx| 久久天堂一区二区三区四区| www.精华液| 国产男靠女视频免费网站| 国产色视频综合| a级毛片黄视频| 国产精品日韩av在线免费观看 | 亚洲欧美日韩另类电影网站| 日日干狠狠操夜夜爽| 在线观看免费高清a一片| 久久中文看片网| 色综合欧美亚洲国产小说| www.自偷自拍.com| 桃红色精品国产亚洲av| 一二三四在线观看免费中文在| 久久久精品欧美日韩精品| 久久人妻av系列| av在线播放免费不卡| 老司机午夜十八禁免费视频| 国产精品综合久久久久久久免费 | 国产麻豆69| 夜夜看夜夜爽夜夜摸 | 亚洲国产欧美网| 日本精品一区二区三区蜜桃| 亚洲avbb在线观看| 免费看a级黄色片| 久久久国产成人免费| 精品福利观看| 18禁美女被吸乳视频| 成人精品一区二区免费| 国产一区二区三区综合在线观看| 久久国产精品人妻蜜桃| 国产91精品成人一区二区三区| 老司机福利观看| 久久人人97超碰香蕉20202| 丝袜人妻中文字幕| 免费日韩欧美在线观看| 性色av乱码一区二区三区2| 国产精品电影一区二区三区| 欧美老熟妇乱子伦牲交| 国产精品一区二区在线不卡| 欧美午夜高清在线| 国产精品永久免费网站| 一a级毛片在线观看| 欧美黄色淫秽网站| 国产亚洲精品第一综合不卡| 两人在一起打扑克的视频| 999精品在线视频| 丝袜人妻中文字幕| 精品少妇一区二区三区视频日本电影| 国产精品久久视频播放| 精品福利观看| 母亲3免费完整高清在线观看| 搡老熟女国产l中国老女人| 天堂√8在线中文| 成人18禁高潮啪啪吃奶动态图| 久久国产精品男人的天堂亚洲| 日本vs欧美在线观看视频| 欧美日韩亚洲高清精品| 真人一进一出gif抽搐免费| av免费在线观看网站| 最近最新中文字幕大全免费视频| 免费日韩欧美在线观看| 在线看a的网站| 香蕉久久夜色| 中文字幕人妻丝袜制服| 在线观看舔阴道视频| av有码第一页| 丁香六月欧美| 久久精品影院6| 欧美大码av| 一区福利在线观看| 性欧美人与动物交配| 亚洲av成人不卡在线观看播放网| 日本一区二区免费在线视频| 好男人电影高清在线观看| 久9热在线精品视频| 一边摸一边做爽爽视频免费| 嫁个100分男人电影在线观看| a级毛片黄视频| 亚洲av第一区精品v没综合| 亚洲午夜理论影院| 色综合站精品国产| 精品卡一卡二卡四卡免费| 亚洲狠狠婷婷综合久久图片| 国产在线精品亚洲第一网站| www.999成人在线观看| av天堂久久9| 在线永久观看黄色视频| 国产aⅴ精品一区二区三区波| 男人舔女人下体高潮全视频| 高清av免费在线| 在线视频色国产色| 国产单亲对白刺激| 丁香欧美五月| 精品欧美一区二区三区在线| 巨乳人妻的诱惑在线观看| av片东京热男人的天堂| 亚洲欧美日韩无卡精品| 国产成人欧美在线观看| 亚洲国产看品久久| 欧美丝袜亚洲另类 | 久久人妻熟女aⅴ| 国产亚洲精品综合一区在线观看 | 久久久久国内视频| 精品久久久久久久久久免费视频 | 国产精品一区二区三区四区久久 | 亚洲全国av大片| 国产有黄有色有爽视频| 男女高潮啪啪啪动态图| 国产精品综合久久久久久久免费 | 深夜精品福利| 精品久久蜜臀av无| 在线观看66精品国产| 99精品欧美一区二区三区四区| 欧美一级毛片孕妇| 在线观看免费视频日本深夜| 国产一区二区三区在线臀色熟女 | 欧美老熟妇乱子伦牲交| 9色porny在线观看| 久久久水蜜桃国产精品网| 怎么达到女性高潮| 亚洲熟妇中文字幕五十中出 | 久久中文字幕一级| 免费在线观看视频国产中文字幕亚洲| 男女下面插进去视频免费观看| 又黄又爽又免费观看的视频| 久久天躁狠狠躁夜夜2o2o| 少妇 在线观看| 亚洲国产欧美一区二区综合| 侵犯人妻中文字幕一二三四区| av超薄肉色丝袜交足视频| 欧美精品亚洲一区二区| 亚洲精华国产精华精| 久久久久国产精品人妻aⅴ院| 男女下面插进去视频免费观看| a级毛片黄视频| 啪啪无遮挡十八禁网站| 亚洲熟女毛片儿| 中文欧美无线码| 亚洲欧美激情在线| tocl精华| 亚洲全国av大片| 免费在线观看亚洲国产| 国产男靠女视频免费网站| 国产97色在线日韩免费| 国产精品香港三级国产av潘金莲| 成人亚洲精品av一区二区 | 丁香六月欧美| 国产精品av久久久久免费| 亚洲自偷自拍图片 自拍| 免费女性裸体啪啪无遮挡网站| 热99国产精品久久久久久7| 性色av乱码一区二区三区2| 岛国在线观看网站| 亚洲av熟女| 手机成人av网站| 69av精品久久久久久| 国产精品99久久99久久久不卡| 久久久久国内视频| 女人被躁到高潮嗷嗷叫费观| 色婷婷av一区二区三区视频| 无遮挡黄片免费观看| 久久久久国产一级毛片高清牌| 日本欧美视频一区| 亚洲男人的天堂狠狠| 午夜免费观看网址| 亚洲精品av麻豆狂野| 国产午夜精品久久久久久| 亚洲av成人一区二区三| 国产亚洲精品久久久久5区| 国产免费男女视频| 亚洲黑人精品在线| 精品国产超薄肉色丝袜足j| 一级作爱视频免费观看| 91成人精品电影| 校园春色视频在线观看| 国产91精品成人一区二区三区| 人妻丰满熟妇av一区二区三区| 国产亚洲欧美在线一区二区| 欧美 亚洲 国产 日韩一| 高清黄色对白视频在线免费看| 亚洲专区国产一区二区| 久久久国产成人免费| 亚洲av成人不卡在线观看播放网| 精品午夜福利视频在线观看一区| 80岁老熟妇乱子伦牲交| 精品一区二区三区av网在线观看| 亚洲人成伊人成综合网2020| 久久国产乱子伦精品免费另类| 亚洲成国产人片在线观看| 日本 av在线| 国产高清videossex| 亚洲av成人av| 在线观看舔阴道视频| 亚洲av熟女| 中文亚洲av片在线观看爽| 欧美日韩视频精品一区| 最好的美女福利视频网| 国产成人啪精品午夜网站| 一进一出好大好爽视频| 久久 成人 亚洲| 欧美激情高清一区二区三区| 国产乱人伦免费视频| 中文欧美无线码| 波多野结衣高清无吗| 久久久国产成人精品二区 | 国产1区2区3区精品| 国产精品自产拍在线观看55亚洲| 亚洲一区二区三区不卡视频| 啪啪无遮挡十八禁网站| 悠悠久久av| 性少妇av在线| 国产免费av片在线观看野外av| 精品国产乱子伦一区二区三区| 女生性感内裤真人,穿戴方法视频| 色综合婷婷激情| 91av网站免费观看| 国产精品亚洲一级av第二区| av福利片在线| 在线观看一区二区三区激情| 亚洲欧洲精品一区二区精品久久久| 亚洲精品美女久久久久99蜜臀| 91在线观看av| 18美女黄网站色大片免费观看| 女人被躁到高潮嗷嗷叫费观| 成人国语在线视频| 亚洲成人国产一区在线观看| 精品卡一卡二卡四卡免费| 欧美在线一区亚洲| 激情视频va一区二区三区| x7x7x7水蜜桃| 久久精品国产亚洲av香蕉五月| 看免费av毛片| 国产av精品麻豆| 九色亚洲精品在线播放| 国产精品美女特级片免费视频播放器 | 在线观看免费视频网站a站| 久久人妻av系列| 国产精品爽爽va在线观看网站 | 国产成人啪精品午夜网站| 亚洲熟妇中文字幕五十中出 | 丝袜人妻中文字幕| 波多野结衣高清无吗| 国产激情久久老熟女| 深夜精品福利| 欧美人与性动交α欧美软件| 国产精华一区二区三区| 91成人精品电影| 国产人伦9x9x在线观看| 亚洲人成77777在线视频| 97人妻天天添夜夜摸| 久久香蕉激情| 99re在线观看精品视频| 久久青草综合色| 男女之事视频高清在线观看| 精品国产超薄肉色丝袜足j| e午夜精品久久久久久久| 热99国产精品久久久久久7| 1024视频免费在线观看| 久久欧美精品欧美久久欧美| svipshipincom国产片| 美女高潮到喷水免费观看| a级毛片黄视频| 久久香蕉激情| 男人舔女人下体高潮全视频| 日日爽夜夜爽网站| 啪啪无遮挡十八禁网站| 精品电影一区二区在线| 午夜成年电影在线免费观看| 88av欧美| 搡老熟女国产l中国老女人| 久久久久国内视频| 新久久久久国产一级毛片| 天堂影院成人在线观看| 俄罗斯特黄特色一大片| 一区二区三区激情视频| 日本撒尿小便嘘嘘汇集6| 免费av毛片视频| 国产亚洲精品综合一区在线观看 | 久久久久久免费高清国产稀缺| 最新在线观看一区二区三区| 午夜免费观看网址| xxxhd国产人妻xxx| 欧美黑人欧美精品刺激| 丰满迷人的少妇在线观看| 亚洲成人国产一区在线观看| 国产aⅴ精品一区二区三区波| 久久天堂一区二区三区四区| 在线播放国产精品三级| 黑丝袜美女国产一区| 精品福利观看| 久久这里只有精品19| 欧美黑人精品巨大| 亚洲中文日韩欧美视频| 一边摸一边抽搐一进一小说| 国产深夜福利视频在线观看| 国产精品 欧美亚洲| 亚洲av电影在线进入| 国产亚洲av高清不卡| 亚洲欧美激情综合另类| 精品国产美女av久久久久小说| 91在线观看av| 成人手机av| 久久国产精品男人的天堂亚洲| 免费在线观看日本一区| 亚洲一码二码三码区别大吗| 一进一出抽搐gif免费好疼 | 国产黄a三级三级三级人| 曰老女人黄片| 国产极品粉嫩免费观看在线| av视频免费观看在线观看| 色综合婷婷激情| 午夜免费激情av| 亚洲国产精品sss在线观看 | 在线免费观看的www视频| 国产成+人综合+亚洲专区| 真人一进一出gif抽搐免费| 国产不卡一卡二| 精品高清国产在线一区| 亚洲人成电影观看| 亚洲成人免费av在线播放| 午夜免费鲁丝| av网站免费在线观看视频| 久久久久亚洲av毛片大全| 中文字幕最新亚洲高清| 性色av乱码一区二区三区2| 每晚都被弄得嗷嗷叫到高潮| 多毛熟女@视频| 午夜福利在线免费观看网站| 精品国产超薄肉色丝袜足j| 欧美成人免费av一区二区三区| 国产亚洲欧美在线一区二区| 国产亚洲av高清不卡| 老司机午夜福利在线观看视频| 黄色视频不卡| 在线观看免费视频日本深夜| 少妇的丰满在线观看| 国产精品九九99| 亚洲精品一卡2卡三卡4卡5卡| 女人精品久久久久毛片| 久久精品影院6| 亚洲专区国产一区二区| 女人被狂操c到高潮| 亚洲av成人av| 亚洲专区国产一区二区| 在线av久久热| 国产欧美日韩精品亚洲av| 国产精品98久久久久久宅男小说| 亚洲免费av在线视频| 日韩三级视频一区二区三区| 97人妻天天添夜夜摸| 亚洲免费av在线视频| 久久久水蜜桃国产精品网| 又紧又爽又黄一区二区| 亚洲第一欧美日韩一区二区三区| 成年人免费黄色播放视频| 精品少妇一区二区三区视频日本电影| 欧美中文日本在线观看视频| 夜夜夜夜夜久久久久| 国产成年人精品一区二区 | 一区在线观看完整版| av视频免费观看在线观看| 超碰成人久久|