學(xué)習(xí)筆記171010


MySQL規(guī)約

建表

表名使用“[project或功能模塊] 下劃線 [實體類] 下劃線 [從屬信息等]”的形式進行命名,每個單詞間都需要用下劃線進行分割

所有字段必須有注釋,枚舉值類型更要說明每個數(shù)值代表的具體含義

自增主鍵的設(shè)置

1.無特殊需求時,主鍵名使用id

2.不允許為空并設(shè)為主鍵

3.設(shè)置自增

SQL

count(*)會統(tǒng)計值為 NULL 的行,而 count(列名)不會統(tǒng)計此列為 NULL 值的行

不得使用外鍵與級聯(lián),一切外鍵概念必須在應(yīng)用層解決

性能

sql執(zhí)行大于300ms的需要進行優(yōu)化

ORM

數(shù)據(jù)更新時,不要更新無改動的字段,一是易出錯;二是效率低;三是增加 binlog 存儲

敏感信息展示

后端返回18766289569前端處理后顯示187****9569

參數(shù)有效性驗證

用戶請求傳入的任何參數(shù)必須做有效性驗證? 忽略參數(shù)校驗可能導(dǎo)致:

例如:page size 過大導(dǎo)致內(nèi)存溢出

SQL 注入


防XSS安全開發(fā)規(guī)范

所有暴露給前臺的接口,都需要對參數(shù)進行校驗:

對非字符串參數(shù)必須有數(shù)據(jù)類型校驗。

字符串參數(shù)必須有長度校驗,同時使用框架提供的工具進行XSS過濾和html轉(zhuǎn)義

用戶身份校驗相關(guān)的cookie,必須設(shè)置成httpOnly,從而禁止通過js代碼操作cookie

防CSRF安全開發(fā)規(guī)范

后端filter中統(tǒng)一校驗前端請求的Referer值,來自非本網(wǎng)站域名的請求禁止訪問(暴露給第三方的接口除外)

系統(tǒng)關(guān)鍵服務(wù)(涉及金錢操作或授權(quán)操作)需要進行token校驗

防文件上傳攻擊安全開發(fā)規(guī)范:

必須有文件類型白名單校驗(黑名單校驗是不夠的)

必須有文件大小的校驗

必須有對文件名%00截斷符的校驗

上傳文件在服務(wù)器端必須重命名后保存

文件保存路徑不允許通過傳入?yún)?shù)指定,必須保存在以下兩個目錄之一:

/data/TRS/nas/files/protect (保存敏感文件,nginx不可達(dá))

/data/TRS/nas/files/public(保存公共文件,nginx可訪問)

分層規(guī)約

controller職責(zé)描述

搜集參數(shù)

簡單的參數(shù)驗證

處理服務(wù)級別業(yè)務(wù)并調(diào)用service層

轉(zhuǎn)發(fā)或重定向結(jié)果集

service職責(zé)描述

業(yè)務(wù)邏輯的實現(xiàn)

dao層的調(diào)用

處理事務(wù)

dao職責(zé)描述

數(shù)據(jù)庫操作的實現(xiàn)

service/dao 層方法命名規(guī)約

獲取單個對象的方法用 get 做前綴。

獲取多個對象的方法用 list 做前綴。

獲取統(tǒng)計值的方法用 count 做前綴。

插入的方法用save做前綴。

刪除的方法用remove做前綴。

修改的方法用update做前綴。

OOP

在spring的環(huán)境中,bean中不要聲明類屬性,單例模式下會產(chǎn)生數(shù)據(jù)污染。

字符串處理、長度校驗、時間處理等方法都有工具類,時刻想到先查找相關(guān)技能章節(jié)或詢問開發(fā)導(dǎo)師是否有工具類后,再去自己造輪子。

避免通過一個類的對象引用訪問此類的靜態(tài)變量或靜態(tài)方法,無謂增加編譯器解析成 本,直接用類名來訪問即可

所有的覆寫方法,必須加@Override 注解。

反例:getObject()與 get0bject()的問題。

一個是字母的 O,一個是數(shù)字的 0,

加@Override 可以準(zhǔn)確判斷是否覆蓋成功。

另外,如果在抽象類中對方法簽名進行修改,其實現(xiàn)類會馬上編譯報錯。

不能使用過時的類或方法。

說明:例如java.net.URLDecoder 中的方法 decode(String encodeStr) 這個方法已經(jīng)過時,應(yīng) 該使用雙參數(shù) decode(String source, String encode)。接口提供方既然明確是過時接口, 那么有義務(wù)同時提供新的接口;作為調(diào)用方來說,有義務(wù)去考證過時方法的新實現(xiàn)是什么。

所有的相同類型的包裝類對象之間值的比較,全部使用 equals 方法比較。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容