你懂的在线观看视频-你懂的日韩-你懂的国产精品-你懂的福利视频-夜夜操网-夜夜操天天爽

400-650-1086
首頁 > 最新資訊 > 企業新聞 > 正文

談談客戶端性能優化的一些最好實踐

admin 2015-01-21 09:10:45 0

體系界面與功用

先來看看本來的體系界面是如何子的:
?

功用如下,我新寫的客戶端增加了支持生成OCX控件的功用:

全部體系的物理架構是這樣的:

原體系存在的疑問

  • 加載主頁面慢

跟著界面數量的增加,會需求更多的加載時刻
跟著地址和設備的增加,加載會需求更多的時刻

  • 頁面之間切換卡
  • 數據顯現慢
  • 地址的報警狀況顯現不精確且存在推遲
  • 報警并發較多時卡頓更嚴峻

客戶端性能優化的底子辦法

咱們來看看經過一些啥辦法能夠處理本來的體系存在的這些疑問。

按需獲取

大多數的狀況下,咱們本來所能看到的東西都是極端有限的,不管體系是多么巨大,功用多么的豐厚,本來呈現給用戶的都是極端有限的。

監控界面的按需獲取

前面說了,監控主界面里的界面都是組態的,是由工程師拖拉控件上去完結的,咱們也看到上面圖形還算豐厚,主要是運用了許多的圖像,因而咱們體系中在保留這些組態界面的時分,一同也保留了界面圖像的字節省。大型的數據中心由于界面較多,這些界面加起來是也許會超越1G巨細的。這么大的界面,假如都是直接加載到界面中,首要就要費不少的時刻,即便是在內網的狀況下,假定你網絡能夠1s下載20M擺布,也要50秒,接近1分鐘,遇上網絡頂峰,花個1~2分鐘并不奇怪。

咱們是不是有必要把一切界面都加載進來呢,當然沒有。咱們只需加載第一個界面,其他界面在需求的時分(用戶點擊或許發作告警需求跳轉的時分)才加載,這樣咱們的速度里邊就提高了,這即是按需加載!

當然說的輕盈,實踐做的會有許多疑問。比方,如何完結不完結頁面又能曉得該頁面是不是告警(有必要解析每個界面上的控件,才干曉得某個界面包含了哪些控件,才曉得監控目標告警在哪個界面上)?

我的進程如下:

  • 保留界面的時分,把界面上的控件的Id列表存儲到設備記載中
  • 加載時只加載一切的設備記載(稱號+控件Id列表)
  • 把對應的信息附加到樹形節點中
  • 依據對應的樹形節點的告警信息在需求顯現界面時生成界面

按需改寫界面上的數據

做監控體系,除了告警頁面有必要實時告訴到客野外,監控數據界面,本來只需展示當時顯現頁面的數據即可。

如何做呢,咱們能夠供給一個獨自的程序來辦理一切接收到的數據,然后再供給一個獲取當時數據的接口給客戶端,具體請看下面更改的架構。

有些人也許會疑問,為何不直接在采集器中供給這個接口呢?由于這是組態界面,界面上的控件要取哪個采集器的數據是未知的,所以把數據放在一同統一辦理會愈加便利。并且采集器能夠7*24小時作業,而客戶端是常常要翻開封閉的……

VS2010中的反例

假如用過VS2010開發自定義的Winform組件,那么咱們對它的工具箱加載自定義組件這個功用必定形象深入,每次挑選增加項,然后挑選自定義控件dll的時分,都十分苦楚,特別我電腦比照忙而又裝了不少插件的狀況下,為了一個十分簡略的功用,我需求花費4分多的時刻來翻開那個挑選文件的界面,這個界面加載了一大堆我絕大多數時分都用不上的COM組件,我真實無法幻想開發這個功用的程序猿是如何想的。還好,在VS2013中微軟總算是改進了這個功用,可是做得還不行。按我的主意,徹底能夠把COM組件部分異步加載,給出正在加載的提示即可,能夠當即顯現“挑選”按鈕,這樣領會性當即上升了一個層次。

推遲加載

推遲加載是指用到的時分,再去進行實踐的構建。

樹形菜單的推遲加載

樹形菜單的樹形節點的構建即是一個最適合解說的比如。咱們能夠測驗加載1000個樹形節點然后構建成一棵樹,看看在Winform中需求多長的時刻。咱們的實踐中有沒有必要這么去做呢?

各位能夠思考下自個檢查樹形導航的時分,是不是從根節點到子節點終究到葉子節點這樣一步步看下去的,大多數的時分,本來咱們只需首要看到根節點即可。例如下面這個:

關于這種狀況,咱們徹底能夠把樹形節點都獲取,可是先只創立只要根節點的一棵樹,在用戶點擊以后加載子節點,假如已判別過,則不履行加載的操作。底子的辦法是在Tag中附加一個字段指示子節點是不是現已加載,參閱代碼如下:

private void TreeDevices_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    var myNode = e.Node.Tag as NTier.Model.MyTreeNode;
    if (myNode == null) return;
 
    if (myNode.IsSubNodeLoaded == false)
    {
        //還沒有加載數據,主要是指機房節點
        LoadNodesOfSubMainForm(e.Node, myNode); //加載樹形子節點
    }
 
    //已加載了數據,則生成相應的界面
    LoadFormModel(myNode);
}

 

這兒推遲加載與按需加載有點相似,區別是,推遲加載有必要把一切數據加載進來,可是并不構建成一棵UI樹,而是在用到的時分再去生成。

右鍵推遲初始化

另一個當地即是每個控件的右鍵菜單。由于每個右鍵菜單顯現的內容是需求依據控件的類型以及有關的權限來判別的,可是咱們看到右鍵菜單的時分一定是人為進行操作才干顯現出來,因而沒有必要再界面生成的進程中去為每個控件生成對應的右鍵菜單,而是在彈出右鍵菜單時進行有關的判別,推遲右鍵菜單的生成。

化曲為直

咱們曉得,假如要檢查一棵樹的一切節點,常用的辦法即是運用遞歸進行廣度遍歷或許深度遍歷。可是,在樹形節點較多的時分,遍歷本來是十分耗時的。在咱們這個體系中,告警是有必要要最早處理的,因而,我在體系中運用Dictionary類型緩存了每個特點節點與它有關聯的數據類型(ID),然后能夠在發作告警時立刻定位到指定樹形節點。

緩存,仍是緩存

緩存界面

咱們體系是組態的界面,這就約束了界面的生成有必要是動態的。假如咱們選用按需加載的辦法,那么界面的生成即是實時的,如何能夠做到疾速的進行頁面的切換呢?

var tempPanel = _panelCache.CreatePanel(this, formModel, myNode.AgentBm); //創立Panel

在這兒,我專門寫了一個界面的緩存類,假如沒有緩存,則動態創立,假如有緩存,就直接回來緩存的界面。一同,依據界面的最新的翻開時刻和點擊次數,對緩存的界面進行辦理。咱們曉得,全部大型體系中,本來用戶重視的界面也是有限的,通常他們只會重視最重要的幾個界面,最常用的也是這幾個界面。經過緩存的辦理,不但能夠完結界面之間的疾速切換,一同也減少了體系占用的內存。我全部客戶端程序文件巨細緊縮以后在500k以內,而運轉期間占用內存底子維持在50M擺布

緩存數據

檢查上面改造過后的架構,咱們曉得如今獲取數據是在翻開界面以后再去獲取,直到樹立銜接并獲得數據以后,才干在界面上顯現,這個進程通常會耗時1~2秒,網絡差的狀況會更糟。如何才干讓用戶更為疾速的斷定咱們的體系現已運轉了呢?這兒咱們經過一個簡略的辦法,集中服務端經過守時把當時監控到的數據寫入控件的特點中,在體系加載控件的一同把這個值顯現出來,這樣能夠看起來好像是體系立刻獲取到了數據。而由于緩存的值是守時把最新值寫入進入的,這種做法在很大程度上保證了緩存中的數值是準確的。

異步,仍是異步

異步是進步程序響應和用戶領會的不貳法寶。C#中的控件和大多數流操作類等都供給了支持異步操作的辦法:BeginXXX和EndXXX.它的原理也十分簡略,運用BeginXXX時,把操作參加線程池,履行完結以后調用一個回調函數。

一個用戶領會杰出的體系,應當能夠合理的運用異步操作,保證履行UI更新時以及履行耗時的操作時不會堵塞。大多數人在寫代碼的時分,老是直接進行調用,在控件較少或許完結簡略使命的時分,你通常都感受不出來,可是在控件數量多的時分,咱們很簡略就感受到界面卡,不流通。

我在新體系開發的時分,就有認識的在控件加載、控件數據改寫、控件告警狀況切換等操作中運用了異步的操作,讓體系在翻開界面時徹底感受不到卡的跡象。

不過運用異步要時刻記住,異步能夠進步用戶領會性,可是不會有性能上的本質提高,假如感受到數據響應有推遲,你仍是得花功夫找到底子的緣由。

歸并處理

界面數據改寫歸并處理

咱們來看看本來界面是如何改寫數據的:

翻開界面->改寫數據->新建一個線程->守時改寫數據->封閉界面->封閉線程。

對Windows體系有滿足了解的人都曉得,新開一個線程都是十分消耗資本的。這種狀況,咱們是能夠在全部體系中,供給一個統一辦理的改寫線程,只需對當時需求改寫的界面進行改寫即可:

改寫線程->判別當時界面是不是存在->守時改寫數據

聯系上述的異步操作,咱們的控件在改寫數據的時分十分的流通。

告警跳轉歸并處理

上面咱們提到了,在體系發作告警時,有必要要跳轉到報警的頁面,這個機制在許多告警并發的時分,就會有十分大的疑問,很也許咱們的體系就會在不一樣的界面中進行跳轉而卡死。關于體系的用戶來說,在1~3秒內的多個告警,咱們本來能夠處理為一個告警,咱們只需往終究一個告警發作的頁面跳轉即可,這樣既達到了相應的作用,也減少了體系的壓力。這即是告警并發時的歸并處理。

視覺詐騙

在一些狀況中,咱們確實短時刻沒有辦法對性能進行提高了,花費的時刻卻要要這么多,這種狀況下,咱們有些啥好的做法呢?

給出提示信息或許進展條

假如咱們常常用手機登入微博、微信等,必定對這些app加載圖像有過一些領會,特別假如你是在網絡較差的狀況下,同樣是要等1分鐘才干加載出圖像,假如這個app沒有任何提示,那么,過了30秒或許20秒,你就有也許受不了把他點掉了,由于你感受它好像現已過了幾分鐘,還有也許遙遙無期;而假如這個app能夠提示當時下載的字節數、當時下載的進展,那么,1分鐘的等候,你好像也能承受,這畢竟是網絡致使的疑問。這即是一種視覺上的詐騙。

在一個體系的加載進程中,有提示信息和沒FF;"> ?提示信息,有進展條和沒進展條,給人感受的速度是不一樣的,即便從實踐的狀況來看這兩者沒有任何不同。

悄悄加載

許多時分,咱們體系的運轉需求從服務器中獲取一些最新的數據,以支持底子的運轉。這部分時刻是你必不可少的,許多人都認為這是沒有任何辦法??;"> ?98化的,本來不然。咱們許多程序本來都供給了一個用戶名和暗碼的輸入框,本來在用戶輸入的進程中,咱們仍是能夠運用的。在彈出登入窗到輸入賬號和暗碼到登入體系的進程中,通常都會有3~5秒的時刻。

我看到許多人寫程序,彈出登錄框就老老實實的彈出,然后在輸入完用戶名和暗碼以后在進行數據的獲取和加載?F;"> ?F??實踐上,咱們現已浪費了這些時刻。假如你能有用運用這3~5秒,那么,你就現已贏在了起跑線。

簡化數據

視覺詐騙的別的一個重要運用,即是在曲線的烘托中。在機房監控中,咱們有些設備的監控比照頻頻,一天發生的數據高達幾萬條,把這么多的數據制作到一條24小?F;"> ?6??的曲線上,咱們將會看到許多鱗次櫛比的點,制作這些點十分的耗時和耗資本。而咱們供給曲線給用戶檢查的意圖是啥呢,是想檢查一天的趨勢變化,過多密布的點本來是沒有必要的,咱們看看下圖,假如數據點更多的話,第二個曲線會愈加密布,看起來會像一條粗大的直線:

經過簡略算法對曲線進行緊縮以后,顯現前史趨勢的速度十分的快,十分的流通。咱們比照上面兩條曲線,本來對用戶來說,或許更喜愛第一條曲線,由于他反響的趨勢更為優美,有木有?

運用單元測驗輔佐開發

在我的博文中,我一向著重運用單元測驗,不管是開發仍是重構。我覺得這個不管是如何著重都不為過的。

在開發的進程,咱們應當有認識的按單元測驗的意圖來構建咱們的函數、類、以及程序集,假如你的函數契合單元測驗需求的話,通常都是比照簡略重構和維護的。別的,咱們開發的進程中,許多時分需求驗證某個功用是不是可用,運用單元測驗,將會很疾速的幫你完結這個驗證操作。我看咱們許多程序員開發功率都不高,特別在開發一個大型體系的時分,喜愛把全部體系開起來調試,或許是在體系里邊加上各種裝備或許條件編譯來進行調試,這種習氣十分欠好。在程序中參加裝備簡略讓程序結構呈現紊亂,代碼的閱覽領會也欠好,許多時分假如咱們忘掉去掉這個裝備,很簡略就對發布的體系發生較大的影響。

運用單元測驗別的一個優點是,咱們能夠隨時針對某個辦法進行性能上的測驗,發現哪些代碼對咱們的體系造成了較大的影響。我習氣連私有的函數也一同參加測驗,以下是調用私有函數的一個輔佐辦法:

public static object InvokePMethod(Type type, string methodName, object classInstance,object[] @params)
{
    const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
    var methodInfo = type.GetMethod(methodName, flags);
    var result = methodInfo.Invoke(classInstance, @params);
    return result;
}

 

供給完善的日志信息

在平時的開發中,我一向跟我的搭檔著重日志的重要性。信任有一定開發經歷的都曉得在體系中寫日志,可是,如何把日志寫好,許多人都掌握不了。在這兒我提幾點主張:

  • 按日志的重要性和具體程度區分等級
  • 供給調試等級和運轉等級的日志
  • 留意記載體系信息和裝備信息
  • 在狀況變化時進行記載
  • 把一樣的信息進行兼并
  • 能夠反響程序運轉的事務邏輯

之前咱們的體系是自個完結的日志組件,我用C#重寫時,引入了NLog日志組件,我覺得這個日志組件十分好用。別的,我還專門供給了一個UI界面的調試窗,以便實施工程師在現場調試的時分能夠疾速定位疑問。

在實踐運轉的進程中,由于有杰出的日志信息,我很快能夠排查許多的疑問,而大多數的疑問都是由于裝備致使的。我一致跟研制的搭檔著重,盡也許的不要信任現場工程師給你的判別,應當要現場工程師供給依據給你,而要供給啥樣的依據,作為一個研制,你才是最明白的。好的日志體系應當能夠依據日志信息精確的定位到疑問,在離線的狀況下能夠最大程度的反響當時體系的裝備、運轉狀況、以及錯誤信息。

優化的成果

終究用C#重寫的客戶端在各方面變現都十分的好,體系十分穩定,全部體系進入在2s擺布,頁面切換在1s擺布,最重要的是,客戶端跟體系的巨細沒有關系,習慣巨細的數據中心。咱們看看新老體系在加載進程中的一個比照:

很明顯,經過上述辦法進行一些優化以后,咱們的體系在各個進程都有了提高,并且經過異步、緩存、詐騙等辦法讓一些進程能夠同步進行,大大加馬上體系的加載和相應。

總結

我希望經過這篇文章,把客戶端優化的一些辦法共享出來,供咱們參閱。這其間沒有啥深邃的常識,也沒有說要你有必要選用如何的編程言語,僅僅是經過一些簡略的辦法,并歸納應用,就能把一個體系的響應速度從4分鐘提高到只需兩秒。當然,咱們還有其他許多的辦法,比方分布式……不管是啥樣的技巧,我覺得有一些底子的準則是要遵循的:

  • 站在用戶的視點思考疑問
  • 永久不要把挑選交給用戶
  • 有必要思考最極端惡?
    來源:機房監控 機房環境監控 機房監控系統 http://www.99yxj.com.cn
售前咨詢

專線:劉剛 13911133352

E-mail:112417434@qq.com

北京金恒智能系統工程技術有限責任公司 版權所有 Copyright 2007-2020 by Create-china.com.cn Inc. All rights reserved.

法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利!

電話:86+10-62104277/2248/4249 傳真:86+10-62104193-819 京ICP備10010038號-2網站XML

智慧機房

在線體驗

CREATE·機房監控 體驗端  用戶名:Admin    密碼:12345 點擊體驗
在線咨詢 電話咨詢
97久久精品无码一区二区天美 | cnⅰnese老女人老熟妇H①| 久久精品女人天堂AV免费观看| 亚洲 欧美 综合 另类 中字| 国产AV无码专区亚洲AV软件| 久久久久成人精品无码中文字幕| 亚洲AV永久无码老湿机男人网| 国产免费AV一区二区三区| 玩弄JAPAN白嫩少妇HD小说| 粉嫩泬一区二区三区| 色噜噜狠狠色综合AV妖精| 成人国成人国产SUV| 蜜桃色欲AV久久无码精品软件| 野花香日本大全免费观看| 久久精品国产亚洲AV麻豆甜| 亚洲乱码尤物193YW最新地址| 激情五月丁香六月综合AVXXXX| 亚洲AV综合色区无码二区爱AV| 豪妇荡乳1一5白玉兰免费下载| 亚洲AV无码国产精品色午夜字幕| 国产又爽又黄又刺激的视频| 色悠久久久久综合先锋影音下载 | 亚洲精品成人无码中文毛片不卡| 幻女FREE性俄罗斯毛片福| 亚洲成熟丰满熟妇高潮XXXXX| 护士趴下光屁股翘臀被打的作文| 亚洲精品无码AV中文字幕电影网| 久久99热只有频精品8| 亚洲中文无码永久免| 久久亚洲精品无码AV| 在线播放免费人成毛片乱码| 妺妺窝人体色444444大粗| 99久久国产自偷自偷免费一区 | 狠狠色综合网站久久久久久久| 亚洲第一狼人天堂网亚洲AV| 久久99热精品免费观看牛牛| 伊人久久大香线蕉在观看| 免费看黑人强伦姧人妻| FREEXXX欧美老妇| 日韩精品免费无码专区| 国产成人亚洲精品无码青| 亚洲AV毛片成人精品| 久久99精品久久久久蜜芽| 夜夜天天噜狠狠爱2019| 男男车车的车车网站W98免费| EEUSS影院鲁丝片A无码| 搡老女人911熟妇老熟女| 国产精品久久久久精品三级| 亚洲成色WWW久久网站夜月| 久久免费99精品国产自在现线| 中文字幕无码毛片免费看| 人妻一本久道久久综合久久鬼色 | 一边做一边喷17P亚洲乱妇| 妺妺坐在我腿上勃起弄了应用| 锕锕锕锕锕锕锕锕好疼小视频软件| 少妇饥渴XXHD麻豆XXHD骆| 国产亚洲无日韩乱码| 亚洲最大AV在线| 欧美激情性XXXXX高清真| 97人妻精品一区二区三区| 人人爽人人爽人人爽| 国产成人综合亚洲AV第一页| 亚洲成AV人综合在线观看| 浪潮AV激情高潮国产精品没电了 | 国产无遮挡裸露视频免费| 亚洲制服丝袜无码AV在线| 欧美一级 片内射欧美A999| YY8090韩国理伦片在线| 特黄三级又爽又粗又大| 精品国精品无码自拍自在线| 亚洲卡1卡2乱码新区仙踪| 免费无码又爽又高潮视频| 丁香五月缴情网站| 亚洲AV一二三四区四色婷婷| 精品国产乱码久久久久软件| 中文字幕AV一区二区三区人妻少| 日本做受高潮好舒服视频| 国产偷窥真人视频在线观看| 伊人精品无码AV一区二区三区| 人妻无码一区二区不卡无码AV| 国产麻豆MD传媒视频| 又湿又紧又大又爽A视频国产| 日本丰满岳乱妇在线观看| 国产亚洲日韩在线三区| 13小男生GAY自慰脱裤子| 熟女性饥渴一区二区三区| 久久97人人超人人超碰超国产 | 四十如虎的丰满熟妇啪啪| 精品亚洲成A人片在线观看| JAGNEXSMAX在日本| 性无码免费一区二区三区屯线| 麻花豆传媒剧国产MV在线观看| 99久久免费只有精品国产| 玩弄放荡人妻一区二区三区| 国精产品一线二线三线区别| 中文字幕天天躁日日躁狠狠躁免费 | 欧美午夜成人片在线观看| 国产精品亚洲VA在线| 中文无码制服丝袜人妻AV| 太太你也不想你丈夫被开除吧| 久久久99精品成人片中文字幕| 成年网站未满十八禁在线观看| 亚洲国产精品久久久久婷婷软件 | 亚洲AⅤ爽爽香蕉久久影片| 免费观看无遮挡WWW的视频| 国产成人综合亚洲AV| 中文字幕AV无码专区第一页| 挺进绝色老师的紧窄小肉六视频| 久久综合狠狠综合久久综合88| 绯色AV永久无码一区二区蜜臀| 亚洲亚洲人成综合网络| 三个男人躁我一个爽视频免费| 国产日韩精品SUV| 亚洲中文久久精品无码WW16| 日本水蜜桃身体乳的美白效果| 精品系列无码一区二区三区 | 亚洲精品人妻无码| 日产无人区一线二线三线新版| 久久99国产亚洲高清观看首页| 大又大粗又爽又黄少妇毛片| 一本一本久久AA综合精品| 天天爽天天狠久久久综合麻豆 | 国产精品亚洲LV粉色| 99久热RE在线精品99 6热| 亚洲AV无码专区在线观看成人| 人妻无码中文字幕一区二区三区| 精品一卡2卡3卡4卡新区在线| 绯色av一区二区三区蜜臀| 中国少妇嫖妓BBWBBW| 亚洲AV成人精品五区| 人与野鲁交XXXⅩ视频| 久久久无码精品国产一区| 国产精品边做奶水狂喷无码| 亚洲综合国产成人丁香五月激情| 熟女乱中文字幕熟女熟妇| 免费人成视频网站在线18| 国语偷拍人妻露脸| 99精品国产在热久久无毒不卡| 亚洲AV无码久久寂寞少妇| 日韩国产欧美亚洲V片| 免费AV资源网站| 狠狠噜天天噜日日噜AV| 隔着衣服吃你的小尖尖作文| 2021国内精品久久久久精免费| 亚洲成AV人片不卡无码| 少妇高潮XXXⅩ白浆699| 女少18XⅩXX性XXXXHD| 精品熟女少妇AⅤ免费久久| 国产精品69人妻无码久久久| JAVA强行VIDEOS| 永久免费AV无码国产网站| 亚洲AV无码成人网站国产网站| 三级日本高清完整版热播| 男女猛烈XX00免费视频试看| 精品毛片高清一区二区三区| 国产精华液一二三区别在哪| 八戒福利WWW资源在线观看| 永久免费AⅤ无码网站在线观看 | 欧美又粗又大XXXXBBBB疯狂| 久久精品人妻少妇一区二区| 国产无线乱码一区二三区| 公天天吃我奶躁我的比视频| 制服中字人妻中字出轨中字| 亚洲成在人线AV| 无人区免费一二三四乱码| 日韩人妻精品一区二区三区视频| 牛和人交VIDEOS欧美3D| 久久亚洲AⅤ精品网站婷婷| 黑人GAY大长雕TUBE| 国产精品国产AV片国产| 成人亚洲综合AV天堂| MM1313亚洲国产精品无码试看| 中美日韩精品激情无码AV| 亚洲日韩乱码中文无码蜜桃臀| 亚洲AV成人无码网站在线 | 精品一区二区三人妻视频| 国产午夜精品一区二区三区极品| 公交车后车座的疯狂的做小 | 亚洲区激情区无码区| 亚洲AV无码片VR一区二区三区| 无码办公室丝袜OL中文字幕| 色又黄又爽18禁免费网站 | 性色AV无码中文AV有码VR| 无码aⅴ精品一区二区三区浪潮| 日韩v亚洲v欧美v精品综合| 情人伊人久久综合亚洲| 女人私密紧致手术视频| 麻豆国产一卡二卡三卡| 久久久噜噜噜WWW成人网| 久久精品国产网红主播| 精品人妻暴躁一区二区三区| 国色天香一卡2卡3卡4卡| 国产强奷糟蹋漂亮邻居在线观看| 国产精品国产自线拍免费| 国产成人无码AⅤ片在线观看导航| 饭桌上故意张开腿让公H| 成人网站亚洲二区乱码| 成人欧美一区二区三区性视频| 边做饭边被躁BD小说| 暴躁少女CSGO图片|