精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入理解JTS平衡安全性和性能

開發 后端
本文深入介紹了JTS平衡安全性和性能,希望對你有幫助,一起來看吧!

JTS 只是一個組件事務監視器(有時也稱為 對象事務監視器(object transaction monitor)),或稱為 CTM。大家可以看看這篇文章,Java理論和實踐: 理解JTS

事務主要是一種異常處理機制。事務在程序中的用途與合法合同在日常業務中的用途相似:如果出了什么問題它們可以幫助恢復。但由于大多數時間內都沒實際 發生什么錯誤,我們就希望能夠盡量減少它們的開銷以及對其余時間的占用。我們在應用程序中如何使用事務會對應用程序的性能和可伸縮性產生很大的影響。

事務劃分

J2EE 容器提供了兩種機制用來定義事務的起點和終點:bean 管理的事務和容器管理的事務。在 bean 管理的事務中,用 UserTransaction.begin() 和 UserTransaction.commit() 在 bean 方法中顯式開始和結束一個事務。另一方面,容器管理的事務提供了更多的靈活性。通過在裝配描述符中為每個 EJB 方法定義事務性屬性,您可以指定每個方法的事務性需求并讓容器確定何時開始和結束一個事務。無論在哪種情況下,構建事務的基本指導方針都是一樣的。

進來,出去

事務劃分的第一條規則是“盡量短小”。事務提供并發控制;這通常意味著資源管理器將代表您獲得您在事務期間訪問的數據項的鎖,并且它必須一直持有這些鎖,直到事務結束。(請回憶一下本系列第 1 部分所討論的 ACID特性,其中“ACID”的“I”代表“隔離”(Isolation)。也就是說,一個事務的結果影響不到與該事務并發執行的其它事務。)當您擁有鎖時,任何需要訪問您鎖定的數據項的其它事務將不得不一直等待,直到您釋放鎖。如果您的事務很長,那些其它的所有事務都將被鎖定,您的應用程序吞吐量將大幅度下降。

規則 1:使事務盡可能短小。

通過使事務盡量短小,您可以把阻礙其它事務的時間縮到最短,從而提高應用程序的可伸縮性。保持事務盡可能短小的最好方法當然是不在事務中間做任何不必要耗費時間的事,特別是不要在事務中間等待用戶輸入。

開始一個事務,從數據庫檢索一些數據,顯示數據,然后在仍處于事務中時請用戶做出一個選擇可能比較誘人。千萬別這么做!即使用戶注意力集中,也要花費數秒來響應 ― 而在數據庫中擁有鎖數秒的時間已經是很長的了。如果用戶決定離開計算機,或許是去吃午餐或者甚至回家一天,會發生什么情況?應用程序將只好無奈停機。在事務期間執行 I/O 是導致災難的秘訣。

規則 2:在事務期間不要等待用戶輸入。

將相關的操作歸在一起

由于每個事務都有不小的開銷,您可能認為最好是在單個事務中執行盡可能多的操作以使每個操作的開銷達到最小。但規則 1 告訴我們長事務對可伸縮性不利。那么如何實現最小化每個操作的開銷和可伸縮性之間的平衡呢?

我們把規則 1 設置為邏輯上的極端 ― 每個事務一個操作 ― 這樣不僅會導致額外開銷,還會危及應用程序狀態的一致性。假定事務性資源管理器維護應用程序狀態的一致性(請回憶一下第 1 部分,其中“ACID”的“C”代表“一致性”(Consistency)),但它們依賴應用程序來定義一致性的意思。實際上,我們在描述事務時使用的一致性的定義有點圓滑:應用程序說一致性是什么意思它就是什么意思。應用程序把幾組應用程序狀態的變化組織到幾個事務中,結果應用程序的狀態就成了 定義上的(by definition)一致。然后資源管理器確保如果它必須從故障恢復的話,就把應用程序狀態恢復到最近的一致狀態。

在第 1 部分中,我們給出了一個在銀行應用程序中將資金從一個帳戶轉移到另一個帳戶的示例。清單 1 展示了這個示例可能的 SQL 實現,它包含 5 個 SQL 操作(一個選擇,兩個更新和兩個插入操作):

清單 1. 資金轉移的樣本 SQL 代碼

  1.  
  2. SELECT accountBalance INTO aBalance   
  3. FROM Accounts WHERE accountId=aId;  
  4. IF (aBalance >= transferAmount) THEN   
  5. UPDATE Accounts   
  6. SET accountBalance = accountBalance - transferAmount  
  7. WHERE accountId = aId;  
  8. UPDATE Accounts   
  9. SET accountBalance = accountBalance + transferAmount  
  10. WHERE accountId = bId;  
  11. INSERT INTO AccountJournal (accountId, amount)  
  12. VALUES (aId, -transferAmount);  
  13. INSERT INTO AccountJournal (accountId, amount)  
  14. VALUES (bId, transferAmount);  
  15. ELSE 
  16. FAIL "Insufficient funds in account";  
  17. END IF 

如果我們把這個操作作為五個單獨的事務來執行會發生什么情況?這樣不僅會使執行速度變慢(由于事務開銷),還會失去一致性。例如,如果一個人從帳戶 A 取了錢,作為執行第一次 SELECT(檢查余額)和隨后的記入借方 UPDATE 之間的一個單獨事務的一部分,會發生什么情況?這樣會違反我們認為這段代碼會強制遵守的業務規則 ― 帳戶余額應該是非負的。如果在第一次 UPDATE 和第二次 UPDATE 之間系統失敗會發生什么情況?現在,當系統恢復時,錢已經離開了帳戶 A 但還沒有記入帳戶 B 的貸方,并且也無記錄說明原因。這樣,哪個帳戶的所有者都不會開心。

清單 1 中的五個 SQL 操作是單個相關操作 ― 將資金從一個帳戶轉移到另一個帳戶 ― 的一部分。因此,我們希望要么全部執行它們,要么一個也不執行,建議在單個事務中全部執行它們。

規則 3:將相關操作歸到單個事務中。

理想化的平衡

規則 1 說事務應盡可能短小。清單 1 中的示例表明有時候我們必須把一些操作歸到一個事務中來維護一致性。當然,它要依賴應用程序來確定“相關操作”是由什么組成的。我們可以把規則 1 和 3 結合在一起,提供一個描述事務范圍的一般指導,我們規定它為規則 4:

規則 4:把相關操作歸到單個事務中,但把不相關的操作放到單獨的事務中。

容器管理的事務

在使用容器管理的事務時,不是顯式聲明事務的起點和終點,而是為每個 EJB 方法定義事務性需求。bean 的 assembly-descriptor 的 container-transaction 部分的 trans-attribute 元素中定義了事務模式。(清單 2 中顯示了一個 assembly-descriptor 示例。)方法的事務模式以及狀態 ― 調用方法是否早已在事務中被征用 ― 決定了當 EJB 方法被調用時容器應該進行下面幾個操作中的哪一個:

征用現有事務中的方法。

創建一個新事務,并征用該事務中的方法。

不征用任何事務中的方法。

拋出一個異常。

清單 2. 樣本 EJB 裝配描述符

  1. <assembly-descriptor>  
  2. ...  
  3. <container-transaction>  
  4. <method>  
  5. <ejb-name>MyBean</ejb-name>  
  6. <method-name>*</method-name>  
  7. </method>  
  8. <trans-attribute>Required</trans-attribute>  
  9. </container-transaction>  
  10. <container-transaction>  
  11. <method>  
  12. <ejb-name>MyBean</ejb-name>  
  13. <method-name>logError</method-name>  
  14. </method>  
  15. <trans-attribute>RequiresNew</trans-attribute>  
  16. </container-transaction>  
  17. ...  
  18. </assembly-descriptor> 

那么我們應該為自己的 bean 方法選擇哪種模式呢?對于會話 bean 和消息驅動 bean,您通常想使用 Required 來確保每個調用都被作為事務的一部分執行,但仍將允許方法作為一個更大的事務的組件。請小心使用 RequiresNew ;只有在確定自己的方法的行為應該與調用您的方法的行為分開提交時,才應該使用這種模式。 RequiresNew 一般情況下只和與系統中其它對象關系很少或沒什么關系的對象(比如日志對象)一起使用。(把 RequiresNew 與日志對象一起使用比較有意義,因為您可能希望在不管外圍事務是否提交的情況下提交日志消息。)

RequiresNew 使用不當會導致與上面的描述相似的情況,其中,清單 1 中的代碼在五個分開的事務而不是一個事務中執行,這樣會使應用程序處于不一致狀態。

對于 CMP(容器管理的持久性,container-managed persistence)實體 bean,通常是希望使用 Required 。 Mandatory 也是一個合理的選項,特別是在最初開發時;這將會警告您實體 bean 方法在事務外被調用這種情況,這時可能會指出一個部署錯誤。您幾乎從不希望把 RequiresNew 和 CMP 實體 bean 一起使用。 NotSupported 和 Never 旨在用于非事務性資源,比如 Java 事務 API(Java Transaction API,JTA)事務中無法征用的外部非事務性系統或事務性系統的適配器。

如果 EJB 應用程序設計得當,應用上面的事務模式指導往往會自然地產生規則 4 建議的事務劃分。原因是 J2EE 體系架構鼓勵把應用程序分解為最小的方便處理的塊,并且每個塊都作為一個單獨的請求被處理( 不管是以 HTTP 請求的形式還是作為在 JMS 隊列中排隊的消息的結果)。

重溫隔離

在第 1 部分中,我們定義了 隔離(isolation)的意思是:一個事務的影響對與該事務并發執行的其它事務是不可見的;從事務的角度來看,好象事務是連續執行而非并行執行。盡管事務性資源管理器經常可以同時處理許多事務并提供隔離的假象,但有時隔離限制實際上要求把新事務延遲到現有事務完成后才開始。由于完成一個事務至少包括一個同步磁盤 I/O(寫到事務日志),這就會把每秒的事務數限制到接近每秒的寫磁盤次數,這對可伸縮性不利。

實際上,通常是充分放松隔離需求以允許更多的事務并發執行并使系統響應能夠得到改善,使可伸縮性變得更強。幾乎所有的數據庫都支持標準隔離級別:讀未提交的(Read Uncommitted)、讀已提交的(Read Committed)、可重復的讀(Repeatable Read) 和可串行化的(Serializable)。

不幸的是,為容器管理的事務管理隔離目前是在 J2EE 規范的范圍之外。但是,許多 J2EE 容器,比如 IBM WebSphere 和 BEA WebLogic,將提供特定于容器的擴展,這些擴展允許您以每方法(per-method)為基礎設置事務隔離級別,設置方法與在裝配描述符中設置事務模式的方法相同。對于 bean 管理的事務,您可以通過 JDBC 或者其它資源管理器連接設置隔離級別。

為闡明隔離級別之間的差異,我們首先把幾個并發危險分類 ― 這幾種危險是當沒有適當地隔離時一個事務可能會干涉另一個事務的情況。下列的所有這些危險都與這種情況( 第二個事務已經啟動后第一個事務變得對第二個事務 可見)的結果有關:

臟讀(Dirty Read):當一個事務的中間(未提交的)結果對另一個事務可見時就會發生這種情況。

不可重復的讀(Unrepeatable Read):當一個事務讀取一個數據項,然后重新讀取這個數據項并看到不同的值時就是發生了這種情況。

虛讀(Phantom Read):當一個事務執行返回多個行的查詢,稍后再次執行同一個查詢并看到第一次執行該查詢沒出現的額外行時就是發生了這種情況。

四個標準隔離級別與這三個隔離危險相關,如表 2 所示。最低的隔離級別“讀未提交的”并不能保護事務不被其它事務更改,但它的速度最快,因為它不需要爭奪讀鎖。最高的隔離級別“可串行化的”與上面給出的隔離的定義相當;每個事務好象都與其它事務的影響完全隔離。

表 2. 事務隔離級別

事務隔離級別

對于大多數數據庫,缺省的隔離級別為“讀已提交的”,這是個很好的缺省選擇,因為它阻止事務在事務中的任何給定的點看到應用程序數據的不一致視圖。“讀已提交的”是一個很不錯的隔離級別,用于大多數典型的短事務,比如獲取報表數據或獲取要顯示給用戶的數據的時候(多半是作為 Web 請求的結果),也用于將新數據插入到數據庫的情況。

當您需要所有事務間有較高級別的一致性時,使用較高的隔離級別“可重復的讀”和“可串行化的”比較合適,比如在清單 1 示例中,您希望從檢查余額以確保有足夠的資金到您實際取錢期間賬戶余額一直保持不變;這就要求至少要用“可重復的讀”隔離級別。在數據一致性絕對重要的情況下,比如審核記帳數據庫以確保一個帳戶的所有借方金額和貸方金額的總數等于它目前的余額時,可能還需要防止創建新行。這種情況下就需要使用“可串行化的”隔離級別。

最低的隔離級別“讀未提交的”很少使用。它適用于您只需要獲得近似值,否則查詢將導致您不希望的性能開銷這種情況。當您想要估計一個變化很快的數量,如定單數或者今天所下定單的總金額(以美元為單位)時一般使用““讀未提交的”。

因為隔離和可伸縮性之間實際是一種此消彼長的關系,所以您在為事務選擇隔離級別時應該小心行事。選擇太低的級別對數據比較危險。選擇太高的級別可能對性能不利,盡管負載比較輕時可能不會這樣。一般來說,數據一致性問題比性能問題更嚴重。如果拿不準,應該以小心為主,選擇一個較高的隔離級別。這就引出了規則 5:

規則 5:使用保證數據安全 style="COLOR: #000000" href="http://safe.it168.com/" target=_blank>安全的最低隔離級別,但如果拿不準,請使用“可串行化的”。

即使您打算剛開始時以小心為主并希望結果性能可以接受 ―(被稱為“拒絕和祈禱(denial and prayer)”的性能管理技術 ― 很可能是最常用的性能策略,盡管大多數開發者都不承認這一點),在開發組件時考慮隔離需求也是有利的。您應該努力編寫能夠容忍級別較低但實用的隔離級別的事務,這樣,當稍后性能成為問題時,自己就不會陷入困境。因為您需要知道方法正在做什么以及這個方法中隱藏了什么一致性假設來正確設置隔離級別,那么在開發期間仔細說明并發需求和假設,以便在裝配應用程序時幫助作出正確的決定也不失為一個好主意。

結束語

本文中提供的許多指導可能看起來有點互相矛盾,因為象事務劃分和隔離這種問題本來就是此消彼長的。我們正在努力平衡安全性(如果我們不關心安全性,那就壓根不必用事務了)和我們用來提供安全限度的工具的性能開銷。正確的平衡要依賴許多因素,包括與系統故障或當機時間相關的代價或損害以及組織的風險承受能力。

【編輯推薦】

  1. java/.net語言及IDE簡易對比
  2. java中的類和方法的修飾符
  3. 關于Java對象序列化您不知道的5件事
  4. Java為什么如此深受廣大開發者的青睞?
  5. Javascript中的函數聲明和函數表達式
責任編輯:于鐵 來源: 互聯網
相關推薦

2023-06-01 15:17:17

2019-04-08 16:50:33

前端性能監控

2023-06-29 00:17:58

DevSecOps軟件開發

2009-06-19 14:10:42

Java多態性

2024-11-14 16:02:43

2009-11-09 17:40:33

WCF配置可靠性

2024-06-06 09:58:13

2009-10-12 10:52:47

RHEL5安全性

2015-05-11 10:42:17

混合云性能混合云安全SLA

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2010-06-01 15:25:27

JavaCLASSPATH

2022-01-18 10:48:12

HTTPS加密安全漏洞

2013-07-31 10:04:42

hadoopHadoop集群集群和網絡

2012-08-31 10:00:12

Hadoop云計算群集網絡

2012-11-08 14:47:52

Hadoop集群

2025-01-13 13:00:00

Go網絡框架nbio

2009-06-25 13:21:00

JTS

2013-01-09 10:04:55

2017-03-28 21:39:41

ErrorsStack trace代碼
點贊
收藏

51CTO技術棧公眾號

久久久久亚洲AV成人| 中文字幕第88页| 韩国中文字幕2020精品| 免费视频最近日韩| 欧美成人手机在线| 青青草福利视频| 伊人久久大香伊蕉在人线观看热v| 亚洲精品成人天堂一二三| 成人av在线播放网址| 精品久久久网站| 欧美 国产 综合| 日本中文字幕在线视频| av在线不卡电影| 国产精品久久久久91| 久久免费在线观看视频| 精品国产91| 日韩精品一区二区三区蜜臀| 狠狠热免费视频| av在线网址观看| 国产视频一区二区三区在线观看| 91在线观看免费观看| 黄色片网站在线免费观看| 欧美丰满老妇| 亚洲天堂日韩电影| 韩国三级丰满少妇高潮| 成人视屏在线观看| 亚洲一区免费视频| 一区二区三区三区在线| 色视频在线观看免费| 国产一区二区三区在线观看精品| 欧美整片在线观看| 精品无码久久久久成人漫画| 首页亚洲中字| 精品美女一区二区| 超碰在线资源站| r级无码视频在线观看| 国产在线一二| 99久久伊人网影院| 97在线中文字幕| 在线观看中文字幕码| 久久精品日韩欧美| 91精品国产91久久久久久最新| 欧美爱爱免费视频| 日韩毛片视频| 亚洲视频免费一区| 久久亚洲AV成人无码国产野外| 国产精品高潮呻吟久久久久| 日韩三级在线免费观看| 老司机久久精品| 91久久久久久白丝白浆欲热蜜臀| 欧美性感美女h网站在线观看免费| 国产手机免费视频| 少女频道在线观看免费播放电视剧 | 色妞欧美日韩在线| 日本一道本视频| 国产欧美日韩视频在线| 亚洲欧美一区二区三区情侣bbw | 亚洲精品免费在线观看| 色乱码一区二区三区熟女| 午夜国产福利在线| 中文字幕日本乱码精品影院| 久久免费看毛片| 超碰人人在线| 亚洲一区二区三区中文字幕在线| 大荫蒂性生交片| 都市激情国产精品| 日韩欧美中文免费| 男女啪啪网站视频| 色综合视频一区二区三区日韩| 在线播放中文字幕一区| 国产资源中文字幕| 福利电影一区| 亚洲理论在线a中文字幕| 国产真人做爰视频免费| 欧美成人激情| 久久91精品国产| 西西44rtwww国产精品| 日精品一区二区| 成人性教育视频在线观看| 午夜精品久久久久久久91蜜桃| 成人免费视频网站在线观看| 欧美精品欧美精品| 日本激情在线观看| 一个色在线综合| 免费成人在线视频网站| 99热播精品免费| 日韩一区二区三区四区五区六区| 91精品国产777在线观看| 三上悠亚在线一区二区| 欧一区二区三区| 精品亚洲一区二区三区在线播放 | 五月天综合网站| 欧美激情奇米色| 国产又大又粗又爽| 韩国v欧美v亚洲v日本v| 国产一区二区视频在线免费观看| 国产精品久久一区二区三区不卡| 日韩一区欧美小说| 97国产精东麻豆人妻电影| 欧美videos粗暴| 亚洲国产福利在线| 夫妻性生活毛片| 国产亚洲成人一区| 成人网在线免费观看| 深夜福利视频在线免费观看| 1024精品合集| 成人小视频在线看| 日本精品在线播放| 国产视频精品va久久久久久| 国产美女久久久久久| 六月婷婷一区| 国产精品久久久久久免费观看| 触手亚洲一区二区三区| 亚洲午夜激情网页| 欧美第一页浮力影院| 在线免费看av的网站| 久久99成人| 亚洲欧美一区二区三区久久| 久久久久无码精品国产| 欧美aaa在线| 久久偷窥视频| 蜜桃成人365av| 欧美剧情电影在线观看完整版免费励志电影 | 日韩欧美视频第二区| 岛国片av在线| 91精品国产乱码| 成人一级片免费看| 久久国产日本精品| 韩国成人一区| 男女在线观看视频| 91精品欧美综合在线观看最新 | 亚洲人成人一区二区在线观看 | 久久精品国产精品青草| 欧美成人在线免费观看| www欧美xxxx| 精品乱人伦小说| 欧美 日韩 国产 一区二区三区| 秋霞午夜鲁丝一区二区老狼| 欧美性天天影院| 在线观看爽视频| 亚洲精品乱码久久久久久金桔影视 | 亚洲黄色免费电影| 欧美激情第一区| 91精品一区国产高清在线gif | 中文字幕佐山爱一区二区免费| 在线免费视频a| 国产成人影院| 国产va免费精品高清在线观看| 日本在线一二三| 日韩欧美精品中文字幕| 午夜久久久久久久| 亚洲裸体俱乐部裸体舞表演av| 国产精品一级久久久| 国产探花在线观看| 精品999久久久| 成人精品免费在线观看| 91视频一区二区| 成年人免费在线播放| 蜜乳av综合| 国产精品视频白浆免费视频| 视频一区二区三区不卡| 在线综合亚洲欧美在线视频| 欧美三级日本三级| 国产在线视频你懂得| 99久久精品久久久久久清纯| 大j8黑人w巨大888a片| 亚洲裸色大胆大尺寸艺术写真| 国产v综合ⅴ日韩v欧美大片| 992tv免费直播在线观看| 555www色欧美视频| 免费一级特黄特色大片| 26uuu欧美日本| 在线免费观看av的网站| 欧美在线亚洲| 精品视频免费观看| 日韩网站中文字幕| 久久久精品一区二区三区| www.久久精品.com| 欧美天堂在线观看| 国产一级淫片久久久片a级| 国产乱码精品一区二区三区av | 大胆欧美熟妇xx| 女同久久另类99精品国产| 国产精品69av| а√天堂资源地址在线下载| 亚洲精品福利在线观看| 最近中文字幕免费在线观看| 亚洲免费观看高清| 加勒比精品视频| 老司机精品视频导航| 又大又硬又爽免费视频| 欧美日韩伦理在线免费| 97中文在线| 日韩三区免费| 久久精品一偷一偷国产| 日韩欧美视频免费在线观看| 午夜av在线免费观看| 日韩av在线高清| 中文字幕码精品视频网站| 伊人夜夜躁av伊人久久| 日本xxx在线播放| 一本一本久久| 中文字幕一区二区三区乱码| 精品少妇一区| 国产剧情久久久久久| 末成年女av片一区二区下载| 色悠悠久久久久| 色呦呦免费观看| 欧美日本一区二区| 在线精品免费视| 亚洲精品美腿丝袜| 国产一二三四五区| 国产成人h网站| 欧美两根一起进3p做受视频| 欧美日韩亚洲一区三区| 午夜精品视频在线观看一区二区| 亚洲小说春色综合另类电影| 国产精品一二区| 国产乱码午夜在线视频| 日韩在线观看精品| 蜜臀av中文字幕| 欧美一区二区三区人| 香蕉影院在线观看| 亚洲自拍偷拍九九九| 青青草华人在线视频| 99re这里只有精品6| 三级黄色片免费观看| 视频一区二区三区在线| 成人免费观看cn| 欧美一区二区三区另类| 日韩精品av一区二区三区| 黄色成人美女网站| 国产精品视频入口| 久久三级中文| 国产精品一区二区久久久久| 国产网站在线| 91国内精品久久| 久久一卡二卡| 欧美肥老妇视频| 成人在线免费看片| 久久久国产一区二区三区| 成年人视频在线看| 亚洲天堂2020| 国产在线观看免费| 一区二区欧美亚洲| 可以在线观看的av网站| 日韩精品有码在线观看| 国产情侣一区二区| 在线观看一区不卡| 成人公开免费视频| 亚洲一本大道在线| 久操免费在线视频| 亚洲在线中文字幕| 免费一级肉体全黄毛片| 亚洲 欧美综合在线网络| 国产一级特黄a高潮片| 亚洲欧美另类在线| 神马久久精品综合| 亚洲欧洲无码一区二区三区| 一区二区三区少妇| 91在线云播放| 丰满少妇在线观看资源站| 久久久久久久久蜜桃| 国产女主播一区二区三区| 亚欧洲精品在线视频| 亚洲午夜国产一区99re久久| www.99re7.com| 偷拍一区二区三区| 色老头在线视频| 在线免费不卡电影| 中文在线免费看视频| 91精品国产麻豆国产自产在线 | 欧美裸体bbwbbwbbw| 99国产精品一区二区三区| 7777女厕盗摄久久久| 波多野结衣黄色网址| 欧美视频在线一区二区三区 | 欧美日韩高清影院| av图片在线观看| 欧美精品色综合| 国产夫妻在线观看| 精品国一区二区三区| 欧洲一级在线观看| 伊人av综合网| 天堂av在线电影| 欧美亚洲国产视频| 日韩久久一区二区三区| 91视频免费在线| 欧美大奶一区二区| 韩国一区二区三区美女美女秀 | 卡通欧美亚洲| 国产精品男人的天堂| 精品国产一区二区三区2021| 国产精品久久久久久久久婷婷 | 国产suv一区二区三区| 亚洲国产精品久久久男人的天堂| 手机看片久久久| 日韩一级片在线观看| 色视频免费在线观看| 1024成人网| 欧美国产日韩激情| 久热精品视频| av噜噜在线观看| 久久久精品一品道一区| 美国一级片在线观看| 五月婷婷色综合| 国产精品污视频| 亚洲欧美日韩国产精品| aaa大片在线观看| 国产精品久久色| 精品三级av在线导航| 色中文字幕在线观看| 日韩激情视频网站| 中文字幕在线视频播放| 国产精品美女久久久久高潮| 亚洲欧美自拍视频| 日韩精品综合一本久道在线视频| 美女欧美视频在线观看免费 | 欧美视频免费在线观看| 国产精品高潮呻吟av| 亚洲精品久久久久久久久| 中中文字幕av在线| 国产精品国模在线| 精品欠久久久中文字幕加勒比| 在线观看三级网站| 日本视频在线一区| 少妇被狂c下部羞羞漫画| 亚洲精品视频在线观看网站| 免费又黄又爽又猛大片午夜| 欧美www视频| 性网站在线观看| 成人国产精品一区| 欧美一区三区| 青青草av网站| 91香蕉视频mp4| 精品少妇一区二区三区密爱| 欧美日韩国产色| 国产亚洲欧美另类一区二区三区| 成人高潮a毛片免费观看网站| 永久免费精品视频网站| 噜噜噜在线观看免费视频日韩| 免费人成视频在线播放| 亚洲黄一区二区三区| 一本久道久久综合无码中文| 亚洲精品中文字幕av| 咪咪网在线视频| 国产亚洲一区在线播放| 一本久道久久综合婷婷鲸鱼| 欧洲成人午夜精品无码区久久| 国产精品乱人伦中文| 成人黄色三级视频| 日韩在线视频国产| 欧美性生活一级| 亚洲一区二区在线观| 久久91精品久久久久久秒播| 成年人看的免费视频| 色综合网站在线| 成人在线观看一区| 热99久久精品| 亚洲综合小说图片| 国产自偷自偷免费一区 | 羞羞色午夜精品一区二区三区| 亚洲欧美日韩三级| 日韩毛片精品高清免费| 一区二区视频免费观看| 色琪琪综合男人的天堂aⅴ视频| 最新日韩一区| 在线免费观看成人网| 国产在线播放一区| 九九热精品在线观看| 亚洲第一色在线| 欧美亚洲日本精品| 欧美日韩成人一区二区三区| 久久一区视频| 日本黄色录像视频| 欧美不卡一区二区三区| av中文资源在线资源免费观看| 欧美激情导航| 日本不卡的三区四区五区| 欧美肥妇bbwbbw| 日韩精品自拍偷拍| 青青草原av在线| 欧美福利一区二区三区| 七七婷婷婷婷精品国产| 欧美久久久久久久久久久久| 亚洲国产成人精品女人久久久| 人人草在线视频| 亚洲视频精品一区| 国产成人在线电影| 精品午夜福利视频| 亚洲性视频网站| 国产精品一区二区三区www| 日本www在线播放| 中文字幕不卡三区| 午夜精品久久久久久久99| 国产精品吹潮在线观看| 99久久99热这里只有精品| 欧美高清精品一区二区| 日韩欧美综合在线视频| 麻豆网站在线看|