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

老板急壞了,線上又出“幺蛾子”了!

開(kāi)發(fā) 前端 開(kāi)發(fā)工具
很多人在面試時(shí),會(huì)被問(wèn)到這樣的問(wèn)題:遇到過(guò)什么系統(tǒng)故障?怎么解決的?

 很多人在面試時(shí),會(huì)被問(wèn)到這樣的問(wèn)題:遇到過(guò)什么系統(tǒng)故障?怎么解決的?

[[332948]]

 

圖片來(lái)自 Pexels

下面是筆者根據(jù)自己 15 年互聯(lián)網(wǎng)研發(fā)經(jīng)歷總結(jié)的多個(gè)線上故障真實(shí)案例。相信可以幫你從容應(yīng)對(duì)面試官的提問(wèn)!本文圖不多,但內(nèi)容很干!理解為主,面試為輔,學(xué)以致用!

故障一:JVM頻繁FULL GC快速排查

在分享此案例前,先聊聊哪些場(chǎng)景會(huì)導(dǎo)致頻繁 Full GC:

  • 內(nèi)存泄漏(代碼有問(wèn)題,對(duì)象引用沒(méi)及時(shí)釋放,導(dǎo)致對(duì)象不能及時(shí)回收)
  • 死循環(huán)
  • 大對(duì)象

尤其是大對(duì)象,80% 以上的情況就是它,那么大對(duì)象從哪里來(lái)的呢?

  • 數(shù)據(jù)庫(kù)(包括 MySQL 和 MongoDB 等 NoSQL 數(shù)據(jù)庫(kù)),結(jié)果集太大
  • 第三方接口傳輸?shù)拇髮?duì)象
  • 消息隊(duì)列,消息太大

根據(jù)多年一線互聯(lián)網(wǎng)經(jīng)驗(yàn),絕大部分情況是數(shù)據(jù)庫(kù)大結(jié)果集導(dǎo)致。

好,現(xiàn)在我們開(kāi)始介紹這次線上故障:在沒(méi)有任何發(fā)布的情況下,POP 服務(wù)(接入第三方商家的服務(wù))突然開(kāi)始瘋狂 Full GC,觀察堆內(nèi)存監(jiān)控沒(méi)內(nèi)存泄漏,回滾到前一版本,問(wèn)題仍然存在,尷尬了!!!

按照常規(guī)做法,一般先用 jmap 導(dǎo)出堆內(nèi)存快照(jmap -dump:format=b,file=文件名 [pid]),然后用 mat 等工具分析出什么對(duì)象占用了大量空間,再查看相關(guān)引用找到問(wèn)題代碼。

這種方式定位問(wèn)題周期會(huì)比較長(zhǎng),如果是關(guān)鍵服務(wù),長(zhǎng)時(shí)間不能定位解決問(wèn)題,影響太大。

下面來(lái)看看我們的做法:先按照常規(guī)做法分析堆內(nèi)存快照,與此同時(shí)另外的同學(xué)去查看數(shù)據(jù)庫(kù)服務(wù)器網(wǎng)絡(luò) IO 監(jiān)控。

如果數(shù)據(jù)庫(kù)服務(wù)器網(wǎng)絡(luò) IO 有明顯上升,并且時(shí)間點(diǎn)吻合,基本可以確定是數(shù)據(jù)庫(kù)大結(jié)果集導(dǎo)致了 Full GC,趕緊找 DBA 快速定位大 SQL(對(duì) DBA 來(lái)說(shuō)很簡(jiǎn)單,分分鐘搞定,如果 DBA 不知道怎么定位,那他要被開(kāi)除了,哈哈),定位到 SQL 后再定位代碼就非常簡(jiǎn)單了。

按照這種辦法,我們很快定位了問(wèn)題。原來(lái)是一個(gè)接口必傳的參數(shù)沒(méi)傳進(jìn)來(lái),也沒(méi)加校驗(yàn),導(dǎo)致 SQL 語(yǔ)句 where 后面少了兩個(gè)條件,一次查幾萬(wàn)條記錄出來(lái),真坑啊!這種方法是不是要快很多,哈哈,5 分鐘搞定。

當(dāng)時(shí)的 DAO 層是基于 Mybatis 實(shí)現(xiàn)的,出問(wèn)題的 SQL 語(yǔ)句如下:

  1. <select id="selectOrders" resultType="com.***.Order" > 
  2.  
  3. select * from user where 1=1 
  4. <if test=" orderID != null "
  5. and order_id = #{orderID} 
  6. </if > 
  7.  
  8. <if test="userID !=null"
  9. and user_id=#{userID} 
  10. </if > 
  11.  
  12. <if test="startTime !=null"
  13. and create_time >= #{createTime} 
  14. </if > 
  15.  
  16. <if test="endTime !=null"
  17. and create_time <= #{userID} 
  18. </if > 
  19.  
  20. </select

上面 SQL 語(yǔ)句意思是根據(jù) orderID 查一個(gè)訂單,或者根據(jù) userID 查一個(gè)用戶所有的訂單,兩個(gè)參數(shù)至少要傳一個(gè)。

但是兩個(gè)參數(shù)都沒(méi)傳,只傳了 startTime 和 endTime。所以一次 Select 就查出了幾萬(wàn)條記錄。

所以我們?cè)谑褂?Mybatis 的時(shí)候一定要慎用 if test,一不小心就會(huì)帶來(lái)災(zāi)難。后來(lái)我們將上面的 SQL 拆成了兩個(gè)。

根據(jù)訂單 ID 查詢訂單:

  1. <select id="selectOrderByID" resultType="com.***.Order" > 
  2.  
  3. select * from user where 
  4.  
  5. order_id = #{orderID} 
  6.  
  7.  
  8. </select

根據(jù) userID 查詢訂單:

  1. <select id="selectOrdersByUserID" resultType="com.***.Order" > 
  2.  
  3. select * from user where 
  4. user_id=#{userID} 
  5.  
  6. <if test="startTime !=null"
  7. and create_time >= #{createTime} 
  8. </if > 
  9.  
  10. <if test="endTime !=null"
  11. and create_time <= #{userID} 
  12. </if > 
  13.  
  14. </select

故障二:內(nèi)存泄漏

介紹案例前,先了解一下內(nèi)存泄漏和內(nèi)存溢出的區(qū)別。

內(nèi)存溢出:程序沒(méi)有足夠的內(nèi)存使用時(shí),就會(huì)發(fā)生內(nèi)存溢出。內(nèi)存溢出后程序基本上就無(wú)法正常運(yùn)行了。

內(nèi)存泄漏:當(dāng)程序不能及時(shí)釋放內(nèi)存,導(dǎo)致占用內(nèi)存逐漸增加,就是內(nèi)存泄漏。

內(nèi)存泄漏一般不會(huì)導(dǎo)致程序無(wú)法運(yùn)行。不過(guò)持續(xù)的內(nèi)存泄漏,累積到內(nèi)存上限時(shí),就會(huì)發(fā)生內(nèi)存溢出。

在 Java 中,如果發(fā)生內(nèi)存泄漏,會(huì)導(dǎo)致 GC 回收不徹底,每次 GC 后,堆內(nèi)存使用率逐漸增高。

下圖是 JVM 發(fā)生內(nèi)存泄漏的監(jiān)控圖,我們可以看到每次 GC 后堆內(nèi)存使用率都比以前提高了。

 

圖片來(lái)源于網(wǎng)絡(luò)

當(dāng)時(shí)內(nèi)存泄漏的場(chǎng)景是,用本地緩存(公司基礎(chǔ)架構(gòu)組自己研發(fā)的框架)存放了商品數(shù)據(jù),商品數(shù)量不算太多,幾十萬(wàn)的樣子。

如果只存熱點(diǎn)商品,內(nèi)存占用不會(huì)太大,但是如果存放全量商品,內(nèi)存就不夠了。

初期我們給每個(gè)緩存記錄都加了 7 天的過(guò)期時(shí)間,這樣就可以保證緩存中絕大部分都是熱點(diǎn)商品。

不過(guò)后來(lái)本地緩存框架經(jīng)過(guò)一次重構(gòu),過(guò)期時(shí)間被去掉了。沒(méi)有了過(guò)期時(shí)間,日積月累本地緩存越來(lái)越大,很多冷數(shù)據(jù)也被加載到了緩存。直到有一天接到告警短信,提示堆內(nèi)存過(guò)高。

趕緊通過(guò) jmap(jmap -dump:format=b,file=文件名 [pid] )下載了堆內(nèi)存快照,然后用 eclipse 的 mat 工具分析快照,發(fā)現(xiàn)了本地緩存中有大量的商品記錄。定位問(wèn)題后趕緊讓架構(gòu)組加上了過(guò)期時(shí)間,然后逐個(gè)節(jié)點(diǎn)重啟了服務(wù)。

虧了我們加了服務(wù)器內(nèi)存和 JVM 堆內(nèi)存監(jiān)控,及時(shí)發(fā)現(xiàn)了內(nèi)存泄漏的問(wèn)題。否則隨著泄漏問(wèn)題日積月累,如果哪天真的 OOM 就慘了。

所以技術(shù)團(tuán)隊(duì)除了做好 CPU,內(nèi)存等運(yùn)維監(jiān)控,JVM 監(jiān)控也非常重要。

故障三:冪等問(wèn)題

很多年前,筆者在一家大型電商公司做 Java 程序員,當(dāng)時(shí)開(kāi)發(fā)了積分服務(wù)。當(dāng)時(shí)的業(yè)務(wù)邏輯是,用戶訂單完結(jié)后,訂單系統(tǒng)發(fā)送消息到消息隊(duì)列,積分服務(wù)接到消息后給用戶積分,在用戶現(xiàn)有的積分上加上新產(chǎn)生的積分。

由于網(wǎng)絡(luò)等原因會(huì)有消息重復(fù)發(fā)送的情況,這樣也就導(dǎo)致了消息的重復(fù)消費(fèi)。當(dāng)時(shí)筆者還是個(gè)初入職場(chǎng)的小菜鳥(niǎo),并沒(méi)有考慮到這種情況。

所以上線后偶爾會(huì)出現(xiàn)重復(fù)積分的情況,也就是一個(gè)訂單完結(jié)后會(huì)給用戶加兩次或多次積分。

后來(lái)我們加了一個(gè)積分記錄表,每次消費(fèi)消息給用戶增加積分前,先根據(jù)訂單號(hào)查一遍積分記錄表,如果沒(méi)有積分記錄才給用戶增加積分。

這也就是所謂的“冪等性”,即多次重復(fù)操作不影響最終的結(jié)果。實(shí)際開(kāi)發(fā)中很多需要重試或重復(fù)消費(fèi)的場(chǎng)景都要實(shí)現(xiàn)冪等,以保證結(jié)果的正確性。例如,為了避免重復(fù)支付,支付接口也要實(shí)現(xiàn)冪等。

故障四:緩存雪崩

我們經(jīng)常會(huì)遇到需要初始化緩存的情況。比如,我們?cè)?jīng)經(jīng)歷過(guò)用戶系統(tǒng)重構(gòu),用戶系統(tǒng)表結(jié)構(gòu)發(fā)生了變化,緩存信息也要變。

重構(gòu)完成后上線前,需要初始化緩存,將用戶信息批量存入 Reids。每條用戶信息緩存記錄過(guò)期時(shí)間是 1 天,記錄過(guò)期后再?gòu)臄?shù)據(jù)庫(kù)查詢最新的數(shù)據(jù)并拉取到 Redis 中。

灰度上線時(shí)一切正常,所以很快就全量發(fā)布了。整個(gè)上線過(guò)程非常順利,碼農(nóng)們也很開(kāi)心。

不過(guò),第二天,災(zāi)難發(fā)生了!到某一個(gè)時(shí)間點(diǎn),各種報(bào)警紛至沓來(lái)。用戶系統(tǒng)響應(yīng)突然變得非常慢,甚至一度沒(méi)有任何響應(yīng)。

查看監(jiān)控,用戶服務(wù) CPU 突然飆高(IO wait 很高),MySQL 訪問(wèn)量激增,MySQL 服務(wù)器壓力也隨之暴增,Reids 緩存命中率也跌到了極點(diǎn)。

依賴于我們強(qiáng)大的監(jiān)控系統(tǒng)(運(yùn)維監(jiān)控,數(shù)據(jù)庫(kù)監(jiān)控,APM 全鏈路性能監(jiān)控),很快定位了問(wèn)題。

原因就是 Reids 中大量用戶記錄集中失效,獲取用戶信息的請(qǐng)求在 Redis 中查不到用戶記錄,導(dǎo)致大量的請(qǐng)求穿透到數(shù)據(jù)庫(kù),瞬間給數(shù)據(jù)庫(kù)帶來(lái)巨大壓力。同時(shí)用戶服務(wù)和相關(guān)聯(lián)的其他服務(wù)也都受到了影響。

這種緩存集中失效,導(dǎo)致大量請(qǐng)求同時(shí)穿透到數(shù)據(jù)庫(kù)的情況,就是所謂的“緩存雪崩”。

如果沒(méi)到緩存失效時(shí)間點(diǎn),性能測(cè)試也測(cè)不出問(wèn)題。所以一定要引起大家注意。所以,需要初始化緩存數(shù)據(jù)時(shí),一定要保證每個(gè)緩存記錄過(guò)期時(shí)間的離散性。

例如,我們給這些用戶信息設(shè)置過(guò)期時(shí)間,可以采用一個(gè)較大的固定值加上一個(gè)較小的隨機(jī)值。比如過(guò)期時(shí)間可以是:24 小時(shí)+0 到 3600 秒的隨機(jī)值。

故障五:磁盤 IO 導(dǎo)致線程阻塞

問(wèn)題發(fā)生在 2017 年下半年,有一段時(shí)間地理網(wǎng)格服務(wù)時(shí)不常的會(huì)響應(yīng)變慢,每次持續(xù)幾秒鐘到幾十秒鐘就自動(dòng)恢復(fù)。

如果響應(yīng)變慢是持續(xù)的還好辦,直接用 jstack 抓線程堆棧,基本可以很快定位問(wèn)題。

關(guān)鍵持續(xù)時(shí)間只有最多幾十秒鐘,而且是偶發(fā)的,一天只發(fā)生一兩次,有時(shí)幾天才發(fā)生一次,發(fā)生時(shí)間點(diǎn)也不確定,人盯著然后用 jstack 手工抓線程堆棧顯然不現(xiàn)實(shí)。

好吧,既然手工的辦法不現(xiàn)實(shí),咱們就來(lái)自動(dòng)的,寫一個(gè)shell腳本自動(dòng)定時(shí)執(zhí)行 jstack,5 秒執(zhí)行一次 jstack,每次執(zhí)行結(jié)果放到不同日志文件中,只保存 20000 個(gè)日志文件。

Shell 腳本如下:

  1. #!/bin/bash 
  2. num=0 
  3. log="/tmp/jstack_thread_log/thread_info" 
  4.  
  5. cd /tmp 
  6. if [ ! -d "jstack_thread_log" ]; then 
  7.    mkdir jstack_thread_log 
  8. fi 
  9.  
  10. while ((num <= 10000)); 
  11.  
  12.   do 
  13.  
  14.     ID=`ps -ef | grep java | grep gaea | grep -v "grep" | awk '{print $2}'
  15.  
  16.     if [ -n "$ID" ]; then 
  17.   jstack $ID >> ${log}   
  18.     fi 
  19.  
  20.     num=$(( $num + 1 )) 
  21.  
  22.     mod=$(( $num%100 )) 
  23.  
  24.     if [ $mod -eq 0 ]; then 
  25.   back=$log$num 
  26.   mv $log $back 
  27.     fi 
  28.  
  29.     sleep 5 
  30.  
  31. done 

下一次響應(yīng)變慢的時(shí)候,我們找到對(duì)應(yīng)時(shí)間點(diǎn)的 jstack 日志文件,發(fā)現(xiàn)里面有很多線程阻塞在 logback 輸出日志的過(guò)程。

后來(lái)我們精簡(jiǎn)了 log,并且把 log 輸出改成異步,問(wèn)題解決了,這個(gè)腳本果真好用!建議大家保留,以后遇到類似問(wèn)題時(shí),可以拿來(lái)用!

故障六:數(shù)據(jù)庫(kù)死鎖問(wèn)題

在分析案例之前,我們先了解一下 MySQL INNODB。在 MySQL INNODB 引擎中主鍵是采用聚簇索引的形式,即在 B 樹(shù)的葉子節(jié)點(diǎn)中既存儲(chǔ)了索引值也存儲(chǔ)了數(shù)據(jù)記錄,即數(shù)據(jù)記錄和主鍵索引是存在一起的。

而普通索引的葉子節(jié)點(diǎn)存儲(chǔ)的只是主鍵索引的值,一次查詢找到普通索引的葉子節(jié)點(diǎn)后,還要根據(jù)葉子節(jié)點(diǎn)中的主鍵索引去找到聚簇索引葉子節(jié)點(diǎn)并拿到其中的具體數(shù)據(jù)記錄,這個(gè)過(guò)程也叫“回表”。

故障發(fā)生的場(chǎng)景是關(guān)于我們商城的訂單系統(tǒng)。有一個(gè)定時(shí)任務(wù),每一小時(shí)跑一次,每次把所有一小時(shí)前未支付訂單取消掉。而客服后臺(tái)也可以批量取消訂單。

訂單表 t_order 結(jié)構(gòu)大至如下:

 

id 是表的主鍵,created_time 字段上是普通索引。

聚簇索引(主鍵 id):

 

普通索引(created_time字段 ):

 

定時(shí)任務(wù)每一小時(shí)跑一次,每次把所有一小時(shí)前兩小時(shí)內(nèi)的未支付訂單取消掉,比如上午 11 點(diǎn)會(huì)取消 8 點(diǎn)到 10 點(diǎn)的未支付訂單。

SQL 語(yǔ)句如下:

  1. update t_order set status = 'CANCELLED' where created_time > '2020-01-01 08:00:00' and created_time < '2020-01-01 10:00:00' and status = 'UNPAID' 

客服批量取消訂單 SQL 如下:

  1. update t_order set status = 'CANCELLED' where id in (2, 3, 5) and status = 'UNPAID' 

上面的兩條語(yǔ)句同時(shí)執(zhí)行就可能發(fā)生死鎖,我們來(lái)分析一下原因。

第一條定時(shí)任務(wù)的 SQL,會(huì)先找到 created_time 普通索引并加鎖,然后再在找到主鍵索引并加鎖。

第一步,created_time 普通索引加鎖:

 

第二步,主鍵索引加鎖:

 

第二條客服批量取消訂單 SQL,直接走主鍵索引,直接在主鍵索引上加鎖。

我們可以看到,定時(shí)任務(wù) SQL 對(duì)主鍵加鎖順序是 5,4,3,2。客服批量取消訂單 SQL 對(duì)主鍵加鎖順序是 2,3,5。

 

當(dāng)?shù)谝粋€(gè) SQL 對(duì) 3 加鎖后,正準(zhǔn)備對(duì) 2 加鎖時(shí),發(fā)現(xiàn) 2 已經(jīng)被第二個(gè) SQL 加鎖了,所以第一個(gè) SQL 要等待 2 的鎖釋放。

而此時(shí)第二個(gè) SQL 準(zhǔn)備對(duì) 3 加鎖,卻發(fā)現(xiàn) 3 已經(jīng)被第一個(gè) SQL 加鎖了,就要等待 3 的鎖釋放。兩個(gè) SQL 互相等待對(duì)方的鎖,也就發(fā)生了“死鎖”。

解決辦法就是從 SQL 語(yǔ)句上保證加鎖順序一致。或者把客服批量取消訂單 SQL 改成每次 SQL 操作只能取消一個(gè)訂單,然后在程序里多次循環(huán)執(zhí)行 SQL,如果批量操作的訂單數(shù)量不多,這種笨辦法也是可行的。

故障七:域名劫持

先看看 DNS 解析是怎么回事,當(dāng)我們?cè)L問(wèn) www.baidu.com 時(shí),首先會(huì)根據(jù) www.baidu.com 到 DNS 域名解析服務(wù)器去查詢百度服務(wù)器對(duì)應(yīng)的 IP 地址,然后再通過(guò) HTTP 協(xié)議訪問(wèn)該 IP 地址對(duì)應(yīng)的網(wǎng)站。

而 DNS 劫持是互聯(lián)網(wǎng)攻擊的一種方式,通過(guò)攻擊域名解析服務(wù)器(DNS)或者偽造域名解析服務(wù)器,把目標(biāo)網(wǎng)站域名解析到其他的 IP。從而導(dǎo)致請(qǐng)求無(wú)法訪問(wèn)目標(biāo)網(wǎng)站或者跳轉(zhuǎn)到其他網(wǎng)站。

如下圖:

 

下面這張圖是我們?cè)?jīng)經(jīng)歷過(guò)的 DNS 劫持的案例。

 

看圖中的紅框部分,本來(lái)上方的圖片應(yīng)該是商品圖片,但是卻顯示成了廣告圖片。是不是圖片配錯(cuò)了?不是,是域名(DNS)被劫持了。

原本應(yīng)該顯示存儲(chǔ)在 CDN 上的商品圖片,但是被劫持之后卻顯示了其他網(wǎng)站的廣告鏈接圖片。

由于當(dāng)時(shí)的 CDN 圖片鏈接采用了不安全的 HTTP 協(xié)議,所以很容易被劫持。后來(lái)改成了 HTTPS,問(wèn)題就解決了。

當(dāng)然域名劫持有很多方式,HTTPS 也不能規(guī)避所有問(wèn)題。所以,除了一些安全防護(hù)措施,很多公司都有自己的備用域名,一旦發(fā)生域名劫持可以隨時(shí)切換到備用域名。

故障八:帶寬資源耗盡

帶寬資源耗盡導(dǎo)致系統(tǒng)無(wú)法訪問(wèn)的情況,雖然不多見(jiàn),但是也應(yīng)該引起大家的注意。來(lái)看看,之前遇到的一起事故。

場(chǎng)景是這樣的:社交電商每個(gè)分享出去的商品圖片都有一個(gè)唯一的二維碼,用來(lái)區(qū)分商品和分享者。

所以二維碼要用程序生成,最初我們?cè)诜?wù)端用 Java 生成二維碼。前期由于系統(tǒng)訪問(wèn)量不大,系統(tǒng)一直沒(méi)什么問(wèn)題。

但是有一天運(yùn)營(yíng)突然搞了一次優(yōu)惠力度空前的大促,系統(tǒng)瞬時(shí)訪問(wèn)量翻了幾十倍。

問(wèn)題也就隨之而來(lái)了,網(wǎng)絡(luò)帶寬直接被打滿,由于帶寬資源被耗盡,導(dǎo)致很多頁(yè)面請(qǐng)求響應(yīng)很慢甚至沒(méi)任何響應(yīng)。

原因就是二維碼生成數(shù)量瞬間也翻了幾十倍,每個(gè)二維碼都是一張圖片,對(duì)帶寬帶來(lái)了巨大壓力。

怎么解決呢?如果服務(wù)端處理不了,就考慮一下客戶端。把生成二維碼放到客戶端 APP 處理,充分利用用戶終端手機(jī),目前 Andriod,iOS 或者 React 都有相關(guān)生成二維碼的 SDK。

這樣不但解決了帶寬問(wèn)題,而且也釋放了服務(wù)端生成二維碼時(shí)消耗的 CPU 資源(生成二維碼過(guò)程需要一定的計(jì)算量,CPU 消耗比較明顯)。

外網(wǎng)帶寬非常昂貴,我們還是要省著點(diǎn)用啊!本文分享的案例都是筆者的親身經(jīng)歷,希望對(duì)各位讀者有所幫助。

作者:二馬讀書

簡(jiǎn)介:曾任職于阿里巴巴,每日優(yōu)鮮等互聯(lián)網(wǎng)公司,任技術(shù)總監(jiān),15年電商互聯(lián)網(wǎng)經(jīng)歷。

編輯:陶家龍

出處:轉(zhuǎn)載自微信公眾號(hào)架構(gòu)師進(jìn)階之路

責(zé)任編輯:武曉燕 來(lái)源: 架構(gòu)師進(jìn)階之路
相關(guān)推薦

2020-04-22 12:06:08

百度網(wǎng)盤資源

2021-11-16 07:48:55

Windows 11操作系統(tǒng)微軟

2025-04-14 09:01:24

2020-12-13 08:00:40

Windows 10Windows操作系統(tǒng)

2020-08-20 10:54:51

GartnerAI新技術(shù)

2018-05-22 08:47:41

微軟Windows 10殺毒

2021-04-19 09:15:14

老板公司企業(yè)

2017-09-06 09:13:24

2018-09-06 10:24:26

蘋果MacBookiPhone

2020-09-11 09:20:10

Gartner新興技術(shù)技術(shù)趨勢(shì)

2022-12-22 17:46:19

2021-12-07 18:33:53

Kafka消息集群

2021-11-30 06:32:19

Redis宕機(jī)集群

2015-07-09 13:46:15

漏洞OpenSSL

2019-09-11 15:35:18

戴爾

2024-10-12 08:01:53

2023-05-31 14:49:07

Firefox火狐瀏覽器

2018-02-08 09:59:37

12306技術(shù)團(tuán)隊(duì)
點(diǎn)贊
收藏

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

亚洲免费av高清| 一本久道久久久| 69堂成人精品免费视频| 国产美女作爱全过程免费视频| 日韩综合第一页| 不卡视频观看| 最新久久zyz资源站| 成人动漫视频在线观看免费| 婷婷激情五月网| 婷婷久久国产对白刺激五月99| 亚洲成人免费看| 日韩中文字幕一区| 国产精品欧美激情在线| 国产农村妇女精品一区二区| 正在播放亚洲1区| 亚洲精品激情视频| 亚洲国产综合在线观看| 精品国产精品自拍| 永久免费网站视频在线观看| 久草在线网址| 福利电影一区二区三区| 国产美女精品免费电影| 亚洲欧美偷拍视频| 国产精品黄色| 两个人的视频www国产精品| 欧美成人午夜精品免费| 91夜夜蜜桃臀一区二区三区| 欧美日韩国产高清一区二区| 欧美性大战xxxxx久久久| 国产精品video| 精品少妇久久久| 欧美1级片网站| 亚洲视频在线免费观看| 黄色av网址在线观看| 玖玖玖电影综合影院| 欧美日韩国产三级| 爱情岛论坛成人| 亚洲免费福利| 精品久久中文字幕久久av| av动漫在线播放| 国产原创精品视频| 国产精品久久久久影视| 日韩精品资源| 福利成人在线观看| 中文字幕免费在线观看视频一区| 欧美在线视频一区二区| 久一视频在线观看| 黑人一区二区| 久热精品视频在线| 欧美丰满熟妇bbbbbb| 99久久99久久精品国产片果冰| 日韩片之四级片| 污污视频在线免费| 欧美第一在线视频| 日韩一区二区三区免费看| 五月天婷婷亚洲| 亚洲人成网站在线在线观看| 欧美日韩精品免费| 亚洲图色中文字幕| 免费视频观看成人| 欧美午夜精品电影| 九九热免费在线观看| 伊人久久综合网另类网站| jk漫画禁漫成人入口| 亚洲国产成人91porn| 成年人网站国产| 国产激情视频在线看| 天天操天天色综合| 成人免费视频久久| 亚洲电影二区| 日韩欧美国产一区二区在线播放 | 亚洲精品久久嫩草网站秘色| 一区二区三区视频| 在线电影福利片| 亚洲aⅴ怡春院| 国产偷人视频免费| 美女18一级毛片一品久道久久综合| 亚洲欧美自拍偷拍色图| 中文视频一区视频二区视频三区| 亚洲 另类 春色 国产| 久久亚洲免费视频| 一区二区三区av在线| 亚洲第一图区| 欧美日韩在线免费| 日韩av手机版| 秋霞午夜一区二区三区视频| 成人高潮a毛片免费观看网站| 中文字幕一区二区日韩精品绯色| 国产欧美一区二区三区另类精品| 在线免费观看一区二区| 国产在线麻豆精品观看| 精品国产乱码一区二区三区四区| 一区二区三区黄| 国产九九视频一区二区三区| 国产精品国色综合久久| 国产youjizz在线| 亚洲激情五月婷婷| 丰满爆乳一区二区三区| 欧美日韩在线精品一区二区三区激情综合 | 任你弄在线视频免费观看| 性欧美大战久久久久久久久| 久久久久久三级| 亚洲视频精选| 亚洲一区www| 香蕉视频一区二区| 久久成人精品无人区| 黑人中文字幕一区二区三区| 超碰在线影院| 午夜精品久久久久久久久| www.99av.com| 思热99re视热频这里只精品| 亚欧美无遮挡hd高清在线视频| 中文字幕中文字幕在线一区| 日本免费a视频| 精品美女一区| 亚洲欧美一区二区三区久久| 午夜剧场免费在线观看| 久久精品伊人| 精品乱码一区二区三区| 在线观看电影av| 欧美日韩国产综合久久| 免费成人深夜夜行p站| 欧美激情第10页| 国产精品亚洲激情| 蜜桃成人在线视频| 天天色天天操综合| 任你躁av一区二区三区| 外国成人激情视频| 国产精品入口尤物| 暖暖视频在线免费观看| 午夜欧美大尺度福利影院在线看| 青青青青草视频| 日本一区精品视频| 久久激情五月丁香伊人| 亚洲国产无线乱码在线观看| 99精品欧美一区二区三区小说 | www.黄色一片| 国产精品久线观看视频| 免费涩涩18网站入口| 九色成人国产蝌蚪91| 26uuu国产精品视频| 乱色精品无码一区二区国产盗| 成人黄色av网站在线| 日韩精品福利片午夜免费观看| 欧洲中文在线| 日韩欧美久久一区| 九九热视频精品| 国产成人精品影院| 日本a在线天堂| 97久久综合区小说区图片区| 欧美美女15p| www.五月婷| 亚洲成人激情自拍| 中文字幕在线永久| 免费国产自线拍一欧美视频| 久久久久久久久久久久久久一区| 国产精品久久一区二区三区不卡| 欧美国产精品专区| 中文在线资源观看视频网站免费不卡| 99精品在线免费视频| 一区二区三区高清在线观看| 欧美激情a在线| www.黄色国产| 五月婷婷欧美视频| 国产毛片久久久久久久| 日韩av一区二| 中文字幕中文字幕一区三区| 日韩精品视频在线看| 欧美国产日韩精品| 四虎成人免费在线| 在线观看日韩电影| 国产视频精品免费| 福利一区在线观看| 女人另类性混交zo| 国产精品麻豆久久| 豆国产97在线| 456亚洲精品成人影院| 日韩亚洲欧美中文高清在线| 精品国精品国产自在久不卡| 午夜精品成人在线视频| 国产全是老熟女太爽了| 久久激情综合网| 97在线国产视频| 最新国产一区| 成人女保姆的销魂服务| 999av小视频在线| 这里只有视频精品| www.国产麻豆| 色美美综合视频| 青青草原在线免费观看视频| 91免费观看国产| 手机免费av片| 国产日韩欧美高清免费| 这里只有精品66| 欧美综合自拍| 亚洲影院在线看| 久久精品女人天堂av免费观看 | 9.1在线观看免费| 丝袜a∨在线一区二区三区不卡| 国产精品.com| 成人免费黄色| 欧美极品少妇与黑人| 国外av在线| 精品精品国产高清a毛片牛牛 | 欧美性受ⅹ╳╳╳黑人a性爽| 亚洲综合国产| 亚洲国产精品女人久久久| 你懂的国产在线| 亚洲色图欧洲色图婷婷| 久久亚洲AV无码专区成人国产| 欧美日韩ab| 亚洲精品乱码久久久久久蜜桃91| 日本在线中文字幕一区二区三区| 亚洲色图第一页| 性一交一乱一色一视频麻豆| 一本久久a久久精品亚洲| 久久免费播放视频| 中文字幕在线不卡| 精品人妻无码一区| 99久久久久久99| 日日夜夜精品视频免费观看| 日日摸夜夜添夜夜添亚洲女人| 香蕉久久免费影视| 色综合久久中文| 动漫3d精品一区二区三区| 亚洲欧美在线人成swag| 国产精品福利小视频| 色吧亚洲日本| 韩国一区二区电影| 免费污视频在线| 九九热这里只有精品免费看| 日本福利专区在线观看| 国产亚洲精品综合一区91| 欧美色综合一区二区三区| 亚洲精品电影在线观看| 人妻无码中文字幕| 欧美一级视频精品观看| 国产欧美第一页| 欧美二区三区的天堂| 在线观看日韩一区二区| 欧美视频日韩视频在线观看| 日本一本在线观看| 一本一本大道香蕉久在线精品 | 一级女性全黄久久生活片免费| www.黄色网| 国产激情91久久精品导航| 亚洲va综合va国产va中文| 美国三级日本三级久久99| 欧美大尺度做爰床戏| 久久精品系列| 成人午夜激情av| 琪琪一区二区三区| 国产精品v日韩精品v在线观看| 欧美视频一区| 黄色三级中文字幕| 亚洲国产高清一区二区三区| 91九色丨porny丨国产jk| 一区二区三区国产在线| 奇米精品一区二区三区| 免费在线观看成人av| 日本999视频| 97精品人妻一区二区三区| 日本一区二区三区dvd视频在线| 天天操,天天操| 青草av.久久免费一区| 污污的视频免费观看| 国产aⅴ精品一区二区三区色成熟| 波多野结衣作品集| 美女性感视频久久| 午夜精品久久久久久久99热影院| 久久成人一区| 亚洲欧美在线精品| 国产一区二区三区在线看麻豆| 免费av网址在线| 日韩高清在线观看| 精品久久久99| 成人动漫中文字幕| 男女做爰猛烈刺激| 最新久久zyz资源站| 日韩黄色a级片| 在线观看网站黄不卡| 国产精品毛片久久久久久久av| 色婷婷激情综合| 国产又粗又猛又黄又爽无遮挡| 色综合激情五月| 国产又爽又黄免费软件| 日韩高清免费观看| 理论片午午伦夜理片在线播放| 亚洲免费av片| 久操视频在线播放| 91精品国产91久久久| 国产亚洲欧美日韩精品一区二区三区| 91sa在线看| 色综合久久久| 久久久久久久久四区三区| 99久久久国产精品美女| 国产97在线 | 亚洲| 免费高清不卡av| 国产伦精品一区二区免费| 欧美国产日韩精品免费观看| 日本一区二区不卡在线| 欧美日韩一区二区在线观看| 韩国av永久免费| 三级精品视频久久久久| 麻豆免费在线| 亚洲综合日韩在线| 欧美日韩一二三四| 国产h视频在线播放| 国产一级精品在线| 日本少妇xxxxx| 亚洲成人tv网| 国产成人精品一区二三区四区五区| 日韩一区二区三区电影| yourporn在线观看中文站| 欧美激情三级免费| 欧洲亚洲精品| 日本高清不卡一区二区三| 亚洲久久视频| 成人高清在线观看视频| 国产精品久久777777| www.久久久久久久| 亚洲精品久久久久国产| 久久一卡二卡| 97在线电影| 亚洲成人精选| 欧美日韩精品区别| 日韩免费一级| 国产精品一区久久久| 美女久久99| 两根大肉大捧一进一出好爽视频| 99精品福利视频| 久久久久中文字幕亚洲精品 | 国产精品xvideos88| 成人亚洲精品777777大片| 国产亚洲一本大道中文在线| 日韩精品一卡二卡| 亚洲电影在线观看| av白虎一区| 国产精品区一区| 在线观看日韩av电影| 秘密基地免费观看完整版中文 | 黄色一级片中国| 欧美色网站导航| av电影在线网| 国产日产欧美精品| 久久麻豆精品| 中文字幕在线视频一区二区三区 | 国产精品久久久视频| 色噜噜狠狠成人中文综合| 青青久在线视频免费观看| 欧美一级电影免费在线观看| 亚洲国产最新| 情侣黄网站免费看| 国产午夜亚洲精品不卡| 国产视频1区2区| 永久免费精品影视网站| 国产极品一区| 国内伊人久久久久久网站视频 | 欧美69wwwcom| 一级 黄 色 片一| 悠悠色在线精品| 亚洲免费成人在线| 2019亚洲男人天堂| 欧美sss在线视频| 欧美 国产 日本| 中文字幕乱码一区二区免费| 亚洲网站在线免费观看| 久久6免费高清热精品| 国产精品久久久久久久久久白浆| 亚洲aⅴ天堂av在线电影软件| 黄色日韩在线| 国产成人av无码精品| 91久久免费观看| 国产精品剧情| 国产伦精品一区二区三区照片| 天天超碰亚洲| 艳妇乳肉豪妇荡乳xxx| 精品久久久久久中文字幕| 国产高清美女一级毛片久久| 147欧美人体大胆444| 国产农村妇女精品一区二区| 成人精品一二三区| 精品电影一区二区三区| yw.尤物在线精品视频| 久久久久久久久影视| 2019国产精品| www.国产免费| 国产精品对白刺激| 亚洲午夜黄色| 欧美一区二区三区粗大| 精品国产凹凸成av人网站| 日韩一级二级| 精品无码国产一区二区三区av| 国产成人综合网| 亚洲精品性视频| 欧美日一区二区三区在线观看国产免| 亚洲熟妇av日韩熟妇在线| 国产欧美日韩精品在线| 亚洲国产精品久久人人爱潘金莲| 美女黄色丝袜一区|