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

多線程優(yōu)化血虧教訓(xùn)!這坑 99% 的人都踩過(guò)

開發(fā) 前端
多線程優(yōu)化就像走鋼絲,看著簡(jiǎn)單,其實(shí)處處都是陷阱。咱得把基礎(chǔ)打扎實(shí),多在實(shí)踐中總結(jié)經(jīng)驗(yàn),遇到問(wèn)題別慌,用調(diào)試工具和性能分析工具慢慢排查。希望大家看完這篇文章,能避開這些坑,在多線程優(yōu)化的路上少走彎路,寫出高效、穩(wěn)定的代碼。

兄弟們,今天咱來(lái)嘮嘮多線程優(yōu)化這事兒。說(shuō)起來(lái)都是淚啊,當(dāng)年我在項(xiàng)目里搞多線程優(yōu)化,那叫一個(gè)自信滿滿,覺(jué)得自己吃透了Java并發(fā)編程,結(jié)果硬生生踩了一堆坑,差點(diǎn)被領(lǐng)導(dǎo)拎去祭天。咱今天就把這些血虧教訓(xùn)掰開了揉碎了,讓大家少走彎路。

一、線程池參數(shù)拍腦袋設(shè)置?坑你沒(méi)商量

剛?cè)胄心菚?huì),聽說(shuō)線程池能提高效率,嘿,那必須用啊!上來(lái)就是newFixedThreadPool(100),心想100個(gè)線程同時(shí)干活,這效率不得起飛?結(jié)果上線沒(méi)兩天,服務(wù)器直接卡死,GC日志跟下雨似的嘩嘩往外冒。

1. 問(wèn)題出在哪?

咱先看看FixedThreadPool的源碼,它用的是無(wú)界隊(duì)列LinkedBlockingQueue。我設(shè)置了100個(gè)核心線程,想著處理100個(gè)任務(wù)夠了吧?可現(xiàn)實(shí)是任務(wù)源源不斷過(guò)來(lái),全往隊(duì)列里塞,隊(duì)列無(wú)限增長(zhǎng),內(nèi)存直接爆掉。就好比你開了個(gè)餐廳,雇了100個(gè)服務(wù)員(核心線程),結(jié)果來(lái)了1000個(gè)客人,你讓他們?nèi)诖髲d等著(無(wú)界隊(duì)列),大廳擠爆了也不管,最后只能關(guān)門大吉。

2. 正確姿勢(shì)是啥?

咱得根據(jù)任務(wù)類型來(lái)設(shè)置參數(shù)。要是CPU密集型任務(wù),線程數(shù)一般設(shè)為CPU核心數(shù)+1,為啥加1呢?因?yàn)榫€程切換也需要時(shí)間,多一個(gè)線程可以在某個(gè)線程阻塞時(shí)頂上。要是IO密集型任務(wù),那就可以多設(shè)點(diǎn),比如CPU核心數(shù)*2。而且隊(duì)列最好用有界隊(duì)列,比如ArrayBlockingQueue,防止內(nèi)存溢出。還有拒絕策略,不能默認(rèn)用AbortPolicy,直接拋異常,咱可以用CallerRunsPolicy,讓調(diào)用者線程來(lái)處理任務(wù),給系統(tǒng)一個(gè)緩沖機(jī)會(huì)。

我后來(lái)在一個(gè)文件處理系統(tǒng)里優(yōu)化線程池,根據(jù)服務(wù)器是8核CPU,任務(wù)是IO密集型,設(shè)置核心線程數(shù)為16,最大線程數(shù)32,隊(duì)列大小200,拒絕策略用CallerRunsPolicy,結(jié)果處理速度提升了3倍,內(nèi)存也穩(wěn)定了。

二、鎖濫用:以為加鎖就安全,性能直接撲街

在處理共享資源時(shí),大家都知道要加鎖,可我之前就犯了個(gè)傻,在一個(gè)高頻調(diào)用的方法里,不管三七二十一,直接給整個(gè)方法加了synchronized鎖。想著這下安全了,結(jié)果性能測(cè)試的時(shí)候,吞吐量直接腰斬,線程競(jìng)爭(zhēng)特別激烈。

1. 鎖的粒度沒(méi)控制好

整個(gè)方法加鎖,相當(dāng)于把整個(gè)房間都鎖起來(lái),每次只能一個(gè)人進(jìn)去,其他人都得在外面等著。其實(shí)咱可以縮小鎖的范圍,只對(duì)共享資源加鎖。比如有個(gè)訂單處理類,里面有個(gè)共享的訂單號(hào)生成變量,我之前給整個(gè)處理訂單的方法加鎖,后來(lái)改成只在生成訂單號(hào)的代碼塊上加鎖,性能立馬提升了50%。

2. 鎖的類型沒(méi)選對(duì)

synchronized是獨(dú)占鎖,競(jìng)爭(zhēng)激烈時(shí)效率不高。咱可以用ReentrantLock,它支持公平鎖和非公平鎖,還能嘗試獲取鎖。比如在一個(gè)高并發(fā)的庫(kù)存扣減場(chǎng)景,用ReentrantLock的tryLock方法,避免線程長(zhǎng)時(shí)間阻塞。還有讀寫鎖ReadWriteLock,讀多寫少的場(chǎng)景用它,讀的時(shí)候可以多個(gè)線程同時(shí)讀,寫的時(shí)候才加鎖,效率杠杠的。

我之前在一個(gè)緩存系統(tǒng)里,用synchronized來(lái)控制對(duì)緩存的讀寫,結(jié)果讀操作都被阻塞了。換成ReadWriteLock后,讀操作的吞吐量提升了80%,寫操作雖然稍微慢了點(diǎn),但整體性能大幅提升。

三、盲目追求高并發(fā):線程越多越好?圖樣圖森破

那時(shí)候總覺(jué)得線程越多,并行度越高,性能就越好。于是在一個(gè)任務(wù)處理系統(tǒng)里,開了200個(gè)線程去處理任務(wù),結(jié)果任務(wù)處理速度不僅沒(méi)提升,反而下降了,CPU利用率倒是100%,但系統(tǒng)就是卡得不行。

1. 上下文切換惹的禍

CPU核心數(shù)是有限的,比如8核CPU,同時(shí)只能運(yùn)行8個(gè)線程。開了200個(gè)線程,CPU就得在這200個(gè)線程之間頻繁切換,每次切換都需要保存當(dāng)前線程的狀態(tài),加載下一個(gè)線程的狀態(tài),這就叫上下文切換。大量的上下文切換消耗了大量的CPU資源,真正處理任務(wù)的時(shí)間反而少了。就好比你雇了200個(gè)工人,但只有8臺(tái)機(jī)器,工人要不斷地?fù)寵C(jī)器,搶來(lái)?yè)屓ィ嬲苫畹臅r(shí)間沒(méi)多少。

2. 怎么確定合適的線程數(shù)?

咱可以用一個(gè)公式:線程數(shù) = CPU核心數(shù) * (1 + 平均等待時(shí)間 / 平均工作時(shí)間)。比如一個(gè)任務(wù),平均工作時(shí)間是1ms,平均等待IO的時(shí)間是9ms,那么線程數(shù) = 8 * (1 + 9/1) = 80。這樣可以讓CPU在等待IO的時(shí)候,去處理其他線程的任務(wù),提高利用率。

后來(lái)我在那個(gè)任務(wù)處理系統(tǒng)里,把線程數(shù)從200降到80,結(jié)果任務(wù)處理速度提升了2倍,CPU利用率也降到了合理范圍,系統(tǒng)終于不卡了。

四、偽共享:緩存行對(duì)齊沒(méi)考慮,性能偷偷溜走

這是個(gè)比較隱蔽的坑,我也是在做性能分析的時(shí)候,通過(guò)工具才發(fā)現(xiàn)的。有兩個(gè)共享變量,本來(lái)以為沒(méi)啥關(guān)系,結(jié)果它們被放到同一個(gè)緩存行里,導(dǎo)致頻繁的緩存失效,性能下降。

1. 啥是偽共享?

CPU緩存是以緩存行為單位的,通常是64字節(jié)。如果兩個(gè)不同的變量被放到同一個(gè)緩存行里,當(dāng)一個(gè)線程修改了其中一個(gè)變量,另一個(gè)變量所在的緩存行也會(huì)失效,導(dǎo)致另一個(gè)線程不得不從主內(nèi)存重新讀取數(shù)據(jù)。比如有兩個(gè)long類型的變量,每個(gè)8字節(jié),放在一起就是16字節(jié),一個(gè)緩存行可以放8個(gè)這樣的變量。如果兩個(gè)線程分別修改這兩個(gè)變量,就會(huì)導(dǎo)致緩存行頻繁失效。

2. 怎么解決?

咱可以在變量之間填充一些無(wú)用的變量,讓它們不在同一個(gè)緩存行里。比如Java里可以用@Contended注解,不過(guò)需要在JVM啟動(dòng)時(shí)加上-XX:EnableContended參數(shù)。或者自己手動(dòng)填充,比如定義一個(gè)類,里面有幾個(gè)long類型的變量,把需要避免偽共享的變量隔開。

我在一個(gè)計(jì)數(shù)器類里,有兩個(gè)計(jì)數(shù)器變量count1和count2,被多個(gè)線程分別修改,結(jié)果發(fā)現(xiàn)它們?cè)谕粋€(gè)緩存行里。后來(lái)在中間填充了7個(gè)long類型的變量,讓每個(gè)變量單獨(dú)占一個(gè)緩存行,性能提升了30%。

五、volatile用錯(cuò)地方:以為能保證原子性,結(jié)果出大問(wèn)題

知道volatile能保證可見性,就以為它能保證原子性,在一個(gè)自增操作里用了volatile變量,結(jié)果并發(fā)情況下,數(shù)值還是不對(duì)。

1. volatile的特性

volatile只能保證可見性,不能保證原子性。比如i++這個(gè)操作,實(shí)際上分為讀取、加1、寫入三個(gè)步驟,這三個(gè)步驟不是原子的,在多線程情況下,可能會(huì)出現(xiàn)丟失更新的情況。

2. 正確使用場(chǎng)景

volatile適合用在狀態(tài)標(biāo)志位,比如一個(gè)線程等待另一個(gè)線程完成某個(gè)操作,用volatile變量來(lái)通知。如果需要原子性操作,還是得用synchronized或者AtomicInteger等原子類。

我之前在一個(gè)狀態(tài)機(jī)里,用volatile變量來(lái)控制狀態(tài)轉(zhuǎn)換,結(jié)果在并發(fā)情況下,狀態(tài)轉(zhuǎn)換出現(xiàn)了混亂。后來(lái)?yè)Q成用synchronized來(lái)保護(hù)狀態(tài)轉(zhuǎn)換的代碼塊,問(wèn)題就解決了。

六、線程安全的單例模式:雙重檢查鎖定,鎖的對(duì)象錯(cuò)了

寫單例模式的時(shí)候,想著用雙重檢查鎖定來(lái)提高效率,結(jié)果鎖的對(duì)象用了類的實(shí)例,而不是類的Class對(duì)象,導(dǎo)致出現(xiàn)多個(gè)實(shí)例的情況。

1. 正確的雙重檢查鎖定

正確的做法是鎖的對(duì)象是類的Class對(duì)象,而且實(shí)例變量要用volatile修飾,防止指令重排。比如:

public class Singleton {
    privatevolatilestatic Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

2. 為啥鎖對(duì)象不能是實(shí)例

如果鎖的對(duì)象是實(shí)例,在實(shí)例還沒(méi)創(chuàng)建的時(shí)候,多個(gè)線程同時(shí)進(jìn)入,都去創(chuàng)建實(shí)例,就會(huì)出現(xiàn)多個(gè)實(shí)例的情況。而用Class對(duì)象,不管實(shí)例有沒(méi)有創(chuàng)建,鎖都是唯一的。

我之前就是鎖的對(duì)象錯(cuò)了,導(dǎo)致系統(tǒng)里出現(xiàn)了多個(gè)單例實(shí)例,引發(fā)了一系列奇怪的問(wèn)題,排查了好久才發(fā)現(xiàn)是這個(gè)問(wèn)題。

七、總結(jié):多線程優(yōu)化的正確姿勢(shì)

說(shuō)了這么多坑,咱來(lái)總結(jié)一下多線程優(yōu)化的正確姿勢(shì):

  1. 線程池參數(shù)別拍腦袋,根據(jù)任務(wù)類型和系統(tǒng)資源仔細(xì)計(jì)算,用有界隊(duì)列和合適的拒絕策略。
  2. 鎖的粒度要小,類型要選對(duì),能不用鎖就不用鎖,能用原子類就用原子類。
  3. 線程數(shù)不是越多越好,考慮上下文切換的開銷,用公式計(jì)算合適的線程數(shù)。
  4. 注意偽共享問(wèn)題,尤其是在高并發(fā)場(chǎng)景下,用 @Contended 或者手動(dòng)填充來(lái)避免。
  5. volatile 和 synchronized、原子類的適用場(chǎng)景要分清,別搞錯(cuò)了。
  6. 寫線程安全的代碼時(shí),細(xì)節(jié)很重要,比如單例模式的雙重檢查鎖定,鎖的對(duì)象和 volatile 修飾符都不能少。

多線程優(yōu)化就像走鋼絲,看著簡(jiǎn)單,其實(shí)處處都是陷阱。咱得把基礎(chǔ)打扎實(shí),多在實(shí)踐中總結(jié)經(jīng)驗(yàn),遇到問(wèn)題別慌,用調(diào)試工具和性能分析工具慢慢排查。希望大家看完這篇文章,能避開這些坑,在多線程優(yōu)化的路上少走彎路,寫出高效、穩(wěn)定的代碼。

責(zé)任編輯:武曉燕 來(lái)源: 石杉的架構(gòu)筆記
相關(guān)推薦

2021-10-15 06:49:37

MySQL

2024-09-29 09:27:10

2024-09-27 09:31:25

2021-09-25 13:05:10

MYSQL開發(fā)數(shù)據(jù)庫(kù)

2025-05-27 08:45:00

2025-05-23 08:00:00

VLAN虛擬局域網(wǎng)網(wǎng)絡(luò)

2025-04-03 12:30:00

C 語(yǔ)言隱式類型轉(zhuǎn)換代碼

2019-10-30 14:44:41

Prometheus開源監(jiān)控系統(tǒng)

2025-10-15 02:45:00

系統(tǒng)分表接口

2024-10-08 08:14:08

用戶生命周期分析服務(wù)

2015-03-24 16:29:55

默認(rèn)線程池java

2022-04-26 21:49:55

Spring事務(wù)數(shù)據(jù)庫(kù)

2024-04-01 08:05:27

Go開發(fā)Java

2024-01-22 09:16:47

多線程性能優(yōu)化

2017-07-17 15:46:20

Oracle并行機(jī)制

2019-09-25 15:30:15

2024-06-26 10:37:05

2023-12-14 17:34:22

Kubernetes集群K8s

2025-06-03 06:30:05

2025-02-06 07:45:44

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲一级av无码毛片精品| 亚洲欧美在线网| 日韩精品成人一区| 婷婷精品视频| 色哟哟精品一区| 日本高清一区| 国产探花精品一区二区| 欧美高清成人| 日本午夜一区二区| 久久精品电影网| 国产成人av片| 亚洲天堂一区二区| 亚洲乱码国产乱码精品精可以看| 91国产在线免费观看| 超碰中文字幕在线| 国产精品久久久久久久久久10秀 | 九热视频在线观看| 91最新在线视频| 久久久www免费人成精品| 国产精品成人va在线观看| 一区二区三区人妻| 你懂的视频在线免费| 国产专区综合网| 日本一区二区在线免费播放| 亚洲妇女无套内射精| 成人做爰视频www网站小优视频| 中文字幕在线不卡视频| 久久久久久久久久码影片| 97人妻精品一区二区三区视频 | 男女曰b免费视频| 最新日本在线观看| 国产精品乱码一区二区三区软件| 国产三区精品| www.国产视频| 久久精品国产网站| 最新91在线视频| 国产大尺度视频| 日本精品久久| 亚洲国产cao| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 一级片中文字幕| 99久久综合| 日韩欧美二区三区| 农村妇女精品一二区| 9999热视频在线观看| 中文字幕亚洲欧美在线不卡| 国产欧美欧洲| 国产人妖在线播放| 男男视频亚洲欧美| 97av在线视频免费播放| 欧美性生交xxxxx| 国产成人午夜性a一级毛片| 亚洲一区二区三区美女| 日韩最新中文字幕| 色视频在线观看| 国产福利一区二区三区视频在线| 成人激情视频网| 无码人妻av一区二区三区波多野| 在线观看视频免费一区二区三区| 久久成人在线视频| 你懂得视频在线观看| 制服丝袜日韩| 日韩经典第一页| 国产极品在线视频| 特级毛片在线| 亚洲欧美日韩国产手机在线| 日韩色妇久久av| 精品视频二区| 久久丝袜美腿综合| 欧美亚洲精品日韩| 国产免费视频在线| 欧美国产精品一区| 麻豆91蜜桃| 在线视频精品免费| 久久精选视频| 国产成人精品一区二区| 美女网站视频色| 欧美日韩水蜜桃| 中文字幕日韩欧美在线视频| 亚洲一级片在线播放| 欧美丝袜激情| 日韩中文字幕网| 来吧亚洲综合网| 亚洲欧美色图| 欧美成人激情视频免费观看| 九九热精彩视频| 伊人久久大香线蕉av不卡| 亚洲精品理论电影| 成都免费高清电影| 精品久久久久久久久久久下田| 亚洲女同精品视频| 特级西西人体高清大胆| 国产精品传媒精东影业在线 | 成人精品在线视频| 91在线视频国产| 黄网站免费久久| 91久久国产自产拍夜夜嗨| www.四虎在线观看| 久久―日本道色综合久久| 日韩免费毛片| 国产写真视频在线观看| 亚洲一级二级三级在线免费观看| www插插插无码视频网站| 日韩免费福利视频| 欧美喷潮久久久xxxxx| 无码人妻丰满熟妇区毛片蜜桃精品| 91精品啪在线观看国产爱臀| 亚洲免费av网址| 欧美xxxooo| 亚洲伦伦在线| 国产精品一区二区久久久久| 亚洲毛片在线播放| 久久久久久久久久看片| 欧美一级中文字幕| 最新欧美色图| 91精品国产综合久久精品 | 嫩呦国产一区二区三区av| 亚洲国产欧美一区二区丝袜黑人 | 欧美一级黄色片| 男人日女人视频网站| 国产精品高清乱码在线观看| 一区二区三区四区不卡在线 | 久久人人爽av| 懂色av一区二区| 一区二区成人精品| 豆国产97在线 | 亚洲| 日韩福利电影在线| 国产精品一区二区三区免费观看| 欧美brazzers| 国产成人在线视频网址| 欧美人与物videos另类| 伊人电影在线观看| 欧美三级一区二区| 国产 欧美 在线| 尤物在线精品| 亚洲在线一区二区| a√资源在线| 欧美性开放视频| 精品国产乱码久久久久夜深人妻| 日韩黄色大片| 欧洲成人性视频| 亚洲成熟女性毛茸茸| 国产精品久久久久久久久免费相片| 国产深夜男女无套内射| 亚洲精品黑牛一区二区三区| 亚洲人a成www在线影院| 国产一级片毛片| 不卡电影免费在线播放一区| 熟女熟妇伦久久影院毛片一区二区| 日韩免费va| 亚洲女成人图区| 国产日产精品一区二区三区| 成人蜜臀av电影| 欧美这里只有精品| 香蕉成人app| 久久影院资源网| 91九色蝌蚪91por成人| 成人免费一区二区三区在线观看| 中文字幕永久视频| 国产a久久精品一区二区三区| 国内免费精品永久在线视频| www.亚洲天堂.com| 亚洲久本草在线中文字幕| 三级av免费观看| 日韩精品2区| 国产在线a不卡| 午夜视频在线观看网站| 欧美私模裸体表演在线观看| 男人天堂av电影| 久久久久久亚洲精品杨幂换脸| 久久国产精品亚洲va麻豆| 日本aa在线| 精品网站999www| 性欧美丰满熟妇xxxx性仙踪林| 国内精品美女在线观看| 岛国一区二区三区高清视频| a毛片不卡免费看片| 亚洲黄色www| 日韩精品一区二区亚洲av| 久久综合色天天久久综合图片| 内射国产内射夫妻免费频道| 九九热爱视频精品视频| 国产精品福利小视频| 二区三区在线| 欧美日韩国产在线观看| 69xx绿帽三人行| 东方aⅴ免费观看久久av| 人妻无码久久一区二区三区免费| 日韩中出av| 国产精品久久久久9999| 最近高清中文在线字幕在线观看| 日韩欧美专区在线| 午夜精品久久久久久久久久久久久蜜桃| av影院午夜一区| 日本成人中文字幕在线| 香蕉精品视频在线观看| 99porn视频在线| 漫画在线观看av| 亚洲最新视频在线| 午夜精品久久久久久久99老熟妇| 亚洲国产一区二区在线播放| 少妇按摩一区二区三区| 久久99九九99精品| 成人午夜精品久久久久久久蜜臀| 欧美1区2区3区4区| 国产va免费精品高清在线观看| 97超碰资源站在线观看| 国产视频精品久久久| 在线免费观看视频网站| 亚洲综合久久久久| 日韩一级av毛片| 国产福利91精品一区二区三区| 鲁一鲁一鲁一鲁一色| 男人揉女人奶房视频60分| 国产在线观看免费| 欧美日韩一区久久| 精品亚洲永久免费| 中文字幕精品在线不卡| 漂亮人妻被黑人久久精品| 日韩精品午夜视频| av日韩在线看| 国产无一区二区| 国产伦精品一区二区三区在线观看| 日韩久久久久久久| 精品视频在线观看免费观看| 91国内揄拍国内精品对白| 久操视频在线观看| 亚洲精品在线观看www| 国产又大又黄又爽| 精品国产乱码久久久久久天美| 成人涩涩小片视频日本| 26uuu亚洲综合色欧美| 91精品国产三级| 国产农村妇女精品一区二区| 久久久久亚洲av无码专区喷水| 国产精品嫩草影院在线看| 国产精品高清一区二区三区| 亚洲资源在线| 国产精品亚洲综合天堂夜夜| 成人免费看视频网站| 午夜精品一区二区三区视频免费看| 精品黄色免费中文电影在线播放| 亚洲欧美一区二区精品久久久| 国产精品久久久久久久免费| 欧美日韩一卡二卡三卡| 永久免费无码av网站在线观看| 亚洲第一福利一区| 欧美日韩综合一区二区| 日韩毛片视频在线看| 香蕉久久久久久久| 国产精品三级av| 成人免费无遮挡无码黄漫视频| 99精品欧美一区二区三区小说| 一区二区三区四区影院| 国产毛片精品国产一区二区三区| 高清av免费看| 免费一级欧美片在线观看| 丰满少妇被猛烈进入高清播放| 欧美欧美天天天天操| 自拍偷拍一区二区三区| 欧美伊人久久| 日韩欧美一级在线| 综合天堂久久久久久久| 欧美一级爱爱视频| 国内成人在线| 国产主播自拍av| 日韩一级免费| 久久网站免费视频| 日韩精品成人一区二区三区| 国产理论在线播放| 免费观看在线综合| 免费av不卡在线| 国产精品白丝jk白祙喷水网站| 亚洲视频在线不卡| 本田岬高潮一区二区三区| 日韩精品一区二区三区在线播放| 一级特黄aa大片| 欧美一卡二卡三卡四卡| 欧美成人午夜激情在线| 久久久久久久久久91| 免费一区二区| 国产精品免费在线| 青青操综合网| 久久一区二区精品| 免费久久精品| 亚洲欧美日韩精品久久久| 久久中文字幕av| 妺妺窝人体色www看人体| 亚洲人www| 可以免费在线看黄的网站| 久久精品国产一区二区| 国产精品欧美性爱| 久久综合狠狠综合久久综合88| 日本xxxxxxxxx18| 中文字幕视频一区| 久久久久亚洲AV| 欧美日韩另类视频| 中文字幕久久久久| 精品国产乱码久久久久久免费| 神马精品久久| 深夜福利亚洲导航| 黄页网站在线| 日本中文字幕久久看| 婷婷精品久久久久久久久久不卡| 99久久精品久久久久久ai换脸| 亚洲婷婷丁香| 日本丰满大乳奶| 在线成人黄色| 北条麻妃av高潮尖叫在线观看| 久久99久久精品| 在线观看一区二区三区四区| 国产午夜亚洲精品不卡| 欧美日韩亚洲国产另类| 色激情天天射综合网| 国产www免费观看| 亚洲视频在线视频| 国产盗摄在线视频网站| 国产精品自拍小视频| 精品久久对白| 国产日产欧美一区二区| 蜜臀久久99精品久久久画质超高清 | 欧美成人aaa片一区国产精品| 日本乱码高清不卡字幕| www天堂在线| 综合久久五月天| 一区二区三区四区日本视频| 亚洲一区二区三区乱码aⅴ| 国产精品一区二区三区av麻| 丁香六月激情婷婷| 国产乱人伦偷精品视频不卡| 内射中出日韩无国产剧情| 一区二区三区在线视频免费| 性高潮视频在线观看| 亚洲精选在线观看| 国产伦久视频在线观看| 91精品国产91久久久久青草| 亚洲这里只有精品| 精品制服美女丁香| 久操视频在线观看免费| 午夜精品久久久久久久99水蜜桃| 亚洲精品字幕在线观看| 欧美成人高清视频| 国产剧情一区二区在线观看| 亚洲春色综合另类校园电影| 久久美女性网| 国产精品1000部啪视频| 欧美日韩中文字幕| 午夜性色福利影院| 午夜精品一区二区三区在线视 | 欧美激情影院| 男人添女人荫蒂免费视频| 国产精品中文欧美| www.日本高清视频| 在线观看中文字幕不卡| 国产福利免费在线观看| 日韩av快播网址| 日韩中文av| 欧美成人免费高清视频| 久久综合精品国产一区二区三区 | 欧美激情理论| 五月婷婷之婷婷| 中文字幕人成不卡一区| 国产精品一品二区三区的使用体验| 亚洲天堂网在线观看| 写真福利精品福利在线观看| 欧美一级片免费观看| 日韩在线一区二区三区| 欧美18—19性高清hd4k| 狠狠干狠狠久久| 国产露出视频在线观看| 国产成人精品久久久| 日韩av在线播放网址| 久久久久久久高清| 一区二区三区毛片| 老牛影视av牛牛影视av| 久久频这里精品99香蕉| 亚洲理论电影片| 国产淫片av片久久久久久| 最新国产精品久久精品| 精品人妻一区二区三区浪潮在线| 久久久亚洲精品视频| 亚洲人挤奶视频| 色噜噜狠狠永久免费| 亚洲精品国产精华液| 日本黄色三级视频| 欧美在线一级视频| 亚洲一区二区日韩| 黄色网址在线视频| 在线观看成人免费视频| 日本在线看片免费人成视1000| 91精品国产91久久久久青草| 国产亚洲一级| www成人啪啪18软件| 日韩一区二区三| av中文字幕电影在线看| 日韩理论片在线观看| 国产成人免费视频精品含羞草妖精 | 中文字幕免费播放| 欧美精品免费看| 国产一区二区精品久|