ホームページ  >  記事  >  Java  >  Javaの基礎知識をまとめて分析

Javaの基礎知識をまとめて分析

黄舟
黄舟オリジナル
2017-09-21 10:44:451356ブラウズ

この記事はJavaプログラミング言語の基礎知識を比較的わかりやすくまとめたので、ここで共有したいと思います。困っている友達は参考にしてください。

Javaの基礎知識

1. Java言語の利点:

1) Javaは純粋なオブジェクト指向言語です

2) プラットフォームに依存せず、一度コンパイルすればどこでも実行できます

3) Java 多くの組み込みクラス ライブラリを提供します

4) Web アプリケーションのサポートを提供します

5) 優れたセキュリティ (配列境界検出、バイトコード検出) と堅牢性 (強制メカニズム、ガベージ コレクター、例外処理) を備えています

6) C++ で理解しにくいいくつかの機能を削除します (多重継承をオーバーロードするヘッダー ファイル ポインター演算子)

2. Java と C++ の類似点と相違点:

1) Java はインタープリター言語であり、C++はコンパイル言語であり、Java は遅いですがクロスプラットフォームです

2) Java は純粋にオブジェクト指向ですが、C++ はオブジェクト指向とプロセス指向の両方が可能です。 Java にはグローバル変数やグローバル関数がありません

3) Java にはポインタがないため、より安全です

4) Java は多重継承をサポートしていませんが、インターフェイスの概念があります

5) Java は手動割り当てを必要とせず、メモリの管理 (解放の申請) が提供され、ガベージ コレクターが自動的に収集します。スタックまたは静的ストレージにオブジェクトへの参照がない場合、そのオブジェクトはリサイクルされます。デストラクターはありませんが、finalize() メソッドはあります。

6) Java には演算子のオーバーロードや前処理機能がありません。

3. public static void main(String [] args) はプログラムのエントリ ポイントです。

4. Java は複数の main() ファイルを持つことができますが、プログラムのエントリ ポイントとして使用できるのは、ファイルと同じ名前を持つ public で修飾されたクラスの main() のみです。注: public によって変更され、ファイルと同じ名前を持つクラスは 1 つだけあります。

5.

静的ブロックは main 関数の前に実行されます。初期化実行シーケンス: 親静的変数 親静的コード ブロック 子静的コード変数 子静的コード ブロック 親非静的変数 親非静的コード ブロック 親クラス コンストラクター 子非静的変数 子非静的コード ブロック 子クラス コンストラクター

6 、コンストラクター:

1) クラスと同じ名前、戻り値なし


2) パラメーターに応じて複数存在する可能性があります


3) 常に新しい操作で呼び出されます


4)主に使用される初期化されたオブジェクト


5) 継承はできません


6) super は、親クラスのコンストラクターを明示的に呼び出すために使用できます


7. 浅いコピーは、参照するオブジェクトではなく、検討中のオブジェクトをコピーするだけです。

両方ともディープコピー

8. オブジェクト指向とプロセス指向の違いは何ですか:

1) オブジェクト指向は、以下に準拠する方法で客観的な世界の問題を扱うことです。プロセス指向は、より焦点を当てたイベント中心型であり、モジュール型です。


2) オブジェクト指向とは、コンピュータの世界を客観的な世界に近づけ、問題の処理をより明確にすることです。プロセス指向は、プロセスを明確かつ正確に表現し、客観的な世界の問題をコンピュータで処理できるプロセスに抽象化するモジュールです。


9. オブジェクト指向の機能と利点: 抽象化、継承、カプセル化、ポリモーフィズムにより開発効率が向上し、コードを再利用できます。より高い保守性とより明確なコード。

10. Java は単一ルート継承のみをサポートし、extendsinheritance は is a 関係、そしてcombination は has a 関係をサポートします。

Java言語で組み合わせを使用できる場合は、継承を使用しないようにしてください。

11. ポリモーフィズム:

オーバーロード(同じクラス内に同じ名前のメソッドが複数ある) 水平関係


書き換え(サブクラスが親クラスを書き換え、メソッド名とパラメータリストは同じ)垂直的な関係


12. 抽象クラスとインターフェースの類似点と相違点:

1) 抽象メソッドが含まれている限り、それは抽象クラスであり、インターフェースのメソッドはすべて抽象メソッドです。純粋な抽象クラスと呼ばれます。


2) 抽象クラスのサブクラスは、親クラスの抽象メソッドを実装する必要があります。


3) インターフェイスの変数はデフォルトで static Final になり、初期値を割り当てる必要があります。


4) インターフェイスは、implements を使用して実装されます。クラスは複数のインターフェイスを実装して、多重継承と同様の関係を実現できます。


5) このインターフェースは、追加や削除など、よく使用される機能に使用されます。抽象クラスは、日常生活におけるパブリック クラスの役割に使用され、頻繁なコード変更には適していません


13 これとスーパーの違い:

これは、現在のインスタンス オブジェクトを指すために使用されます


Super は親クラスのメソッドとメンバー変数にアクセスするために使用されます


サブクラスが親クラスから継承する場合、super() をサブクラスのコンストラクターの最初の文として配置する必要があります。


14. Break continue return の違い:

Break は、残りのコードを実行せずに現在のループから強制的に飛び出すために使用されます


Continue は、現在のループを停止して開始点に戻るために使用されます次のループのために。


Return Jump は、メソッドから戻ることを表すために使用されます。


複数のループから抜け出すためのブレークアウト


15. staticの役割:

a 作成されたオブジェクトの数に関係なく、オブジェクトに単一のストレージスペースを割り当てます


b 特定のメソッドを実装しますまたは属性とクラス オブジェクトに関連付けられていません


C 変数はグローバル効果を実現できます。メモリ内にはコピーが 1 つだけあります


16. 不変クラスの実装:

クラス内のすべてのメンバー変数はprivateで変更されます

setメソッドは書かれていません

クラス定義は最終的です

17. 値の転送と参照の転送の違い:

実パラメータは次のようになります。 値は仮パラメータに渡されます

参照渡し: オブジェクトが渡され、仮パラメータと実パラメータは同じストレージユニットを指します。

18. 型変換の優先順位: byte は boolean と交換できません。

19.round は四捨五入を意味し、ceil は切り上げを意味し、floor は切り捨てを意味し、i++ は最初に実行してから

one を加算することを意味し、++i は最初に 1 を加算してから実行することを意味します。

20. 文字列 s1="abc" は定数領域に格納されるオブジェクトです。

文字列 s2="abc" s2 は定数領域に適用され、新しいオブジェクトは作成されません。

String s3=new String("abc") はヒープ内にオブジェクトを作成し、

String s4=new String("abc") はヒープ内に新しいオブジェクトを作成する必要があります。

21.「==」と「equals」

「==」は、変数がオブジェクト(参照型)を指す場合に、2 つの変数の値が等しいかどうかを比較するために使用されます。 、メモリは 2 つあります。オブジェクト自体はメモリ (ヒープ メモリ) を占有し、変数もメモリを占有します。文字列 s4 = 新しい文字列("abc")。変数 s に対応するメモリに格納されている値は、オブジェクトが占有するメモリの最初のアドレスです。 2 つの変数が同じオブジェクトを指しているかどうかを確認したい場合は、メモリ内の対応する値 (最初のアドレス) が同じかどうかを確認する必要があります。

equalsは参照ではなく数値の内容、つまりabcを比較します。

22. 配列もオブジェクトです。 配列は配列の長さを取得するための length プロパティを提供し、String は length() を通じて計算されます。

23. 例外処理

1) try catchfinally モード

2) 次の 2 つの状況を除いて、Finally ブロック内のコードは必ず実行されます: try の前にプログラムが例外を検出したとき、またはtry の exit() を通じて強制的に終了します。

3) jvm はエラーを例外として表し、それをスローし、catch を通じてキャッチして、処理します。セキュリティと堅牢性。

4) 例外は、エラーと例外の 2 つのカテゴリに分類されます。

例外は、チェック例外と実行例外に分類されます。

チェック例外はコンパイル例外とも呼ばれます。

例: IO 例外、SQL 例外

実行例外には、ヌル ポインター例外、型変換例外、算術例外、配列範囲外例外、配列ストレージ例外、バッファ オーバーフロー例外があります。

最初にサブクラスをキャッチし、次に親クラスをキャッチし、できるだけ早く例外をスローし、処理できる場合は処理し、処理できない場合はスローします。ランタイム例外は実際には処理する必要はありません。直接投げられます。

24. Java IO: バイトストリーム (8 ビット) はキャッシュを使用しません。 ソケットはキャッシュを使用します。
異なる仮想マシンまたは異なるコンピューター間の通信を実現するために使用されます。

それは 2 つのタイプに分けられます: コネクション指向の TCP、信頼性の高い TCP。接続指向の UDP がないため、信頼性が低くなります。

どのソケットも IP アドレスとポート番号によって一意に決定されます。


26. Java プラットフォームの独立性とは、プログラムが 1 つのプラットフォームで作成およびコンパイルされ、他のプラットフォームで実行されることを意味します。

JVMとJava APIを備えています。

Java 言語は動的に解釈される言語であり、クラスは JVM にロードされた場合にのみ実行できます。すべてのクラスを一度にロードして実行するのではなく、基本クラスが最初にロードされ、必要に応じて他のクラスがロードされます。

27

、ガベージ コレクション GC:
使用されなくなったメモリをリサイクルします。 3 つのタスク: メモリを割り当て、参照されたメモリが誤って再利用されないようにし、参照されなくなったオブジェクトのメモリを再利用します。

28. Java のメモリ リークの問題:

2 つの状況:

1) ヒープ内に適用されたスペースが解放されない


2) オブジェクトは使用されなくなったが、まだ存在しているメモリが保持される


理由: 静的コレクションクラス、さまざまな接続、リスナー、変数の範囲が不当である


29. Java におけるヒープとスタックの違い:

スタック上に割り当てられる: 基本的なデータ型参照変数変数とオブジェクトの構成

変数はスコープ外に出ると自動的に解放されます


ヒープ上に割り当てられます:参照型変数、newを通じて作成する必要がある変数。主に実行時にオブジェクトが作成されます


JVM はスタックベースの仮想マシンです。各 Java プログラムは個別の JVM インスタンス上で実行されるため、Java プログラム内の各スレッドはその上で実行され、各インスタンスには対応する一意の A ヒープが存在します。メモリはこれらのスレッド間で共有されます。


ヒープスペースを申請するだけでよく、リリースの問題を考慮する必要はありません。

スタック内の参照変数を使用して、ヒープ内の配列やオブジェクトにアクセスします。


ヒープはオブジェクトを保存するためにのみ使用され、スタックは主に実行可能プログラムを保存するために使用されます。


スタックは高速ですが、サイズと寿命が決まっており、柔軟性に欠けます。ヒープはメモリを動的に割り当てます。これは柔軟性に優れていますが、速度が遅くなります。


30. コンテナ: Java コレクション フレームワーク: list、Queue、set、stack、map
list、Queue、set、stack はすべて Collection インターフェイスを継承します。

1) リストは順序付けられたコレクションです。オブジェクトは入力された順序で保存され、重複したオブジェクトを保存することもできます。

2) 集合は集合の概念であり、集合内に重複する要素は存在できません。

3) マップは、キーを値にマップするデータ構造です。値は繰り返すことができますが、キーは一意であり、繰り返すことはできません。

31. イテレータ: これはオブジェクトであり、オブジェクト内の詳細を公開せずにコンテナ オブジェクトの各要素にアクセスするメソッドです。

1) コンテナの iterator() メソッドを使用して Iterator を返し、Iterator の next() メソッドを通じて要素を返します。

2) Iterator の hasNext() メソッドを使用して、コンテナー内に要素があるかどうかを確認し、存在する場合は next() を使用して次の要素を取得できます。

3) 反復子によって返された要素を削除するには、remove() を使用します。

32. コレクションとコレクションの違い:

コレクション: 特定のコレクションごとに最大限の統合された操作を提供するコレクション インターフェイスです。

Collections: コレクション クラスのラッパー クラスです。これはインスタンス化できず、コレクション フレームワークを提供するツール クラスと同等です。

33. マルチスレッド:

スレッド: コードを実行する実行ユニット。

プロセス: 実行中のプログラム

各スレッドはプログラムのメモリ空間 (コードセグメント、データ、ヒープ空間)​​ を共有し、独立したスタック空間を持っています。

スレッドの利点:

1) プログラムの応答時間を短縮します

2) プロセスに比べて、スイッチを作成するコストが小さい

3) マルチCPUとマルチコアは本質的にマルチスレッド機能

4) 理解と保守を容易にするためにプログラム構造を簡素化します。

34. Java マルチスレッドの実装方法:

1) Thread クラスを継承し、run() メソッドをオーバーライドします。

2) Runnable インターフェースを実装し、インターフェースの run() メソッドを実装します。 。

3) Callable インターフェースを実装し、call() メソッドを書き換えます。

35. 同期

同期操作を実行するには、各スレッド オブジェクトのロックを取得し、このロックが解放される前に同時にクリティカル セクションに入ることができるようにする必要があります。 、他のスレッド オブジェクトのロックを取得したい他のスレッドがある場合は、待機キューに入って待機することしかできません。

36. マルチプロセス同期の実装方法:

1) 同期キーワード

2) Wait()メソッドとnotify()メソッド

3) Lock

37。スレッドを終了するメソッド: stop() メソッドとsuspend() メソッド。

Javaには、デーモンスレッド(サービスプロセス)とユーザープロセスの2種類のスレッドが用意されています。

38. JDBC 経由でデータベースにアクセスする方法:

1) JDBC ドライバーをロードし、JDBC ドライバー jar パッケージを lib にコピーします

2) JDBC ドライバーをロードします

3) データベースを作成しますconnection

4) Statement オブジェクトまたは PrepareStatement オブジェクトを作成します。データベース操作に使用されます

5) SQL ステートメントを実行します

6) 結果セット ReaultSet オブジェクトにアクセスします

7) ReaultSet ステートメント接続を順番に閉じます。

39. Class.forName() メソッドの機能は、クラスを JVM にロードすることです。

JDBC を使用してデータベースに接続する前に、通常、Class.forName ("com.mysql.jdbc.Driver") メソッドが呼び出されてドライバーがロードされます。
Statement は、パラメーターなしで単純な SQL ステートメントを実行し、生成された結果のオブジェクトを返すために使用されます。 SQL が実行されるたびに、データベースは SQL ステートメントをコンパイルします。
PrepareStatementはパラメータを指定して実行できます。効率の向上、可読性の向上、保守性の向上、セキュリティの向上

40. JDBC は、ResultSet からデータを取得するための getString()、getInt()、getIData() などのメソッドを提供します。

41. JDBC接続時にはコネクションプールの数が制限されているため、使用されなくなったコネクションは必ず解放してください。

createStatement と prepareStatement はループの外側に配置するのが最適で、ステートメントの使用後に適切なタイミングで閉じる必要があります。 executeQuery を 1 回実行したら、すぐにステートメントを閉じることをお勧めします。

42. Hibernate は JDBC のパッケージです。データベース接続パラメータは構成ファイルの形式で XML に書き込まれますが、データベースへの最終アクセスは JDBC を通じて完了する必要があります。

43、

Hibernate は永続層フレームワークであり、テーブル内の情報を XML にマップし、XML ファイルを対応する永続クラスにマップします。

Java Web

1. ブラウザの役割:

1)、サーバーとの対話を完了します。


2) HTML の解析を完了し、ユーザーが見たいコンテンツを直感的な情報で表示します。


2. HTTP リクエスト メソッドは次のとおりです: GET POST HEAD TRACE OPTIONS

GET: これは、ユーザーが必要とするリソースをサーバーから取得し、それを応答としてクライアントに返します。サーバー側の情報を取得します (クエリ)。データをアップロードする必要がある場合は、URL の末尾に追加します。データの露出は十分に安全ではなく、量も限られています。


POST: サーバーからリソースを取得するだけでなく、データをサーバーにアップロードすることもできます。アップロードされたデータは URL にプレーンテキストで表示されず、ユーザーには見えない大量のデータをアップロードできます

3. サーブレット:

Java 言語で書かれたサーバー プログラム。 Webサーバー上のサーブレットコンテナ内で、メイン機能となるリクエストとレスポンスを提供し、動的なWebコンテンツを生成できるサービスモデルです。

Web サーバーがサーブレットのリクエストを取得すると、処理のために Tomcat コンテナに渡され、コンテナはサーブレット メソッド (doGet() doPost()) を呼び出してリクエストに応答します。

手順:

サーブレットリクエストを開始します—>Webサーバーが処理のためにコンテナに渡されます——>コンテナは2つのオブジェクトを作成します HttpServletResponse HttpServletRequire——>別のスレッドを作成し、2つのオブジェクトを渡しますパラメータとして Thread -> スレッドコンテナはサーブレットの service() メソッドで doGet() または doPost() を呼び出し、応答を完了します -> コンテナは応答メッセージを HTML 形式でクライアントに返します。

4. サーブレットのライフサイクル:

読み込み -> 初期化 -> アンインストール


5. :html Javaコードが埋め込まれたファイル。主にサーブレットとHTMLの分離を解決します。ビジネス ロジックとビューを分離します。


6. JSP とサーブレットの類似点と相違点:


同じ:

基本的に、JSP で完了できる作業であれば、JSP を使用して完了できます。最終的にはサーブレットの実行に変換されます。

の違い:

サーブレットは制御層にあり、主にプロセス制御とビジネス処理を行います。 JSPはビュー層にあり、主に表示に使用されます。

サーブレットには組み込みオブジェクトがありません。JSP の組み込みオブジェクトは、主に HttpServletResponse オブジェクトと HttpServletRequire オブジェクトを通じて取得されます。


7. MVC モデル:


モデル層 (M): システム ビジネス ロジックを実装します。 JavaBean または EJB


View 層 (V): ユーザー対話を実現します。 JSP

コントロール層(C):ビューやモデルの論理的な制御を実現します。サーブレット


8. コントロール層:


コントローラーはユーザー入力を受け取り、モデルとビューを呼び出して完了します。

コントローラー自体は何も出力したり、処理を実行したりしません。

リクエストを受信し、リクエストの処理に使用するモデルを決定し、返されたデータを処理するモデルの表示に使用するビューを決定するだけです


9. MVC の利点:


1) 低コスト結合し、ビュー層とロジック層の分離を実現します。

2) 高い再利用性と適用性

3) 迅速な導入

4) メンテナンスが簡単


10. サーブレットにおける転送とリダイレクトの違いは何ですか:


転送はサーバーの内部にあります。リダイレクトの場合、サーバーはターゲット アドレスの URL に直接アクセスし、アドレスは変更されません。

リダイレクト: クライアントのリダイレクト、完全なジャンプ、アドレスの変更。


11. JSP の組み込みオブジェクト:


1) require (リクエスト オブジェクト)

2) Response (応答オブジェクト)

3) pageContext (ページ コンテキスト オブジェクト)

4) セッション(セッションオブジェクト)

5) Application (アプリケーションオブジェクト)

6) Out (出力オブジェクト)

7) Config (設定オブジェクト)

8) Page (ページオブジェクト)

9) 例外(例外オブジェクト)


12. リクエストオブジェクトのメソッド:


1) setAttribute (String name, Object) は name の属性値を設定します


2) getAttribute (String name) は name の属性値を取得します

3) getParameter (文字列名) はユーザーが送信したデータを取得し、名前はフォームの名前に対応します

4) getSession() はリクエストに関連するセッションを取得するために使用されます


13. JSP 内のアクション:


1) JSP:include は、ページがリクエストされたときにファイルを導入するために使用されます

2) Jsp: useBean は、javabean をインスタンス化するために使用されます

3) Jsp:setProperty が使用されますインスタンス化された Bean オブジェクトのプロパティを設定します

4) Jsp:getProperty は、インスタンス化された Bean オブジェクトのプロパティを取得するために使用されます

5) Jsp:foward は、リクエストを別のページにジャンプするために使用されます


14 . JSP に命令とアクションを含めます

コマンド: <% @include file =”test.jsp “%>

アクション:

15. セッション追跡テクノロジー:


同じユーザーのサーバーへの継続的なリクエストと応答の受信を監視します。

1) ページをページ化する
2) リクエストをリクエストする


3) ユーザーエクスペリエンスをセッションする


4) Web アプリケーション全体をアプリケーションする


16. 文字列エンコーディング: GBK、UTF-8



17. Ajarとは

非同期jsとXML。

Java テクノロジー、js テクノロジー、および XML テクノロジーを組み合わせます。 クライアントテクノロジー

機能: ページを更新せずにサーバーと少量のデータをやり取りすることでページの対話性を向上させ、応答時間を短縮し、ユーザーエクスペリエンスを向上させます

18. Cookie とセッションの違い:

セッション: クライアントとサーバーの間で状態を維持するために使用されるソリューションとストレージ構造を指します。

Cookie: Web サーバーによってユーザーのブラウザに保存される小さなファイル。

19. Web サーバー: クライアントからリクエストを受信し、リクエストの処理結果をクライアントにフィードバックします

2 つの主要な Web サーバー: IIS Apache。

20. Web コンテナ: TomcatJBoss

は、http リクエストとレスポンス オブジェクトをサーブレットに提供し、doGet() メソッドと doPost() メソッドを呼び出してユーザー リクエストを処理します。

21. EJB のカテゴリ:

1) セッション Bean (セッション Bean) はサーバー側のビジネス ロジックを実装し、Bean 間の対話を調整します

2) エンティティ Bean (Entity Bean) データ コンポーネントはデータベースを表しますレコード

3) メッセージ Bean (メッセージ駆動型 Bean) は非同期メッセージを処理し、通常はユーザーによって呼び出されません

22. EJB と Javabean の類似点と相違点:

1) EJB: 主にサーバーで使用されます。開発側では、Javabeans は主にクライアント開発に使用されます。

2) EJB コンポーネントは EJB コンテナにデプロイできます。コンポーネントには直接アクセスできませんが、Javabean を介してデプロイすることはできません。3) EJB は分散オブジェクトであり、リモートから呼び出すことができます。ではなく、リモートからのみ呼び出すことができます


23. EJB の役割:


1) Enterprise Bean Provider (エンタープライズ コンポーネント開発者)

2) Application Assembler (アプリケーション アセンブラ)

3 ) EJB Deployer (EJB Deployer)

4) EJB Sever Provider (EJB サーバープロバイダー)

5) EJB Container Provider (EJV コンテナプロバイダー)

6) System Administrator (システム管理者)


24.データベース 接続プールの動作メカニズム:


原因:

1) データベースの作成は非常に時間のかかる操作です

2) データベース接続の数は制限されています

データベース接続プールはデータベース接続の割り当て、管理、解放を担当します。クライアントがデータベースにアクセスする必要がある場合、接続を作成せずにプールからデータベース接続を直接取得し、ビジーとしてマークすることができます。


25. JAVAEE が開発したチューニング方法:


1) 設計を最適化する

2) 可能な限りデータベース接続を使用する

3) フレームワークを使用する

4) I/O を最適化する

5) クエリの最適化


26. Strutsフレームワークの利点:

1) パフォーマンスとロジックの分離を実現

2) ページナビゲーション機能を提供

3) フォーム検証を提供

4 ) データベース接続プールを提供します

5) 例外処理メカニズムを提供します

6) 国際化をサポートします


27. データ検証は次のように分割されます:


1) フォーム検証

2) ビジネスロジック検証


28. 国際化:


プログラムは、内部コードを変更せずに、さまざまな地域に応じて対応するインターフェイスを表示します


29. 制御の反転とは:


1 つの設計とも呼ばれます。オブジェクト間の結合関係を減らすというアイデア。

上位層が下位層のインターフェースに依存しないように、呼び出し元(子)が呼び出し先(親)を決定します。切り離しと目的は、インスタンス化されたオブジェクトを注入することによって達成されます。


30、Spring フレームワーク

は、軽量 loc を適切にサポートし、AOP テクノロジーの非常に優れたカプセル化も提供します。


31. Hibernate フレームワーク、永続化レイヤー フレームワーク


Java オブジェクトとリレーショナル データベース レコードのマッピングを実現し、開発者がデータベースにアクセスするプロセスを簡素化し、ソフトウェア開発の効率を向上させます

JDBC を使用するすべての人Hibernata を使用できます

パフォーマンスを向上させる方法:

1) 遅延読み込み

2) キャッシュテクノロジー

3) クエリステートメントを最適化する


32。ページングを実装します。

1) ハイバネート独自のページングメカニズム


2) limit キーワードを使用して SQL ステートメントで実装


33. SSH:


struts はビュー部分を実装します


Hibernate はモデル部分を実装します

Spring はビジネス部分を実装します

SSHを使用するこのフレームワークは、ビュー、コントローラー、モデルの完全な分離を達成できるだけでなく、ビジネスロジックとデータ永続層の分離も達成できます


概要

以上がJavaの基礎知識をまとめて分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。