色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

可以從架構(gòu)代碼等各個角度談

張吉惟2年前17瀏覽0評論

可以從架構(gòu)代碼等各個角度談?

我們在開發(fā)過程中,當(dāng)然是希望自己項目接口的響應(yīng)時間越短越好,至少我看著自己開發(fā)出來的代碼,都是毫秒級的響應(yīng),會有一種自豪感;那么我們項目做了哪些優(yōu)化,和大家分享分享。

優(yōu)化代碼

先從小處著手,代碼寫的好壞,直接影響到接口的響應(yīng)速度;當(dāng)然這里也不可能展開詳談每一行代碼怎么寫,主要還是說一下措施:

代碼規(guī)范:我經(jīng)常會以自己的標(biāo)準(zhǔn)去衡量其他開發(fā)人員代碼的好壞,雖然我也不是什么大牛,但畢竟做了十多年的開發(fā),所以很多時候組內(nèi)年輕人的代碼,在我眼里都是不合格的,為了短時間內(nèi)提升他們的代碼水平,只能制定詳細的代碼規(guī)范讓他們?nèi)プ袷兀?/p>

項目級的處理方案:有些公共的功能,并不需要每個開發(fā)去寫代碼,比如異常處理,直接往上拋,會有統(tǒng)一的代碼捕捉異常進行處理的。

集體Code Review還是有必要做的,一方面起到一個威懾的作用(大部分人都好面子,如果自己寫的代碼太爛被大家看到,也會不好意思,所以寫代碼的時候會小心一些),另外確實可以讓開發(fā)人員取長補短。

緩存

緩存很重要,所以單獨拿出來說。

出參入?yún)⒅苯泳彺妫耗承﹫鼍跋拢强梢灾苯影讶雲(yún)⒆鳛閗ey,出參作為value,直接緩存起來的,比如放到Redis中;我們有個項目是做費率計算的,需要根據(jù)入?yún)⒉樵冑M率表,并有大量的計算操作,這種場景有兩個特點:一是費率信息不會改變,二是計算復(fù)雜費時,這個場景就非常適用于出參入?yún)⒅苯泳彺妫ǔ鰠?計算結(jié)果)。

字典類型的數(shù)據(jù),可以靜態(tài)化后放入內(nèi)存或第三方緩存中,并定時刷新緩存或做緩存失效的設(shè)置。

提前做數(shù)據(jù)的整合和加工:如果一個接口返回的數(shù)據(jù)需要幾張表關(guān)聯(lián)后才能提供,如果可以的話,盡量提前把這個關(guān)聯(lián)做好;真正接口查詢的時候,只查詢關(guān)聯(lián)后的結(jié)果就可以了。

總之,能查詢緩存的話,盡量不要直接查詢數(shù)據(jù)庫。

接口拆分

設(shè)計和代碼一樣重要,甚至在我看來,設(shè)計比敲代碼更重要;所以如何設(shè)計一個接口,是非常重要的(通常要全盤考慮):

我見過這樣的接口,號稱萬能接口,只對外提供一個接口,根據(jù)傳入?yún)?shù)的不同,后面的業(yè)務(wù)邏輯也不相同,我是非常反感這樣的做法。

垂直拆分:把一個龐大的接口,拆分成N個獨立的小接口,每個接口可以獨立部署、維護、迭代;但是接口的【大小】,是很考驗開發(fā)人員(架構(gòu))的。

水平拆分:一方面把接口部署多套,前面掛負(fù)載均衡,這是水平拆分的一種;另外一種水平拆分,是將接口中的業(yè)務(wù)邏輯拆分后并行處理,也是可以減少接口的響應(yīng)時間的。

希望我的回答,能夠幫助到你!我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。

java 時間毫秒,可以從架構(gòu)代碼等各個角度談