日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

防御性編碼的意識與實踐

來源: 責編: 時間:2023-09-28 10:06:59 352觀看
導讀汽車防御性駕駛是一種安全駕駛的理念和實踐,旨在最大程度地減少交通事故的發生,并保護駕駛員、乘客和其他道路使用者的安全。防御性駕駛核心在于合理懷疑其他交通參與者可能會做出危及安全的行為并提前做出預判,比如碰到

汽車防御性駕駛是一種安全駕駛的理念和實踐,旨在最大程度地減少交通事故的發生,并保護駕駛員、乘客和其他道路使用者的安全。防御性駕駛核心在于合理懷疑其他交通參與者可能會做出危及安全的行為并提前做出預判,比如碰到路口預判前面可能沖出來小孩。碰到前面緩慢,預料到自己急剎可能導致跟得很近的后車追尾上來。H6k28資訊網——每日最新資訊28at.com

在編程領域也有防御性編碼(Defensive coding),有著與汽車防御性駕駛相似的理念,它也是保護我們的系統的一種實踐,減少線上事故的發生。H6k28資訊網——每日最新資訊28at.com

一個大型系統必然是多個團隊的協作成果,團隊之間的接口調用通常靠文檔規范約定,這些接口文檔也便形成了一份份規約。可能有人會說對方團隊不遵守文檔規范是對方的問題,不關我們團隊的事情啊。對于這個問題,我只想說只關心自己不被追責而不關心技術全局是否完善的技術人員注定發展空間是有限的。因為各類規范只能保證下限,在團隊與團隊的協作中僅僅按契約完成規范還不夠,就像僅按交規開車并不能防止事故一樣,我們還需要防御性編碼的意識與實踐。那怎樣做到防御性編碼呢?下面是最常見的一些手段:H6k28資訊網——每日最新資訊28at.com

H6k28資訊網——每日最新資訊28at.com

1、日志記錄

作為本系統與外部系統接口交互的記錄,必須要記錄日志。日志無論在事中查錯、事后追責提供證據方面都有著不可替代的作用。如果自己的系統沒有日志,就只能寄希望于上游或下游記錄了日志,這有時不僅受制于人,還可能會為日后互相甩鍋埋下隱患。對于重要的(如涉及資金),或者頻繁需要查日志的系統間交互,不僅需要打印應用日志,還需要考慮將這些日志記錄到數據庫或NoSQL中并提供方便的查詢界面以提高查詢的效率。H6k28資訊網——每日最新資訊28at.com

2、協議之外

比如某第三方支付系統的接口規定,調用支付接口后返回報文的支付狀態字段,1代表支付成功,0代表支付失敗,-1代表不確定。結果線上因為對方升級協議的原因,多了一個狀態2,而這個業務的程序員又沒足夠的經驗預判這種情況,引起了大面積的支付錯誤投訴。他的代碼是這樣寫的:H6k28資訊網——每日最新資訊28at.com

if(status == -1){    //支付結果不確定處理}else if(status == 1){    //支付結果成功處理}else{    //支付結果失敗處理}

可以看到他把新出現的這個狀態當成支付失敗處理了。對于這種出現了協議之外的值的情況,在業務開始可以拒絕的情況下直接拒絕該請求調用。在不能拒絕的情況下(如本例中用戶已經輸入支付密碼完成支付,不能再拒絕請求調用了)則需要在業務上兼容處理,比如這里可以把這種情況視為支付結果不確定,最后再根據對賬取得最終的支付結果是成功還是失敗。H6k28資訊網——每日最新資訊28at.com

3、輸入限制

常見的輸入類型有整數、小數、字符串等,我們必須檢查輸入字段是否符合接口文檔規定的類型,并限制字段的基本長度。同時也從業務角度去檢查字符串是否滿足格式,如常見的身份證、郵箱、手機號碼等是否滿足各自規定的業務格式。H6k28資訊網——每日最新資訊28at.com

4、輸入過濾

比如你提供了一個搜索接口,但你不確定上游會輸入一句話還是一篇文章,光靠雙方自覺地按接口文檔去約束顯得既蒼白又無力,一刀切停止服務似乎又過于簡單粗暴。一個可行的方法是無論上游輸入多少,只截取前30個字符去ElasticSearch中查詢(接口協議文檔中明確約定)。有時候為了自己系統的安全,對于明顯超出正常業務范圍的字符也會進行過濾,如常見的<>&/r/n等。H6k28資訊網——每日最新資訊28at.com

5、邊界判斷

一個常見的問題是只檢查了下限沒檢查上限,比如商品數量數據,通常會做大于0檢查,但卻很少會去檢查上限。比如在Java中當我們使用內置運算符做數學運算時,如果結果超出變量類型表達范圍,結果會并不會拋出異常,而計算結果又是不符合預期的。如兩個大的正整數相乘,結果可能溢出后變成了負的。這就要求我們對字段的數值范圍,業務取值范圍進行進行邊界判斷。H6k28資訊網——每日最新資訊28at.com

6、接口限流

我們知道,系統之間交互模式有推送與拉取。拉取雖在及時性上不如推送,但它可以根據系統自身的能力量力而為地處理業務,能較好的保護自身。而推送則有可能出現能力不匹配的情況,如果上游推送很快,自己的系統又處理不過來則需要提前做好限流,并確保上游能兼容限流的情況。H6k28資訊網——每日最新資訊28at.com

7、重復請求處理

如果指望通過一紙規定就能避免調用方重復發起,就能避免被調用方重復處理問題,那就未免顯得有點天真了。因為重復可能發生在應用層,也可能發生在框架或其它層,未必就是調用方主觀的行為。對重復請求的處理,有些情況可以用冪等處理,除了部分業務本身就是冪等的,其他多數是通過業務惟一索引進行限制實現。需要指出的是有些系統是通過先查詢數據庫或緩存再判斷是否是重復請求的還需要注意原子操作問題。H6k28資訊網——每日最新資訊28at.com

8、金額單位

要特別小心涉及金額的接口處理。對金額的處理,不同的系統有不同的標準,同樣對于1.23元,某互聯網公司的支付系統規定以分為單位的整數(如123);某電信系統則規定以厘為單位的整數(如1230);某金融系統又規定是以元為單位的字符串(如1.23)。尤其需要小心對最后一種情況的數值范圍判斷,涉及到字符串轉數字,要小心精度丟失。在Java中涉及小數的計算,多數情況使用BigDecimal。H6k28資訊網——每日最新資訊28at.com

防御性編碼要求我們跳出責任歸屬的視角系統性地看待全局問題,對可能發生問題的地方提前預防,對事故高發情況提前預判,保護自己系統的同時也保護上下游系統,取得全局最優解而不僅僅是局部最優解。H6k28資訊網——每日最新資訊28at.com

H6k28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11827-0.html防御性編碼的意識與實踐

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 為什么Java官方不推薦池化虛擬線程?

下一篇: 您可能會錯過的七個有用的 GIT 命令

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
韩国女主播一区| 国产精品成人一区二区艾草| 亚洲欧美在线磁力| 亚洲精品日韩在线| 一区二区三区四区五区精品视频| 亚洲午夜精品国产| 久久久999精品免费| 欧美成人蜜桃| 国产精品美女久久久| 韩日欧美一区二区三区| 亚洲精品视频二区| 亚洲欧美日韩在线不卡| 久久久久国内| 亚洲精品国产无天堂网2021| 日韩天天综合| 性亚洲最疯狂xxxx高清| 卡一卡二国产精品| 国产精品高清在线| 狠狠爱成人网| 99www免费人成精品| 亚洲欧美中文字幕| 麻豆乱码国产一区二区三区| 欧美视频在线不卡| 黄色成人免费观看| 亚洲一二三区视频在线观看| 久热精品视频在线观看| 国产精品高清在线| 亚洲国产天堂久久综合网| 亚洲欧美欧美一区二区三区| 免费视频最近日韩| 国产精品网站视频| 亚洲精品在线视频观看| 久久av资源网站| 欧美日韩在线视频首页| 在线成人亚洲| 性8sex亚洲区入口| 欧美日韩精品免费在线观看视频| 国内精品久久国产| 亚洲免费视频在线观看| 欧美精品自拍偷拍动漫精品| 黑人一区二区三区四区五区| 亚洲一级在线| 欧美精品在线视频| 在线观看成人网| 欧美一区二区三区免费观看视频| 欧美巨乳波霸| 亚洲成人资源| 久久精品一级爱片| 国产精品你懂的在线| 亚洲精一区二区三区| 久久一本综合频道| 国产亚洲午夜| 午夜视黄欧洲亚洲| 国产精品第三页| 久久激情五月激情| 欧美日韩成人精品| 国产一区二区三区丝袜 | 国产精品美女久久福利网站| 亚洲国产精品女人久久久| 亚洲欧美另类国产| 欧美午夜剧场| 亚洲美女视频| 欧美激情成人在线视频| 在线观看欧美一区| 久久久久久久久久码影片| 国产免费成人av| 亚洲一区国产| 国产精品va在线播放我和闺蜜| 亚洲日本成人在线观看| 麻豆av一区二区三区| 国模 一区 二区 三区| 欧美在线|欧美| 国产日本欧美一区二区| 午夜精品亚洲| 国产欧美日韩综合一区在线播放| 亚洲女同精品视频| 国产精品欧美日韩一区| 亚洲综合精品| 国产精品一区三区| 欧美一区二区三区免费看| 国产日韩欧美另类| 久久精品国产精品| 一区二区在线观看视频| 久久女同精品一区二区| 一区免费观看| 免费永久网站黄欧美| 亚洲国产精品成人精品| 欧美成人午夜激情在线| 亚洲欧洲精品一区二区精品久久久| 麻豆精品在线播放| 最新国产精品拍自在线播放| 欧美v日韩v国产v| 亚洲免费福利视频| 欧美三级乱码| 亚洲欧美日韩国产一区| 国产日本欧美一区二区三区在线 | 午夜精品视频| 国产日韩三区| 久久精品伊人| 亚洲国产精品一区制服丝袜| 欧美精品二区三区四区免费看视频| 日韩一级视频免费观看在线| 欧美午夜精品伦理| 午夜在线播放视频欧美| 国产一区再线| 免费日韩精品中文字幕视频在线| 亚洲精品乱码| 国产精品国产三级国产| 欧美亚洲综合在线| 在线不卡中文字幕| 欧美黄色aa电影| 一区二区三区国产在线观看| 国产精品视频| 久久亚洲综合色| 一区二区三区四区五区视频| 国产精品免费看片| 毛片一区二区三区| 日韩一区二区精品在线观看| 国产精品美女诱惑| 久久亚洲一区| 一区二区三区产品免费精品久久75 | 欧美黄色片免费观看| 中文无字幕一区二区三区| 国产欧美精品在线| 蜜桃视频一区| 亚洲视频福利| 狠狠色综合一区二区| 欧美黄色aa电影| 亚洲欧美日本精品| 亚洲高清在线观看一区| 欧美日韩亚洲一区二区| 久久精品国产久精国产爱| 亚洲国产福利在线| 国产精品伦一区| 欧美+亚洲+精品+三区| 亚洲网站视频福利| 在线免费观看日本欧美| 欧美特黄视频| 美腿丝袜亚洲色图| 亚洲欧美另类中文字幕| 亚洲国产日韩欧美在线动漫| 国产精品色一区二区三区| 免费观看亚洲视频大全| 亚洲欧美一区在线| 亚洲看片网站| 激情久久影院| 国产精品日韩精品| 欧美日本一区| 老司机精品久久| 性色av一区二区三区| 99精品热视频只有精品10| 狠狠色综合网| 国产精品亚洲综合天堂夜夜| 欧美精品国产一区二区| 久久久久久久久久久久久9999 | 欧美国产视频在线| 久久精品首页| 亚洲免费视频一区二区| 99av国产精品欲麻豆| 精品不卡一区二区三区| 国产精品视频1区| 欧美日韩少妇| 嫩草影视亚洲| 久久精品日韩| 午夜精品福利一区二区三区av| 亚洲免费久久| 亚洲高清av| 激情五月***国产精品| 国产精品一区亚洲| 欧美日韩一区二区三区四区五区| 乱中年女人伦av一区二区| 欧美在线免费播放| 亚洲欧美另类综合偷拍| 亚洲天堂男人| 夜夜嗨av色一区二区不卡| 亚洲国产另类久久精品| 国语自产精品视频在线看| 国产精品一区二区视频| 国产精品xnxxcom| 欧美日韩亚洲三区| 欧美区国产区| 欧美久久久久免费| 欧美极品一区| 欧美高清你懂得| 欧美www视频在线观看| 另类亚洲自拍| 久久久蜜臀国产一区二区| 欧美一区二区啪啪| 亚洲欧美日本日韩| 亚洲欧美精品在线| 亚洲欧美日本另类| 亚洲欧美国产三级| 亚洲综合视频网| 亚洲女优在线| 亚洲欧美中日韩| 午夜精品理论片| 亚洲欧美区自拍先锋| 亚洲欧美影院| 欧美一进一出视频| 欧美一区在线看| 久久精品中文字幕一区| 久久精品在线免费观看| 久久久久天天天天| 蜜臀久久99精品久久久久久9|