第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.NET framework是干什么的?

.NET framework是干什么的?

開滿天機 2019-03-02 07:03:28
.NET framework是干什么的?
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經(jīng)驗 獲得超5個贊

.NET Framework一般指Microsoft .NET Framework。

Microsoft .NET Framework是用于Windows的新托管代碼編程模型。它將強大的功能與新技術(shù)結(jié)合起來,用于構(gòu)建具有視覺上引人注目的用戶體驗的應(yīng)用程序,實現(xiàn)跨技術(shù)邊界的無縫通信,并且能支持各種業(yè)務(wù)流程。

Microsoft .NET Framework安全解決方案

.NET Framework安全解決方案基于管理代碼的概念,以及由通用語言運行時(CLR)加強的安全規(guī)則。大部分管理代碼需要進行驗證以確保類型安全及預(yù)先定義好的其它屬性的行為的安全。

例如,在驗證的代碼中,聲明為接收4字節(jié)值的訪問將拒絕提供8字節(jié)參數(shù)的調(diào)用,因為不是類型安全的。驗證過程還確保了執(zhí)行流只傳送到已知的位置,如方法入口點--這個過程去除了跳轉(zhuǎn)到任意位置執(zhí)行的能力。

驗證將阻止不是類型安全的代碼執(zhí)行,在它們引起破壞前捕獲很多常見的編程錯誤。通常的弱點--如緩存溢出,對任意內(nèi)存或沒有初始化的內(nèi)存的讀取,對控件的隨意傳送--都不再可能出現(xiàn)。這將使最終用戶受益,因為在他們執(zhí)行代碼前對其進行檢查。

這也有益于開發(fā)人員,他們會發(fā)現(xiàn)很多常見錯誤(過去一直在困繞前開發(fā))現(xiàn)在可以查明,并能阻止它們引起破壞。

擴展資料:

CLR內(nèi)存管理

內(nèi)存管理的自動化:在執(zhí)行過程中管理應(yīng)用程序的資源是一項單調(diào)而困難的工作。它會將你的注意力從你本應(yīng)解決的問題中引開。而垃圾收集機制完全解決了程序員在編程過程中頭痛的問題,跟蹤內(nèi)存的使用,并知道何時將它們釋放。

面向?qū)ο?/a>的環(huán)境中,每種類型都標識了對你的應(yīng)用程序有用的某種資源。為了使用這些資源,你需要為類型分配內(nèi)存。在應(yīng)用中,訪問一種資源要通過以下步驟:

(1)為類型分配內(nèi)存。

(2)初始化內(nèi)存,設(shè)置資源的初始狀態(tài)并使其可用。

(3)通過訪問該類型的實例成員來訪問資源。

(4)卸下將被清除的資源狀態(tài)。

(5)釋放內(nèi)存。

這一看似簡單的過程在實際的編程中是產(chǎn)生錯誤的主要來源之一。更可怕的是:內(nèi)存中的錯誤往往導(dǎo)致不可預(yù)見的結(jié)果。如果你有過編程的經(jīng)驗,想想看,有多少次你的程序因為內(nèi)存訪問錯誤而崩潰?

特別是計算機存在多根內(nèi)存條時特別容易內(nèi)存報錯死機。建議升級電腦時換掉原來的內(nèi)存,不要采用加內(nèi)存的方式。

CLR要求所有的資源從可操控的堆(注:在此指一種內(nèi)存結(jié)構(gòu))中分配。當(dāng)一個進程被初始化后,CLR保留了一個未被分配的地址空間。這一區(qū)域叫做可操控堆。在堆中保持了指向下一個將被分配給對象的堆地址的指針(NEXT)。

初始狀態(tài)下,該指針是保留地址空間的基地址。一個應(yīng)用使用新的操作產(chǎn)生對象。此操作首先檢查新對象需要字節(jié)的大小是否會超出保留空間。

如果對象大小合適,指向下一個地址的指針將指向堆中的這個對象,該對象的構(gòu)造器被調(diào)用,新的操作返回對象的地址。

當(dāng)一個應(yīng)用請求建立一個對象時,地址空間可能不夠大。堆將發(fā)現(xiàn)這一點(通過將新對象的大小與NEXT指針相加,并與堆的大小進行比較),這時垃圾收集器就將被調(diào)用。在這里,CLR引入了“代”的概念。代,指堆中對象產(chǎn)生的先后。

這樣,垃圾收集器在將發(fā)生溢出時回收屬于特定的“代”的對象,而不是回收堆中的所有對象。

(6)即時編譯

在各種語言的編譯器對源代碼進行編譯之后,在CLR環(huán)境中產(chǎn)生的是中間代碼(出于兼容性與跨語言集成的考慮),其內(nèi)容雖然有效,但在轉(zhuǎn)化為本地代碼之前它本身是不可執(zhí)行的。這就是JIT編譯器需要完成的工作。

這里需要說明一個問題:為什么要即時編譯,而不是一次性的將中間代碼文件進行編譯?答案很簡單:原因在于效率。在大型的應(yīng)用中,你很少會用到程序的全部功能,這種邊執(zhí)行邊編譯的措施比一次性的完全編譯效率更高。

CLR帶有三個不同的JIT編譯器,在Windows平臺中,CLR帶有三個不同的JIT編譯器:

(1)缺省的編譯器---主編譯器,由它進行數(shù)據(jù)流分析并輸出經(jīng)過優(yōu)化的本地代碼,所有的中間代碼指令均可被它處理。

(2)PREJIT,它建立在主JIT編譯器之上。其運行方式更象一個傳統(tǒng)的編譯器:每當(dāng)一個.NET組件被安裝時它就運行。

(3)ECONOJIT,在并不充分優(yōu)化的前提下,它能夠快速完成IL代碼到本地碼的轉(zhuǎn)換,編譯速度與運行速度都非???。

為了配合編譯器的工作,在.NET SDK的安裝路徑下的/bin目錄中有一個負責(zé)管理JIT的應(yīng)用程序:jitman.exe。具體的使用參見聯(lián)機幫助。



查看完整回答
  • 1 回答
  • 0 關(guān)注
  • 3038 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號