實際開發中兩個有意思的優化

2021-08-21 00:10:28 字數 599 閱讀 2136

一.引言

在網際網路開發過程中,響應速度應該也是程式開發特別要關注的點之一。下面講講開發中兩個優化。

二.事件

1.介面a(***)

在寫介面a的時候,需要用到訂單資訊,而這個下游的介面有時響應時間在300ms,它是放在首頁被非同步呼叫的。有人說反正是非同步呼叫,300ms也不是很慢呀!用不著優化吧!確實300ms是在使用者可以忍耐的極限內,但是自己**只要幾ms,呼叫別的介面用了這麼多,著實這個介面很慢的鍋揹著很難受。

那麼有什麼好的優化點呢。首先考慮到介面a主要是用來做推薦用的,而且用的訂單資訊也不一定需要實時(當然這個是乙個可以接受的時間,不可能取使用者10年前的訂單哈).這樣很自然的就想到了使用快取技術。介面改完之後95線變成了16ms,提公升了很多。

2.介面b(***)

在寫介面b的時候,發現需要獲取訂單介面裡面的某個字段,雖然說取出的訂單號並不多(有幾個訂單號,就需要呼叫幾次),但是訂單介面的速度確實讓人堪憂,下游介面一次請求到了5s(測試 環境)。

這樣多個介面去呼叫,自然是不行的,就算以這樣的呼叫**提交上生產環境,介面效能也是讓人久久不能平靜。最後找了訂單組那邊直接開庫表許可權,同時讀表時以不鎖表的方式讀取,平均響應時間在30ms。速度那是乙個飛呀!

兩個有意思的模擬

今天在群裡閒聊當前疫情的情況,看到兩個以技術思路做的模擬,挺有意思的,不長,或許有些幫助。第乙個,ddos和cc 這次大量病例的爆發,其實就像是對醫療體系的ddos,外加cc。這種從防攻擊角度,要麼有抗d的平台,洗掉惡意 非真實感染者 流量,放真實流量進來,但是目前看,沒有特效藥,沒有快速的檢測機制...

delphi 兩個有意思的函式

此函式可以用variant返回多個欄位的值 function tdataset.getfieldvalue const fieldname string variant vari integer fields tlist begin if pos fieldname 0 then begin fie...

兩個有意思的遞迴小程式

最近聽到的兩道面試 筆試題,感覺挺有意思的 1。實現庫函式strlen,不能使用任何庫函式,不能定義任何變數。2。實現函式strrev,該函式有兩個引數,將其中乙個字串逆序放到另乙個字串指標中,同樣要求不能使用任何庫函式,不能定義任何變數。採用遞迴實現,剛好可以滿足這兩道題的要求 void strr...