freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于gdi2d圖形軟件開(kāi)發(fā)方法初探-2d幾何畫(huà)板畢業(yè)論文-資料下載頁(yè)

2025-06-27 18:45本頁(yè)面
  

【正文】 lector的格式化程序?qū)⒖刂菩蛄谢^(guò)程,并用一個(gè)代理替換所有從MarshalByRefObject派生得到的對(duì)象。如果沒(méi)有預(yù)先配置為SurrogateSelector,序列化體系結(jié)構(gòu)將遵從標(biāo)準(zhǔn)序列化規(guī)則。要使一個(gè)類(lèi)可序列化,最簡(jiǎn)單的方法是使用Serializable屬性對(duì)它進(jìn)行標(biāo)記,: 類(lèi)可序列化方法,以下代碼片段說(shuō)明了如何將此類(lèi)的一個(gè)實(shí)例序列化為一個(gè)文件: 實(shí)例序列轉(zhuǎn)為文件代碼本例使用二進(jìn)制格式化程序進(jìn)行序列化。您只需創(chuàng)建一個(gè)要使用的流和格式化程序的實(shí)例,然后調(diào)用格式化程序的Serialize方法。流和要序列化的對(duì)象實(shí)例作為參數(shù)提供給此調(diào)用。類(lèi)中的所有成員變量(甚至標(biāo)記為private的變量)都將被序列化,但這一點(diǎn)在本例中未明確體現(xiàn)出來(lái)。在這一點(diǎn)上,二進(jìn)制序列化不同于只序列化公共字段的XML序列化程序。將對(duì)象還原到它以前的狀態(tài)也非常容易。首先,創(chuàng)建格式化程序和流以進(jìn)行讀取,然后讓格式化程序?qū)?duì)象進(jìn)行反序列化。以下代碼片段說(shuō)明了如何進(jìn)行此操作。 還原狀態(tài)代碼上面所使用的BinaryFormatter效率很高,能生成非常緊湊的字節(jié)流。所有使用此格式化程序序列化的對(duì)象也可使用它進(jìn)行反序列化,對(duì)于序列化將在.NET平臺(tái)上進(jìn)行反序列化的對(duì)象,此格式化程序無(wú)疑是一個(gè)理想工具。需要注意的是,對(duì)對(duì)象進(jìn)行反序列化時(shí)并不調(diào)用構(gòu)造函數(shù)。對(duì)反序列化添加這項(xiàng)約束,是出于性能方面的考慮。但是,這違反了對(duì)象編寫(xiě)者通常采用的一些運(yùn)行時(shí)約定,因此,開(kāi)發(fā)人員在將對(duì)象標(biāo)記為可序列化時(shí),應(yīng)確??紤]了這一特殊約定。如果要求具有可移植性,請(qǐng)使用SoapFormatter。所要做的更改只是將以上代碼中的格式化程序換成SoapFormatter,而Serialize和Deserialize調(diào)用不變。對(duì)于上面使用的示例,該格式化程序?qū)⑸梢韵陆Y(jié)果,: SoapFormatter代碼需要注意的是,無(wú)法繼承Serializable屬性。如果從MyObject派生出一個(gè)新的類(lèi),則這個(gè)新的類(lèi)也必須使用該屬性進(jìn)行標(biāo)記,否則將無(wú)法序列化。例如,如果試圖序列化以下類(lèi)實(shí)例,將會(huì)顯示一個(gè)SerializationException,說(shuō)明MyStuff類(lèi)型未標(biāo)記為可序列化, 可序列化實(shí)例使用序列化屬性非常方便,但是它存在上述的一些限制。有關(guān)何時(shí)標(biāo)記類(lèi)以進(jìn)行序列化(因?yàn)轭?lèi)編譯后就無(wú)法再序列化),請(qǐng)參考有關(guān)說(shuō)明(請(qǐng)參閱下面的序列化規(guī)則)。類(lèi)通常包含不應(yīng)被序列化的字段。例如,假設(shè)某個(gè)類(lèi)用一個(gè)成員變量來(lái)存儲(chǔ)線(xiàn)程ID。當(dāng)此類(lèi)被反序列化時(shí),序列化此類(lèi)時(shí)所存儲(chǔ)的ID對(duì)應(yīng)的線(xiàn)程可能不再運(yùn)行,所以對(duì)這個(gè)值進(jìn)行序列化沒(méi)有意義??梢酝ㄟ^(guò)使用NonSerialized屬性標(biāo)記成員變量來(lái)防止它們被序列化,: NonSerialized屬性代碼可以通過(guò)在對(duì)象上實(shí)現(xiàn)ISerializable接口來(lái)自定義序列化過(guò)程。這一功能在反序列化后成員變量的值失效時(shí)尤其有用,但是需要為變量提供值以重建對(duì)象的完整狀態(tài)。要實(shí)現(xiàn)ISerializable,需要實(shí)現(xiàn)GetObjectData方法以及一個(gè)特殊的構(gòu)造函數(shù),在反序列化對(duì)象時(shí)要用到此構(gòu)造函數(shù)。以下代碼示例說(shuō)明了如何在前一部分中提到的MyObject類(lèi)上實(shí)現(xiàn)ISerializable,: MyObject類(lèi)上實(shí)現(xiàn)ISerializable在序列化過(guò)程中調(diào)用GetObjectData時(shí),需要填充方法調(diào)用中提供的SerializationInfo對(duì)象。只需按名稱(chēng)/值對(duì)的形式添加將要序列化的變量。其名稱(chēng)可以是任何文本。只要已序列化的數(shù)據(jù)足以在反序列化過(guò)程中還原對(duì)象,便可以自由選擇添加至SerializationInfo的成員變量。如果基對(duì)象實(shí)現(xiàn)了ISerializable,則派生類(lèi)應(yīng)調(diào)用其基對(duì)象的GetObjectData方法。需要強(qiáng)調(diào)的是,將ISerializable添加至某個(gè)類(lèi)時(shí),需要同時(shí)實(shí)現(xiàn)GetObjectData以及特殊的構(gòu)造函數(shù)。如果缺少GetObjectData,編譯器將發(fā)出警告。但是,由于無(wú)法強(qiáng)制實(shí)現(xiàn)構(gòu)造函數(shù),所以,缺少構(gòu)造函數(shù)時(shí)不會(huì)發(fā)出警告。如果在沒(méi)有構(gòu)造函數(shù)的情況下嘗試反序列化某個(gè)類(lèi),將會(huì)出現(xiàn)異常。在消除潛在安全性和版本控制問(wèn)題等方面,當(dāng)前設(shè)計(jì)優(yōu)于SetObjectData方法。例如,如果將SetObjectData方法定義為某個(gè)接口的一部分,則此方法必須是公共方法,這使得用戶(hù)不得不編寫(xiě)代碼來(lái)防止多次調(diào)用SetObjectData方法??梢韵胂螅绻硞€(gè)對(duì)象正在執(zhí)行某些操作,而某個(gè)惡意應(yīng)用程序卻調(diào)用此對(duì)象的SetObjectData方法,將會(huì)引起一些潛在的麻煩。在反序列化過(guò)程中,使用出于此目的而提供的構(gòu)造函數(shù)將SerializationInfo傳遞給類(lèi)。對(duì)象反序列化時(shí),對(duì)構(gòu)造函數(shù)的任何可見(jiàn)性約束都將被忽略,因此,可以將類(lèi)標(biāo)記為public、protected、internal或private。一個(gè)不錯(cuò)的辦法是,在類(lèi)未封裝的情況下,將構(gòu)造函數(shù)標(biāo)記為protect。如果類(lèi)已封裝,則應(yīng)標(biāo)記為private。要還原對(duì)象的狀態(tài),只需使用序列化時(shí)采用的名稱(chēng),從SerializationInfo中檢索變量的值。如果基類(lèi)實(shí)現(xiàn)了ISerializable,則應(yīng)調(diào)用基類(lèi)的構(gòu)造函數(shù),以使基礎(chǔ)對(duì)象可以還原其變量。如果從實(shí)現(xiàn)了ISerializable的類(lèi)派生出一個(gè)新的類(lèi),則只要新的類(lèi)中含有任何需要序列化的變量,就必須同時(shí)實(shí)現(xiàn)構(gòu)造函數(shù)以及GetObjectData方法。以下代碼片段顯示了如何使用上文所示的MyObject類(lèi)來(lái)完成此操作,: MyObject類(lèi)切記要在反序列化構(gòu)造函數(shù)中調(diào)用基類(lèi),否則,將永遠(yuǎn)不會(huì)調(diào)用基類(lèi)上的構(gòu)造函數(shù),并且在反序列化后也無(wú)法構(gòu)建完整的對(duì)象。對(duì)象被徹底重新構(gòu)建,但是在反系列化過(guò)程中調(diào)用方法可能會(huì)帶來(lái)不良的副作用,因?yàn)楸徽{(diào)用的方法可能引用了在調(diào)用時(shí)尚未反序列化的對(duì)象引用。如果正在進(jìn)行反序列化的類(lèi)實(shí)現(xiàn)了IDeserializationCallback,則反序列化整個(gè)對(duì)象圖表后,將自動(dòng)調(diào)用OnSerialization方法。此時(shí),引用的所有子對(duì)象均已完全還原。有些類(lèi)不使用上述事件偵聽(tīng)器,很難對(duì)它們進(jìn)行反序列化,散列表便是一個(gè)典型的例子。在反序列化過(guò)程中檢索關(guān)鍵字/值對(duì)非常容易,但是,由于無(wú)法保證從散列表派生出的類(lèi)已反序列化,所以把這些對(duì)象添加回散列表時(shí)會(huì)出現(xiàn)一些問(wèn)題。因此,建議目前不要在散列表上調(diào)用方法。在格式化程序上調(diào)用Serialize方法時(shí),對(duì)象序列化按照以下規(guī)則進(jìn)行:(1)檢查格式化程序是否有代理選取器。如果有,檢查代理選取器是否處理指定類(lèi)型的對(duì)象。如果選取器處理此對(duì)象類(lèi)型,將在代理選取器上調(diào)用 (2)如果沒(méi)有代理選取器或有卻不處理此類(lèi)型,將檢查是否使用Serializable屬性對(duì)對(duì)象進(jìn)行標(biāo)記。如果未標(biāo)記,將會(huì)引發(fā)SerializationException。 (3)如果對(duì)象已被正確標(biāo)記,將檢查對(duì)象是否實(shí)現(xiàn)了ISerializable。如果已實(shí)現(xiàn),將在對(duì)象上調(diào)用GetObjectData。 (4)如果對(duì)象未實(shí)現(xiàn)Serializable,將使用默認(rèn)的序列化策略,對(duì)所有未標(biāo)記為NonSerialized的字段都進(jìn)行序列化。.NET框架支持版本控制和并排執(zhí)行,并且,如果類(lèi)的接口保持一致,所有類(lèi)均可跨版本工作。由于序列化涉及的是成員變量而非接口,所以,在向要跨版本序列化的類(lèi)中添加成員變量,或從中刪除變量時(shí),應(yīng)謹(jǐn)慎行事。特別是對(duì)于未實(shí)現(xiàn)ISerializable的類(lèi)更應(yīng)如此。若當(dāng)前版本的狀態(tài)發(fā)生了任何變化(例如添加成員變量、更改變量類(lèi)型或更改變量名稱(chēng)),都意味著如果同一類(lèi)型的現(xiàn)有對(duì)象是使用早期版本進(jìn)行序列化的,則無(wú)法成功對(duì)它們進(jìn)行反序列化。如果對(duì)象的狀態(tài)需要在不同版本間發(fā)生改變,類(lèi)的作者可以有兩種選擇:1)實(shí)現(xiàn)ISerializable。這使您可以精確地控制序列化和反序列化過(guò)程,在反序列化過(guò)程中正確地添加和解釋未來(lái)狀態(tài)。 2)使用NonSerialized屬性標(biāo)記不重要的成員變量。僅當(dāng)預(yù)計(jì)類(lèi)在不同版本間的變化較小時(shí),才可使用這個(gè)選項(xiàng)。例如,把一個(gè)新變量添加至類(lèi)的較高版本后,可以將該變量標(biāo)記為NonSerialized,以確保該類(lèi)與早期版本保持兼容。 由于類(lèi)編譯后便無(wú)法序列化,所以在設(shè)計(jì)新類(lèi)時(shí)應(yīng)考慮序列化。需要考慮的問(wèn)題有:是否必須跨應(yīng)用程序域來(lái)發(fā)送此類(lèi)?是否要遠(yuǎn)程使用此類(lèi)?用戶(hù)將如何使用此類(lèi)?也許他們會(huì)從我的類(lèi)中派生出一個(gè)需要序列化的新類(lèi)。只要有這種可能性,就應(yīng)將類(lèi)標(biāo)記為可序列化。除下列情況以外,最好將所有類(lèi)都標(biāo)記為可序列化:(1)所有的類(lèi)都永遠(yuǎn)也不會(huì)跨越應(yīng)用程序域。如果某個(gè)類(lèi)不要求序列化但需要跨越應(yīng)用程序域,請(qǐng)從MarshalByRefObject派生此類(lèi)。 (2)類(lèi)存儲(chǔ)僅適用于其當(dāng)前實(shí)例的特殊指針。例如,如果某個(gè)類(lèi)包含非受控的內(nèi)存或文件句柄,請(qǐng)確保將這些字段標(biāo)記為NonSerialized或根本不序列化此類(lèi)。8 結(jié)論8結(jié) 論《基于GDI+》2D圖形軟件開(kāi)發(fā)方法初探—,.NET平臺(tái)通過(guò)IL實(shí)現(xiàn)了跨平臺(tái)機(jī)制,同時(shí)托管機(jī)制提供了運(yùn)行時(shí)的安全機(jī)制。2D幾何畫(huà)板實(shí)現(xiàn)一些基本的圖形繪制,如點(diǎn)、線(xiàn)、圓的繪制,及一些自定義圖形的繪制,如多邊形,曲線(xiàn),帶外接圓的三角形的繪制;實(shí)現(xiàn)直角坐標(biāo)系函數(shù)軌跡圖形的繪制;對(duì)繪制結(jié)果實(shí)現(xiàn)序列化等;同時(shí)也實(shí)現(xiàn)了共點(diǎn)運(yùn)動(dòng),可以動(dòng)態(tài)的觀察關(guān)聯(lián)對(duì)象間的運(yùn)動(dòng)關(guān)系。在設(shè)計(jì)中,我首先對(duì)系統(tǒng)進(jìn)行分析,作出系統(tǒng)的總體設(shè)計(jì),然后分模塊的實(shí)現(xiàn)系統(tǒng)的詳細(xì)設(shè)計(jì),包括圖形繪制模塊,測(cè)量模塊,二維函數(shù)繪制模塊和對(duì)結(jié)果序列化的設(shè)計(jì)和實(shí)現(xiàn)。在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我閱讀了大量的文獻(xiàn),查閱了大量的資料,學(xué)習(xí)了許多關(guān)于圖形圖像方面的書(shū)籍,也學(xué)習(xí)了許多數(shù)學(xué)算法的知識(shí)。這讓我學(xué)的了很多的認(rèn)識(shí),對(duì)圖形圖像軟件的開(kāi)發(fā)有了一定的了解。在開(kāi)發(fā)過(guò)程中,由時(shí)時(shí)間和本人缺乏系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn),所以系統(tǒng)依然存在一些遺憾和不足,如系統(tǒng)完整性、異常控制等,在界面設(shè)計(jì)方面也顯得較粗糙,這將會(huì)在今后系統(tǒng)的完善中不斷改善。參考文獻(xiàn) 參考文獻(xiàn)[1] Grant 程序員參考手冊(cè)[M].清華大學(xué)出報(bào)社,2002.[2]懷特著,楊浩、+程序設(shè)計(jì)[M].清華大學(xué)出版社,2002.[3]克瓦林納著,葛子昂譯..NET設(shè)計(jì)規(guī)范[M].人民郵電出報(bào)社,2006.[4][M].水利水電出版社,2004.[5][M].電子工業(yè)出版社,2005.[6]周鳴楊,+編程[M].清華大學(xué)出版社,2004.[7][M].清華大學(xué)出版社,2006.[8](美)內(nèi)格爾等編著,高級(jí)編程(第四版)[M].清華大學(xué)出版社,2006.[9]尹立宏. Visual C.NET應(yīng)用編程150例[M].電子工業(yè)出版社,2003.[10](加)Scott (第2版)[M].機(jī)械工業(yè)出版社,2003.[11][M].電子工業(yè)出版社,2005.[12]——算法設(shè)計(jì)與分析(第2版)[M].清華大學(xué)出版社,2005.致謝 致 謝感謝我的導(dǎo)師陳國(guó)華教授,他嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;他循循善誘的教導(dǎo)和不拘一格的思路給予我無(wú)盡的啟迪。感謝朋友們對(duì)我的幫助和指點(diǎn),沒(méi)有他們的幫助和提供資料,在短短幾個(gè)月的時(shí)間里學(xué)習(xí)到這么多的知識(shí)并完成畢業(yè)設(shè)計(jì)和論文是不可能的事情。感謝我的家人在這個(gè)過(guò)程中一直對(duì)我的支持和鼓勵(lì),在遇到設(shè)計(jì)難題時(shí)對(duì)我悉心的照顧和問(wèn)候給予我堅(jiān)持的勇氣。在論文即將完成之際,我的心情無(wú)法平靜,從開(kāi)始進(jìn)入課題到論文的順利完成,有多少位可敬的老師、同學(xué)、朋友給了我無(wú)言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!感謝各位專(zhuān)家和評(píng)委耐心審閱我的論文。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1