日常工作總結(二)

2021-09-26 11:00:46 字數 1383 閱讀 7969

之前寫過乙個go日常使用的總結文章,最近剛忙完乙個活動,想再總結一下,發現歸類為go有些片面,不僅僅涉及到go,而且更多的可能是**的書寫規範或者追求更好的書寫方式,因此索性變成日常工作總結好了~

表設計問題:

主要針對innodb儲存引擎,庫名、表名、欄位名、索引名必須使用小寫字母,並且不能以mysql關鍵字命名這個不需要多說,在建表時候所有的表都應該攜帶ctime(建立時間)和mtime(修改時間)這2個字段,便於資料分析和故障排查。時間型別,首選整型int、int unsigned型別,其次使用timestamp型別。

if else問題:

在常規業務判斷中,應優先判斷條件不滿足的情況,即條件不滿足就優先退出,而不是順著常規的思維,如領獎,可能需要時間在截至日期之前,然後達到領獎條件,進行領獎。可先判斷時間超過截至日期直接返回,未完成直接返回,減少請求。換成**描述如下:

//避免這種寫法

if *** else

//使用這種寫法,無需寫else

if !***

快取問題:

需要存的都是使用者態的東西,而全域性的東西可以直接獲取到的就不需要加入快取中。例如我們介面需要返回乙個list,裡面包含了當前階段,當前階段是否解鎖,當前階段是否領獎。那麼實際上當前階段是否領獎是乙個全域性的東西,這個東西直接就可以獲取到,並且每個使用者都是相同的,直接判斷即可,無須存入快取中,雖然它可能只是乙個0/1的數字,而是否領獎與使用者相關,只存當前使用者的領獎狀態即可。

func (d *dao) cache***(c context.context, bid int64, day string) (res *mdl.count***, err error) 

for i := 1; i < len(bss); i += 2

}return

}

slice切片問題

階段條件判斷問題

如上面領獎的場景,領獎的條件可能有使用者必須先完成某些前置任務,同時總值達到不同的峰值,可以領不同的獎,這就出現多個階段的是否滿足領獎條件判斷,這種情況下可以在配置中配置乙個map或切片來代表各個階段的領獎總值條件,如:

[

,]

生成乙個map放到記憶體中,map[int]int64,然後在方法的一開始就進行是否滿足條件判斷

if val,ok := map[step];!ok  else 

}

這樣既過濾了非法的引數,又將領獎總值條件統一的提前判斷,從而無需在後面根據階段分case去判斷是否滿足條件,也避免了總值未達到領獎條件時還需要進行使用者是否完成前置任務的判斷。除此之外還有乙個好處,因為配置在配置檔案中,可以避免後面因需求變動需要修改**重新發版的問題。

sql請求過量503限流問題:

DBA日常工作總結

dba日常工作總結 原文出處 dba日常工作總結 oracle資料庫管理員應按如下方式對oracle資料庫系統做定期監控 1 每天對oracle資料庫的執行狀態,日誌檔案,備份情況,資料 庫的空間使用情況,系統資源的使用情況進行檢查,發現並解決問題。2 每週對資料庫物件的空間擴充套件情況,資料的增長...

linux redis日常工作命令總結

檢視redis安裝路徑 whereis redis 檢視redis客戶端安裝路徑 whereis redis cli 檢視redis服務安裝路徑 whereis redis server 在redis安裝目錄下啟動redis客戶端 redis服務 如 usr local redis bin 啟動服務...

Hive SQL 日常工作使用總結

寫寫日常在使用hive sql做分析時經常使用的一些函式或者方法 select uid from dw.today where tunittype like wew.select uid from dw.today where tunittype rlike you me 點號 表示和任意字串匹配,...