【廣告】
賦予自身額外優(yōu)勢(shì)
為了讓自己取得那點(diǎn)額外優(yōu)勢(shì),有幾件事情你可以去做。
首先,學(xué)會(huì)如何溝通你的經(jīng)驗(yàn)。你應(yīng)該進(jìn)行一次電梯演講來(lái)將你的簡(jiǎn)歷總結(jié)成連貫的、打動(dòng)人的個(gè)人介紹。
此外,要了解自己的簡(jiǎn)歷!聽(tīng)起來(lái)很蠢是吧,但我就見(jiàn)過(guò)很多面試者連解釋清楚自己簡(jiǎn)歷上的特定事項(xiàng)都很困難。你應(yīng)該能夠回答任何有關(guān)你列上簡(jiǎn)歷的經(jīng)歷方面的問(wèn)題,并且解釋清楚這一經(jīng)歷如何讓你成為本工作更好的候選人。
接著,要在 GitHub(或者其他的公共代碼庫(kù))上面有一些編碼的例子。
眼見(jiàn)為實(shí),面試官能夠看到你的代碼將創(chuàng)造奇跡。此外,這還證明了你對(duì)版本控制系統(tǒng)有了解。
你的代碼例子不需要太復(fù)雜,但是一定要整潔,能夠顯示出好的編碼實(shí)踐。這是你展示自己在沒(méi)有編碼面試所帶來(lái)的時(shí)間壓力情況下代碼寫(xiě)得如何的機(jī)會(huì)。
一旦你做完了上面的事情后,就得考慮參與一個(gè)開(kāi)源項(xiàng)目了。參加開(kāi)源項(xiàng)目能表明你能夠在已有代碼庫(kù)基礎(chǔ)上工作并且可以與其他程序員一些協(xié)作。
這是你在無(wú)需實(shí)際進(jìn)入一個(gè)行業(yè)環(huán)境的情況下接近在行業(yè)環(huán)境下編程的方式了。這也是目前為止難耗時(shí)的一項(xiàng)任務(wù),所以等到你把前面我提到的比較容易取得的果實(shí)都摘完之后再干這件事。
分析之前
依我個(gè)人的理解來(lái)說(shuō)限流的話應(yīng)該靈活到可以針對(duì)每一個(gè)接口來(lái)做。在大多數(shù)的軟件工程崗位,實(shí)現(xiàn)特定類(lèi)型的東西都屬于純粹浪費(fèi)時(shí)間。比如說(shuō)一個(gè)類(lèi)里面有5個(gè)接口,那么我的限流插件就應(yīng)該能針對(duì)每一個(gè)接口就行不同的限流方案。所以呢,既然針對(duì)的每個(gè)接口所以就需要一個(gè)可以標(biāo)示這個(gè)接口的key(我取的是類(lèi)名 方法名 入?yún)ⅲ?
分布式限流強(qiáng)烈推薦使用redis lua或者nginx lua來(lái)實(shí)現(xiàn)。
這里用2個(gè)限流條件來(lái)做示例講一下常見(jiàn)的限流算法:
接口1它10秒鐘很大允許訪問(wèn)100次
接口2它10秒鐘很大允許每個(gè)人訪問(wèn)100次。
計(jì)數(shù)器算法
這個(gè)算法可以說(shuō)是限流算法中簡(jiǎn)單的一種算法了。
核心思想
計(jì)數(shù)器算法的意思呢就是當(dāng)接口在一個(gè)時(shí)間單位中被訪問(wèn)時(shí),我就記下來(lái)訪問(wèn)次數(shù),直到它訪問(wèn)的次數(shù)到達(dá)上限。
涉及變量
接口(key)
時(shí)間單位(expire)
允許訪問(wèn)多少次(limit)
訪問(wèn)次數(shù)(value)
條件一
當(dāng)一個(gè)請(qǐng)求過(guò)來(lái)時(shí),我們就會(huì)得到這個(gè)key。
123456789 if(存在key){ value ; if(value>=limit){ 不能訪問(wèn) } }else{ 添加key,value為1 設(shè)置key過(guò)期時(shí)間為expire }
對(duì)于你的產(chǎn)品,可用性是否勝過(guò)一致性?如果你正在建立一個(gè)像Facebook newsfeed這樣的系統(tǒng),你可能會(huì)希望這個(gè)系統(tǒng)是高可用性的,并且是終一致。
另一方面,如果您正在構(gòu)建一個(gè)銀行系統(tǒng)(或者像我們的案例那樣的模式存儲(chǔ)),您可能希望支持強(qiáng)一致性,并放棄高可用性。
無(wú)論采用哪種方式,您都應(yīng)該首先考慮CAP定理的含義,然后決定您的系統(tǒng)是否需要SQL或NoSQL解決方案。