導航:首頁 > 編程語言 > java類型安全

java類型安全

發布時間:2023-01-10 16:58:22

A. 在java中,對一些敏感數據,用什麼類型來存儲更安全,為什麼

系統里的數據類型是根據你的業務以及線程安全性能來選擇的,比如金額適合使用bigdecimal類型,方便對金額的管理。對某個欄位經常進行修改的使用StringBuffer類型,可以提升線程安全的等級,也可以減少伺服器的負擔。
關於數據的安全性,泛指系統之間的數據交互,比如我系統A向系統B發送客戶的信息需要獲取用戶的詳細資料,這時兩邊都需要對發送的數據進行加密,比如RSA SM加密等,也可以使用加密的傳輸協議HTTPS,這樣數據不會被第三方查看,從而保持了數據安全性。

B. JAVA是用來做什麼的

Java是一種廣泛使用的計算機編程語言,擁有跨平台、面向對象、泛型編程的特性,廣泛應用於企業級Web應用開發和移動應用開發。

任職於太陽微系統的詹姆斯·高斯林等人於1990年代初開發Java語言的雛形,最初被命名為Oak,目標設置在家用電器等小型系統的編程語言,應用在電視機、電話、鬧鍾、烤麵包機等家用電器的控制和通信。

由於這些智能化家電的市場需求沒有預期的高,Sun公司放棄了該項計劃。隨著1990年代互聯網的發展,Sun公司看見Oak在互聯網上應用的前景,於是改造了Oak,於1995年5月以Java的名稱正式發布。Java伴隨著互聯網的迅猛發展而發展,逐漸成為重要的網路編程語言。

(2)java類型安全擴展閱讀

Java的特性

Java編程語言的風格十分接近C++語言。繼承了C++語言面向對象技術的核心,舍棄了容易引起錯誤的指針,以引用取代;移除了C++中的運算符重載和多重繼承特性,用介面取代;增加垃圾回收器功能。

Java不同於一般的編譯語言或解釋型語言。它首先將源代碼編譯成位元組碼,再依賴各種不同平台上的虛擬機來解釋執行位元組碼,從而具有「一次編寫,到處運行」的跨平台特性。在早期JVM中,這在一定程度上降低了Java程序的運行效率。但在J2SE1.4.2發布後,Java的運行速度有了大幅提升。

在Java SE 1.5版本中引入了泛型編程、類型安全的枚舉、不定長參數和自動裝/拆箱特性。太陽微系統對Java語言的解釋是:「Java編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言」

C. 為什麼java基本數據類型是原子的但是i 還存在線程安全問題

這個問題本身是錯誤的觀點,基本數據類型是數據結構,原子性是操作定義,不是一個概念。
原話是這樣的,基本數據類型的賦值是原子性操作。這里還要排除long和double,或者標明64bit操作系統。因為long和double類型是8位元組,而低位操作系統(32bit)單次內存的存儲結構最大隻能存儲4個位元組,所以每次操作都要分兩次進行,也就是非原子性操作。
那int類型的i++為什麼還有線程安全問題(推測了問題真正想表達的意思)?因為i++在指令中是賦值和自增兩個操作。賦值沒問題,但自增是要讀取和寫入兩個操作,很明顯是非原子性操作,自然就有安全問題。另外volatile只有兩個作用,一個是禁用指令重排,一個是強制讀取主存,沒有絕對的原子性。

D. 為什麼java的安全性比較高

java的安全性體現在兩個方面:

1、語言層次的安全性主要體現在:

2、在運行環境提供了四級安全性保障機制:

位元組碼校驗器 -類裝載器 -運行時內存布局 -文件訪問限制

E. java中如何進行安全的類型轉換

java中類型轉換有自動轉化跟強制類型轉換;打個比方就是:int轉double類型是自動轉化,
而double轉化成int是強制類型轉化;(注意強制類型轉化會造成數據丟失)
以下是大概類型轉化:
byte->short->int->long->double
char->int ->long->double
char->int ->float->double
long->float

F. java 定義一個類型安全的Map

import java.util.*;enum Color
{
RED, GREEN, BLUE
};public class Test
{ public static void main(String[] args)
{
Map<Color, Integer> color = new HashMap<Color, Integer>();
color.put(Color.RED, 1);
color.put(Color.GREEN, 2);
color.put(Color.BLUE, 3);
}}

G. java中泛型是怎麼做到類型安全的

在類定義處聲明的泛型,則用來指定這個類用來處理的對象類型,這個類中定義的所有方法,只要使用了類定義處聲明的泛型參數,則都必須使用同一個對象,否則,編譯就會出現錯誤
如果僅僅是在方法聲明處定義泛型,則表示這個方法的參數或返回值使用什麼類型的數據。
泛型可以確保我們定義的類型是安全的,不會出現轉換出錯問題等。

1.不再需要強制轉型;
2.編輯器增加了強制檢查集合中的對象類型的功能,避免了在Girl的集合中出現Boy對象的問題(雖然有的時候是我們所期待的)
如:
public class Query{
private T t;
public T get(){...};
public void set(T t){...};
}
如果使用的方式如下:
Query query = new Query();
則上面定義的類與下面的定義一致
public class Query{
private User t;
public User get(){...}
public void set(User t){}
}

H. JAVA的技術特點是什麼

JAVA的技術特點是什麼?

Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。

那麼Java這么高的評價它的特點有哪些,下面我來為題主解答:

一、跨平台/可移植性

這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。

Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:

二、安全性

Java適合於網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。

三、面向對象

面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。

四、簡單性

Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。

五、高性能

Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。

因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。

六、分布式

Java是為Internet的分布式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。

七、多線程

多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。

八、健壯性

Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。

以上幾種特性你了解到啦嗎? 記得給個贊!

當然這些還沒完,Java除啦這些特性還有一些其他的特點我也來給你講一講!!

1.java的風格類似C++,從某種意義上講,java是C++的一個變種。但是java摒棄了C、C++中的容易引發錯誤和難以理解的指針,結構,以及內存管理等;

2.java是一種強類型的語言,比C/C++檢查還要嚴格,java區分大小寫字母;

3.java禁止非法訪問內存,因為java沒有指針,內存的申請和釋放;

4.對於不同的操作系統,會有不同的java虛擬機,這也就決定了java的可移植性;

5.java提供了自動垃圾回收機制gc,有效避免了C、C++的內存泄漏問題;

記得給個贊!

I. Java的安全機制有哪些

》類裝載器結構(classloader)x0dx0ax0dx0a》class文件檢查器(theclassfileverifier)x0dx0ax0dx0a》內置於Java虛擬機(及語言)的安全特性x0dx0ax0dx0a》安全管理器及JavaAPI(securitymanager)x0dx0ax0dx0a在Java沙箱中,類裝載器體系結構是第一道防線。它在三個方面對Java的沙箱起作用:x0dx0ax0dx0a1>它防止惡意代碼區干涉善意的代碼x0dx0ax0dx0a2>它守護了被信任的代碼的邊界x0dx0ax0dx0a3>它將代碼歸於某類(稱為保護域),該類確定了代碼可以進行哪種操作x0dx0ax0dx0aClass文件檢查器:x0dx0ax0dx0aClass文件檢查器保證裝載的class文件內容有正確的內部結構,並且這些class文件互相間協調一致。Class文件檢查器實現的安全目標之一就是程序的健壯性。如果某個有漏洞的編譯器,或某個聰明的黑客,產生了一個class文件,而這個class文件中包含了一個方法,則合格方法的位元組碼中含有一條跳轉到方法之外的指令,那麼,一旦這個方法被調用,它將導致虛擬機的崩潰,所以,處於對健壯性的考慮,由虛擬機檢驗它裝載的位元組碼的完整性非常重要。x0dx0ax0dx0aClass文件檢查器要進行四趟獨立的掃描來完成它的操作。x0dx0ax0dx0a第一趟:Class文件的結構檢查x0dx0ax0dx0a在這一趟掃描中,對每一段將被當做類型導入的位元組序列,Class文件檢查器都會確認它是否符合JavaClass文件的節本結構。在這一趟檢查中檢查器會進行很多檢查例如:每個Class文件都必須以四個同樣的位元組開始:0xCAFEBABE。因為這個魔數Class文件分析器會很容易判斷出某個文件具有明顯問題而加以拒絕。檢查器還必須確認在Class文件中聲明的版本號和次版本號,這個版本號必須在這個虛擬機實現可以支持的范圍之內。而且第一趟掃描還必須確認這個Class文件有沒有被刪減。總之第一趟掃描的目的就是保證這個位元組序列正確的定義了一個新類型。x0dx0ax0dx0a第二趟:類型數據的語義檢查x0dx0ax0dx0a第二趟掃描,檢查器要查看每個組成部分,確認它們是否是其所屬類型的實例,他們的結構是否正確。另外還要檢查這個類本身是否符合特定的條件,它們是由Java編程語言規定的。例如,檢查器強制規定除Object類以外的類必須有一個超類,或者檢查final類有沒有被子化等。x0dx0ax0dx0a第三趟:位元組碼驗證x0dx0ax0dx0a這一趟是要確保採用任何路徑在位元組碼流中都得到一個確定的操作碼,確保操作數棧總是包含正確的數值以及正確的類型。x0dx0ax0dx0a第四趟:符號引用的驗證x0dx0ax0dx0a在動態鏈接的過程中,如果包含在一個Class文件中的符號引用被解析時,Class文件檢查器要進行第四趟檢查。第四趟掃描僅僅是動態鏈接過程的一部分。當一個Class文件被裝載時,它包含了對其他類的符號引用以及它們的欄位和方法。一個符號引用是一個字元串,它給出了名字,並且可能還包含了其他關於這個被引用項的信息------這些信息必須足以唯一的識別一個類、方法、欄位。這樣對於其他類的符號引用必須給出這個類的全名;對於其他類的欄位的符號引用必須給出類名、欄位名以及欄位描述符;對於其他類中的方法的引用必須給出類名、方法名以及方法的描述符。x0dx0ax0dx0a所謂的動態鏈接是一個將符號引用解析為直接引用的過程。x0dx0ax0dx0a此外,由於Java程序是動態鏈接的,所以Class文件檢查器在進行第四次掃描中,必須檢查相互引用類之間的兼容性。x0dx0ax0dx0a除此之外,Java虛擬機還有一些內置的安全特性:x0dx0ax0dx0a》類型安全的引用轉換x0dx0ax0dx0a》結構化的內存訪問x0dx0ax0dx0a》自動垃圾收集(不必顯式地釋放被分配的內存)x0dx0ax0dx0a》空引用檢查x0dx0ax0dx0a通過保證一個Java程序只能使用類型安全的、結構化的方法去訪問內存,Java虛擬機使得Java程序更為健壯。

閱讀全文

與java類型安全相關的資料

熱點內容
加密貨幣都有哪些平台 瀏覽:625
python和matlab難度 瀏覽:388
python爬蟲很難學么 瀏覽:572
小米解壓積木可以組成什麼呢 瀏覽:816
為什麼滴滴出行app還能用 瀏覽:564
怎麼升級手機android 瀏覽:922
php權威編程pdf 瀏覽:994
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:495
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:991
應用加密app還能訪問應用嘛 瀏覽:433
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:152
web伺服器變更ip地址 瀏覽:956
java正則表達式驗證郵箱 瀏覽:362
成熟商務男裝下載什麼軟體app 瀏覽:610