日韩性视频-久久久蜜桃-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在线 | 黄色av免费在线播放 | 在线观看免费视频 | 91色站| 九九热久久免费视频 | 日韩一卡| 国产高清免费av | 国产a级片 | 性高潮网站 | 福利在线播放 | 男人插女人免费视频 | 伊人黄色网 | 欧美9999| 久久精品男人的天堂 | 三级视频国产 | 91黄在线观看 | 欧美黄色一级大片 | 亚洲熟伦熟女新五十路熟妇 | 一区二区网 | 亚洲AV无码国产日韩久久 | 免费的一级黄色片 | 青青操网| 污污网站在线观看视频 | 免费黄色三级 | 精品人妻少妇一区二区三区 | 色播欧美| 五十路息子| 亚洲大乳 | 性欧美www | 男生女生搞鸡视频 | 五月婷婷中文字幕 | 精品久久九九 | 久久精品国产99久久不卡 | 日韩黄色免费看 | 干欧美少妇 | a级黄毛片 | 日韩有码中文字幕在线 | 致命魔术电影高清在线观看 | 国产精品久久久久久精 | 亚洲精品一 | 国产又黄又大又粗视频 | 日本肉体xxxⅹ裸体交 | 国产欧美在线视频 | 日日操视频 | 午夜色播| 欧美高清视频在线观看 | 在线观看99 | 影音先锋丝袜美腿 | 婷婷久久伊人 | 午夜伦伦电影理论片费看 | 日本一区二区不卡在线 | 日日摸天天添天天添破 | 四季av日韩精品一区 | 夜夜摸夜夜操 | 欧美午夜激情影院 | 日本全黄裸体片 | 亚洲一区视频在线播放 | 一级黄色大片免费观看 | 午夜精品久久久 | 夜夜se| 成人小网站 | 在线观看高清视频 | 欧美成人免费在线观看视频 | 毛片在线不卡 | 女性生殖扒开酷刑vk | a级片免费播放 | 三级黄色生活片 | 波多野结衣一区二区三区四区 | 刘亦菲毛片一区二区三区 | 91免费视频播放 | 伊人二区| 成人免费在线电影 | 91精品国产高潮对白 | 国产精品久久成人 | 久久国产亚洲精品无码 | 91亚洲国产成人精品性色 | 韩国一区二区在线播放 | 免费网站观看www在线观 | 在线97视频| 国产一级二级三级 | 国产亚洲高清视频 | 成人黄色免费网 | 日本一级黄色 | 性网站在线观看 | 久草资源在线观看 | 亚洲国产剧情在线观看 | 亚洲爆乳无码精品aaa片蜜桃 | 天天看片天天爽 | 国产欧美在线精品日韩 | 欧洲影院 | 奇米四色777 | 麻豆av一区二区三区 | 337p日本欧洲亚洲大胆张筱雨 |