關於java程式設計中一些程式設計安全問題的總結
- 前導:最近一直在上《軟體構造》這門課,通過這門課,瞭解許多以前不知道的程式設計思想。其中最近寫的程式設計安全的問題是最令我印象深刻的,因為安全問題一直是程式設計的一大值得注意的方面,一個程式的好壞,很大一部分是由其安全性來決定的。(我採用的是java語言來描述)
目錄:
- 關於資料型別的規約和特性
- 關於對資料型別的操作和特性
- 關於抽象資料型別(ADT)
2.1:關於資料型別的規約和特性:
- 資料型別的種類:java中的資料型別分為基本資料型別(immutable)以及物件資料型別(some immutable and some not),且對於每一種資料型別來說,都有相對應的操作。同時一些不同的資料型別來說,一些操作是具有共性. eg:+ - 等等。同時我們還注意到一些資料型別之間可以相互轉換。但是操作以及型別之間的轉化必然帶來一些bug,這裡我們有一些檢查的機制,分為static checking and dynamic checking。顧名思義,static checking 是編譯的時候就檢查的。而dynamic checking 是在程式執行的時候檢查。
- immutable and mutable :在寫程式的時候我們在定義變數的時候,我們需要考慮清楚需要定義的資料型別是怎麼樣的。這裡的一個重要的問題就是在immutable和mutable之間做出一個抉擇。immutable型別的資料是不可變的,一旦被建立就不可以修改了。而mutable資料型別是可變的,他可以通過一些操作方法來改變其值;他們兩者具有不同的特性。immutable資料型別具有很好的健壯性。同時mutable資料型別具有良好的空間利用性。我們在使用的時候採取折中的原則。
2.2:關於對資料型別的操作和特性:這裡是通過對於方法的規約來實現方法的實現者和開發者之間的溝通的。
- 方法的規約:這裡一個是通過方法本身來實現規約的,一個是引數列表,一個是方法的說明性的documents。
- 前後置條件:前置條件是約束客戶端的,而後置條件是約束開發人員的,這裡有個規定。一般如果前置條件滿足了,那麼後置條件應該滿足。同時,這裡還會涉及到條件強弱的比較,一般前置越弱或者是後置條件月強那麼整個條件越強。
相關推薦
關於java程式設計中一些程式設計安全問題的總結
前導:最近一直在上《軟體構造》這門課,通過這門課,瞭解許多以前不知道的程式設計思想。其中最近寫的程式設計安全的問題是最令我印象深刻的,因為安全問題一直是程式設計的一大值得注意的方面,一個程式的好壞,很大一部分是由其安全性來決定的。(我採用的是java語言來描述)目錄:關於資料
Python中的面向物件程式設計的一些基本概念總結
一、一些專有詞彙的定義 面對物件程式設計(OOP:object oriented programming): 是一種程式設計範型,同時也是一種程式開發的方法,實現OOP的程式希望能夠在程式中包含各種獨立而又相互呼叫的物件,沒一個物件又都應該能夠接受資料、資料處理並將
關於網路程式設計中Socket的初步總結
1,要實現通訊必須先建立套接字 2,上一步驟中建立的套接字只用於listen()和accept(),不用於收發資料【以tcp為例來說】 [https://blog.csdn.net/David_xtd/article/details/7087843?utm_source=blogxg
程式設計中一些常見演算法(一)
1、向上取整:x/y向上取整 = (x + y -1)/y void main() { int x=22,y=5; int result = (x + y -1)/y; printf("%d/
ACM程式設計中的小技巧總結 (持續更新)
ACM中有很多小技巧和有趣的寫法。雖然無法改變演算法的複雜度,但是卻可以縮短程式碼長度、減少定址時間和冗餘狀態等等。 在此對寫程式的時候一些小技巧以及一些函式的簡潔寫法進行總結,以後也會不斷更新。 當然很多函式它本來就這麼短,反正大概我知道的一行函式我都會記下來。 不過很多
TCP網路程式設計中RST分節總結
RST為“復位”,它是TCP在某些錯誤情況下所發出的一種TCP分節。 有三個條件可以產生RST: 1), SYN到達某埠但此埠上沒有正在監聽的伺服器。對於UDP,當一個數據報到達目的埠時,該埠沒在使用,它將產生一個ICMP埠不可達的資訊。而TCP則使用復
Java專案開發中一些BUG的總結
1,JVM Bind 2, hbm主鍵生成策略錯誤: Struts Problem Report Struts has detected an unhandled exception: Messages: ids for this class must be
程式設計中位運算用法總結
位運算應用口訣清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 要點 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。 2 "<
程式設計的一些小知識點總結
1e6+5 = 1000005 表示很大的數時,以前都是瘋狂巧零,如果用1e6+5 = 1000005來代替的話會方便很多,而且也不容易出錯。 int mid=(l+r)>>1;//位元
JAVA開發中遇到的異常總結
原因 counter ping 無法使用 kdt 訪問類 tin 響應時間 lang 最常見的五種異常:必會,面試題: 算術異常類:ArithmeticExecption 空指針異常類:NullPointerException 類型強制轉換異常:ClassCast
Java語言中的集合框架總結
鍵值 gen collect sort jdk1 pri 不能 map 刪除 一、集合框架 集合是ava語言中非常重要的API; 用來存儲多個數據; 實現了不同的數據結構。 三大接口: Collection:所有集合類的根接口;List、set是常用的子
mysqlpp中一些特殊功能總結
之前有寫過一篇mysql++的文章 《C++使用MySql++操作資料庫例項》,裡面講了C++如何用mysql++的庫來操作mysql資料庫,現在這個手機專案原來的mysql操作庫是從mysql原生封裝的,大致做了三四層,看著挺麻煩的,就換成了mysql++,不過這次用遇到了一些問題。我們角色的一部分資料是使
Java開發中一些必備經典Eclipse外掛以及使用集萃
在我們開發的過程中,為了提高生產效率或者開心開發,我們大家肯定每個人或多或少肯定會有一些自己的習慣和技巧;而且每個人的習慣和技巧都可能不太一樣,所以,筆者準備拋磚引玉,大家一起來討論交流一下。我會根據和
java程式中,如何安全的結束一個正在執行的執行緒
在Java的多執行緒程式設計中,java.lang.Thread型別包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通過這些方法,我們可以對執行緒進行方便的操作,但是這些方法中,只有start()
工科生在科研中一些必備技能總結
在研究和學術中,有一些研究技能是必須的,比如搜尋,查詢文獻,寫郵件等。本篇是一個持續帖,想能和大家一起提高,並不斷補充,為以後在工科科研中努力的同學減少一些阻礙。 谷歌搜尋技能: 想搜尋紐約時報在2008到2010年關於大學測試分數但不是SAT入學分數的文章 Step1
Java 8中一些常用的全新的函式式介面
函式式介面 什麼是函式式介面? 函式式介面,@FunctionalInterface,簡稱FI,簡單的說,FI就是指僅含有一個抽象方法的介面,以@Functionalnterface標註,注意⚠️,這裡的抽象方法指的是該介面自己特有的抽象方法,而不包含它從其
有關Java基礎的一些筆試題總結
針對最近騰訊、京東、網易等公司的筆試,遇到一些有關Java基礎的問題,在此總結,希望能通過這幾道經典問題題發散,舉一反三,藉此打牢基礎!自己總結,望提出寶貴意見! 一、關於null的一道小題 先開開胃,一道很有意思的筆試題,題目如下: 下面這段程式碼能正
Linux c中一些常用函式總結(c語言中文網。。。)
fgets()函式 標頭檔案:include<stdio.h> fgets()函式 標頭檔案:include<stdio.h>fgets()函式用於從檔案流中讀取一行或指定個數的字元,其原型為: char * fgets(char *
Java多執行緒程式設計中執行緒的同步與互斥/執行緒安全/Java鎖
摘要:多執行緒三個特徵:原子性、可見性以及有序性.>執行緒的同步與互斥?(同步執行緒與非同步執行緒,執行緒同步和非同步問題) 1.同步:假設現有執行緒A和執行緒B,執行緒A需要往緩衝區寫資料,執行緒B需要從緩衝區讀資料,但他們之間存在一種制約
java程式設計中遇到的時區與時間問題總結
(摘自http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html) 最近在程式設計中遇到了時間與時區相關的問題,整理在這裡 我的程式是一個在hadoop上執行的分散式程式,從mysql資料庫中取資料,經過處理之後輸出