




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
| 進(jìn)入課01:25 你先不要著急看答案,自己先想怎么解決,測一測自己對之前的知識掌握的程度。如果 10(比如發(fā)布職位),來積10萬個獵頭ID和積分信息,讓它能夠支持這樣幾個操作:ID查找積分在某個區(qū)間的獵頭ID列表;查詢積分從小到大排在第x位的獵頭ID查找按照積分從小到大在第x位到第y位之間的獵頭ID列表17|Redis20|散列表(下):25|樹:為什么工程中都用樹這種二叉樹ID按照ID,將獵頭信息組織成散列表。這樣,就可以根據(jù)ID信息快速的查找、刪除、更新獵頭的信息。按照積分,將獵頭信息組織成跳表這種數(shù)據(jù)結(jié)構(gòu),按照積分來查找獵頭信息,就非常高效,時間復(fù)雜度是O(logn)??梢詫倓偟奶磉M(jìn)行改造,每個索引結(jié)點中加入一個san字段,記錄這個索引結(jié)點到下一個索引結(jié)點的包含的鏈表結(jié)點的個數(shù)。這樣就可以利用跳表索引,快速計算出在某一位的獵頭或者在某個區(qū)間的獵頭列表。實際上,這些就是Redis中有序集合這種數(shù)據(jù)類型的實現(xiàn)原理。在開發(fā)中, 可以直接利用Redis的有序集合來完成。系統(tǒng)中,訂單數(shù)據(jù)一般都會很大,一般都分庫分表來。假設(shè)分了10個庫并在不同的機(jī)器上,在不引入復(fù)雜的分庫分表中間件的情況下,希望開發(fā)一個小的功能,能夠快速地查詢金額最大的前K個訂單(K是輸入?yún)?shù),可能是1、10、、,假設(shè)最大不會超過10萬)。如果你是這個功能的設(shè)計開發(fā),你會為了方便你設(shè)計,先交代一些必要的背景,在設(shè)計過程中,如果有其他需要明確的背景, 可以通過selectorderbylimit語句來M存,不要發(fā)生OutofMemoryError。12|排序(下):如何用快排思想在O(n)內(nèi)查找第K29|堆的應(yīng)用:如何快速獲取到Top10最熱門的搜索 從每個數(shù)據(jù)庫中,通過electorerbylimit語句,各取局部金額最大的訂單,把取出來的10個訂單放到優(yōu)先級隊列中,取出最大值(也就是大頂堆堆頂數(shù)據(jù)),就是全局金額最大的訂單。然后再從這個全局金額最大訂單對應(yīng)的數(shù)據(jù)庫中,取出下一條訂單(按照訂單金額從大到小排列的),然后放到優(yōu)先級隊列中。一直重復(fù)上面的過程,直到找到金額前K(K是用戶輸入的)大訂單。從算法的角度看起來,這個方案非常完美,但是,從實戰(zhàn)的角度來說,這個方案并不高效,甚至很低效。因為 忽略了,數(shù)據(jù)庫數(shù)據(jù)的性能才是這個問題的性能瓶頸。所以,們要盡量減少SL請求,每次多取一些數(shù)據(jù)出來,那取出多少才合適呢?這就比較靈活、比較有技巧了。取太多,會導(dǎo)致數(shù)據(jù)量太大,SQL執(zhí)行很慢,還有可能觸發(fā)超時,而且, 題目中也說了,內(nèi)存有限,太多的數(shù)據(jù)加載到內(nèi)存中,還有可能導(dǎo)致OutofMemyError。做benark測試去找最合適的。知道,CPU的線程反而會導(dǎo)致CPU頻繁切換,處理性能下降。所以,線的大小一般都是綜合考慮 向固定大小的線中請求一個線程時,如果線中沒有空閑資源了,這個時候線如何處理這個請求?是請求還是排隊請求?各種處理策略又是怎么實現(xiàn)的呢?09|隊列:隊列等有限資源池中的應(yīng)這個問題的答案涉及隊列這種數(shù)據(jù)結(jié)構(gòu)。隊列可以應(yīng)用在任何有限資源池中,用于排隊請求,比如數(shù)據(jù)庫連接池等。實際上,對于大部分資源有限的場景,當(dāng)沒有空閑資源時,基本上都可以通過“隊列”這種數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)請求排隊。 IPIP打開,在搜索框里隨便輸一個IP地址,就會看到它的歸屬地。這個功能并不復(fù)雜,它是通過一個很大的IP地址實現(xiàn)的。地址庫中包括IP地址范圍和歸屬地的對應(yīng)關(guān)系。比如,當(dāng)想要查詢202.102.133.13這個IP地址的歸屬地時,就在地址庫中搜索,發(fā)現(xiàn)這個IP地址落在[202.102.133.0,202.102.133.255]這個地址范圍內(nèi),那就可以將這個IP地址范圍對應(yīng)的歸屬地“山東東營市”顯示給用戶1[202.102.133.0,202.102.133.255]2[202.102.135.0,202.102.136.255]3[202.102.156.34,202.102.157.255]4[202.102.48.0,202.102.48.255]5[202.102.49.15,202.102.51.251]6[202.102.56.0,202.102.56.255]IP12這樣的IP區(qū)間與歸屬地的對應(yīng)關(guān)系,如何快速定位出一個IP地址的歸屬地呢?15|二分查找(上):16|(下):如何快速定位IP這個問題可以用二分查找來解決,不過,普通的二分查找是不行的, 需要用到二分查的變形算法,查找最后一個小于等于某個給定值的數(shù)據(jù)。不過,二分查找最難的不是原理,而是實現(xiàn)。要實現(xiàn)一個二分查找的變形算法,并且實現(xiàn)的代碼沒有bug,可不是一件容易的事情,不信你自己寫寫試試。關(guān)于這個問題的解答以及寫出bug 現(xiàn)在希望設(shè)計一個簡單的海量系統(tǒng),最大預(yù)期能夠1億張,一張及其它的元信息,主要的元信息有:名稱以及一組tag信息。比如圖片名稱叫玫瑰花,tag信息是{紅色,花,節(jié)};根據(jù)搜索一張,比如是“節(jié)花”“玫瑰花避免重復(fù)相同的。這里, 不能單純地用的元信息,來比對是否是同一張,因為有可能存在名稱相同但內(nèi)容不同,或者名稱不同內(nèi)容相同的情況。(MySQL、Redis等)、分布式系統(tǒng)(GFS、Bigtable等),并且 能有限,比如硬盤只有1TB,內(nèi)存只有2GB,如何設(shè)計一個符合 21|哈希算法(上):22|哈希算法(下): 如題目中所說,一個會對應(yīng)一組元信息,比如玫瑰花對應(yīng){紅色,花,節(jié)},牡丹花對應(yīng){白色,花}, 可以將這種與元信息之間的關(guān)系,倒置過來建立索引。“花”這個對應(yīng){玫瑰花,牡丹花},“紅色”對應(yīng){玫瑰花},“白色”對應(yīng){牡丹花},“節(jié)”對應(yīng){玫瑰花}。 搜索“節(jié)花”的時候 找,“花”查找到了{(lán)玫瑰花,牡丹花},“節(jié)”查找到了{(lán)玫瑰花},兩個對應(yīng)的第二部分關(guān)于判重,要基于本身來判重,所以可以用哈希算法,對內(nèi)容取哈希值。對哈希值建立散列表,這樣就可以通過哈希值以及散列表,快速判斷是否這里只說說思路,這個問題中還有詳細(xì)的內(nèi)存和硬盤的限制。要想給出更加詳細(xì)的設(shè)計思路,還需要根據(jù)這些限制,給出一個估算。詳細(xì)的解答,都放在在哈希算法(下)那知道,散列表的查詢效率并不能籠統(tǒng)地說成是O(1)。它跟散列函數(shù)、裝載因子、散列在情況下,有些的者,還有可能通過精心構(gòu)造的數(shù)據(jù),使得所有的數(shù)據(jù)經(jīng)過散列函數(shù),都散列到同一個槽里。如果使用的是基于鏈表的解決方法,那這個時候,散列表就會為鏈表,查詢的時間復(fù)雜度就從O(1)急劇為O(n)。如果散列表中有10萬個數(shù)據(jù),后的散列表查詢的效率就下降了10萬倍。更直觀1000.11詢操作消耗大量CPU或者線程資源,導(dǎo)致系統(tǒng)無法響應(yīng)其他請求,從而達(dá)到服務(wù)性能的急劇下降,并且能抵抗散列碰撞?18|散列表(上):Word19|散列表(中):經(jīng)常把這道題拿來作為面試題候選人。散列表可以說是 最常用的一種數(shù)據(jù)結(jié)構(gòu)了,編程語言中很多數(shù)據(jù)類型,都是用散列表來實現(xiàn)的。盡管很多人能對散列表都知道一二,知道有幾種散列表解決方案,知道散列表操作的時間復(fù)雜度,但是理論跟實踐還是有一定距離的。光知道這些基礎(chǔ)的理論并不足以開發(fā)一個工業(yè)級的散列表。 這六道題你回答得怎么樣呢?或許你還無法100%回答正確,沒關(guān)系。其實只要你看了解 通過這套題,你對自己的學(xué)習(xí)狀況應(yīng)該有了一個了解。從專欄開始到現(xiàn)在,三個月過去了,的內(nèi)容也更新了大半。你在專欄開始的時候設(shè)定的目標(biāo)是什么?現(xiàn)在實施得如何了?你可以在留言區(qū)給這三個月的學(xué)習(xí)做個階段性學(xué)習(xí)復(fù)盤 不得售賣。頁面已增加防盜追蹤,將依法其上一 38|分治算法:談一談大規(guī)模計算框架MapReduce中的分治思下一 39|回溯算法:從《蝴蝶效應(yīng)》中學(xué)習(xí)回溯算法的思
24 漁 4 哈。10個庫,取前K大的訂單,第一次從各個庫中分別取出最大的訂單,組成一個數(shù)量為10的大頂堆。另外一個數(shù)組,剛開始是空的。這時從大頂堆出堆頂元素(堆中最大空缺,大頂堆會重新平衡,堆頂元素可能會變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稅務(wù)會計 課件全套 王玉娟 學(xué)習(xí)任務(wù)1-13 增值稅會計核算-企業(yè)所得稅會計核算
- 貨幣與貨幣制度65083890
- 2025年地球地理自然科學(xué)知識競賽題庫及答案(共500題)
- 2025年黨政領(lǐng)導(dǎo)干部黨章黨規(guī)黨紀(jì)黨史知識培訓(xùn)考試題庫及答案(共250題)
- 街道接受巡察的工作匯報
- 微波消解系統(tǒng)采購 投標(biāo)方案(技術(shù)方案)
- 電子支付系統(tǒng)操作規(guī)范
- 移動支付系統(tǒng)安全風(fēng)險評估報告
- 安徽項目可行性研究報告
- 智能停車場控制系統(tǒng)設(shè)計
- 2025屆東北三省三校高三第一次聯(lián)合模擬考試地理試題(原卷版+解析版)
- 四年級數(shù)學(xué)(小數(shù)加減運算)計算題專項練習(xí)與答案
- 天津市建筑安全員-C證考試題庫
- 2025年皖北衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 2024年南信語文數(shù)學(xué)試卷(含答案)
- 2024年重慶市集中選調(diào)應(yīng)屆大學(xué)畢業(yè)生到基層工作考試真題
- 社區(qū)中央廚房運營模式計劃
- 學(xué)生集體用餐配送單位實驗室檢驗檢測能力建設(shè)指南
- 銀發(fā)經(jīng)濟(jì)的發(fā)展路徑
- 醫(yī)院安全生產(chǎn)治本攻堅三年行動實施方案
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術(shù)標(biāo)準(zhǔn)
評論
0/150
提交評論