日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《数据结构与抽象:Java语言描述(原书第4版)》一2.1.4 让实现安全

發布時間:2025/3/21 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《数据结构与抽象:Java语言描述(原书第4版)》一2.1.4 让实现安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第2章 ,第2.1節,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學  新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。

2.1.4 讓實現安全

鑒于當今黑客及對重要軟件系統未經授權入侵的現實情況,程序員必須在代碼中添加安全措施,以使程序對使用者是安全的。雖然Java為你管理內存,檢查數組下標的合法性,且是類型安全的,但一個錯誤會使你的代碼易受攻擊。實現ADT時應該時刻銘記安全性,盡管在已有的代碼中增加安全機制可能是困難的。

注:你可以在程序中檢查可能出現的錯誤來練習有安全機制的程序設計(fail-safe programming)。安全可靠程序設計(safe and secure programming)通過驗證輸入給方法的數據和參數的合法性,消除方法的副作用,對客戶和使用者的行為不做任何假設,來擴展有安全機制的程序設計的概念。
安全說明:保護ADT實現的完整性
當實現一個ADT時,必須問自己的兩個問題是

  • 如果構造方法沒有完全執行,那么可能會發生什么?例如,構造方法可能在完成初始化之前就拋出一個異常或錯誤。但是入侵者可能捕獲異常或錯誤,并試圖使用部分初始化的對象。
  • 如果客戶試圖創建一個其容量超出給定范圍的包,那么可能會發生什么?
    如果這兩個動作可能導致問題,則我們必須阻止它們。

對于類ArrayBag,我們想防范前面安全說明中所描述的兩種情形。現在開始細化ArrayBag的不完整的實現,在類中增加下列兩個數據域,以使代碼更安全:

這兩個修改都涉及構造方法。因為默認的構造方法調用帶參數的構造方法,所以僅修改后者就足夠了。為確保客戶不能創建太大的包,構造方法應該檢查客戶所需包的容量與MAX_CAPACITY值。如果需要的容量太大,則構造方法可以拋出一個異常。
如果所需的容量處在允許范圍內,則ArrayBag的構造方法為什么還不能正確完成呢?因為內存不足可能導致分配數組失敗。這樣一個事件會導致錯誤OutOfMemoryError。一般地,客戶將這個錯誤看作致命事件。黑客可能捕獲這個錯誤(就像你捕獲異常一樣),并試圖使用部分初始化的對象。為防止這種情況,類的每個重要方法在執行其操作之前都可以檢查域initialized的狀態。這樣,畸形對象就不會再有動作。對于正確初始化的對象,構造方法將把域initialized置為真。
下面是修改后的構造方法。

注意,構造方法在成功完成其他任務后,最后一個動作是將initialized賦值為真。還應注意,IllegalStateException是標準運行時異常。
下面來看看如何使用initialized。
在數組bag已成功分配的基礎上,ArrayBag中的任何公有方法在繼續執行之前都應該確保數據域initialized的值為真。如果initialized為假,這樣的方法可以拋出一個異常。例如,可以如下所示修改方法add。

注:異常SecurityException和IllegalStateException都是包java.lang中的標準運行時異常。因此,不需要import語句。

因為我們將在多個方法中檢查initialized,所以為避免代碼重復定義下列私有方法。

方法add可以修改為:

應該以相同的方式修改核心方法toArray,因為它用到了ArrayBag的數據域bag。

安全說明:你所熟知的編寫Java代碼的某些常見準則,實際上增加了代碼的安全性。這些準則是:

  • 將類的大多數數據域聲明為私有的,如果不是全部。任何公有數據域都應該是靜態和終態的,且有常量值。
  • 避免那些掩蓋代碼安全性的所謂聰明的邏輯。
  • 避免重復代碼。相反,將這樣的代碼封裝為一個可供其他方法調用的私有方法。
  • 當構造方法調用一個方法時,確保這個方法不能被重寫。

安全說明:終態類。注意,我們將ArrayBag聲明為一個終態類。因此,不會有從ArrayBag派生的其他類,即ArrayBag不能是另一個類的父類或基類。終態類比非終態類更安全,因為程序員不能使用繼承來改變它的行為。稍后我們將細化這個方法,定義終態方法而不是整個類。

總結

以上是生活随笔為你收集整理的《数据结构与抽象:Java语言描述(原书第4版)》一2.1.4 让实现安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品传媒视频 | 综合色婷婷一区二区亚洲欧美国产 | 原来神马电影免费高清完整版动漫 | 中文字幕有码在线 | 欧美三级小视频 | 凹凸av在线 | 女教师高潮黄又色视频 | a级片免费看 | 成人免费视频软件网站 | 一级黄色片免费看 | 国产伦精品一区二区 | 伊人久久视频 | 3d成人动漫在线观看 | 性一交一乱一色一视频麻豆 | 午夜影视av | 日日夜夜干 | 天天综合天天做 | 亚洲男人天堂电影 | 91免费看国产 | 一级黄色片在线看 | 亚洲欧洲日韩在线 | av在线免费播放网址 | 67194国产 | 男人的天堂免费视频 | 好吊色视频一区二区 | 狠狠插影院| 天天想你在线观看完整版电影高清 | 伊人论坛| 国产白嫩美女无套久久 | 成人精品一区二区三区电影黑人 | 日本黄色免费网站 | 一区二区三区成人 | 涩涩爱在线 | 禁久久精品乱码 | 日本h在线| 超碰综合网 | 97福利影院 | 538国产精品一区二区免费视频 | 欧美午夜性春猛交 | 老司机在线免费视频 | 噜噜噜精品欧美成人 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 麻豆短视频在线观看 | 精品影片一区二区入口 | 日本视频免费观看 | 亚洲成人少妇 | 丰满少妇高潮久久三区 | 国产精品免费视频一区 | 亚洲成熟少妇视频在线观看 | 欧美自拍偷拍第一页 | 国产高潮在线 | 欧美另类z0z变态 | 国产欧美熟妇另类久久久 | 国产在线免费 | 国产午夜三级一区二区三 | 视频一区在线播放 | 国内精品一区二区三区 | 一道本无吗一区 | 曰批女人视频在线观看 | 69av国产| 国产无遮挡免费视频 | 内射国产内射夫妻免费频道 | 日韩精品一区二区三区视频 | 午夜插插| 午夜天堂网 | 免费一级毛片麻豆精品 | 欧美色综合天天久久综合精品 | 免费一级欧美片在线播放 | 激情偷乱人成视频在线观看 | 青草视频免费观看 | 少妇性l交大片免潘金莲 | 久月婷婷 | 一区二区三区蜜桃 | 日本91网站| 黄色欧美在线 | 久久久久久人妻一区二区三区 | 久久只有精品 | 国产欧美日韩精品一区二区三区 | 97色伦97色伦国产欧美空 | 天堂在线www | 偷偷在线观看免费高清av | 欧洲国产视频 | 国产美女又黄又爽又色视频免费 | 国产精品视频一区二区在线观看 | 青娱乐国产 | 99色视频| 亚洲少妇视频 | 成人国产a | 亚洲免费网 | 男人的天堂a在线 | 少妇理论片| 91在线免费视频观看 | 男女草逼视频 | 少妇高潮久久久久久潘金莲 | 天天色天天色天天色 | 波多野结衣电影在线播放 | 色啦啦视频 | 日韩精品一区在线观看 | 三点尽露的大尺度国产 |