Javaのネットワークプログラミング - フェイス質問

 

同期、非同期、ブロック、非ブロック1.ネットワークプログラミングで?

同期:関数が結果を呼び出すことはありません、結果を取得できませんでした前に呼び出され、結果は返されません。
非同期:前呼び出された関数は、結果を取得していない結果を呼び出すことはありません、ステータス情報を返します。
ブロッキング:前に結果を取得していないと呼ばれる機能を、現在のスレッドが中断します。結果を取得した後返します。
ノンブロッキング:関数は、結果を取得していない前に呼び出され、現在のスレッドが中断されていない、それはすぐに戻ります。

非ブロッキングモードを実現2.Javaどのようにソケットプログラミング?

NIOは、マルチスレッド・サーバーのスレッドの問題に効果的なソリューションを要しました。

各クライアントの要求に応答し、NIOの主な目的は、マルチスレッドのスレッドが使用して別のサービスを割り当てません、

しかし、複数のCPUを処理するために、マルチスレッド処理能力と待ち時間をフル活用を通じて、サービス機能の向上を目的を達成します。

3. Javaの(シリアライズ)のシリアル化とは何ですか?

これは単に(すなわち、インスタンス変数、ではない方法で)メモリ内のさまざまなオブジェクトの状態を保存することで、

そして、あなたは、読み出したオブジェクトの状態を保存することができます。あなたがオブジェクトの状態を保存する方法は、独自のさまざまなを使用できますが、Javaはメカニズムを提供していますが、あなたに自分以外のオブジェクトの保存の良い状態を与え、それがシリアル化されなければなりません。

4.どのような状況シリアライズする必要がありますか?ノートのシーケンス、どのようにJavaのシリアライズ(直列化)を達成するには?

•オブジェクトの状態は、あなたが時間内にファイルやデータベースにメモリを節約したいです。

•あなたはネットワーク時間にソケット転送オブジェクトを使用します。

•あなたは時にRMIオブジェクトを転送します。

シリアル化に関する注意事項

サブクラスは親を実装していない直列化するクラスを実装している場合1は、親がシリアライズされることはありませんが、今回はそうでない場合によりInvalidClassExceptionが例外をスローし、非親コンストラクタのパラメータを持っている必要があります。

2、静的変数は、それは一種の「食べ物」、オブジェクトではありませんでした、シリアル化されていません。オブジェクトのシリアル化は、すなわち、非静的プロパティ、すなわち、インスタンス変数保存の状態です。あなたは、クラス変数を保存することはできません。

3、過渡主要な変数は、シリアライズを制限するように変更することができます。必要はありませんまたはプロパティを保存しないために、transient修飾子を追加する必要があります。直列化オブジェクトクラスにパブリック(公共)でなければなりません。

図4に示すように、仮想マシンがデシリアライズさせるだけでなく、クラスパスと機能コードの一致に、非常に重要な点は、同一のIDがプライベート静的最終長いのserialVersionUID = 1Lクラスの二つの配列があるかどうかによって決まります。

ファイルが同じオブジェクトに書き込まれ、もはやコンテンツオブジェクトが格納されますが、唯一再び参照を格納する場合、特定のストレージルールで、ディスクスペースを節約するために5、Javaシリアルメカニズム。参照関係を復元するデシリアライズ。

こうした再び時間を節約するために、同じオブジェクトのプロパティ値を修正第2条として、同じファイルにシリアライズされた6、参照関係に基づいて、仮想マシンがすでにので、唯一の第2の書き込み参照が保存し、そこに一つであり、同じオブジェクトがファイルに書き込まれていることを知って、読むときそう、それはオブジェクトの保存最初です。

5.javaでは流れのいくつかの種類がありますか?抽象クラスの数の流れの種類ごとに用意JDKは、継承、彼らが似ているものを言いますか?

JDKは、ストリームは、4つのカテゴリを継承提供しています。

InputStream(バイトの入力ストリーム)、OutputStreamの(バイトの出力ストリーム)、リーダー(文字入力ストリーム)、ライター(文字出力ストリーム)。

フロー分類で:

入力ストリーム:プログラムは、データ・ストリームを読み取ることができます。
出力ストリーム:プログラムストリームデータがそこに書き込むことができます。

データ転送ユニットカテゴリによると:

バイトストリーム:バイト(8ビットバイナリ)処理ユニット。主に、画像や音声などのバイナリデータを読み書きするため。
文字ストリーム:文字(バイナリ16)の処理ユニット。
これは、バイトストリームによって達成されます。バイト文字ストリームは、操作しやすいパッケージの流れです。最下位レベルでは、すべての出力は、バイト形式で入力されます。
サフィックスストリームは、接尾辞がリーダーである一方で、Writerは文字ストリームで、バイトのストリームです。

機能によって分類:

ノードストリーム:ストリームクラスが読み込まれ、ディスクやメモリ領域など特定の場所から書き込みます。
これは、フィルターのフロー:入力または出力ノードとしてストリームを使用してください。作成された既存の入力ストリームまたは出力ストリーム接続を使用してろ過フロー。

6.使用するJavaソケットプログラミング、サーバーは、いくつかの文字を読み、[ローカルディスプレイに書き込まれました。

クライアントがサーバに接続要求を送信した後、それは受動的にサーバからの応答を待っています。

次の3つのステップを経るために、一般的なTCPクライアント:

;コンストラクタは、指定されたリモートホストおよびポートへのTCP接続を確立:ソケットインスタンスを作成するために、1、
2、サーバーとI / Oストリームソケット通信を介して、
図3に示すように、ソケットクラス近い近い接続の方法を使用して。

 

エンド・サービスの仕事は、通信端末を確立し、受動的にクライアント接続を待つことです。

典型的なTCPサーバは、次の2つの手順を実行します。

; 1は、クライアントポートで送信されたTCP接続要求を監視するために使用される指定されたローカルポートとのServerSocketインスタンスを作成するには
:2リピートを
1)クライアント接続のためのServerSocket()メソッドを受け入れ呼び出し、その戻り値ソケットインスタンスを作成し、
2)新しいスレッドソケットインスタンスが返さ開くように、ソケットは、クライアントと通信するためのI / Oストリーム例返さ、
クライアントを閉じるために、閉じるソケットクラス()メソッドを使用して、3)通信が完了しましたソケットコネクタの端。

接続されたいくつかの場面で7.TCP / IPハンドシェイク?握手リリース時間はありますか?

接続プロセスを確立するために、TCP 3ウェイハンドシェイク:

 

TCP 4はリリースプロセスを振りました。

おすすめ

転載: www.cnblogs.com/shoshana-kong/p/10932309.html