Javaのシリアル化プロセスは、シリアル化するバイナリストリームオブジェクトニーズからの遷移を意味し、デシリアライズバイナリストリームをJavaオブジェクトに変換される指します。だから、時々、Javaのシリアライズを必要としない、データベースに格納され、
コンピュータシステムは、本質的に保存されているバイナリファイル、データベースの性質上、それは何ですか?
まず、ハードウェアからスタートします
5つの部分のコア:計算、コントローラ、メモリ、入力装置、出力装置
フォンノイマンコンピュータ理論、コンピュータに加えて5つの部分、命令およびデータを格納するためのメモリ、算術演算及び論理演算が完了し、入力/出力装置を介して外部の担当者がコンピュータと内部コンピュータを動作させるには、命令を表すバイナリデータであります。
それは指定された操作コードとアドレスで構成されており、操作の種類は、アドレスがプログラムコードの命令列を指し、オペレーションコードを指します。そして、データベース格納構造におけるさまざまなデータ型のためにそれを入力する方法ですか?
現代のコンピュータの現在の構成
第二に、ソフトウェアシステム
システムソフトウェア、アプリケーションソフトウェア:ソフトウェアマクロが分かれています
ここを参照してください、データベース管理システムおよびオペレーティングシステムは、システムソフトウェアに属します。
オペレーティングシステムは、ハードウェア、コンピュータのハードウェアとソフトウェアの経営資源のソフトウェアの最初の層で覆われています。そして、良いユーザインタフェースを提供します。オペレーティングシステム関連のハードウェア、ハードウェアリソースの直接の管理、大幅にハードウェアリソースの使用および利用を増加させた完全なハードウェア関連の操作を持つユーザー。
オペレーティングシステムは、特別なシステムソフトウェアであるオペレーティングシステム上の他のシステムソフトウェアを実行すると、あなたは、オペレーティングシステムが提供するサービスの多くを得ることができます。そのオペレーティングシステムは、他のソフトウェアとハードウェアとの間のインタフェースです。一般ユーザーに加えて、コンピュータのオペレーティングシステムのサポートを使用するだけでなく、使用する必要があります
他のシステムソフトウェアおよびアプリケーションソフトウェアの数が多いです。
第三に、データベースシステム
データベースシステム、DBS、コンピュータシステムは、一般的に、データベース・システム、アプリケーション、データベース管理者、ユーザ設定、システム構成データベースが導入されています。
個別に保存されたデータの問題を解決するためのデータベースシステム。
ここでは大胆な推測です:データストレージと統合された外観のためのデータベースシステムは、コンピュータストアに行動のバイナリ性質が統一されています。バイナリデータ型が無配向されるようにデータベース、データベース・システムは、良好なデータ・タイプを与えられ、その後、ルールデータベースは、単にプレスを格納します、
データベースの種類の性質については、内部データベース・システムは、迅速な取引を行います。しかし、私は唯一のバイナリコンピュータに格納する必要があり、最終的にはバイナリと思います。拡張ファイルシステム、最後に保存されているものを考える必要がありますか?現在、我々は、内部データベースシステムを実現する方法を検討する必要がないと仮定して、思考を制限
データ型がサポートされているメモリマップ、我々だけで、リレーショナル・データベース・システムにしたいです。私たちは、コンピュータにストレージに相当し、データベース内のデータを格納します。
ストレージ指向のJava開発データベース、その後、JAVAは、データをデータベースに保存されましたか?基本に戻る、シリアライズとデシリアライズがなぜあるのでしょうか?
第四に、プログラミング言語
まず、プログラミング言語は何ですか?最も一般的に使用されるプログラミング言語:Cなどの言語、C ++、Javaの、C#、PythonやPHP、JavaScriptの、ゴー、オブジェクト-C、スウィフト、アセンブリ言語、
そこに多くの言語がありますが、あなたはコンピュータを制御するための任意の言語を選択することができ、同じ目的を達成することができます。
私たちは、私たちは、このような言語は、プログラミング言語ではありません事をするためにコンピュータを聞かせて、コンピュータを制御するために言語を使用します。独自の優れた面を持っているそれぞれの多くのプログラミング言語がありますが、
別のアセンブリ言語は同じ意味を表現するために、異なるステートメントを使用することができ、各国語にたとえることができます。このような世界のHello意味として:
- 中国:Hello Worldの。
- 英語:Hello Worldの
- 法语:こんにちはみんな
プログラミング言語の一種で、統一を達成することができます
- C言語:プット( "C言語中国のネットワーク");
- PHP:エコー「C言語中国のネット」。
- Javaの:のSystem.out.println( "C言語の中国ネットワーク");
人間の言語に似た言語のプログラミング、直感的な語彙組成物によって、それは、その固有のフォーマットを遵守しなければならないそうでない場合は、コンピュータが認識しません
第五に、Javaのシリアライズとデシリアライズのリターン
配列:標的配列の変換は、オブジェクトと呼ばれるディスクやネットワーク伝送に保存されているプロセスのバイトのシーケンスです。
デシリアライズ:オブジェクトへのディスクまたはネットワークノード上のバイトのシーケンスを復元は、オブジェクトのデシリアライゼーション・ワードと呼ばれます。
直列化:インターフェイスの実装のJavaの直列にjava.io.Serializable
serialVersionUIDの:グッドは、直列化インタフェースクラスを実装している人は、静的変数を表すシリアル化されたバージョンを表し達しているバージョンをシリアライズ
参考ます。https://blog.csdn.net/xlgen157387/article/details/79840134
- シリアライズとデシリアライズとは何ですか
- Javaのシリアライゼーションは、バイトの配列をJavaオブジェクトに変換する処理であり、Javaバイトをデシリアライズするためには、Javaオブジェクトの回復プロセスを指し
- シリアライゼーション:オブジェクト直列化主な用途は、オブジェクトの完全性および送達性を確保するための時間のオブジェクトの送信および保存です。シリアル化は、伝送のために順序付けられたバイトストリームにオブジェクトであるか、またはネットワーク上のローカルファイルに保存されています。直列化されたバイトストリームはJavaオブジェクトと関連する記述情報の状態を保存します。
- シリアル化は、オブジェクトの保存と復元の状態のコアであります
- デシリアライズ:クライアント取得ターゲットバイトが再構成されたオブジェクトによってデシリアライズ格納されたバイト・ストリームと記述情報オブジェクトの状態に応じて、ネットワークまたは後からストリームファイルをシリアライズ。
- 本質的に、上位バイトストリームに特定のフォーマットに従って記述されたオブジェクトの物理的状態のシーケンスは、オブジェクトの状態を復元するように命じたバイトストリームから再構成されたオブジェクトを逆シリアル化されます。
- なぜシリアライズとデシリアライズ
- 我々は2つのプロセスがリモートで通信するとき、あなたはテキスト、画像、オーディオ、ビデオなどを含めたデータの相互様々なタイプを、送ることができることを知っています。これらのデータは、ネットワーク上で送信バイナリシーケンスの形態です。だから、ときに、2つのJavaのプロセス間通信、オブジェクト間のプロセスの転送は、それを達成することができますか?答えはイエスである、あなたは、Javaを必要とします
- シリアライズとデシリアライズ。つまり、Javaオブジェクトを変換するために、送信者の必要性が、バイトのシーケンスで、その後、他の一方で、ネットワーク上で送信、受信者は、Javaオブジェクトのバイト配列から回復する必要があります
- シリアル化のメリット:01データの永続性を達成するためには、データストレージはディスクに話すことができます。02遠隔通信、ネットワークバイト順に、すなわち、通信対象の配列を使用して
- 概要
- 1.永久やオブジェクト、ローカルファイルまたはデータベースにオブジェクトを格納されたバイトのシーケンス
- バイトストリーム内のオブジェクトのシーケンスを行うことにより2は、ネットワークに送信され、受信しています
- プロセスの間を通過するのシーケンスによって3
- シリアル化アルゴリズム
- 1.メタデータカテゴリに関連するオブジェクトインスタンスの出力
- スーパークラスの0002再帰的にノー出力クラスのスーパークラスまで
- 3.クラスメタデータ終了、一番上のスーパークラスのオブジェクトインスタンスを開始してから実際のデータ値の出力を開始します
- 再帰的なインスタンストップダウンから4.データ出力
六、Javaのシリアライズとデシリアライズを実装する方法
1. JDKクラスライブラリのシリアライズとデシリアライズAPI
java.io.ObjectOutputStreamの、のwriteObject(オブジェクトobj)メソッドは、オブジェクトOBJパラメーターが指定されたターゲット出力ストリームに書き込まれたバイトの結果の配列をシリアライズすることができます。
java.io.ObjectInputStream、のreadObject()メソッドは、次に、それらがデシリアライズする対象となる入力ストリームのバイトのソースシーケンスを読み出し、リターン。
直列化要件を実装2
のみ達成することにより、直列化または外部化インタフェースオブジェクトクラスがシリアライズ、または例外をスローすることができます!
3.実装
シリアル化するためであるUserクラスを仮定すると、次の3つの方法を有することができる: (1 )ユーザクラスが実装するシリアライズインターフェースは方法の次のシリアル化および非直列化することができる場合にのみ、 デフォルトのシリアル化を使用したObjectOutputStream 、非一時的なインスタンス変数ユーザオブジェクトのシリアル化。 ObjcetInputStreamデフォルトの直列化復元モードでは、ユーザオブジェクトへの非transientインスタンス変数は、デシリアライズします。 (2)のみ、Userクラスが実装するシリアライズインターフェースなら、またのreadObject(ObjectInputStreamの定義において)およびwriteObject(ObjectOutputSteam OUT )、以下のように直列化および非直列化します。 UserオブジェクトのObjectOutputStreamは、writeObject(ObjectOutputStreamの呼び出し、OUT )シリアライゼーション・メソッドを。 ObjectInputStreamのはのreadObject(ObjectInputStreamのユーザオブジェクト呼び出しにおけるメソッド)がデシリアライズされます。 (3)クラスが実装ExternalnalizableユーザーインターフェースとUserクラスはのreadExternal(たObjectInput実装しなければならない場合での)そしてたObjectOutputのwriteExternalメソッド(OUT )方法、方法以下シリアライゼーションおよびデシリアライゼーション。 ObjectOutputStreamのは(たObjectOutputのwriteExternalメソッド呼び出し、ユーザオブジェクトOUT メソッドシーケンスの))。 ObjectInputStreamのは、ユーザオブジェクトのreadExternal(れるObjectInput呼び出しで)逆シリアル化方法。