久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VB.net學(xué)習(xí)筆記(十六)CLR

 百眼通 2014-10-31


說(shuō)實(shí)話(huà),這章描述得太糟糕了?;旧鲜窃诎俣壬隙冗^(guò)了日子,。



一、CLR的作用

        不同的語(yǔ)言(VB.net,、C#等)都有自己的功能塊,,自己的函數(shù),類(lèi)等,,它們都可以自己用自己的,。

       但是,是不是各自為陣,,浪費(fèi)了大量的精力呢,?比如求平方根,他們的目的都是一樣的,。于是產(chǎn)生一個(gè)節(jié)約的思想:

      

       于是,,用一個(gè)公共的庫(kù),不同的語(yǔ)言都可以來(lái)調(diào)用,,這樣不再各自設(shè)計(jì)自己的,,節(jié)約了大量的精力。

       這就是CLR產(chǎn)生的由來(lái),。


        CLR是介于語(yǔ)言與操作系統(tǒng)之間:

        


         要描述這樣的公共庫(kù),,都必須用同樣的一種語(yǔ)言MSIL,它都可以被不同的語(yǔ)言識(shí)別,,于是產(chǎn)生了:

          CTS(公共類(lèi)型系統(tǒng)) ,,不同語(yǔ)言的類(lèi)型最終轉(zhuǎn)化成一套統(tǒng)一的公共類(lèi)型。

                    比如,,在VB6中調(diào)用API時(shí),,很麻煩,因?yàn)锳PI是用C寫(xiě)的,,C與VB6的類(lèi)型不一樣,,傳參數(shù)到API時(shí),VB6中類(lèi)型??季亢芫?。

                    有了這個(gè)CTS,你不再擔(dān)心不同語(yǔ)言之間的麻煩,。

           CLS(公共言語(yǔ)規(guī)范),,不同語(yǔ)言遵循的語(yǔ)言規(guī)范,這樣被不同語(yǔ)言識(shí)別,。

         



          架設(shè)了統(tǒng)一的公共語(yǔ)言,,并沒(méi)有完事,,最終形成的MSIL(中間語(yǔ)言),之所以叫中間語(yǔ)言,,因?yàn)樗€不是可執(zhí)行的,。

          .net要經(jīng)兩次編譯得到最終的可執(zhí)行程序。第一次轉(zhuǎn)為中間語(yǔ)言IL

           第二次編譯時(shí),,在目的計(jì)算機(jī)上安裝后,,當(dāng)且僅當(dāng)?shù)谝淮芜\(yùn)行進(jìn)會(huì)發(fā)生第二次編譯,最終就形成了可執(zhí)行文件:

          


          上面兩次編譯中都離不開(kāi)CLR的大力支持,。

          



二,、各種概念

       解決方案、項(xiàng)目,、程序集、模塊,、元數(shù)據(jù)

       

        元數(shù)據(jù),,就是說(shuō)明數(shù)據(jù)的數(shù)據(jù)。因?yàn)镮L以某形式打包時(shí),,別人無(wú)法來(lái)知道這是什么東西,,產(chǎn)生了元數(shù)據(jù)來(lái)說(shuō)明這些東西是什么。

                       正如,,假定某項(xiàng)目是一本書(shū),,總得來(lái)說(shuō)明,什么是章節(jié),、什么是目錄,,什么是書(shū)名,哪頁(yè)有什么內(nèi)容,,這些說(shuō)明就是元數(shù)據(jù),。


         模塊,就是某個(gè)功能塊,,來(lái)完成某邏輯功能的,。它正如一本書(shū)中的某一章一樣,單獨(dú)介紹某些知識(shí),。


         程序集,,由多個(gè)模塊來(lái)組成,并說(shuō)明哪個(gè)是入口,,模塊之間的聯(lián)系,。正如一本書(shū)中由很多章來(lái)組成,并確定哪一章是第一章節(jié)(入口)

                         并有一個(gè)清單,,來(lái)說(shuō)明各章之間的關(guān)系,,如果你是中級(jí)讀者應(yīng)該怎么來(lái)閱讀章節(jié)一樣,。


         項(xiàng)目,有點(diǎn)類(lèi)同模塊,,但項(xiàng)目通常較為完整地完成一些功能,。簡(jiǎn)單的說(shuō),《vb.net 程序入門(mén)》這本書(shū)可以是一個(gè)項(xiàng)目,。


         解決方案,,和項(xiàng)目一樣都是從邏輯上劃分,比項(xiàng)目范圍更大,,比如解決方案是計(jì)算機(jī)專(zhuān)業(yè),,那么不僅是一本書(shū)《vb.net程序入門(mén)》來(lái)完成,還涉及

                              其它項(xiàng)目比如《高等數(shù)學(xué)》,、《概率》等,。


         重點(diǎn):

        1、 解決方案可以只有一個(gè)項(xiàng)目,。也可以有幾個(gè)項(xiàng)目來(lái)組成,。

        2、解決方案可以只有一個(gè)程序集,,也可以有幾個(gè)程序集

         3,、程序集可以只有一個(gè)模塊,也可以有幾個(gè)模塊,,程序集與模塊的區(qū)別就是是否有程序集清單,,有就是程序集,否則是模塊,。

         4,、程序集可以有一個(gè)項(xiàng)目,也可以有幾個(gè)項(xiàng)目

         5,、項(xiàng)目可以只有一個(gè)模塊,,也可以有幾個(gè)項(xiàng)目。 

         





三,、GAC

       全局程序集緩存,位置如圖:

        

 

       它是怎么產(chǎn)生的,,有什么作用呢?

       通俗地說(shuō),,是為了升級(jí)管理用的,,官方地說(shuō):版本化管理。為什么要有這個(gè)呢,?

       以前的一個(gè)程序里面有很多exe和dll,它們來(lái)自不同的廠(chǎng)商(或作者),,比如播放器要用不同的解碼。

       如果一個(gè)程序升級(jí)了,,附屬的dll沒(méi)有升級(jí),,就會(huì)創(chuàng)建兼容性問(wèn)題(百度:Dll Hell)


        以前的管理都是把這些附屬的東西在注冊(cè)表中注冊(cè)登記,,來(lái)管理這些版本問(wèn)題。有些附屬dll是共用的,,一旦刪除某程序附屬的dll

        也會(huì)導(dǎo)致另一個(gè)使用這個(gè)dll的程序崩潰,。


        為了解決上面矛盾,.net用了GAC,,它使用一些方法來(lái)管理,,比如同一程序允許支持不同版本的dll,,對(duì)dll的版本進(jìn)行限制(比如高于

         某版本就不會(huì)運(yùn)行)





四,、GC

         垃圾回收器,,就是回收資源、釋放內(nèi)存的,。

        

         不確定性:無(wú)法確定它釋放的時(shí)間,,GC總是根據(jù)自己的算法來(lái)釋放,比如:最新分配的優(yōu)先于其它存在時(shí)間長(zhǎng)的首先釋放,;內(nèi)存不足時(shí),,啟動(dòng)GC回收。

                          原因:GC運(yùn)行時(shí)很費(fèi)資源,,所以它只在認(rèn)為必要時(shí)才自動(dòng)進(jìn)行回收(即使對(duì)象已經(jīng)沒(méi)有用了)


         finalize:   釋放非托管資源。比如對(duì)象中含有打開(kāi)另一個(gè)文件的句柄,,在釋放對(duì)象時(shí),,用finalize先進(jìn)行關(guān)閉這個(gè)句柄。

                         它有點(diǎn)象析構(gòu)函數(shù),,在對(duì)象釋放前做一些前期的輔助工作,。

        dispose:  釋放托管或非托管資源資源


         托管堆:本質(zhì)上它就是C++中的堆(區(qū)別于棧),加上“托管”之意,,它不是立即釋放,,而是被GC控制,釋放時(shí)間具有不確定性,。

                         它有一個(gè)頂端指針,,下一個(gè)新的分配就從這個(gè)指針開(kāi)始。當(dāng)GC運(yùn)行時(shí),,就會(huì)壓縮它,,使之排列緊密騰出較大空間。

         

             如上,,堆上有ABC三對(duì)象,,指針在頂部(便于以后再分配定位),

                          當(dāng)B不再被引用時(shí),,并沒(méi)有立即回收,。

                         當(dāng)新的對(duì)象D分配時(shí),,根據(jù)指針在頂部分配即可。

                          當(dāng)GC運(yùn)行時(shí),,向下壓縮緊密即可,,就騰出較大空間。(這時(shí),,原來(lái)的B才真正的釋放了)





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多