欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

在面試之前多看看有關(guān)公司的面試資料,對之后的面試會很有幫助。今天就給大家分享15道蝦皮服務(wù)端的面試真題(附答案解析),快來看看自己的水平到底如何吧,希望能幫助到大家!

1. 排序鏈表

給你鏈表的頭結(jié)點head ,請將其按升序排列并返回排序后的鏈表 。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

實例1:

輸入:head = [4,2,1,3] 輸出:[1,2,3,4]

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

實例2:

輸入:head = [-1,5,3,4,0] 輸出:[-1,0,3,4,5]

這道題可以用雙指針+歸并排序算法解決,主要以下四個步驟

 1. 快慢指針法,遍歷鏈表找到中間節(jié)點

 2. 中間節(jié)點切斷鏈表

 3. 分別用歸并排序排左右子鏈表

 4. 合并子鏈表

完整代碼如下:

class Solution {     public ListNode sortList(ListNode head) {         //如果鏈表為空,或者只有一個節(jié)點,直接返回即可,不用排序         if (head == null || head.next == null)             return head;                  //快慢指針移動,以尋找到中間節(jié)點         ListNode slow = head;         ListNode fast = head;         while(fast.next!=null && fast.next.next !=null){           fast = fast.next.next;           slow = slow.next;         }         //找到中間節(jié)點,slow節(jié)點的next指針,指向mid         ListNode mid = slow.next;         //切斷鏈表         slow.next = null;                  //排序左子鏈表         ListNode left = sortList(head);         //排序左子鏈表         ListNode right = sortList(mid);                  //合并鏈表         return merge(left,right);     }          public ListNode merge(ListNode left, ListNode right) {        ListNode head = new ListNode(0);        ListNode temp = head;        while (left != null && right != null) {            if (left.val <= right.val) {                 temp.next = left;                 left = left.next;             } else {                 temp.next = right;                 right = right.next;             }             temp = temp.next;         }         if (left != null) {             temp.next = left;         } else if (right != null) {             temp.next = right;         }         return head.next;     } }

2.對稱與非對稱加密算法的區(qū)別

先復(fù)習(xí)一下相關(guān)概念:

  • 明文:指沒有經(jīng)過加密的信息/數(shù)據(jù)。

  • 密文:明文被加密算法加密之后,會變成密文,以確保數(shù)據(jù)安全。

  • 密鑰:是一種參數(shù),它是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的參數(shù)。密鑰分為對稱密鑰與非對稱密鑰。

  • 加密:將明文變成密文的過程。

  • 解密:將密文還原為明文的過程。

對稱加密算法:加密和解密使用相同密鑰的加密算法。常見的對稱加密算法有AES、3DES、DES、RC5、RC6等。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

非對稱加密算法:非對稱加密算法需要兩個密鑰(公開密鑰和私有密鑰)。公鑰與私鑰是成對存在的,如果用公鑰對數(shù)據(jù)進行加密,只有對應(yīng)的私鑰才能解密。主要的非對稱加密算法有:RSA、Elgamal、DSA、D-H、ECC

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

3. TCP如何保證可靠性

  • 首先,TCP的連接是基于三次握手,而斷開則是四次揮手。確保連接和斷開的可靠性。

  • 其次,TCP的可靠性,還體現(xiàn)在有狀態(tài);TCP會記錄哪些數(shù)據(jù)發(fā)送了,哪些數(shù)據(jù)被接受了,哪些沒有被接受,并且保證數(shù)據(jù)包按序到達,保證數(shù)據(jù)傳輸不出差錯。

  • 再次,TCP的可靠性,還體現(xiàn)在可控制。它有報文校驗、ACK應(yīng)答、超時重傳(發(fā)送方)、失序數(shù)據(jù)重傳(接收方)、丟棄重復(fù)數(shù)據(jù)、流量控制(滑動窗口)和擁塞控制等機制。

4. 聊聊五種IO模型

4.1 阻塞IO 模型

假設(shè)應(yīng)用程序的進程發(fā)起IO調(diào)用,但是如果內(nèi)核的數(shù)據(jù)還沒準備好的話,那應(yīng)用程序進程就一直在阻塞等待,一直等到內(nèi)核數(shù)據(jù)準備好了,從內(nèi)核拷貝到用戶空間,才返回成功提示,此次IO操作,稱之為阻塞IO。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

4.2 非阻塞IO模型

如果內(nèi)核數(shù)據(jù)還沒準備好,可以先返回錯誤信息給用戶進程,讓它不需要等待,而是通過輪詢的方式再來請求。這就是非阻塞IO,流程圖如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

4.3 IO多路復(fù)用模型

IO多路復(fù)用之select

應(yīng)用進程通過調(diào)用select函數(shù),可以同時監(jiān)控多個fd,在select函數(shù)監(jiān)控的fd中,只要有任何一個數(shù)據(jù)狀態(tài)準備就緒了,select函數(shù)就會返回可讀狀態(tài),這時應(yīng)用進程再發(fā)起recvfrom請求去讀取數(shù)據(jù)。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

select有幾個缺點:

  • 最大連接數(shù)有限,在Linux系統(tǒng)上一般為1024。

  • select函數(shù)返回后,是通過遍歷fdset,找到就緒的描述符fd。

IO多路復(fù)用之epoll

為了解決select存在的問題,多路復(fù)用模型epoll誕生,它采用事件驅(qū)動來實現(xiàn),流程圖如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

epoll先通過epoll_ctl()來注冊一個fd(文件描述符),一旦基于某個fd就緒時,內(nèi)核會采用回調(diào)機制,迅速激活這個fd,當(dāng)進程調(diào)用epoll_wait()時便得到通知。這里去掉了遍歷文件描述符的坑爹操作,而是采用監(jiān)聽事件回調(diào)的機制。這就是epoll的亮點。

4.4 IO模型之信號驅(qū)動模型

信號驅(qū)動IO不再用主動詢問的方式去確認數(shù)據(jù)是否就緒,而是向內(nèi)核發(fā)送一個信號(調(diào)用sigaction的時候建立一個SIGIO的信號),然后應(yīng)用用戶進程可以去做別的事,不用阻塞。當(dāng)內(nèi)核數(shù)據(jù)準備好后,再通過SIGIO信號通知應(yīng)用進程,數(shù)據(jù)準備好后的可讀狀態(tài)。應(yīng)用用戶進程收到信號之后,立即調(diào)用recvfrom,去讀取數(shù)據(jù)。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

4.5 IO 模型之異步IO(AIO)

AIO實現(xiàn)了IO全流程的非阻塞,就是應(yīng)用進程發(fā)出系統(tǒng)調(diào)用后,是立即返回的,但是立即返回的不是處理結(jié)果,而是表示提交成功類似的意思。等內(nèi)核數(shù)據(jù)準備好,將數(shù)據(jù)拷貝到用戶進程緩沖區(qū),發(fā)送信號通知用戶進程IO操作執(zhí)行完畢。

流程如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

5. hystrix 工作原理

Hystrix 工作流程圖如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

1、構(gòu)建命令

Hystrix 提供了兩個命令對象:HystrixCommand和HystrixObservableCommand,它將代表你的一個依賴請求任務(wù),向構(gòu)造函數(shù)中傳入請求依賴所需要的參數(shù)。

2、執(zhí)行命令

有四種方式執(zhí)行Hystrix命令。分別是:

  • R execute():同步阻塞執(zhí)行的,從依賴請求中接收到單個響應(yīng)。

  • Future queue():異步執(zhí)行,返回一個包含單個響應(yīng)的Future對象。

  • Observable observe():創(chuàng)建Observable后會訂閱Observable,從依賴請求中返回代表響應(yīng)的Observable對象

  • Observable toObservable():cold observable,返回一個Observable,只有訂閱時才會執(zhí)行Hystrix命令,可以返回多個結(jié)果

3、檢查響應(yīng)是否被緩存

如果啟用了 Hystrix緩存,任務(wù)執(zhí)行前將先判斷是否有相同命令執(zhí)行的緩存。如果有則直接返回包含緩存響應(yīng)的Observable;如果沒有緩存的結(jié)果,但啟動了緩存,將緩存本次執(zhí)行結(jié)果以供后續(xù)使用。

4、檢查回路器是否打開 回路器(circuit-breaker)和保險絲類似,保險絲在發(fā)生危險時將會燒斷以保護電路,而回路器可以在達到我們設(shè)定的閥值時觸發(fā)短路(比如請求失敗率達到50%),拒絕執(zhí)行任何請求。

如果回路器被打開,Hystrix將不會執(zhí)行命令,直接進入Fallback處理邏輯。

5、檢查線程池/信號量/隊列情況 Hystrix 隔離方式有線程池隔離和信號量隔離。當(dāng)使用Hystrix線程池時,Hystrix 默認為每個依賴服務(wù)分配10個線程,當(dāng)10個線程都繁忙時,將拒絕執(zhí)行命令,,而是立即跳到執(zhí)行fallback邏輯。

6、執(zhí)行具體的任務(wù) 通過HystrixObservableCommand.construct() 或者 HystrixCommand.run() 來運行用戶真正的任務(wù)。

7、計算回路健康情況 每次開始執(zhí)行command、結(jié)束執(zhí)行command以及發(fā)生異常等情況時,都會記錄執(zhí)行情況,例如:成功、失敗、拒絕和超時等指標(biāo)情況,會定期處理這些數(shù)據(jù),再根據(jù)設(shè)定的條件來判斷是否開啟回路器。

8、命令失敗時執(zhí)行Fallback邏輯 在命令失敗時執(zhí)行用戶指定的 Fallback 邏輯。上圖中的斷路、線程池拒絕、信號量拒絕、執(zhí)行執(zhí)行、執(zhí)行超時都會進入Fallback處理。

9、返回執(zhí)行結(jié)果 原始對象結(jié)果將以O(shè)bservable形式返回,在返回給用戶之前,會根據(jù)調(diào)用方式的不同做一些處理。

6. 延時場景處理

日常開發(fā)中,我們經(jīng)常遇到這種業(yè)務(wù)場景,如:外賣訂單超30分鐘未支付,則自動取消訂單;用戶注冊成功15分鐘后,發(fā)短信消息通知用戶等等。這就是延時任務(wù)處理場景。針對此類場景我們主要有以下幾種處理方案:

  • JDK的DelayQueue延遲隊列

  • 時間輪算法

  • 數(shù)據(jù)庫定時任務(wù)(如Quartz)

  • Redis ZSet 實現(xiàn)

  • MQ 延時隊列實現(xiàn)

7.https請求過程

  • HTTPS = HTTP + SSL/TLS,即用SSL/TLS對數(shù)據(jù)進行加密和解密,Http進行傳輸。

  • SSL,即Secure Sockets Layer(安全套接層協(xié)議),是網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。

  • TLS,即Transport Layer Security(安全傳輸層協(xié)議),它是SSL 3.0的后續(xù)版本。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)
http請求流程

1、用戶在瀏覽器里輸入一個https網(wǎng)址,然后連接到server的443端口。

2、服務(wù)器必須要有一套數(shù)字證書,可以自己制作,也可以向組織申請,區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過。這套證書其實就是一對公鑰和私鑰。

3、服務(wù)器將自己的數(shù)字證書(含有公鑰)發(fā)送給客戶端。

4、客戶端收到服務(wù)器端的數(shù)字證書之后,會對其進行檢查,如果不通過,則彈出警告框。如果證書沒問題,則生成一個密鑰(對稱加密),用證書的公鑰對它加密。

5、客戶端會發(fā)起HTTPS中的第二個HTTP請求,將加密之后的客戶端密鑰發(fā)送給服務(wù)器。

6、服務(wù)器接收到客戶端發(fā)來的密文之后,會用自己的私鑰對其進行非對稱解密,解密之后得到客戶端密鑰,然后用客戶端密鑰對返回數(shù)據(jù)進行對稱加密,這樣數(shù)據(jù)就變成了密文。

7、服務(wù)器將加密后的密文返回給客戶端。

8、客戶端收到服務(wù)器發(fā)返回的密文,用自己的密鑰(客戶端密鑰)對其進行對稱解密,得到服務(wù)器返回的數(shù)據(jù)。

8. 聊聊事務(wù)隔離級別,以及可重復(fù)讀實現(xiàn)原理

8.1 數(shù)據(jù)庫四大隔離級別

為了解決并發(fā)事務(wù)存在的臟讀、不可重復(fù)讀、幻讀等問題,數(shù)據(jù)庫大叔設(shè)計了四種隔離級別。分別是讀未提交,讀已提交,可重復(fù)讀,串行化(Serializable)

  • 讀未提交隔離級別:只限制了兩個數(shù)據(jù)不能同時修改,但是修改數(shù)據(jù)的時候,即使事務(wù)未提交,都是可以被別的事務(wù)讀取到的,這級別的事務(wù)隔離有臟讀、重復(fù)讀、幻讀的問題;

  • 讀已提交隔離級別:當(dāng)前事務(wù)只能讀取到其他事務(wù)提交的數(shù)據(jù),所以這種事務(wù)的隔離級別解決了臟讀問題,但還是會存在重復(fù)讀、幻讀問題;

  • 可重復(fù)讀:限制了讀取數(shù)據(jù)的時候,不可以進行修改,所以解決了重復(fù)讀的問題,但是讀取范圍數(shù)據(jù)的時候,是可以插入數(shù)據(jù),所以還會存在幻讀問題;

  • 串行化:事務(wù)最高的隔離級別,在該級別下,所有事務(wù)都是進行串行化順序執(zhí)行的。可以避免臟讀、不可重復(fù)讀與幻讀所有并發(fā)問題。但是這種事務(wù)隔離級別下,事務(wù)執(zhí)行很耗性能。

四大隔離級別,都會存在哪些并發(fā)問題呢

隔離級別 臟讀 不可重復(fù)讀 幻讀
讀未提交
讀已提交 ×
可重復(fù)讀 × ×
串行化 × × ×

8.2 Read View可見性規(guī)則

變量 描述
m_ids 當(dāng)前系統(tǒng)中那些活躍(未提交)的讀寫事務(wù)ID, 它數(shù)據(jù)結(jié)構(gòu)為一個List。
max_limit_id 表示生成Read View時,系統(tǒng)中應(yīng)該分配給下一個事務(wù)的id值。
min_limit_id 表示在生成Read View時,當(dāng)前系統(tǒng)中活躍的讀寫事務(wù)中最小的事務(wù)id,即m_ids中的最小值。
creator_trx_id 創(chuàng)建當(dāng)前Read View的事務(wù)ID

Read View的可見性規(guī)則如下:

  • 如果數(shù)據(jù)事務(wù)ID trx_id < min_limit_id,表明生成該版本的事務(wù)在生成Read View前,已經(jīng)提交(因為事務(wù)ID是遞增的),所以該版本可以被當(dāng)前事務(wù)訪問。

  • 如果trx_id>= max_limit_id,表明生成該版本的事務(wù)在生成Read View后才生成,所以該版本不可以被當(dāng)前事務(wù)訪問。

  • 如果 min_limit_id =<trx_id< max_limit_id,需要分3種情況討論

1)如果m_ids包含trx_id,則代表Read View生成時刻,這個事務(wù)還未提交,但是如果數(shù)據(jù)的trx_id等于creator_trx_id的話,表明數(shù)據(jù)是自己生成的,因此是可見的。

2)如果m_ids包含trx_id,并且trx_id不等于creator_trx_id,則Read View生成時,事務(wù)未提交,并且不是自己生產(chǎn)的,所以當(dāng)前事務(wù)也是看不見的;

3)如果m_ids不包含trx_id,則說明你這個事務(wù)在Read View生成之前就已經(jīng)提交了,修改的結(jié)果,當(dāng)前事務(wù)是能看見的。

8.3 可重復(fù)讀實現(xiàn)原理

數(shù)據(jù)庫是通過加鎖實現(xiàn)隔離級別的,比如,你想一個人靜靜,不被別人打擾,你可以把自己關(guān)在房子,并在房門上加上一把鎖!串行化隔離級別就是加鎖實現(xiàn)的。但是如果頻繁加鎖,性能會下降。因此設(shè)計數(shù)據(jù)庫的大叔想到了MVCC

可重復(fù)讀的實現(xiàn)原理就是MVCC多版本并發(fā)控制。在一個事務(wù)范圍內(nèi),兩個相同的查詢,讀取同一條記錄,卻返回了不同的數(shù)據(jù),這就是不可重復(fù)讀。可重復(fù)讀隔離級別,就是為了解決不可重復(fù)讀問題。

查詢一條記錄,基于MVCC,是怎樣的流程呢?

  • 獲取事務(wù)自己的版本號,即事務(wù)ID

  • 獲取Read View

  • 查詢得到的數(shù)據(jù),然后Read View中的事務(wù)版本號進行比較。

  • 如果不符合Read View的可見性規(guī)則, 即就需要Undo log中歷史快照;

  • 最后返回符合規(guī)則的數(shù)據(jù)

InnoDB 實現(xiàn)MVCC,是通過Read View+ Undo Log實現(xiàn)的,Undo Log保存了歷史快照,Read View可見性規(guī)則幫助判斷當(dāng)前版本的數(shù)據(jù)是否可見。

可重復(fù)讀(RR)隔離級別,是如何解決不可重復(fù)讀問題的?

假設(shè)存在事務(wù)A和B,SQL執(zhí)行流程如下

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

在可重復(fù)讀(RR)隔離級別下,一個事務(wù)里只會獲取一次read view,都是副本共用的,從而保證每次查詢的數(shù)據(jù)都是一樣的。

假設(shè)當(dāng)前有一張core_user表,插入一條初始化數(shù)據(jù),如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

基于MVCC,我們來看看執(zhí)行流程

1、A開啟事務(wù),首先得到一個事務(wù)ID為100

2、B開啟事務(wù),得到事務(wù)ID為101

3、事務(wù)A生成一個Read View,read view對應(yīng)的值如下

變量
m_ids 100,101
max_limit_id 102
min_limit_id 100
creator_trx_id 100

然后回到版本鏈:開始從版本鏈中挑選可見的記錄:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

由圖可以看出,最新版本的列name的內(nèi)容是孫權(quán),該版本的trx_id值為100。開始執(zhí)行read view可見性規(guī)則校驗:

min_limit_id(100)=<trx_id(100)<102; creator_trx_id = trx_id =100;

由此可得,trx_id=100的這個記錄,當(dāng)前事務(wù)是可見的。所以查到是name為孫權(quán)的記錄。

4、事務(wù)B進行修改操作,把名字改為曹操。把原數(shù)據(jù)拷貝到undo log,然后對數(shù)據(jù)進行修改,標(biāo)記事務(wù)ID和上一個數(shù)據(jù)版本在undo log的地址。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

5、事務(wù)B提交事務(wù)

6、事務(wù)A再次執(zhí)行查詢操作,因為是RR(可重復(fù)讀)隔離級別,因此會復(fù)用老的Read View副本,Read View對應(yīng)的值如下

變量
m_ids 100,101
max_limit_id 102
min_limit_id 100
creator_trx_id 100

然后再次回到版本鏈:從版本鏈中挑選可見的記錄:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

從圖可得,最新版本的列name的內(nèi)容是曹操,該版本的trx_id值為101。開始執(zhí)行read view可見性規(guī)則校驗:

min_limit_id(100)=<trx_id(101)<max_limit_id(102);  因為m_ids{100,101}包含trx_id(101), 并且creator_trx_id (100) 不等于trx_id(101)

所以,trx_id=101這個記錄,對于當(dāng)前事務(wù)是不可見的。這時候呢,版本鏈roll_pointer跳到下一個版本,trx_id=100這個記錄,再次校驗是否可見:

min_limit_id(100)=<trx_id(100)< max_limit_id(102);  因為m_ids{100,101}包含trx_id(100), 并且creator_trx_id (100) 等于trx_id(100)

所以,trx_id=100這個記錄,對于當(dāng)前事務(wù)是可見的,所以兩次查詢結(jié)果,都是name=孫權(quán)的那個記錄。即在可重復(fù)讀(RR)隔離級別下,復(fù)用老的Read View副本,解決了不可重復(fù)讀的問題。

9. 聊聊索引在哪些場景下會失效?

1. 查詢條件包含or,可能導(dǎo)致索引失效

2. 如何字段類型是字符串,where時一定用引號括起來,否則索引失效

3. like通配符可能導(dǎo)致索引失效。

4. 聯(lián)合索引,查詢時的條件列不是聯(lián)合索引中的第一個列,索引失效。

5. 在索引列上使用mysql的內(nèi)置函數(shù),索引失效。

6. 對索引列運算(如,+、-、*、/),索引失效。

7. 索引字段上使用(!= 或者 < >,not in)時,可能會導(dǎo)致索引失效。

8. 索引字段上使用is null, is not null,可能導(dǎo)致索引失效。

9. 左連接查詢或者右連接查詢查詢關(guān)聯(lián)的字段編碼格式不一樣,可能導(dǎo)致索引失效。

10. mysql估計使用全表掃描要比使用索引快,則不使用索引。

10. 什么是虛擬內(nèi)存

虛擬內(nèi)存,是虛擬出來的內(nèi)存,它的核心思想就是確保每個程序擁有自己的地址空間,地址空間被分成多個塊,每一塊都有連續(xù)的地址空間。同時物理空間也分成多個塊,塊大小和虛擬地址空間的塊大小一致,操作系統(tǒng)會自動將虛擬地址空間映射到物理地址空間,程序只需關(guān)注虛擬內(nèi)存,請求的也是虛擬內(nèi)存,真正使用卻是物理內(nèi)存。

現(xiàn)代操作系統(tǒng)使用虛擬內(nèi)存,即虛擬地址取代物理地址,使用虛擬內(nèi)存可以有2個好處:

  • 虛擬內(nèi)存空間可以遠遠大于物理內(nèi)存空間

  • 多個虛擬內(nèi)存可以指向同一個物理地址

零拷貝實現(xiàn)思想,就利用了虛擬內(nèi)存這個點:多個虛擬內(nèi)存可以指向同一個物理地址,可以把內(nèi)核空間和用戶空間的虛擬地址映射到同一個物理地址,這樣的話,就可以減少IO的數(shù)據(jù)拷貝次數(shù)啦,示意圖如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

11. 排行榜的實現(xiàn),比如高考成績排序

排行版的實現(xiàn),一般使用redis的zset數(shù)據(jù)類型。

使用格式如下:

zadd key score member [score member ...],zrank key member
  • 層內(nèi)部編碼:ziplist(壓縮列表)、skiplist(跳躍表)

  • 使用場景如排行榜,社交需求(如用戶點贊)

實現(xiàn)demo如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

12.分布式鎖實現(xiàn)

分布式鎖,是控制分布式系統(tǒng)不同進程共同訪問共享資源的一種鎖的實現(xiàn)。秒殺下單、搶紅包等等業(yè)務(wù)場景,都需要用到分布式鎖,我們項目中經(jīng)常使用Redis作為分布式鎖。

選了Redis分布式鎖的幾種實現(xiàn)方法,大家來討論下,看有沒有啥問題哈。

  • 命令setnx + expire分開寫

  • setnx + value值是過期時間

  • set的擴展命令(set ex px nx)

  • set ex px nx + 校驗唯一隨機值,再刪除

  • Redisson

12.1 命令setnx + expire分開寫

if(jedis.setnx(key,lock_value) == 1){ //加鎖     expire(key,100); //設(shè)置過期時間     try {         do something  //業(yè)務(wù)請求     }catch(){   }   finally {        jedis.del(key); //釋放鎖     } }

如果執(zhí)行完setnx加鎖,正要執(zhí)行expire設(shè)置過期時間時,進程crash掉或者要重啟維護了,那這個鎖就“長生不老”了,別的線程永遠獲取不到鎖啦,所以分布式鎖不能這么實現(xiàn)。

12.2 setnx + value值是過期時間

long expires = System.currentTimeMillis() + expireTime; //系統(tǒng)時間+設(shè)置的過期時間 String expiresStr = String.valueOf(expires);  // 如果當(dāng)前鎖不存在,返回加鎖成功 if (jedis.setnx(key, expiresStr) == 1) {         return true; }  // 如果鎖已經(jīng)存在,獲取鎖的過期時間 String currentValueStr = jedis.get(key);  // 如果獲取到的過期時間,小于系統(tǒng)當(dāng)前時間,表示已經(jīng)過期 if (currentValueStr != null && Long.parseLong(currentValueStr) < System.currentTimeMillis()) {       // 鎖已過期,獲取上一個鎖的過期時間,并設(shè)置現(xiàn)在鎖的過期時間(不了解redis的getSet命令的小伙伴,可以去官網(wǎng)看下哈)     String oldValueStr = jedis.getSet(key_resource_id, expiresStr);          if (oldValueStr != null && oldValueStr.equals(currentValueStr)) {          // 考慮多線程并發(fā)的情況,只有一個線程的設(shè)置值和當(dāng)前值相同,它才可以加鎖          return true;     } }          //其他情況,均返回加鎖失敗 return false; }

筆者看過有開發(fā)小伙伴就是這么實現(xiàn)分布式鎖的,但是這種方案也有這些缺點:

  • 過期時間是客戶端自己生成的,分布式環(huán)境下,每個客戶端的時間必須同步。

  • 沒有保存持有者的唯一標(biāo)識,可能被別的客戶端釋放/解鎖。

  • 鎖過期的時候,并發(fā)多個客戶端同時請求過來,都執(zhí)行了jedis.getSet(),最終只能有一個客戶端加鎖成功,但是該客戶端鎖的過期時間,可能被別的客戶端覆蓋。

12.3 set的擴展命令(set ex px nx)(注意可能存在的問題)

if(jedis.set(key, lock_value, "NX", "EX", 100s) == 1){ //加鎖     try {         do something  //業(yè)務(wù)處理     }catch(){   }   finally {        jedis.del(key); //釋放鎖     } }

這個方案可能存在這樣的問題:

  • 鎖過期釋放了,業(yè)務(wù)還沒執(zhí)行完。

  • 鎖被別的線程誤刪。

12.4 set ex px nx + 校驗唯一隨機值,再刪除

if(jedis.set(key, uni_request_id, "NX", "EX", 100s) == 1){ //加鎖     try {         do something  //業(yè)務(wù)處理     }catch(){   }   finally {        //判斷是不是當(dāng)前線程加的鎖,是才釋放        if (uni_request_id.equals(jedis.get(key))) {         jedis.del(key); //釋放鎖         }     } }

在這里,判斷當(dāng)前線程加的鎖和釋放鎖是不是一個原子操作。如果調(diào)用jedis.del()釋放鎖的時候,可能這把鎖已經(jīng)不屬于當(dāng)前客戶端,會解除他人加的鎖。

一般也是用lua腳本代替。lua腳本如下:

if redis.call('get',KEYS[1]) == ARGV[1] then     return redis.call('del',KEYS[1])  else    return 0 end;

這種方式比較不錯了,一般情況下,已經(jīng)可以使用這種實現(xiàn)方式。但是存在鎖過期釋放了,業(yè)務(wù)還沒執(zhí)行完的問題(實際上,估算個業(yè)務(wù)處理的時間,一般沒啥問題了)。

12.5 Redisson

分布式鎖可能存在鎖過期釋放,業(yè)務(wù)沒執(zhí)行完的問題。有些小伙伴認為,稍微把鎖過期時間設(shè)置長一些就可以啦。其實我們設(shè)想一下,是否可以給獲得鎖的線程,開啟一個定時守護線程,每隔一段時間檢查鎖是否還存在,存在則對鎖的過期時間延長,防止鎖過期提前釋放。

當(dāng)前開源框架Redisson就解決了這個分布式鎖問題。我們一起來看下Redisson底層原理是怎樣的吧:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

只要線程一加鎖成功,就會啟動一個watch dog看門狗,它是一個后臺線程,會每隔10秒檢查一下,如果線程1還持有鎖,那么就會不斷的延長鎖key的生存時間。因此,Redisson就是使用Redisson解決了鎖過期釋放,業(yè)務(wù)沒執(zhí)行完問題。

13. 零拷貝

零拷貝就是不需要將數(shù)據(jù)從一個存儲區(qū)域復(fù)制到另一個存儲區(qū)域。它是指在傳統(tǒng)IO模型中,指CPU拷貝的次數(shù)為0。它是IO的優(yōu)化方案

傳統(tǒng)IO流程

  • 零拷貝實現(xiàn)之mmap+write

  • 零拷貝實現(xiàn)之sendfile

  • 零拷貝實現(xiàn)之帶有DMA收集拷貝功能的sendfile

13.1 傳統(tǒng)IO流程

流程圖如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

  • 用戶應(yīng)用進程調(diào)用read函數(shù),向操作系統(tǒng)發(fā)起IO調(diào)用,上下文從用戶態(tài)轉(zhuǎn)為內(nèi)核態(tài)(切換1)

  • DMA控制器把數(shù)據(jù)從磁盤中,讀取到內(nèi)核緩沖區(qū)。

  • CPU把內(nèi)核緩沖區(qū)數(shù)據(jù),拷貝到用戶應(yīng)用緩沖區(qū),上下文從內(nèi)核態(tài)轉(zhuǎn)為用戶態(tài)(切換2),read函數(shù)返回

  • 用戶應(yīng)用進程通過write函數(shù),發(fā)起IO調(diào)用,上下文從用戶態(tài)轉(zhuǎn)為內(nèi)核態(tài)(切換3)

  • CPU將應(yīng)用緩沖區(qū)中的數(shù)據(jù),拷貝到socket緩沖區(qū)

  • DMA控制器把數(shù)據(jù)從socket緩沖區(qū),拷貝到網(wǎng)卡設(shè)備,上下文從內(nèi)核態(tài)切換回用戶態(tài)(切換4),write函數(shù)返回

從流程圖可以看出,傳統(tǒng)IO的讀寫流程,包括了4次上下文切換(4次用戶態(tài)和內(nèi)核態(tài)的切換),4次數(shù)據(jù)拷貝(兩次CPU拷貝以及兩次的DMA拷貝)。

13.2 mmap+write實現(xiàn)的零拷貝

mmap 的函數(shù)原型如下:

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
  • addr:指定映射的虛擬內(nèi)存地址

  • length:映射的長度

  • prot:映射內(nèi)存的保護模式

  • flags:指定映射的類型

  • fd:進行映射的文件句柄

  • offset:文件偏移量

  • mmap使用了虛擬內(nèi)存,可以把內(nèi)核空間和用戶空間的虛擬地址映射到同一個物理地址,從而減少數(shù)據(jù)拷貝次數(shù)!

mmap+write實現(xiàn)的零拷貝流程如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

  • 用戶進程通過mmap方法向操作系統(tǒng)內(nèi)核發(fā)起IO調(diào)用,上下文從用戶態(tài)切換為內(nèi)核態(tài)。

  • CPU利用DMA控制器,把數(shù)據(jù)從硬盤中拷貝到內(nèi)核緩沖區(qū)。

  • 上下文從內(nèi)核態(tài)切換回用戶態(tài),mmap方法返回。

  • 用戶進程通過write方法向操作系統(tǒng)內(nèi)核發(fā)起IO調(diào)用,上下文從用戶態(tài)切換為內(nèi)核態(tài)。

  • CPU將內(nèi)核緩沖區(qū)的數(shù)據(jù)拷貝到的socket緩沖區(qū)。

  • CPU利用DMA控制器,把數(shù)據(jù)從socket緩沖區(qū)拷貝到網(wǎng)卡,上下文從內(nèi)核態(tài)切換回用戶態(tài),write調(diào)用返回。

可以發(fā)現(xiàn),mmap+write實現(xiàn)的零拷貝,I/O發(fā)生了4次用戶空間與內(nèi)核空間的上下文切換,以及3次數(shù)據(jù)拷貝。其中3次數(shù)據(jù)拷貝中,包括了2次DMA拷貝和1次CPU拷貝。

mmap是將讀緩沖區(qū)的地址和用戶緩沖區(qū)的地址進行映射,內(nèi)核緩沖區(qū)和應(yīng)用緩沖區(qū)共享,所以節(jié)省了一次CPU拷貝‘’并且用戶進程內(nèi)存是虛擬的,只是映射到內(nèi)核的讀緩沖區(qū),可以節(jié)省一半的內(nèi)存空間。

sendfile實現(xiàn)的零拷貝

sendfile是Linux2.1內(nèi)核版本后引入的一個系統(tǒng)調(diào)用函數(shù),API如下:

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
  • out_fd:為待寫入內(nèi)容的文件描述符,一個socket描述符。,

  • in_fd:為待讀出內(nèi)容的文件描述符,必須是真實的文件,不能是socket和管道。

  • offset:指定從讀入文件的哪個位置開始讀,如果為NULL,表示文件的默認起始位置。

  • count:指定在fdout和fdin之間傳輸?shù)淖止?jié)數(shù)。

  • sendfile表示在兩個文件描述符之間傳輸數(shù)據(jù),它是在操作系統(tǒng)內(nèi)核中操作的,避免了數(shù)據(jù)從內(nèi)核緩沖區(qū)和用戶緩沖區(qū)之間的拷貝操作,因此可以使用它來實現(xiàn)零拷貝。

sendfile實現(xiàn)的零拷貝流程如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)
sendfile實現(xiàn)的零拷貝

  • 用戶進程發(fā)起sendfile系統(tǒng)調(diào)用,上下文(切換1)從用戶態(tài)轉(zhuǎn)向內(nèi)核態(tài)

  • DMA控制器,把數(shù)據(jù)從硬盤中拷貝到內(nèi)核緩沖區(qū)。

  • CPU將讀緩沖區(qū)中數(shù)據(jù)拷貝到socket緩沖區(qū)

  • DMA控制器,異步把數(shù)據(jù)從socket緩沖區(qū)拷貝到網(wǎng)卡,

  • 上下文(切換2)從內(nèi)核態(tài)切換回用戶態(tài),sendfile調(diào)用返回。

可以發(fā)現(xiàn),sendfile實現(xiàn)的零拷貝,I/O發(fā)生了2次用戶空間與內(nèi)核空間的上下文切換,以及3次數(shù)據(jù)拷貝。其中3次數(shù)據(jù)拷貝中,包括了2次DMA拷貝和1次CPU拷貝。那能不能把CPU拷貝的次數(shù)減少到0次呢?有的,即帶有DMA收集拷貝功能的sendfile

sendfile+DMA scatter/gather實現(xiàn)的零拷貝

linux 2.4版本之后,對sendfile做了優(yōu)化升級,引入SG-DMA技術(shù),其實就是對DMA拷貝加入了scatter/gather操作,它可以直接從內(nèi)核空間緩沖區(qū)中將數(shù)據(jù)讀取到網(wǎng)卡。使用這個特點搞零拷貝,即還可以多省去一次CPU拷貝。

sendfile+DMA scatter/gather實現(xiàn)的零拷貝流程如下:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

  • 用戶進程發(fā)起sendfile系統(tǒng)調(diào)用,上下文(切換1)從用戶態(tài)轉(zhuǎn)向內(nèi)核態(tài)

  • DMA控制器,把數(shù)據(jù)從硬盤中拷貝到內(nèi)核緩沖區(qū)。

  • CPU把內(nèi)核緩沖區(qū)中的文件描述符信息(包括內(nèi)核緩沖區(qū)的內(nèi)存地址和偏移量)發(fā)送到socket緩沖區(qū)

  • DMA控制器根據(jù)文件描述符信息,直接把數(shù)據(jù)從內(nèi)核緩沖區(qū)拷貝到網(wǎng)卡

  • 上下文(切換2)從內(nèi)核態(tài)切換回用戶態(tài),sendfile調(diào)用返回。

可以發(fā)現(xiàn),sendfile+DMA scatter/gather實現(xiàn)的零拷貝,I/O發(fā)生了2次用戶空間與內(nèi)核空間的上下文切換,以及2次數(shù)據(jù)拷貝。其中2次數(shù)據(jù)拷貝都是包DMA拷貝。這就是真正的 零拷貝(Zero-copy) 技術(shù),全程都沒有通過CPU來搬運數(shù)據(jù),所有的數(shù)據(jù)都是通過DMA來進行傳輸?shù)摹?/p>

14. synchronized

synchronized是Java中的關(guān)鍵字,是一種同步鎖。synchronized關(guān)鍵字可以作用于方法或者代碼塊。

一般面試時。可以這么回答:

  • 反編譯后,monitorenter、monitorexit、ACC_SYNCHRONIZED

  • monitor監(jiān)視器

  • Java Monitor 的工作機理

  • 對象與monitor關(guān)聯(lián)

14.1 monitorenter、monitorexit、ACC_SYNCHRONIZED

如果synchronized作用于代碼塊,反編譯可以看到兩個指令:monitorenter、monitorexit,JVM使用monitorenter和monitorexit兩個指令實現(xiàn)同步;如果作用synchronized作用于方法,反編譯可以看到ACCSYNCHRONIZED標(biāo)記,JVM通過在方法訪問標(biāo)識符(flags)中加入ACCSYNCHRONIZED來實現(xiàn)同步功能。

  • 同步代碼塊是通過monitorenter和monitorexit來實現(xiàn),當(dāng)線程執(zhí)行到monitorenter的時候要先獲得monitor鎖,才能執(zhí)行后面的方法。當(dāng)線程執(zhí)行到monitorexit的時候則要釋放鎖。

  • 同步方法是通過中設(shè)置ACCSYNCHRONIZED標(biāo)志來實現(xiàn),當(dāng)線程執(zhí)行有ACCSYNCHRONIZED標(biāo)志的方法,需要獲得monitor鎖。每個對象都與一個monitor相關(guān)聯(lián),線程可以占有或者釋放monitor。

14.2 monitor監(jiān)視器

monitor是什么呢?操作系統(tǒng)的管程(monitors)是概念原理,ObjectMonitor是它的原理實現(xiàn)。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

在Java虛擬機(HotSpot)中,Monitor(管程)是由ObjectMonitor實現(xiàn)的,其主要數(shù)據(jù)結(jié)構(gòu)如下:

 ObjectMonitor() {     _header       = NULL;     _count        = 0; // 記錄個數(shù)     _waiters      = 0,     _recursions   = 0;     _object       = NULL;     _owner        = NULL;     _WaitSet      = NULL;  // 處于wait狀態(tài)的線程,會被加入到_WaitSet     _WaitSetLock  = 0 ;     _Responsible  = NULL ;     _succ         = NULL ;     _cxq          = NULL ;     FreeNext      = NULL ;     _EntryList    = NULL ;  // 處于等待鎖block狀態(tài)的線程,會被加入到該列表     _SpinFreq     = 0 ;     _SpinClock    = 0 ;     OwnerIsThread = 0 ;   }

ObjectMonitor中幾個關(guān)鍵字段的含義如圖所示:

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

14.3 Java Monitor 的工作機理

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

  • 想要獲取monitor的線程,首先會進入_EntryList隊列。

  • 當(dāng)某個線程獲取到對象的monitor后,進入Owner區(qū)域,設(shè)置為當(dāng)前線程,同時計數(shù)器count加1。

  • 如果線程調(diào)用了wait()方法,則會進入WaitSet隊列。它會釋放monitor鎖,即將owner賦值為null,count自減1,進入WaitSet隊列阻塞等待。

  • 如果其他線程調(diào)用 notify() / notifyAll() ,會喚醒WaitSet中的某個線程,該線程再次嘗試獲取monitor鎖,成功即進入Owner區(qū)域。

  • 同步方法執(zhí)行完畢了,線程退出臨界區(qū),會將monitor的owner設(shè)為null,并釋放監(jiān)視鎖。

14.4 對象與monitor關(guān)聯(lián)

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

  • 在HotSpot虛擬機中,對象在內(nèi)存中存儲的布局可以分為3塊區(qū)域:對象頭(Header),實例數(shù)據(jù)(Instance Data)和對象填充(Padding)。

  • 對象頭主要包括兩部分數(shù)據(jù):Mark Word(標(biāo)記字段)、Class Pointer(類型指針)。

Mark Word 是用于存儲對象自身的運行時數(shù)據(jù),如哈希碼(HashCode)、GC分代年齡、鎖狀態(tài)標(biāo)志、線程持有的鎖、偏向線程 ID、偏向時間戳等。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

重量級鎖,指向互斥量的指針。其實synchronized是重量級鎖,也就是說Synchronized的對象鎖,Mark Word鎖標(biāo)識位為10,其中指針指向的是Monitor對象的起始地址。

15. 分布式id生成方案有哪些?什么是雪花算法?

分布式id生成方案主要有:

  • UUID

  • 數(shù)據(jù)庫自增ID

  • 基于雪花算法(Snowflake)實現(xiàn)

  • 百度 (Uidgenerator)

  • 美團(Leaf)

什么是雪花算法?

雪花算法是一種生成分布式全局唯一ID的算法,生成的ID稱為Snowflake IDs。這種算法由Twitter創(chuàng)建,并用于推文的ID。

一個Snowflake ID有64位。

  • 第1位:Java中l(wèi)ong的最高位是符號位代表正負,正數(shù)是0,負數(shù)是1,一般生成ID都為正數(shù),所以默認為0。

  • 接下來前41位是時間戳,表示了自選定的時期以來的毫秒數(shù)。

  • 接下來的10位代表計算機ID,防止沖突。

  • 其余12位代表每臺機器上生成ID的序列號,這允許在同一毫秒內(nèi)創(chuàng)建多個Snowflake ID。

15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)
雪花算法

最后PHP中文網(wǎng)祝大家找到一份滿意的工作!!!

【面試題專題】

前端:【前端面試題】【js面試題 】【 vue面試題】【ajax面試題】【react面試題】

數(shù)據(jù)庫:【mysql面試題】【redis面試題】【oracle面試題】

后端:【PHP面試題】【thinkphp面試題】【python面試題】【java面試題】【android面試題】

  • 微信
  • 分享
  • 15道蝦皮服務(wù)端面試真題,你能全答對嗎?(附解析)

    聲明:本文轉(zhuǎn)載于:微信公眾號,如有侵犯,請聯(lián)系admin@php.cn刪除

  • 相關(guān)標(biāo)簽:面試題 蝦皮 服務(wù)端
    • 上一篇:37個常見Vue面試題,增強你的Vue知識儲備!
    • 下一篇:沒有了
    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
    主站蜘蛛池模板: 九九热精品视频在线 | 中文在线中文资源 | 中文字幕一区二区三区不卡 | 欧美综合第一页 | 亚洲精品一二三 | 天堂俺去俺来也www久久婷婷 | 国产在线视频网 | 好男人www日本 | 国产裸体无遮挡 | 色屁屁影院www国产高清麻豆 | 久久这里只有精品6 | 动漫一区二区 | 少妇高潮露脸国语对白 | 国产精品日日做人人爱 | 九九热这里都是精品 | 精品一区二区三区av | 夜夜草免费视频 | 亚洲黄页在线观看 | 日本五十路在线 | 进去里视频在线观看 | 国产一级影片 | 国产男女av | 69色堂| 欧美日韩一区三区 | 我和我的太阳泰剧在线观看泰剧 | 青青久操 | 亚洲午夜久久久久久久久红桃 | 国产精品自拍小视频 | 欧美一区二区高清 | 17c国产精品一区二区 | 国产乡下妇女做爰毛片 | 一级特黄aaa大片在线观看 | 国产福利不卡 | 在线亚洲欧美 | 色综合色综合色综合 | 国产男人搡女人免费视频 | 4438xx亚洲五月最大丁香 | 亚洲产国偷v产偷自拍网址 亚洲成色777777女色窝 | 超碰人人人人 | 亚洲第一二三区 | 国产偷久久一级精品 | 亚洲美女高潮久久久 | 少妇毛片一区二区三区 | 深夜av在线 | 一色综合 | xxxxx18日本 | 国产麻豆免费观看 | 日日爱av | 青青草原在线免费观看视频 | 国产免费高清视频 | 韩国一级片在线观看 | 夜夜骑天天干 | 最近中文字幕在线观看视频 | 成人福利院 | 国产成人宗合 | 中国产一级片 | 久久久精品国产99久久精品麻追 | 全黄一级播放 | 91久久国语露脸精品国产高跟 | 91成人免费网站 | 天天草夜夜操 | 久草免费在线观看视频 | 国产男女猛烈无遮挡免费观看网站 | 淫具馆(重口调教sm)小说 | 另类天堂网 | 99热这里只有精品在线 | 日韩欧美在线中文字幕 | 午夜毛片在线观看 | 国产精品21区 | 国产不卡一区 | 国产视频一级 | 一区二区播放 | 超碰97在线资源站 | 国产精品美女自拍视频 | 夜鲁鲁鲁夜夜综合视频欧美 | 91精品国产综合久久久久久 | 国产精品羞羞答答在线 | 亚洲综合久久久久 | 天天干狠狠干 | 天堂成人在线视频 | 国产一级黄色大片 | 波多野在线 | 精精国产xxxx视频在线观看 | 香蕉视频一区二区三区 | 五月综合激情网 | 91网站在线看 | 日本在线观看中文字幕 | 亚洲欧美精品一区二区 | 中文av免费 | 欧美日韩三级 | 日韩午夜影院 | 日韩亚洲一区二区 | 日韩免费观看视频 | 国产91沙发系列 | 视频福利在线 | 亚洲 国产 日韩在线 精品 | av片网| 欧美一区二区在线播放 | 日本少妇在线 | 五月开心激情 | 亚洲免费天堂 | 久久99亚洲精品久久久久 | 国产黄三级三级三级三级一区二反 | 在线亚洲免费 | 国产精品久久久久久模特 | 国产色播av在线 | 国产女人水真多18毛片18精品 | missav在线| 色呦呦在线视频 | 青草91 | 97黄色片 | 国产aaa毛片| 国产精品视频a | 久久精品一区二区国产 | 久久三级网站 | 懂色av中文在线 | 日干夜干 | 日日夜夜欧美 | 国产黄色免费看 | 国产激情二区 | 国产91在线高潮白浆在线观看 | 欧美极品一区 | 免费特黄视频 | 久草中文网 | 麻豆精品视频在线 | 亚洲区欧美 | 日本一区二区三区四区五区 | 一级片999 | 人人插人人草 | 国产精选第一页 | mm1313亚洲精品 | 免费黄色三级 | 一区二区三区四区av | 欧美色鬼 | 丁香一区二区 | 3d动漫啪啪精品一区二区中文字幕 | 日本va欧美va欧美va精品 | 婷婷色在线播放 | 天天干狠狠插 | 天天摸天天干 | a国产视频| 超碰在线免费97 | 亚洲综合站 | 一级裸体片 | 成人综合免费视频 | 亚洲欧美精品一区二区 | 久草天堂| 婷婷开心激情 | 亚洲人成激情在线播放国 | 好邻居韩国剧在线观看 | 国产区精品在线 | 写真福利片hd在线播放 | 一级片免费观看视频 | 亚洲最大中文字幕 | 久久尤物免费一区二区三区 | h在线 | av不卡免费| 中文字幕一区二区三区在线乱码 | 五月婷婷深深爱 | 国产精品国产三级国产a | 欧美 日韩 中文 | 国产区久久 | 免费中文字幕av | 天天天天躁天天爱天天碰2018 | 国产suv精品一区二区33 | 牛人盗摄一区二区三区视频 | 久久久久亚洲精品中文字幕 | bt7086福利一区国产 | 亚洲少妇一区二区三区 | 成人在线观看黄色 | 日韩免费在线 | 日韩精品偷拍 | 亚洲视频自拍偷拍 | 男人天堂免费视频 | 毛片黄色一级 | 日韩国产成人在线 | 美国三级视频 | www.奇米| 69精品久久 | 一区二区免费在线视频 | www.青青操| 男人在线网站 | 黄色片免费 | av一卡| 激情欧美一区二区免费视频 | 日本性爱视频在线观看 | 亚洲一区二视频 | 日韩不卡一二三区 | 日韩免费视频 | 亚洲成人aaa| 亚洲性欧美色 | 蜜桃视频一区二区三区 | gogo午夜高清免费摄影 | 人人草网站| 国产精品色 | 国产一区二区美女视频 | 91在线免费视频观看 | 99re热这里只有精品视频 | 久久精品成人 | 伊人婷婷综合 | 北条麻妃二三区 | 亚洲人成人一区二区在线观看 | 国产精品免费久久久 | 免费黄色在线 | 五月天开心激情 | 国产在线一二三 | 奇米影视9999 | 国产高清视频免费观看 | 久草免费在线视频观看 | 国产精品欧美激情 | 一级黄色在线视频 | 黄色污污视频 | 天堂色在线| 销魂奶水汁系列小说 | 香蕉视频最新网址 | 久久精品亚洲一区二区 | 欧美黄色一区二区 | 毛片手机在线 | 中文字幕av一区二区 | 欧美一性一交 | 69精品| av五月 | 亚洲毛片网站 | 国产欧美日韩 | 国产一二三在线观看 | 日本www在线观看 | 影音先锋久久久 | 亚洲精品影视 | 国产91视 | 69av一区二区三区 | 国内久久精品视频 | 在线看你懂 | 看污片网站 | 岛国二区| 日韩欧美a级片 | 久草免费在线观看视频 | 亚洲v天堂 | 日韩激情图片 | 日本精品一二三 | 亚洲黄色小视频 | 久久久久中文字幕 | 成年人黄色免费网站 | 在线观看中文字幕码 | av东方在线| 超碰97免费在线 | 少妇一级淫片免费放 | a级片在线 | 久久99久久98精品免观看软件 | 99视频网站 | 日韩精品中文字幕一区二区 | 亚欧洲精品在线视频 | 久久久久久久免费 | 黄色网页在线免费观看 | 日韩美在线 | 天天做天天操 | 成人精品视频在线 | 国产精品自拍一区 | 超碰2021| 一级人爱视频 | 在线精品视频播放 | 国产欧美一区二区三区精品酒店 | 久久成人在线视频 | av老司机在线观看 | 天堂av资源网 | 人人cao| 日本一级网站 | 尤物网站在线观看 | 国产日韩欧美一区 | 国产午夜小视频 | 琪琪射| 丰满放荡岳乱妇91ww | 黄色av国产 | 91视频.com| 日韩激情网站 | 网址你懂的在线 | 在线视频观看 | 性视频免费看 | 亚州午夜精品 | 国产成人午夜精品5599 | 久久精品爱 | 久久人人爽人人爽人人片966 | 欧美日韩a级片 | av中文字幕在线看 | 91精品一区| 欧美成人a| 婷婷久久久久久 | 国产黄网站| av不卡免费 | 少妇精品高潮欲妇又嫩中文字幕 | xxx麻豆| www.av777| 少女情窦初开的第4集在线观看 | 男女激情啪啪 | 一本色道久久综合亚洲精品酒店 | 午夜黄色影院 | 久久国产日韩 | 激情第一页 | 色综合激情 | 国产伦精品一区二区三区视频无 | 天天躁日日躁aaaaxxxx | 色窝av | 一区在线播放 | 国产99久久久欧美黑人 | 懂色av色吟av夜夜嗨 | 九月色婷婷| 国产成人精品自拍 | 人人爱人人 | 精品少妇一二三区 | 国产怡红院 | 国产 日韩 欧美 中文 在线播放 | 欧美激情在线观看 | 精品国产伦一区二区三区免费 | 国产精品呦呦 | 亚洲黄色片在线 | 黄色录像片子 | 神马久久春色 | 黄色短视频在线播放 | 成人第一页| 国产精品成人av性教育 | 青草成人 | 欧美成年人 | 蜜臀麻豆 | 久久久五月 | 少妇综合网 | 成人a在线| 免费一级片视频 | 一区二区三区毛片 | 特级西西444www大精品视频免费看 | 79日本xxxxxxxxx18 成人免费视频播放 | 深夜福利久久 | 少妇av | 久久亚洲精品石原莉奈 | 色女生影院 | 欧美第九页 | 你懂的在线网站 | 欧美成人二区 | 黑人爱爱视频 | 国产精品三 | 国产三级久久久 | 日韩操操操 | 婷婷综合网站 | 波多野结衣啪啪 | 日韩av资源网 | av站| 毛片视频大全 | 天天爽夜夜| 欧美福利影院 | 二级毛片 | 国产91区 | 日韩在线视频一区二区三区 | 免费簧片在线观看 | 视色影视| 91视频在线观看视频 | 淫羞阁av导航 | 成年人黄色免费网站 | 国产午夜精品久久久久久免费视 | 亚洲欧美综合久久 | 欧美在线视频观看 | 亚洲精品在线免费看 | 国产精品乱码一区二区视频 | 怼嫩草av | 日韩视频二区 | 国产黄在线 | 免费在线观看av的网站 | 日本精品三级 | 午夜小视频在线播放 | 欧美日韩国产免费观看 | 日韩有码在线播放 | 色婷婷一区二区三区四区 | 蜜臀久久99精品久久久无需会员 | 久久久久久久久久免费视频 | 国产微拍一区 | 免费av网址在线观看 | 亚洲一区二区三区网站 | 国产一二三级 | 国产资源站| 看免费黄色大片 | 99插插| 男女污视频 | 黄色永久视频 | 欧美激情视频一区二区三区不卡 | 欧洲色网| 国产成人综合图片 | 97色网 | 中文字幕久久久 | 国产欧美高清视频 | 国产又黄又硬又粗 | 亚洲人人精品 | 超碰免费人人 | 欧美乱码视频 | 天天干夜夜想 | 日本成人一区二区 | 盗摄一区二区 | 日日干日日草 | 亚洲精品国| 国产精品久久片 | 国产精品久久久久久久久久久久久久 | 噜噜噜久久,亚洲精品国产品 | 一级特黄色片子 | 亚洲专区在线 | 国产一区啪啪 | av中文字幕观看 | 麻豆视频在线观看免费网站黄 | 欧日韩在线观看 | 国产欧美日韩久久 | 国产亚洲精品成人av久久影院 | 潘金莲一级淫片免费放动漫 | 久久精品波多野结衣 | 男女国产精品 | av免费亚洲| 玩偶姐姐在线看 | 国产精品视频一二三 | 偷拍亚洲精品 | 黄色一级影片 | 九色蝌蚪视频 | 亚洲国产综合网 | 免费看av毛片 | 黄色国产在线观看 | 成人在线精品 | 国产18av| 欧美自拍亚洲 | 美女毛片在线观看 | 一级免费在线观看 | 亚洲国产精品va在线 | 日韩av在线网站 | www,xxx日本 | av不卡免费在线观看 | 97国产| 国产精品海角社区 | 久久久精品国产sm调教 | tp农村土炕激情偷拍 | 性国产1819sex性高清 | 色综合网站 | 北条麻妃一区二区三区在线观看 | 另类综合网 | 日日日干干干 | 亚洲最大福利网站 | 婚后打屁股高h1v1调教 | 在线视频一区二区 | 男女视频在线 | 汇聚全球精美吹潮色xx | 蜜臀在线观看 | 91亚洲在线 | 最新中文字幕日本 | 国产精品theporn | 国产精品中文在线 | a级片在线 | 黄色aa大片 | 久草视频中文在线 | 亚洲制服无码 | 少妇床戏av | 三级精品视频 | 爱搞逼综合网 | 丁香婷婷久久 | 黄色片hd| 亚洲精品传媒 | 噜噜色综合噜噜色噜噜色 | 中文在线www | 国产精品毛片av久久 | 青青艹在线视频 | 国产视频一区二区在线播放 | 国产精品网站一区 | 国产夫妻露脸 | 国产成人三级在线播放 | 天天av天天| 欧美激情视频网 | 国产精品不卡视频 | 噜噜狠狠狠狠综合久久 | 亚洲黄色三级视频 | 成人欧美一区二区三区黑人冫 | 国产亚洲视频在线观看 | 久久久久香蕉 | 一二三毛片 | 日韩国产欧美精品 | 伊人三区| 亚洲黄色小说在线观看 | 99在线小视频 | 91成人国产综合久久精品 | 久久久噜噜噜 | 国产性自拍 | 66国产精品 | 免费av成人 | 五月婷婷丁香网 | 亚洲天堂小说 | 欧美高清视频一区二区三区 | 欧美一区二区三区的 | 性――交――性――乱a | 在线免费看毛片 | 中国老头同性xxxxx | 河北彩花av在线播放 | 欧美一二区 | 九九视频网 | 懂色av中文一区二区三区天美 | 欧美精品久久久久久 | 精品国产九九 | 韩国av毛片| 欧美乱色| 在线综合视频 | 免费国产精品视频 | 国产老女人乱淫免费 | 色丁香在线 | 51av在线 | 在线视频成人 | 福利一区视频 | 国产毛片一区二区三区va在线 | 久久婷婷精品 | 澳门永久av免费网站 | 这里只有久久精品视频 | 性欧美欧美巨大69 | 亚州视频一区二区三区 | 成人在线激情 | 3级av| 国产美女精品一区二区三区 | 国产亚洲精品久久久久久移动网络 | 久久久久久一区二区三区 | 成人免费毛片网站 | 欧美精品一区二区在线观看 | 一区二区三区免费在线 | 2019中文字幕在线视频 | 日本aⅴ在线 | 91高潮胡言乱语对白刺激国产 | 日韩一级片免费 | 国产97在线视频 | 亚洲国产精品久久 | 超碰在线伊人 | 你懂的在线播放 | 亚洲成年人网址 | 国产大学生情侣呻吟视频 | 亚洲欧美日本另类 | 久草91 | 红桃视频91 | 久久久夜夜夜 | 日本www在线 | 日本囗交做爰视频 | 男人av资源 | 91在线免费播放 | 黄色欧美视频 | 97超碰伊人 | 五月婷视频 | 一本色道久久综合亚洲二区三区 | 国产91久久久 | 日韩第三页 | 香蕉毛片 | 四房婷婷 | 就操网 | 日产久久视频 | 国产亚洲二区 | 久久亚洲日本 | h视频国产 | 亚洲人成77777 | 国产久操视频 | 日韩欧美在线免费 | 激情av| 五月婷婷色丁香 | 精品视频在线免费 | 日韩在线一级 | 国产黄 | 全部免费毛片在线播放 | 欧美无砖砖区免费 | xxxx午夜 | 射黄视频| 男女午夜网站 | 精品久久久久久久久久久久久久 | 九色视频在线观看 | 少妇av一区| 久久久久久日产精品 | 五月天婷婷导航 | 99久久精品免费看国产 | 好吊色一区二区 | 日韩一区二区视频在线 | 亚洲精品影院在线 | 欧美视频色 | 天天干天天爱天天操 | 欧美在线一级 | 精品视频一二三区 | 国产成人精品一区 | 综合网在线 | 一本大道香蕉在线播放 | 欧美日韩中文字幕在线视频 | 在线午夜 | 亚洲天堂aa| 毛片专区 | 亚洲男人在线 | 超碰p| 91岛国 | 艳妇荡乳豪妇荡乳av精东 | 国产精品成人av性教育 | 涩涩网站入口 | 波多野结衣电车痴汉 | 91福利片| 奇米四色7777| 黄色精品网站在线观看 | 欧美激情视频在线观看 | 国产精品视频一二三区 | av在线地址| 俄罗斯嫩小性bbwbbw | 五月婷婷色综合 | 色哟哟一区二区 | 久久久精品在线观看 | 888奇米影视 | 国产精品久久久久久久岛一本蜜乳 | 亚洲另类一二三区 | 雪白的扔子视频大全在线观看 | 一级淫片免费看 | 日本亚洲欧美在线 | 日本系列第一页 | 欧美亚洲另类图片 | 经典三级av在线 | 国产三级av在线 | 欧美激情视频一区二区三区在线播放 | 亚洲人xxxx | 欧美97 | 精品99999 | 亚洲精品精| 美女啪啪动态图 | 久久综合亚洲 | 国产成人久久久精品免费澳门 | 春宵av| 久久久精品99 | 黄色大片视频 | 免费在线你懂的 | 欧美三级在线 | 国产66页| av在线官网 | 97伊人超碰| 黄色精品一区二区 | 日韩淫片 | 欧美黄色一区二区 | 黄色三级网站在线观看 | 午夜影院污 | 99精品色 | 在线免费看av | 最近国语视频在线观看免费播放 | 中文字幕一区二区三区视频 | 一区二区毛片 | 理论片午夜 | 日本高清中文字幕 | 91久久精品一区二区别 | 亚洲专区视频在线观看 | 国产在成人精品线拍偷自揄拍 | 岛国裸体写真hd在线 | 91热精品| 黑丝国产在线 | 国产精品一级二级三级 | 中文字幕国产一区二区 | 9i在线看片成人免费 | 日韩视频在线观看免费 | 黄色a级大片 | 成人91在线 | 三级欧美韩日大片在线看 | 日韩特一级 | 久久99久久99精品蜜柚传媒 | 国产欧美在线视频 | 99久热在线精品996热是什么 | 日本一本高清视频 | 欧美一区二区三区在线观看 | 人人草人人看 | 天天躁日日躁狠狠躁免费麻豆 | 一级aa毛片 | 新天堂av| 欧美精品亚洲精品日韩精品 | 国产午夜精品一区二区 | 久久免费精品国产 | 欧美一区二区三区婷婷月色 | 亚洲一二三区不卡 | 精品少妇视频 | av在线日韩| 天天舔天天干 | 爱爱免费网址 | 国产富婆一级全黄大片 | 99精品在线看 | 欧美高清性xxxxhd | 国产网红女主播精品视频 | 91叼嘿视频 | 自拍露脸高潮 | 亚洲黄业| 黑人操日本 | 精品98 | 婷婷激情在线 | 国产性猛交xxxx免费看久久 | www久久久久 | 狠狠撸在线视频 | 一级片手机在线观看 | 91亚洲精选 | 青娱乐极品视频在线 | 国产一级黄色 | 成人精品自拍 | 美女三级视频 | 国产精品18久久久久久久久 | 国产在线综合网 | 欧美www在线观看 | 天天干夜夜夜夜 | 最新不卡av | 黄色av国产 | 自拍偷拍色综合 | 成人动漫在线观看视频 | 欧美日本高清 | 麻豆传媒一区二区三区 | 男人天堂avav| 亚州av成人 | 爱情岛论坛亚洲品质自拍 | 国产一区日韩 | 久久久久一级 | 一级特黄色片子 | 欧美精品www| 一区二区三区美女视频 | 免费播放av | 中文字幕第11页 | 红桃成人网 | 久久理伦 | 国产一级网站 | 中日韩精品视频在线观看 | 日少妇b| 国产精品久久久久久久久久久久冷 | 久久婷婷丁香 | 成人激情在线视频 | 国产精品美女av | 永久免费看成人av的动态图 | 一本之道av | 性欧美精品 | 一区日韩 | 最新国产精品精品视频 | 爱情岛论坛自拍亚洲品质极速最新章 | 国产日韩在线免费观看 | 99re在线播放 | 黄色片国产 | 法国意大利性经典xxxxx交换 | 伊人久久大 | 夜夜小视频 | 亚洲区视频在线观看 | 伊人影院在线观看 | 99色网| 激情爱爱网站 | h在线| 看日本黄色录像 | 久久久精品影视 | 一区二区三区久久 | 精品国产123 | 国产情侣呻吟对白高潮 | 新天堂在线 | 欧洲自拍偷拍 | 午夜亚洲一区 | 国产成人免费看 | 久久天天躁狠狠躁夜夜躁2014 | 欧美日韩国产中文字幕 | 超碰av在线播放 | 成人福利网站在线观看 | 久久免费播放 | 色婷婷狠狠 | 亚洲精品一区二区三区蜜桃久 | 97精品一区二区视频在线观看 | 国精产品一区 | av狠狠| 久久久久久久久久久久久久久久久久久久 | www.在线| 国产黄色免费网站 | 免费在线成人网 | 黄色一级免费观看 | 中文免费av | 欧美性开放视频 | 中文天堂在线视频 | 日韩一卡二卡在线 | 日本大胆裸体做爰视频 | 中国久久| 欧美成人一区二区三区片免费 | 亚洲免费av网址 | 国产精品资源在线观看 | 亚洲日本不卡 | 日韩大片在线观看 | 国产精品一品二区三区的使用体验 | 亚洲无吗在线视频 | 午夜色婷婷 | 奇米影视色 | 黄色免费网站在线看 | 依依成人在线视频 | 日韩黄色精品视频 | 欧美日韩一二三区 | 噜噜噜天天躁狠狠躁夜夜精品 | 嫩草在线观看视频 | 国产黄色激情 | 色婷婷精品国产一区二区三区 | 91精品91 | 国产精品99久久久久 | 香蕉尹人| 观看av | 欧美精品毛片 | 天天干狠狠 | 午夜精品一区二区三区在线 | 欧洲中文字幕 | 色老头在线观看 | 久久影院一区 | 国产乱大交 | 日韩一区二区精品视频 | 激情福利社 | 天天躁日日躁狠狠躁av | 尹人久久 | 中文字幕在线观看av | 国产精品黄色av | 国产在线精 | 91精品一区二区在线观看 | 精品国产123 | 中国黄色一级片 | 精品综合| 中国产一级片 | 成人aaaa| 乐播av一区二区三区在线观 | 国产精选在线观看 | 亚洲女人网 | 久久激情综合 | 日韩专区第一页 | 婷婷在线视频 | 亚洲天堂中文字幕 | 日韩av成人在线 | 色视频免费在线观看 | 亚洲黄页在线观看 | 国产91精品ai换脸 | 国产日产欧美 | 久操社区| 国产老头老太作爱视频 | 午夜国产福利 | 12av毛片| 天堂网wwww | 夜夜夜夜bbbbbb欧美 | 黄色网在线播放 | 国产一区二区三区视频在线观看 | 手机在线精品视频 | 18资源在线www免费 | 色婷在线 | 国产精品jizz在线观看美国 | 北条麻妃青青久久 | 国产91成人 | 最近中文字幕在线免费观看 | 欧美jizz欧美性大全 | 国产精品免费视频观看 | 二级毛片在线观看 | 欧美精品一二 | 午夜网站免费 | 亚洲免费看看 | 成人永久免费 | 久久四虎 | 国产精品久久久久久久久久妇女 | 五月婷婷综合在线 | 91精品婷婷国产综合久久 | 伊人激情久久 | 五月涩| 一区二区亚洲视频 | av自拍| 极品美女啪啪 | 国产精品av一区 | 精品日韩一区二区三区免费视频 | 国产亚洲精品美女久久久 | 亚洲经典在线观看 | 国模私拍在线观看 | 绯色av一区二区三区在线观看 | 欧美成人免费一级人片100 | 51成人精品网站 | 亚洲麻豆| 亚洲老女人视频 | 国产精品一二区在线观看 | 国产无遮掩 | 98超碰在线| 亚洲美女一区二区三区 | 亚欧在线播放 | 嫩草影院污 | 午夜理伦三级理论 | 国产91大片 | 国产乱淫a∨片免费视频 | av网站有哪些 | 最近中文字幕在线mv视频在线 | 亚洲干| 国产91久久久久 | 天天操天天爱天天干 | 九九热这里都是精品 | 顶破超薄肉色丝袜进入 | 久久少妇网 | 欧美成人精精品一区二区频 | 韩国av免费观看 | 亚洲国产成人精品女人久久久 | 国产美女永久免费无遮挡 | 国产精品伦一区二区三区 | 伊人365 | 一区二区三区四区蜜桃 | 成人永久免费 | 一级一级国产片 | 日韩免费福利视频 | 亚洲福利在线看 | 三级av网| 国产美女久久久久 | 精品黄色片 | 日韩欧美国产一区二区三区在线观看 | 欧美日韩h | √天堂资源地址在线官网 | 亚洲第一伊人 | 亚洲成人久久精品 | 亚洲激情久久久 | 狠狠91| 日本乱偷中文字幕 | 亚洲性在线 | 色天堂在线视频 | 九九影院最新理论片 | 欧美性猛交xxxx乱大交hd | 欧美视频免费看 | 欧美一区二区在线播放 | 一起草视频在线播放 | 男人天堂久久 | 中文字幕精品一区二区三区精品 | 台湾佬av| 久久成人一区 | 日韩性av| 国产精品国产三级国产a | 精品免费一区二区三区 | 久久久二区 | 美日韩免费视频 | 怡红院成人在线 | 91精品国产综合久久婷婷香蕉 | 毛片毛片毛片 | 中文在线资源 | 欧美伦理影院 | 91麻豆蜜桃| 亚洲女同tvhd | 欧美在线观看一区二区三区 | 日韩一区二区三区免费 | 国产成人一区二区三区 | 国产肥熟 | 久久精品女同亚洲女同13 | 人人草人人干 | 五月婷婷丁香激情 | 天天插夜夜 | 精品99久久久 | 日本一区视频在线 | 国产剧情在线 | 日韩欧美在线看 | 欧美日韩少妇 | 天天干天天摸 | 一级日韩毛片 | 亚洲最大的av网站 | 亚洲精品国产精品国自产网站按摩 | 国产黄色片在线播放 | 蜜臀久久99静品久久久久久 | 成人做爰9片免费视频 | 亚洲视频图片小说 | 免费成人深夜夜视频 | 德国性猛交xxxxhd | 黄a在线 | 小视频一区| 成人毛片av | 国产精品国产三级国产普通话对白 | 国产区在线观看 | 鲍鱼av在线 | 91视频麻豆| 揄拍自拍 | 亚洲福利视 | 亚洲高清视频在线观看免费 | 日韩欧美三级在线 | 久久人成 | 欧美高清在线观看 | 蜜臀久久99精品久久一区二区 | 91精品国产麻豆国产自产在线 | 精品免费在线 | 日本精品在线视频 | 亚洲欧美在线另类 | 成人v精品蜜桃久一区 | 精品国产伦一区二区三区免费 | 国产日韩欧美综合在线 | 人人射 | 奇米激情 | 国产精品污视频 | 日本大胆裸体做爰视频 | 天天夜夜操 | 国产小视频网址 | 国产日韩精品久久 | 亚洲性生活大片 | 日韩资源在线观看 | 91成人看 | 黄色在线观看视频 | 成人午夜视频在线观看 | 中文字幕一区二区三区乱码不卡 | 久久午夜鲁丝片午夜精品 | 国产精品亚洲欧美 | 丁香六月综合 | 99久久视频| 色婷婷综合久久久中文字幕 | 外国黄色网址 | 欧美日韩在线观看成人 | 国产特黄大片aaaa毛片 | 国产欧美网站 | 久婷婷| 大学生av| 天堂久久网| 色综合88 | 中文字幕一区二区三区乱码在线 | 精品无码久久久久久国产 | 黑人一区二区三区 | 日韩久久av | 成人免费视频视频 | 99热精品在线观看 | 久久一级大片 | 五月综合在线 | 黄色免费观看网站 |