• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 知識大全 > 知識百科 > 百科知識 > 什么是序列化_最終目的

    什么是序列化_最終目的

    時間: 謝君787 分享

    什么是序列化_最終目的

      序列化使其他代碼可以查看或修改那些不序列化便無法訪問的對象實例數據,那么你對序列化了解多少呢?以下是由學習啦小編整理關于什么是序列化的內容,希望大家喜歡!

      什么是序列化

      序列化 (Serialization)將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。

      序列化使其他代碼可以查看或修改那些不序列化便無法訪問的對象實例數據。確切地說,代碼執行序列化需要特殊的權限:即指定了 SerializationFormatter 標志的 SecurityPermission。在默認策略下,通過 Internet 下載的代碼或 Intranet 代碼不會授予該權限;只有本地計算機上的代碼才被授予該權限。

      通常,對象實例的所有字段都會被序列化,這意味著數據會被表示為實例的序列化數據。這樣,能夠解釋該格式的代碼有可能能夠確定這些數據的值,而不依賴于該成員的可訪問性。類似地,反序列化從序列化的表示形式中提取數據,并直接設置對象狀態,這也與可訪問性規則無關。

      對于任何可能包含重要的安全性數據的對象,如果可能,應該使該對象不可序列化。如果它必須為可序列化的,請嘗試生成特定字段來保存不可序列化的重要數據。如果無法實現這一點,則應注意該數據會被公開給任何擁有序列化權限的代碼,并確保不讓任何惡意代碼獲得該權限。

      序列化的目的

      1、以某種存儲形式使自定義對象持久化;

      2、將對象從一個地方傳遞到另一個地方。

      3、使程序更具維護性。

      序列化的技術

      * 二進制序列化保持類型保真度,這對于在應用程序的不同調用之間保留對象的狀態很有用。例如,通過將對象序列化到剪貼板,可在不同的應用程序之間共享對象。您可以將對象序列化到流、磁盤、內存和網絡等等。遠程處理使用序列化“通過值”在計算機或應用程序域之間傳遞對象。

      * XML 序列化僅序列化公共屬性和字段,且不保持類型保真度。當您要提供或使用數據而不限制使用該數據的應用程序時,這一點是很有用的。由于 XML 是一個開放式標準,因此,對于通過 Web 共享數據而言,這是一個很好的選擇。SOAP 同樣是一個開放式標準,這使它也成為一個頗具吸引力的選擇。

      PHP中的序列化

      注: 在 php 3 中,在序列化和解序列化的過程中對象會失去類的關聯。結果的變量是對象類型,但是沒有類和方法,因此就沒什么用了(就好像一個用滑稽的語法定義的數組一樣)。

      serialize() 返回一個字符串,包含著可以儲存于 php 的任何值的字節流表示。unserialize() 可以用此字符串來重建原始的變量值。用序列化來保存對象可以保存對象中的所有變量。對象中的函數不會被保存,只有類的名稱。

      要能夠 unserialize() 一個對象,需要定義該對象的類。也就是,如果序列化了 page1.php 中類 A 的對象 $a,將得到一個指向類 A 的字符串并包含有所有 $a 中變量的值。如果要在 page2.php 中將其解序列化,重建類 A 的對象 $a,則 page2.php 中必須要出現類 A 的定義。例如可以這樣實現,將類 A 的定義放在一個包含文件中,并在 page1.php 和 page2.php 都包含此文件。

      <?php// classa.inc: class A { var $one = 1; function show_one() { echo $this->one; } }// page1.php: include("classa.inc"); $a = new A; $s = serialize($a); // 將 $s 存放在某處使 page2.php 能夠找到 $fp = fopen("store", "w"); fwrite($fp, $s); fclose($fp);// page2.php: // 為了正常解序列化需要這一行 include("classa.inc"); $s = implode("", @file("store")); $a = unserialize($s); // 現在可以用 $a 對象的 show_one() 函數了 $a->show_one();?>

      如果在用會話并使用了 session_register() 來注冊對象,這些對象會在每個 php 頁面結束時被自動序列化,并在接下來的每個頁面中自動解序列化。基本上是說這些對象一旦成為會話的一部分,就能在任何頁面中出現。

      強烈建議在所有的頁面中都包括這些注冊的對象的類的定義,即使并不是在所有的頁面中都用到了這些類。如果沒有這樣做,一個對象被解序列化了但卻沒有其類的定義,它將失去與之關聯的類并成為 stdClass 的一個對象而完全沒有任何可用的函數,這樣就很沒有用處。

      因此如果在以上的例子中 $a 通過運行 session_register("a") 成為了會話的一部分,應該在所有的頁面中包含 classa.inc 文件,而不只是 page1.php 和 page2.php。
    看過“序列化的目的”的人還看了:

    1.介紹學習方法的演講稿5篇

    2.亞杰認知發展理論的特點有哪些

    3.2016java web面試題

    4.初中家長學校工作計劃范文3篇

    5.學習軍訓精神心得體會3篇

    6.初中政教處工作計劃范文3篇

    1518600 主站蜘蛛池模板: 国产xvideos在线观看| 手机看片国产福利| 国产亚洲欧美久久精品| 中文无码乱人伦中文视频在线V | 国产精品久久久久久久久久久不卡 | 亚洲成AV人综合在线观看| 在线观看永久免费| 春色www在线视频观看| 国产小屁孩cao大人| 丰满多毛的大隂户毛茸茸| 管家婆有哪些版本| 国产视频一区二区在线播放| 亚洲av无码一区二区三区鸳鸯影院 | 筱惠欲乱美女全文免费全文| 国产色视频网免费| 九九视频精品在线| 羞羞漫画页面免费入口欢迎你| 女人18毛片水最多| 亚洲欧洲日产国码av系列天堂| 91精品免费国产高清在线| 成人精品一区二区三区电影 | а天堂中文最新一区二区三区 | 女人张开腿日出白浆视频| 亚洲小说区图片区另类春色| 韩国激情3小时三级在线观看| 巨大欧美黑人xxxxbbbb| 亚洲成a人v欧美综合天堂麻豆| 韩国理论妈妈的朋友| 女人被两根一起进3p在线观看| 亚洲人成影院在线观看| 美妇与子伦亲小说| 国内大量揄拍人妻精品視頻| 久久国产精品一国产精品金尊| 福利视频一区二区三区| 国产精品久久久久乳精品爆| 中文字幕无线码欧美成人| 欧美系列第一页| 国产一级一片免费播放视频| 99久久精品费精品国产一区二区| 曰批免费视频播放免费| 免费高清在线观看a网站|