ホームページ  >  記事  >  バックエンド開発  >  PHP面接の質問のまとめ

PHP面接の質問のまとめ

不言
不言オリジナル
2018-04-27 11:31:292618ブラウズ

この記事では主に、一定の参考価値のある PHP 面接の質問の概要を紹介します。必要な友人は参考にしてください。

CSRF クロスサイト リクエスト フォージェリとは。 , 1. ユーザー C はブラウザを開き、信頼できる Web サイト A にアクセスし、ユーザー名とパスワードを入力して Web サイト A へのログインを要求します。

2. ユーザー情報が確認された後、Web サイト A は Cookie 情報を生成して返します。この時点で、ユーザーは Web サイト A に正常にログインした後、通常どおり Web サイト A にリクエストを送信できます。ユーザーが Web サイト A を終了する前に、同じブラウザーでタブ ページを開いて Web サイト B にアクセスします。

4. Web サイト B がユーザーのリクエストを受信した後、いくつかの攻撃的なコードを返し、サードパーティのサイト A にアクセスするリクエストを発行します。

5. これらの攻撃的なコードを受信した後、ブラウザはリクエストに従って Cookie 情報を Web サイト B に送信します。ウェブサイト A がユーザーの知らないうちにウェブサイト B のリクエストを行います。ウェブサイト A は、リクエストが実際に B

によって開始されたことを認識していないため、ユーザー C の Cookie 情報に基づいて C の権限でリクエストを処理し、ウェブサイト B からの悪意のあるコードが実行されます

セッションとクッキーの違い:

1.COOKIE はクライアント側に存在します。 SESSIONはサーバー側に存在します。

2. COOKIE のデフォルトのストレージ サイズは、特定のニーズに応じて 20 を超えることはありません。

3.SESSIONはデフォルトではファイルとして保存されます。デフォルトの生存時間は 24 分、初期ストレージ サイズは 1M で、理論的には無制限に変更できます。 php.iniを変更することで設定できます。

4.SESSIONはデフォルトではCOOKIEに基づいています。SESSIONが開かれると、session_idが生成され、COOKIEに保存されます。

5.SESSION COOKIE はすべてセッション コントロールです。 http はステートレスでコネクションレスであるためです。したがって、ユーザーを識別するにはセッション制御が必要です。

php スーパーグローバル変数:

$GLOBALS $_SERVER $_REQUEST $_POST $_GET

$_FILES $_ENV $_COOKIE $_SESSION

PHP


および MYSQL

Transaction処理:

1. begin、rollback、commit を実装する

begin トランザクションの開始 rollback トランザクションのロールバック

コミット トランザクションの確認

2. set を直接使用して mysql の自動コミット モードを変更する

4

の主な機能トランザクション (Acid): アトミック性:

アフェアーズはデータベースの論理的な作業単位であり、データベースの変更はすべて実行されるか、すべて実行されません。

一貫性:

トランザクションの前後で、データベースの状態はすべての整合性制約を満たします。分離:

同時実行のトランザクションは分離されており、一方は他方には影響しません。同時に実行され、同じ機能を実行する 2 つのトランザクションがある場合、トランザクションを分離すると、システム内の各トランザクションは、そのトランザクションだけがシステムを使用していると認識されます。このプロパティはシリアル化と呼ばれることもあります。トランザクション操作間の混乱を避けるために、同じデータに対するリクエストが同時に 1 つだけになるように、リクエストをシリアル化または逆シリアル化する必要があります。

データベースの分離レベルを設定することで、さまざまな分離効果を実現できます。

耐久性:

トランザクションの完了後、トランザクションによってデータベースに加えられた変更はデータベースに保持され、ロールバックされません。

xss

予防方法:

XSS (CSS とも呼ばれる)、フルネーム CrossSiteScript、クロスサイト スクリプティング攻撃

予防: スクリプト インジェクション、エスケープ フィルター スクリプト タグ。

union

とunionallの違い: Unionallは重複を削除しません

RBAC

ロールベースの権限制御: 5つのテーブル ユーザーテーブル、ロールテーブル、関数テーブルもあります相互接続されたテーブル: ユーザー、キャラクター、キャラクター、および機能テーブル

Redis

永続性:

メモリ スナップショット (RDB) RDB 永続性により、指定された時間間隔でデータ セットを生成できます ポイントインタイム スナップショット ログ(AOF) AOF は、サーバーによって実行されたすべての書き込み操作コマンドを永続的に記録し、サーバーの起動時にこれらのコマンドを再実行することによってデータ セットを復元します。

サブテーブル:

データベースの負担を軽減し、クエリ時間を短縮します。縦割り:縦割りは分野に応じた分野です

水平テーブル分割: 1 つ以上のデータ列の値に基づいて、データ行を 2 つの独立したテーブルに配置します。

水平テーブルシャーディングで挿入された ID が一意であることを確認するにはどうすればよいですか?

新しい ID サービスを作成し、ユーザーの ID をデータベースまたは Redis に保存できます。

jクエリセレクター:

1.要素 2.属性 3.id 4.クラス 5.グローバル。

インライン要素とブロック内要素

インライン:

インライン:

、< p>、

高さ、行の高さ、マージンとパディングはすべて制御できます

③ 幅は、コンテンツに関係なく、常にブラウザの幅と同じになります

④ インライン要素などを収容できます。ブロック要素。 Row、

①とその他の要素はすべて同じ行にあります。

②高さ、行の高さ、余白とパディング部分は変更できます。

③幅はコンテンツにのみ関係します

④インライン要素はテキストまたは他のインライン要素。

グループクエリ

: Orderby

テーブル内の男性と女性の数は20〜30です

と一緒に使用する オブジェクト オブジェクト リレーショナル マッピング (ORM) モードは、オブジェクト指向間の不一致を解決するテクノロジです。およびリレーショナル データベース

Linux

ポートの表示: 選択したファイルのブラシ: プロセスの表示:

//現在の TCP ポートをすべて表示 ·使用する 使用する 使用する 使用する 使用する 使用する 使用する 2 tcp tcp ‐ tcp ポート ·

· コマンドの数: 履歴令 ファイル操作機能:

Open Open Files FSTAT ファイルの取得

File ファイル全体を配列に読み込みます バイナリ ファイル)

file_get_contents() はファイル全体を文字列に読み取ります

ファイルを開く方法はいくつかあります:

ファイルの削除 クリップコマンド

, カットの先頭では、開始点は 0

$ 長さで、D はカスタム クラス をインスタンス化できます。 Table

間隔:

Table TR TD から JQ までのデュアル番号を認識し、対応するシングルに異なる CSS スタイルを与えます。インターレース色の変更効果を実現します。

マウスが通過すると、JQ は trtd 背景セットを個別に呼び出します。そのため、マウスが通過すると背景色が変わります。

同期および非同期: サーバー同期から返される結果を待ちます。真面目にそしてその後、他の操作を実行します

リクエストを非同期に送信した後、サーバーからの戻り結果を待ち、他の操作を直接実行します

デフォルトは: 非同期

Linux

すべてのファイルを表示:ls

Pを設定

別の p: z-index 値が大きいほど、値が高くなります。

ob

関数: ,,,, 。

「」 to ' s ' s ' s ' s ' s 1 ' s 1 ' s 1 ' s t--ob_clean();

スルースルーの'''''' スルースルーの''‐to''‐''''‐''''O'w'sのto be to be to be that to be so much?

スルー スルー スルー スルー スルー スルー スルー スルー スルー アウト アウト アウト アウト アウト アウト アウト アウト アウト アウトアウェイアウトアウェイアウトアウェイアウトアウェイアウトアイアウェイu b u b b b i-w i o-wr rw-))。 ob_get_contents() および ob_end_clean() を実行するのと同等です

ob_flush(); //内部バッファの内容をブラウザに送信し、バッファの内容を削除し、バッファを閉じません。

ob_end_flush();

through ' s を使用すると、 through ` through through through through through through through out through out through out through over over over''s to's'''' through through''s to's'''' through through-- - を使用できます。 ‐ob‐ob_get_fluish の be to be to be _get_flush(); ob_end_flush() と同等で、バッファの内容を返します。 ) Flush (); // OB_FLUSH によって解放されたコンテンツと、PHP バッファーにないコンテンツの出力全体が、内部バッファーのコンテンツを更新して出力されます。

' ' ' ' ' ' s は 1 に向かって スルースルースルースルースルースルースルーアウトオフオフアウトアウトアウトスルーアウトアウトアウトアウトライトアウトスルーアウトライトアウトソンスルーオーバーそうそうそうそうそうそうそうそうに、だから、そう、それ、それ、だから、そう、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、に、に、に、に、に、に、に、存在を投げる。

ob_get_length(); _ Ob_get_Leveel (); // theOUTPUT BUFFERING MeChanism.のnestingLevelを返します

OB_Get_Status (); // outputBuffersのステータスを取得します

3. ショッピングカートを実行する方法プロセス。 。

1. ショッピングカートに製品を追加します

1. まずページにリンクを追加します

1. まず製品 ID を取得します

2. データベースから ID で製品をクエリします。 3. 製品をショッピング カートに追加します

a. セッションからショッピング カートを取得します。 ない場合は、新しいショッピング カートを作成します。

b. ショッピング カートに商品が存在するかどうかを確認します。 1. 存在する場合、数量は元の基準で 1

増加します。 c. ショッピング カートをセッションに再読み込みします。

問題: 私たちのショッピングは HashMap コレクションを使用しており、キーは一意であることを確認する唯一の方法は、hashCode メソッドと equals メソッドを使用することです

したがって、これを使用するときは、hashCode メソッドと equals メソッドをオーバーラップする必要があります。 Product クラスの値を書き換えるときは、id 値を比較するだけで済みます。

2. ショッピングカートのアイテムを表示します

ショッピングカートはセッション内に存在します。必要なのは、cart.jsp ページのセッションで Cartt マップを収集し、表示することだけです。

1. ショッピングカート内の商品を操作します

2. + または - 記号をクリックすると、ショッピングカート内の商品の数量を変更できます

3. +または-ボタンをクリックすると、JavaScriptの関数が呼び出されます。この関数を通じて、サーバーにリクエストを送信し、サーバー側のセッションからショッピング カート内のデータを取得し、送信されたデータに基づいてショッピング カート内の指定された数のアイテムを変更してから、ショッピングカートページが表示されます。


先月の売上を得るにはどうすればよいですか? 3ヶ月? 1年くらいはどうですか?字 データベースを確認してください。300,000 件のデータを 3 秒以内に取得するにはどうすればよいですか?どのようなインデックスを作成するか?

通常のインデックス

インデックスの種類:

通常のインデックス、一意のインデックス、主キーインデックス、複合インデックス

redis

とmemecache 違いは次のとおりです。

1.保存方法:

memecacheすべてのデータはメモリに保存されるため、停電後はデータがメモリ サイズを超えることはできません。 Redis の一部はハードディスクに保存されるため、データの永続性が保証されます。

2. データ サポートの種類: Redis は memecache よりもはるかに多くのデータ サポートを備えています。 3. 基礎となるモデルが異なります:

一般的なシステムがシステム関数を呼び出す場合、移動とリクエストに一定の時間が無駄になるため、新しいバージョンの Redis は VM メカニズムを直接構築します。

4. さまざまなオペレーティング環境:

現在、redis は正式には LINUX のみをサポートしているため、他のシステムのサポートは省略されています。この方法では、後で Microsoft チームがそのパッチを作成しましたが、システム環境の最適化にエネルギーを費やすことができます。 。ただし、トランクには置かれません

SKU

方法:

属性の仕様。実際、SKU は商品テーブルの製品テーブル、商品テーブルの製品属性テーブルを含む商品リストの製品テーブルです


TP 設定ファイル: Common/Config.php

Php

スカラータイプ:

ブール(ブール)

整数(整数)float(フローティングポイント、ダブルとも呼ばれます)文字列2つの複合タイプ:

配列(配列)シングルトン モデルの「3 つのプライベートと 1 つのパブリック」です。 ": 保 保存クラスの一意のインスタンスを保存する必要があるプライベート静的メンバー変数が必要です。コンストラクターは、オブジェクトの意味を防ぐためにプライベートとして宣言する必要があります。外部プログラム。クローンされた

は、このインスタンスにアクセスするためのパブリック静的メソッド (通常は getInstance という名前) を提供し、それによって一意のインスタンスへの参照を返す必要があります。 20〜30歳の男性と女性の数をクエリします

:

//年齢が20〜30歳のテーブルからカウント(性別)を選択性別でグループ化

年齢が20〜30歳のテーブル名からカウント(*)を選択Group by

PHP

には3つのアクセス修飾子があります:

public (パブリック、デフォルト)

protected (保護された)

private (プライベート)

アクセス修飾子のスコープ:

クラスのメンバーがパブリックアクセス修飾子として宣言されている場合、そのメンバーは外部コードからアクセスして操作できます。

private (プライベート)

プライベートとして定義されたメンバーはクラス内のすべてのメンバーに表示され、アクセス制限はありません。クラス外からのアクセスは禁止です。

protected (保護された)

protected は、保護されたメンバーとして宣言され、このクラスのサブクラスによるアクセスのみを許可します。

mysql intStorage:

bigint のストレージ サイズは 8 バイトです。

int の格納サイズは 4 バイトです。

smallint のストレージ サイズは 2 バイトです。

tinyint 0 ~ 255 の整数データ。記憶サイズは1バイトです。

cookieのスコープ:

ドメイン自体。ドメインの下のすべてのドメイン名。

Cookieの許可を設定することです。ドメインが空に設定されている場合、ドメインはデフォルトで現在のドメイン名になり、このドメイン名のサブドメインは Cookie を受信できます。

ただし、domain パラメーターがそのサブドメイン名に設定されている場合、そのサブドメイン名を含むすべてのドメイン名を受信することはできません。

linuxログファイルの内容を表示するコマンド

tail、cat、tac、head、echo

tail-f test.log

top メモリを表示

df-lh ディスクを表示

ps-aすべてのプロセス

定数を表示:

-変数を使用しましたか?

定数の値は固定値である必要があり、変数、クラス属性、数学演算や関数呼び出しの結果であってはなりません。

定数はインターフェースでも定義できます。

抽象クラスはインスタンス化できません。抽象クラスには静的メソッドを含めることができます。抽象クラスには抽象メソッドを含めることはできません。

通常のメソッドはクラスに保存され、コピーは 1 つだけ存在します。

静的メソッドもクラスに保存され、コピーは 1 つだけ存在します。

違いは次のとおりです。

通常のメソッドにはオブジェクトが必要です。つまり、通常のメソッドにはオブジェクトが必要であり、静的メソッドはどのオブジェクトにも属さないため、$this をバインドする必要はありません。静的メンバー: インスタンス化は必要ありません。アクセス、クラスの静的メンバー変数はこのクラスにのみ属します

クラス メンバー: 1 つはクラスで定義され、もう 1 つはコンストラクターで定義されます。 。

メソッドと関数の違い:

関数は単独で存在し、メソッドはクラスに依存し、オブジェクトを通じてのみ呼び出すことができます。

クラスファイルで関数を定義できるかどうか: いいえ

値の転送と値の参照:

(1) 値渡し: 関数のスコープ内での値の変更は関数の外では無視されます。

(2) 参照渡し: 関数のスコープ内で値を変更すると、関数の外側でもこれらの変更が反映されます

(3) メリットとデメリット:

A: 値渡しの場合, php は以下をコピーする必要があります。価値。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。

参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に非常に役立ちます。

注文が繰り返し送信されるのを防ぎます:

1. JS を使用して、ボタンを 1 回クリックした後にボタンを無効にします。この方法を使用すると、複数回のクリックを防ぐことができます

2. セッション値を設定します。セッション値がない場合は、送信を許可しません。

文字列関数:

strlen(); echo(); trim(); など,,,

違い:

HTTP1.0 では、ブラウザとサーバーは短期間の接続のみを維持します。ブラウザの各リクエストはサーバーとの TCP 接続を確立する必要があります。サーバーはリクエストの処理が完了すると、すぐに TCP 接続を切断します。 各顧客は追跡され、過去のリクエストが追跡されます。は記録されません。

HTTP1.1 は永続的な接続をサポートしており、複数の HTTP リクエストと応答を TCP 接続で送信できるため、接続の確立と終了の消費と遅延が軽減されます。

HTTP1.1 では、クライアントは前のリクエストの結果が返されるのを待たずに次のリクエストを行うこともできますが、サーバーはクライアントリクエストを受信した順序で応答結果を

に送り返す必要があります。クライアントが各リクエストの応答内容を区別できるようにすることで、ダウンロード プロセス全体に必要な時間を大幅に短縮できます。HTTP1.0 はホスト リクエスト ヘッダー フィールドをサポートしていません。

H TTP1.1でホストリクエストヘッダーフィールドが追加されました。

グローバル変数とローカル変数の違い:

1. スコープの違い: グローバル変数のスコープはプログラム全体ですが、ローカル変数のスコープは現在の関数やループなどです。

2. 異なります。メモリ格納方法: グローバル変数はグローバル データ領域に格納され、ローカル変数はスタック領域に格納されます

3. 異なるライフタイム: グローバル変数のライフタイムはメイン プログラムのライフタイムと同じであり、メイン プログラムのライフタイムが終了すると破棄されます。プログラムが破棄されます。ローカル変数は関数内またはループ内にあり、プログラムが破棄されると破棄されます。関数終了やループ終了はありません

4. さまざまな使用方法: グローバル変数は、プログラムのすべての部分で使用できます。ただし、ローカル変数はローカルでのみ使用できます。関数内では、ローカル変数がグローバル変数よりも先に使用されます。注意すべき点は、ローカル変数に同じ名前のグローバル変数の値を割り当てることはできないということです。

フロントエンドの最適化:

最初: コンテンツ指向の最適化 1. HTTP リクエストを削減します

2. DNS ルックアップを削減します

3. リダイレクトを回避します 4. Ajax キャッシュを使用します

5. コンポーネントの遅延読み込み

6. コンポーネントを事前にロードする

7. DOM 要素の数を減らす

8. コンポーネントを複数のドメインに分割する 9. iframe の数を最小限に抑える 10. http 404 エラーがないようにする

2 番目: サーバー用

1. Cookie を削減します

2. Web コンポーネントにドメイン名の独立性を使用します

キャッシュアバランチとは何ですか?

キャッシュサーバーの再起動や、一定期間に大量のキャッシュが集中すると、バックエンドシステム(DBなど)にも大きな負荷がかかります。

それを回避するにはどうすればよいですか?

1: キャッシュの有効期限が切れたら、ロックまたはキューイングを通じてデータベースを読み取り、キャッシュに書き込むスレッドの数を制御します。たとえば、データのクエリと特定のキーのキャッシュの書き込みを許可されるのは 1 つのスレッドだけであり、他のスレッドは待機します。

2: キャッシュの有効期限をできるだけ均等にするために、キーごとに異なる有効期限を設定します。

3: 2次キャッシュを作成します。A1はオリジナルキャッシュ、A2はコピーキャッシュです。A1が失敗した場合、A2にアクセスできます。A1のキャッシュ有効期限は短期に設定され、A2は長期 (この点は補足です)

tp

ルーティングモード:

1. 通常モード 2. 書き換えモード 3. 互換モード

niginx ポート番号の設定方法:

で 2 つのサーバーが nginx.conf で設定されており、それらは異なるポート番号です。


jq

テーブルの 2 行目を取得します タグ: $(tr:eq(1))

変数変数とは:

変数変数を使用すると、変数の名前を動的に変更できます。変数 。ある変数の値を別の変数の名前として使用します。

ポートが占有されているかどうかを確認します:

権限を変更する 所有者を変更する ユーザーグループを変更する

netstat –apn chmod chown chgrp

プロセスを表示する

Top pa aux|grep

全員に実行権限を追加します:

ライブラリから 2 つのスレッドと 1 つの I/O スレッド、つまり SQL スレッドを生成します。ライブラリ i/ からバイナリログを渡します。 o スレッド;

SQL スレッドはリレー ログ ファイル内のログを読み取り、それを特定の操作に解析して、一貫したマスター/スレーブ操作を実現します。最終的なデータは一貫しています。

マスター/スレーブ 必要なコマンドをコピーします。 :

showmaster status;

startsalve; *.*

TOmysql_backup@'%'

'123 によって識別されました456'; sql-bin.000001',master_log_pos = 3696;

問題を解決する主キーの競合

マスターテーブルを作成し、マスターテーブルからIDを配布します。

マスター間レプリケーション:

1. 2 台のマシンでそれぞれアカウントを承認します: レプリケーション スレーブ、ファイル、*.* を 'repl'@'10.17.%' で識別されたものに許可します。 xxxx'

2. 設定ファイル /etc/my.cnf に、メインライブラリ設定ファイルの使用に基づいて、次の設定項目を追加します

nginx

リバースプロキシ:

(1) rr ポーリング (デフォルト)

はリクエストの順序で各 RS に割り当てられます。これは、RS がダウンしている場合、デフォルトではポート 80 のみが検出されます。 RS が 402、403、503、504 エラーを報告すると、クライアントに直接エラーが返されます。 G (2) Weight (重み) RR と重み (デフォルトは RR+Weight) に基づいて、重みの重みは比例し、重みの値が大きいほどサーバーの不均一の問題を解決できます。パフォーマンスとリクエストの割り当て

(3) ip_hash

動的Webページセッション共有の問題を解決します

IPのハッシュ値が同じである限り、各アクセスリクエストはIPアドレスのハッシュ値に従って割り当てられます。 、同じサーバーに割り当てられます (lvs ロード バランシングの -p パラメーター、keepalived 構成のpersistence_timeout50)、このスケジューリング アルゴリズムは動的 Web セッション共有の問題を解決できますが、場合によってはリクエストの不均一な分散につながる可能性があります。ヒント: 国内で使用するため、すべて nat モードであるため、ip_hash は他のアルゴリズムでは使用できません。つまり、重み付けやバックアップは使用できません。バックエンドサーバーの応答時間に応じて設定します。このアルゴリズムは、nginx 自体が公平にサポートしていないページ サイズと読み込み時間に応じて、上記よりもインテリジェントに負荷分散を実行します。 nginx の upstrea_fair モジュールをダウンロードする必要があります

(5) url_hash (サードパーティ)

主にキャッシュサーバーで使用されます アクセスされた URL に応じてリクエストを割り当て、同じ URL が同じサーバーに送られるようにします。バックエンド サーバーがキャッシュ サーバーである場合は、ハッシュ ステートメントをアップストリームに追加する必要があります。 hash_method は、使用されるハッシュ アルゴリズムです。

デメリット: マシンがダウンしている場合は困難になります。consistent_hash でこの問題を解決できます

バックエンドキャッシュサーバーの効率を向上させることができます。nginx 自体は url_hash をサポートしていないため、ハッシュ ソフトウェアをダウンロードする必要があります

(6) minimum_conn

ロードバランシングのデプロイ方法:

ルート モード (推奨)

ブリッジ モード

サービス ダイレクト リターン モード

ラウンド ロビン バランシング:

ネットワークからの各リクエストは、1 から順番に内部サーバーに割り当てられます。 Nに移行し、再度開始します。このバランシング アルゴリズムは、サーバー グループ内のすべてのサーバーが同じハードウェアおよびソフトウェア構成を持ち、平均的なサービス リクエストが比較的バランスがとれている状況に適しています。

重みラウンドロビンバランシング:

サーバーのさまざまな処理能力に応じて、各サーバーに異なる重みが割り当てられ、対応する重みを持つサービスリクエストを受け入れることができます。たとえば、サーバー A の重みは 1、B の重みは 3、C の重みは 6 になるように設計されている場合、サーバー A、B、および C はサービスの 10%、30%、および 60% を受け取ることになります。それぞれリクエストします。このバランシング アルゴリズムにより、高性能サーバーの使用率が向上し、低パフォーマンス サーバーの過負荷が防止されます。

ランダムバランシング:

ネットワークからのリクエストを複数の内部サーバーにランダムに分散します。

重みランダムバランシング:

このバランシングアルゴリズムは重み付きラウンドロビンアルゴリズムに似ていますが、リクエスト共有を処理する際のランダム選択プロセスです

4

、ロードバランシングとリバースとの違いproxy

リバースプロキシは負荷分散を実現する方法です。

まずリバース プロキシについて話しましょう。ユーザーがリクエストを行うと、まずプロキシ サーバーにリクエストを送信し、次にプロキシ サーバーがアルゴリズムに基づいて実サーバーにリクエストを送信し、最後にリクエストをユーザーに返します。このアプローチにより、第一にセキュリティが向上し、第二に、複数の実サーバーを通じてユーザー要求が共有され、負荷分散が実現されます。

負荷分散について話しましょう。負荷分散の登場は、水平方向の拡張によって単一サーバーの負荷を可能な限り軽減することです。一般的な WEB レベルの負荷分散ソリューションには、ハードウェア F5、Nginx プロキシ、LVS、さまざまなクラウド プロバイダーの負荷分散サービス (AWS の ELB サービスなど) などが含まれます。負荷分散の背後に接続されているのは、通常、実際にサービスを提供するサーバーです。たとえば、ELB サービスを通じてトラフィックを均等に共有できるため、スタンドアロン サーバーの負荷が軽減されます。

負荷分散層が追加されたため、特定のソリューションを使用するだけでは依然として単一の問題点を考慮する必要があります。負荷分散を担当するサーバーが負荷に耐えられずダウンし、サービスが利用できなくなりました。したがって、Nginx と LVS は、プロキシ層サーバーの問題にタイムリーに対処するために、フェイルオーバーと障害アラームを有効にするために複数のプロキシを構成しようとします。 ELB は Amazon が提供するサービスであり、その実装には数百、場合によっては数千のマシンがあるため、プロキシ クラスターと考えてください。

セッション共有の実装方法: まず、サイトがマシン上に保存されていると仮定すると、セッションが存在するため、この問題は存在しません。データはこのマシン上で、負荷分散を使用してリクエストを別のマシンに分散するとどうなるでしょうか?この時点では、クライアントのセッション ID に問題はありませんが、ユーザーの 2 つのリクエストが 2 つの異なるマシンに送信され、そのセッション データがいずれかのマシンに存在すると仮定すると、セッションが切断される状況が発生します。データを取得できないため、セッション共有が問題になります

1. NFS ベースのセッション共有

2. データベースベースのセッション共有

3. Cookie ベースのセッション共有

4. キャッシュ (Memcache) ベースのセッション共有

5. セッションのコピー

変数の範囲:

グローバル変数、ローカル変数。

圧縮ファイルの作成:

zip、gzip、bzip2、tar Zcvf;

varchar20

中国語の文字は何文字まで保存できますか? Y まず、MySQL のバージョンを確認します

下 下 4.0 以下では、Varchar (20) は 20 バイトを指します。UTF8 の漢字を保存する場合、保存できるのは 16 (各漢字の 3 バイト) のみです。

5.0 以上では、Varchar (20) を指します。数字、文字、または UTF8 漢字のいずれを保存するかに関係なく、20 文字 (各漢字は 3 バイト)、実際、20 文字を保存できる最善の方法は、独自のデータベースにテーブルを作成して、中国語の文字数を試してみることです。現在、MySQL はすでに 5.0 になっており、varchar(20) は 20 文字の漢字を保存できます

ログイン時にユーザー名とパスワードを保存する方法:

通常、クライアントにユーザー情報を保存するために Cookie を使用します。たとえば、7 日間ログインしないという要件があります。

保存する必要がある問題

次のページに進みます。

Cookie ストレージが実装されると、ユーザーはパスワードを入力せずに正常にログインできるようになります。

ファイアウォール コマンドを表示します (Centos7.0 より前):

ファイアウォールをオフにします: service iptables stop

クラスター化インデックスと非クラスター化インデックス:

1クラスター化インデックス

a) インデックス項目は実際のデータ レコードのストレージ ページに直接対応しており、これは「直接」であると言えます

b) 主キーはデフォルトでそれを使用します C) の並べ替えインデックス項目とデータ行の格納ソートはまったく同じです。この点を使用して、データの格納順序を変更したい場合は、主キーの方法を変更することができます (元の主キーを取り消して、フィールド、フィールド、または主キーを再構築するためのフィールドのセット)

d) テーブルにはクラスター化インデックスを 1 つだけ持つことができます (理由: データが保存されると、順序は 1 つだけになります)

2

、非クラスター化インデックス

a) データ ページは、チェーン内のマルチレベル ページ テーブルにアクセスした後にのみ検索できます。 b) テーブルには複数の非クラスター化インデックスを含めることができます。ログイン原理の説明

シングル サインオンの技術的実装メカニズム: ユーザーが初めてアプリケーション システム 1 にアクセスするとき、まだログインしていないため、ログインするために認証システムに誘導されます。ユーザーが提供したログイン情報に従って、システムは本人確認を実行し、検証に合格すると、ユーザーに認証資格情報 (チケット) を返します。ユーザーは、他のアプリケーションにアクセスするときにこのチケットを持参します。アプリケーション システムがリクエストを受信した後、チケットは、チケットの正当性を確認するために認証システムに送信されます。認証に合格した場合、ユーザは再度ログインすることなく、アプリケーションシステム2およびアプリケーションシステム3にアクセスできるようになる。

SSO を実装するには、次の主な機能が必要であることがわかります: a) すべてのアプリケーション システムは ID 認証システムを共有します

b) すべてのアプリケーション システムはチケット情報を識別して抽出できます。アプリケーション システムは、ログインしているユーザーを識別し、現在のユーザーがログインしているかどうかを自動的に判断することで、シングル サインオン機能を完成させることができます

上記の基本原則に基づいて、私は一連のシングル サインオン システム プログラムを設計しました。公式に作成された PHP 言語。サーバーが動作しています。このシステム プログラムは、システム全体の固有のセッション ID を持つチケット情報を媒体として使用して、現在のオンライン ユーザーのサイト全体の情報 (ログイン ステータス情報や処理が必要なユーザー全体のサイト情報) を取得します。

ログインプロセス:

1. 初めてサイトにログインします:

a) ユーザーは、ユーザー名とパスワードを入力し、ログイン要求をユーザー認証センターに送信します

b) 現在ログインしていますサイトへのアクセス、Web サービス経由のリクエスト、ユーザー認証センターがユーザー名とパスワードの正当性を検証します。検証に合格すると、現在のセッションのユーザーを識別するためのチケットが生成され、現在ログインしているサブサイトのサイト識別子がユーザー センターに記録され、最後に

用户 C) 取得したユーザーデータに戻り、子局に返す場合にチェックを入れます。検証が失敗した場合は、対応するエラー ステータス コードが返されます。

d) 前のステップの Web サービス リクエストによって返された結果に基づいて、現在のサブサイトはユーザーをログインします。ステータス コードが成功を示している場合、現在のサイトはこのサイトの Cookie を通じてチケットを保存し、記録します。ユーザーのログインステータス。ステータス コードが失敗を示している場合、ユーザーには対応するログイン失敗プロンプトが表示されます。

2. ログイン状態で、ユーザーは別のページに移動します:

a) サイトの Cookie またはセッションを通じてユーザーのログイン ステータスを検証します。検証に合格した場合は、通常のサイト処理プログラムに入ります。ユーザーセンターはユーザーのログインステータスを検証します(チケットをユーザー検証センターに送信します)。検証に合格した場合は、返されたユーザー情報に対してローカルログイン処理が実行されます。そうでない場合は、ユーザーがログインしていないことを意味します。

ログアウトプロセス:

a) 現在のログアウトにより、ユーザーのログインステータスと、ローカルに保存されたサイト全体のユーザーの一意のランダム ID がクリアされます

b) Web サービスインターフェイスを通じて、ユーザーの一意のサイト全体の記録がクリアされますランダムなID。 Web サービス インターフェイスが戻り、ログインしている他のサブサイトの JavaScript コードをログアウトし、このサイトがこのコードを出力します。 C) 対応局 W3C 規格の JS コードアクセススクリプト

常 常 常

consts

抽象メソッドとは: メソッド本体なし このメソッドは、キーワード abstract で変更された抽象メソッドです。

ajax

データ型、

パラメータ: 1.json 2.jsonp 3.xml 4.html。

レベル 3 リンケージ:

通話親クラス ID を呼び出す 再帰的

#auto_increment_increment=2

5.

セッション制御を使用する理由

http プロトコルはステートレス プロトコルですセッション ID によってユーザーを識別します

6.プロトコルとは何ですか

httpHTTPS ip

7 HTTP プロトコルとは何ですか

9 、とは何ですか? jsonp

クロスドメイン リクエストを行う 1 つの方法は、