コンパイルHuawei社2020(完全かつ詳細版)に基づいて、完全な答えと高度なJavaのインタビューの質問

コンパイルHuawei社2020(完全かつ詳細版)に基づいて、完全な答えと高度なJavaのインタビューの質問

Javaベース、より「比較」

 

私は細部のポイントを学びました

内部ソート原理1.Collections.sort

Arrays.sort()とCollections.sort()、マージでのJava 6で使用されるJava 7に、内部実装はTimSort、その実装要件オブジェクト間のより厳密な比較を交換しながら

2.hashMap原理は、変更を行うjava8

達成するための構造の点で、HashMapのリストを実現(JDK1.8が赤黒木部の増加)配列+ +赤黒木です。HashMapのキーには、複数のレコードがnullである可能、一つのレコードの最大値はnullであることができます。HashMapの非スレッドセーフ。スレッドセーフのConcurrentHashMap。衝突溶液:競合がファスナー法を用いて、発生、単一リンクリストにリンクされたノードのキーワードの同義語、ハッシュテーブルの長さmは、ノードiの先頭アドレスへのポインタのポインタ配列のT mを定義しますT(I)への挿入ポイントは、単一のヘッド・ポインタ・リストです。Java8、衝突が赤黒木のリストを置き換え、制限要素(8)を超えます。

違い3.StringとのStringBuilder

1)変数と非可変:文字列の不変、「+」の各実行は、新しい状況にはメモリを節約するために、文字列の文字列が頻繁に変更することなく、新しいオブジェクトを作成します。

2)マルチスレッドセーフかどうか:のStringBuilderなし方法プラスゲンロックは、そうスレッドセーフではありません。文字列とStringBufferのは、スレッドセーフです。

差4.Vectorの配列

1)デフォルトのArrayListの拡張であるメモリが不足している場合+ 1 50%は、ベクターは、デフォルトの拡張子1倍です。

2)ベクトルをスレッドセーフレベル属しますが、理由はより高いセキュリティスレッドのオーバーヘッドを必要とするため、ベクトル、ほとんどの場合は使用しないでください。

Hashtableの違いを5.HashMap

1)歴史的な理由:ハッシュテーブルは、ハッシュマップは、クラスAbstractMapから継承し、Dictonaryクラスを継承しました

2)ハッシュマップはヌルキーと値のペアができますが、唯一のアップヌルオブジェクトに、およびハッシュテーブルは許されません。

3)ハッシュテーブルが同期され、HashMapの非同期、効率はハッシュテーブルよりも高いです

6.ConncurrentHashMapとハッシュテーブルの比較(2つのスレッドが同時にマップにアクセスし、スレッドが先読みを横断、同じ鎖の最後にスレッドを削除し、なぜ前のスレッドだけでなく、ノードの背面には、別のスレッドによって削除されるように検索する権利を求めて)

ConcurrentHashMapのは、両方のハッシュテーブルハッシュマップの利点を兼ね備えています。ハッシュテーブルが同期やっている、スレッドセーフであること、ハッシュマップの同期を考慮していません。シングルスレッドの高効率化した場合のハッシュマップので。次のハッシュテーブルマルチスレッドでは、同期操作は、プログラムの実行の正しさを確認してください。しかし、ハッシュテーブルがブロックされ、各時刻同期ロックに全体の構成を実行する必要がありますされ、ConcurrentHashMapの正確生まれ、この問題を解決するために、

同時に、ロックキーが使用される分離技術(複数のオブジェクト保存配列、別個ロックとしてこれらのオブジェクトを使用/ランダムのいずれかを使用するように置く取得ラッチ)である複数の修飾を可能にするのConcurrentHashMap。これは、修正が行われ、ハッシュテーブルの異なる部分を制御するためにロックを複数使用します。JDK 1.6で、そこ(HashMapのは、同じを達成する)新しいノードがヘッドノード鎖として追加されるたびに挿入し、HashEntry構造が存在し、各時間Aは、ノードを削除し、すべてのコピーは、新しいノードを形成する前に削除されますチェーン、現在のノードの次の現在のノードに次のノード点に対しので、2本の鎖が後に除去中に存在するがあり、他のスレッドを削除しても同じ鎖のそれを確保することができる、及びスレッドトラバーストラバーススレッドは、元のチェーンを使用し続けることができますので、彼らは、うまく動作することができます。

Java8、ロック要素テーブルのような揮発性HashEntry格納されたデータの使用は、単独で赤黒木と共に表からリストアレイを連結します+。赤黒木は、二分探索木の特別な特性があります。1.ノードは、Aのリーフノードが黒ノードは赤であり、次いで、リーフノードが黒5 2. 3. 4.赤または黒黒ルートノードノードのすべてのパス黒色子孫ノード上のノードの同数れます。

違い7.ArrayListとLinkedListの?

最も明白な違いがあります

ArrrayList基礎となるデータ構造が配列され、それは、ランダムアクセスをサポートして基礎となるデータ構造のLinkedList帳リスト、ランダムアクセスをサポートしていません。LinkedListのはO(N)である添字要素、ArrayListの時間複雑度は、O(1)です。LinkedListのは、二重にリンクされたリストであります

コンパレータ、中8.Javaと同等の違いは何ですか?

同等の自然順序付けインタフェースオブジェクトを定義する、インターフェースを順序付けされ、一般にカスタムオーダーを定義するために使用されるコンパレータは、複数のインターフェイスです。(つまり、Comparableインタフェースを実装していない)私たちは、クラスの順序を制御する必要がありますが、クラス自体は、順序付けをサポートしていない場合、我々は、ソートに「クラス比較」を構築することができます。Comparableを常に一つだけが、オブジェクトを定義するために、複数のコンパレータの順番があるかもしれません。

9.抽象クラスとは何ですか?これは、違いは何ですかインターフェースのですか?なぜあなたはあまりにも抽象クラスを使用するようにしたいですか?

抽象クラス手段は、クラスをインスタンス化することはできません。このクラスは継承一度使用することができます。しかし、このクラスだが、複数のインターフェイスを実装することができます。

異なる抽象クラスとインターフェイスのデザインのアイデアを反映しています。実際には、抽象クラス「です-」の関係、インターフェースは「同じような」関係を表しています

これらの方法は全ての抽象クラスと実装のインターフェイスを実装する必要があります。この方法は、抽象クラスで非抽象を持つことができます。インタフェースの実現が存在することはできません。しかしJava8インターフェイスに静的デフォルトの方法ができます。

変数は、クラスが達成するために再定義し、またその値を変更することができないように、インターフェイスのデフォルトのpublic static finalタイプで定義され、その初期値のためにしなければなりません。その値はサブクラスで再定義することができる抽象クラスのデフォルトに優しいタイプの変数は、再割り当てすることができます。

親クラスのメソッドを実装する抽象サブクラスは、視認性は、親クラスに等しいより大きくてもよい。視認性のインターフェースクラスインターフェースメソッド、同じインタフェース(パブリック)。

抽象クラスは、再利用のために使用されます。カップリングを減らすために、コーディングの量を減らします。

私は細部のポイントを学びました

Javaでの過負荷や書き換えの10の説明?

オーバーロードして、異なる機能のために同じ名前を使用できるように書き換えますが、オーバーロードは、コンパイル時の活動であり、書き換えがアクティブなランタイムです。あなたは、メソッドをオーバーライドすることができますが、唯一の同じクラスのサブクラスのメソッドをオーバーライドすることができます。書き換えは継承されている必要があります

書き換え:1、サブクラスで必要に基本クラスから継承されたメソッドに書き換えることができます。2、メソッドのオーバーライドメソッドをオーバーライドされると、同じメソッド名、戻り値の型およびパラメータリストを持っている必要があります。図3は、オーバーライドされたメソッドは、メソッドがオーバーライドされたアクセスよりもより厳格では使用できません。

オーバーロードされた場合、メソッド名が同じである、ではないが、同じ数及びパラメータの種類は、戻り型は、同じでも異なっていてもよいです。区別の基準として入力されたオーバーロードされた関数を返すことができません。

11.Collectionとコレクションがあるの違いは何ですか?

コレクションは、Javaフレームワークの基本的なインタフェースのセットです。

コレクションツールフレームワークは、コレクションや復帰動作のための静的メソッドが多数含まれているJavaクラスのセットを提供しています。

12.Javaにおける多型の原則

いわゆる多型は、実装のサブクラスではなく、親クラスのメソッド呼び出しを達成サブクラスオブジェクト呼び出すに、親クラスの基準点を指します。実装の多型のキーは、「動的バインディング」です。

その方法13.object定義には?

クローン()、(等しい)、ハッシュコード()のtoString()、(NOTIFY)のnotifyAll()

待機()、ファイナライズ()、のgetClass()

14.Javaジェネリックと型消去?

あなたは、コレクション、指定した型の要素のコレクションを作成するときに、一般的なパラメータ化された型は、このコレクションは、唯一の引数のこのタイプに渡すことができます。コンパイル時に消去、一般的な情報が含まれていないコンパイラによって生成されたJavaのバイトコード:消去を入力し、最も一般的なトップレベルの親の交換で1、2を削除。

15. JDK 1.8で導入された5つの新しい機能を言うの?

Javaの8は、Javaでの歴史は、以下の5つの主要な機能にJDK 8の新しいバージョンを開く次のとおりです。

ラムダ式は、近代的なマルチコアCPUをフルに活用する、あなたは非常に簡単なコードを書くことができ、ストリームAPIを渡すオブジェクトのように無名関数を許可し、日付と時刻のAPIは、最終的には、安定があり、あなたが使用して、簡単な日付と時刻は、利用可能なライブラリの拡張しますこの方法は、今、インターフェイスは、デフォルトの方法、静的であってもよく、繰り返しノートは、今あなたが同じタイプで同じコメントを複数回使用することができます。

公共の場で16.java、プライベート、保護、およびデフォルトのキーワードは訪問の範囲:

パッケージ内に保護され、パッケージは私の夫のようにアクセスすることができ、デフォルトでは、同じパッケージ内でアクセスすることができ、のprvateだけ同じタイプ

17.一般的なデータ構造:

図の構造と同様に、直鎖構造(配列、キュー、リンクリスト、およびスタック)、ツリー構造のセット。

18.Java TreeMapのは、ツリーを達成するものを使用するのですか?(回答)

TreeMapのは赤黒木の実装でのJavaの使用です。

19.匿名内部クラスとは何ですか?どのようにその定義のアクセス変数の外部へ?

匿名内部クラスは内部クラスの名前で、匿名内部クラスは一度だけ使用することができ、通常はコードを書く簡素化するために使用されます。

最終的な匿名内部クラスでは唯一のJava 8のような外部変数は、よりインテリジェントにアクセスすることができます。ローカル変数は匿名の内部クラスをアクセスした場合、ローカル変数は自動的に、最終的な修正を使用することと同じです。

20.どのようにシングルトンを作成するには?彼は、二重チェックが、彼は言った、スレッドセーフではありませんと述べました。どのように効率的にスレッドセーフなシングルトンを作成するには?

一つは1つが静的な内部クラスで、列挙することによってです。

()メソッドと21.poll remove()メソッドとの間の差?

ポーリング()と

削除は、()キュー要素から削除されますが、poll()は空を返します障害が発生した時点で要素を取得しますが、削除は()失敗した場合に例外をスローします。

ArrayListのを横断する際の要素を除去するための22の書き込みコード

イテレータを使用します。

反復子ITR = list.iterator()。

一方、(itr.hasNext()){IF(...){itr.remove();}}

JVM

どのような方法でモデルクラス、両親のデリゲートをロードする方法を1.JVM

 

私は細部のポイントを学びました

クラスローディングプロセス:ローディング、検証(検証ステージの役割は、クラスがJVM仕様を満たしているファイルのバイトストリームに含まれる情報を確保することで、意志ない原因害JVMに)、製造(変数の準備フェーズは、メモリを割り当て、クラス変数の初期化を設定します)、 (定数プールを直接参照シンボリック参照で置き換えられている解析)解析、初期化。

親委任モデル方法:両親デリゲートは、クラスが負荷に彼らの最初の試み、負荷へのリクエストを受け取っていない場合は、完了するために、親クラスローダに最初に行くクラスを指します。トップレベルのブートローダーは、このクラスをロードできないクラスの時間を表す場合、サブクラスは、自分をロードしようとします。ローダーのイニシエータがロードできないとき戻るオープンに、それがダウンして見ていないが、例外がスローさにClassNotFound。

方法:スタート(ブートストラップ上の)クラスローダ、標準拡張(拡張)クラスローダアプリケーションクラスローダ(アプリケーション)、コンテキスト(カスタム)クラスローダ。意味は同じメモリのバイトコードが表示されるの複数のコピーを防ぐためです。

2.GCアルゴリズム(どのようなリサイクル可能なオブジェクト、到達可能性分析と考えるオブジェクトの)、CMSコレクタ

参照符号とルート検索アルゴリズム:JVMは、オブジェクトがリサイクル「ゴミ」、一般に二つの方法となっているかを決定する方法です。参照表記は、循環参照の問題なので、根による検索を解決する方法はありません。「GCのルーツ」のシリーズからの参照の連鎖によって横断検索と呼ばれる検索パスを開始するには、下のオブジェクト。オブジェクトは、「GCのルーツ」との間のリンクへの参照ではない場合、それは到達不能参照と呼びます。オブジェクトへの参照は、リサイクル可能なオブジェクトと考えることはできません。

いくつかのガベージコレクタ:1、シリアル新/シリアル・オールド(シリアル)、2、Parrallel新しい(平行)、3、Parrallelの清掃、4、Parrallelオールド、5は、CMS(CMSコレクタは最短の回復を得るために一時停止され時間マークスイープアルゴリズムを使用して、並行コレクタである目的のコレクタ、。)、6は、G1(並行コレクタと平行であり、滞留時間は、全体のモデル予測を確立することができますクリーニングは、部分的なコピーを使用して、マーキングに基づいています)

ゾーンに分割され3.JVM、なぜの各ゾーン?

1)メソッド領域(法):すべてのスレッドによって共有されます。メソッド領域は、クラスと静的変数に関するすべての情報が含まれています。

2)ヒープ(ヒープ):すべてのスレッドで共有、ならびにストレージ・オブジェクト・インスタンスのアレイ、Javaヒープは、GCの主要領域です。

3)スタック(スタック):各スレッドはローカルスタック変数の一部を保存し、スタック領域が含まれています。

4)プログラム・カウンタ:行は、現在のスレッドポインタバイトコードの実行です。

4.JVM新世代、古い時代の、永続的な世代、どのようなものが保存されていますか?

永久的な生成は、メインクラス情報Javaクラスに格納されていないJavaオブジェクト・リレーショナルおよびガベージコレクション収集することができることです。若い世代と旧世代の上に配置されているすべての新しく作成されたオブジェクトの最初は、オブジェクトの長いライフサイクルの一部に格納されています。

メモリのオーバーフローやメモリリーク。

メモリ不足:メモリのアプリケーションプログラムは、メモリ不足、十分なメモリがない場合、メモリリーク値は、リサイクルゴミオブジェクトにすることはできません、あなたはビューのリークにメモリ分析ツールを使用することができます。

6.プロセスとスレッド:

プログラムを実行するプロセス値(独立、動的、同時実行)は、スレッドは、注文フローの実装のプロセスを指します。差がある:プロセス間の1ない共有メモリは、リソース割り当てプロセスのコストを作成2.はるかに大きかった、高効率で高度に並行環境でそうマルチスレッド。

7.シリアライズとデシリアライズ:

シリアライゼーションは、バイトのシーケンスにJavaオブジェクトを指し、逆のデシリアライゼーション。Javaは主にスレッド間通信に、渡された目的を達成するために。唯一のExternalizableインタフェースはSerializableクラスオブジェクトを実装したりシリアライズされる前に。

8.64 JVM、int型の長さは、過半数のですか?

Javaは、整数型の変数の長さは、プラットフォームに関係なく、32ビットであり、固定値です。意味は、32ビットおよび64ビットのJava仮想マシンで、int型は、同じ長さです。

弱い参照とSoftReference差で9.Java?

参照の4種類の合計でのJava。StrongReference、SoftReference、弱い参照とPhantomReference。

GCが回収されますStrongReferenceは、ときに何のオブジェクトを存在しないときには、JVMにできるだけ長く生き残る、ジャワのデフォルトのリファレンス実装であります

弱い参照は、名前が意味する、弱参照は、オブジェクトがで参照されたとき

JVMはもはや強い参照されていない場合は、GCを回収されます

弱い参照とSoftReferenceは、GCとメモリの効率性の向上に資するですが、最後の強い参照を失ったらときJVM(仮想基準がメモリ不足にリサイクルされますまで、SoftReferenceができるだけ長く保持される一方弱い参照は、GCは、リサイクルされますが、機械の保証)、そのため、この機能

アプリケーションキャッシュのために非常に適してSoftReference

10. Javaのヒープ領域とGCの解釈?

あなたは、Javaコマンドを起動すると

ときにJavaプロセスはそれのためのメモリを割り当てます。オブジェクトは、プログラムで作成されたときに、ヒープを作成するためのメモリ空間の一部は、それが空間にメモリを割り当てます。GCは、JVM内のプロセスで、無効なオブジェクトは、今後の割り当てのメモリを回復しました。

11.Javaヒープとスタックの違いは何ですか?

別のメモリ領域に属し、JVMのヒープとスタック、異なる目的の使用。保存方法は、一般的にフレームスタックとローカル変数に使用され、オブジェクトが常にヒープ上に割り当てられています。ヒープ、スタック、ヒープはJVM全体のすべてのスレッドで共有され、それは複数のスレッド間で共有されることはありません、通常は比較的小さいです。

同時実行、ロック

1.volatileキーワード、ロック

並行プログラミング:アトミック問題、可視性の問題、順序の問題。

揮発性のキーワードは視認性を確保することができ、それは命令語の並べ替えを禁止することができますが、原子性を保証することはできません。可視性は、すべての読み取りが現在の値が、変数の揮発性のアトミック操作を保証する方法であることを保証することができます。キーワードを追加ロックし、生成されたステートメントでのメモリバリアになります。

ロックの実装は、よりエレガントな方法でスレッド同期の問題を処理することができ、ロック操作の広い範囲に利用できるsynchronizedメソッドや文を使用するよりも提供しています。sychronized修正方法または自動ロック解除を実行するコードの後に​​文のブロック、およびで、私たちは手動解除ロックロックを使用する必要があります

2.MYSQL共通の最適化(SQL最適化、テーブルの構造を最適化します)

SQLの最適化、テーブル機構の最適化、インデックスの最適化、パラメータの最適化キャッシュ

3.java必要が展開パッケージを再コンパイルすることを、すべての変更は、良い方法はありません

あなたは、熱負荷を使用することができます

私は細部のポイントを学びました

4.プロセス間通信の方法は何ですか?

1)管道(Pipe),2)命名管道(named pipe),3)信号(Signal),4)消息(Message)队列,5)共享内存,6)内存映射(mapped memory),7)信号量(semaphore),8)套接口(Socket)

5.Sychronized修饰静态方法,锁定类本身而不是实例,非静态方法锁定实例。

6. 操作系统什么情况下会死锁?

所谓死锁:是指多个进程在运行过程中因争夺资源而造成的一种僵局。产生的原因:竞争资源:当系统中多个进程使用共享资源,并且资源不足以满足需要,会引起进程对资源的竞争而产生死锁。进程间推进的顺序非法:请求和释放资源的顺序不当,也同样会导致产生进程死锁

7.产生死锁的四个条件:

1.互斥条件(进程独占资源)2.请求与保持(进程因请求资源而阻塞时,对已获得的资源保持不放) 3.不剥夺条件(进程已获得的资源,在末使用完之前,不能强行剥夺) 4.循环等待(若干进程之间形成一种头尾相接的循环等待资源关系)

8. 如何理解分布式锁?

由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。

9. 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?

线程同步与否 跟 阻塞非阻塞没关系,同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区内,在这个过程中后进入临界区的线程将阻塞,等待先进入的线程走出临界区。

10. 同步和异步有什么区别?

同步和异步最大的区别就在于。一个需要等待,一个不需要等待。同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。

11. 线程池

根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行

12. 如何调用 wait()方法?使用 if 块还是循环?为什么?

wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。

wait(),notify()和notifyall()方法是java.lang.Object类为线程提供的用于实现线程间通信的同步控制方法。等待或者唤醒

13. 实现线程的几种方法

(1)继承Thread类,重写run函数

(2)实现Runnable接口,重写run函数

(3)实现Callable接口,重写call函数

14. 什么是多线程环境下的伪共享(false sharing)?

伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问题。缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。

网络、数据库

1.TCP如何保证可靠传输?三次握手过程?

在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。第一次是客户端发起连接;第二次表示服务器收到了客户端的请求;第三次表示客户端收到了服务器的反馈。

2. Linux下你常用的命令有哪些?

1. cd命令用来改变所在目录。cd / 转到根目录中cd ~ 转到用户目录下

2. ls命令用来查看目录的内容。

3. cp命令用来拷贝文件cp

4.mv命令 mv t.txt Document 把文件t.txt 移动到目录Document中。

3. 常用的hash算法有哪些?

1.加法hash:所谓的加法Hash就是把输入元素一个一个的加起来构成最后的结果。

2.位运算hash:这类型Hash函数通过利用各种位运算(常见的是移位和异或)来充分的混合输入元素

3.乘法hash:33*hash + key.charAt(i)

详细内容点我学

4. 什么是一致性哈希?

设计目标是为了解决因特网中的热点(Hot spot)问题,一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance) 2、单调性(Monotonicity) 3、分散性(Spread) 4、负载(Load)

5. 数据库中的范式有哪些?

第一范式—-数据库中的表(所有字段值)都是不可分割的原子数据项。

第二范式—-数据库表中的每一列都和主键相关,而不能只和主键的某一部分相关。

第三范式—-数据库表中每一列数据都和主键直接相关,不能间接相关。范式是为了减小数据冗余。

6. 数据库中的索引的结构?什么情况下适合建索引?

数据库中索引的结构是一种排序的数据结构,数据库索引是通过B树和变形的B+树实现的。什么情况下不适合建立索引:1.对于在查询过程中很少使用或参考的列;对于那些只有很少数据值的列;对于那些定义为image,text和bit数据类型的列;当修改性能远大于检索性能。

根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行

7. concurrent包下面,都用过什么?

java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.lock

8. 常用的数据库有哪些?redis用过吗?

9. 你知道的开源协议有哪些?

GPL (GNU General Public License) :GNU通用公共许可协议

LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议

BSD

(Berkeley Software Distribution) :伯克利软件分发许可协议

MIT (Massachusetts Institute of Technology):MIT之名源自麻省理工学院

Apache (Apache License) :Apache许可协议

MPL (Mozilla Public License) :Mozilla公共许可协议

10.表单提交中,get和post区别

1.get从服务器获取信息,post向服务器传信息

2.get传送数据量比较小,post可以比较大

3.get安全性比较低

11. TCP 协议与 UDP 协议有什么区别?(answer答案)

TCP(Tranfer Control Protocol)的缩写,是一种面向连接的保证传输的协议,在传输数据流前,双方会先建立一条虚拟的通信道。可以很少差错传输数据。

UDP(User DataGram Protocol)的缩写,是一种无连接的协议,使用UDP传输数据时,每个数据段都是一个独立的信息,包括完整的源地址和目的地,在网络上以任何可能的 路径传到目的地,因此,能否到达目的地,以及到达目的地的时间和内容的完整性都不能保证。

所以TCP必UDP多了建立连接的时间。相对UDP而言,TCP具有更高的安全性和可靠性。

TCP协议传输的大小不限制,一旦连接被建立,双方可以按照一定的格式传输大量的数据,而UDP是一个不可靠的协议,大小有限制,每次不能超过64K。

发布了89 篇原创文章 · 获赞 63 · 访问量 4万+

おすすめ

転載: blog.csdn.net/aa541505/article/details/104072672