PHP の基本的な面接の質問

不言
不言オリジナル
2018-04-26 14:44:341961ブラウズ

この記事では、PHP に関する基本的な面接の質問を紹介します。興味のある方は、


csrf

とは:

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

2. ユーザー情報が確認された後、Web サイト A は Cookie 情報を生成してブラウザーに返します。ユーザーはウェブサイト A にログインします。リクエストは通常​​どおりウェブサイト A に送信されます。

3. ユーザーがウェブサイト A を終了する前に、同じブラウザーでタブ ページを開いてウェブサイト B にアクセスします。ウェブサイト B はユーザーのリクエストを受信し、いくつかの攻撃的な性的コードを返し、サードパーティのサイト A へのアクセスリクエストを送信します。

5.ユーザーの知らない間にウェブサイト B に問い合わせます。ウェブサイト A は、リクエストが実際に B

によって開始されたことを認識していないため、ユーザー C の Cookie 情報に基づいて C の権限でリクエストを処理し、その結果、ウェブサイト B

PHP

から悪意のあるコードが実行されます。 MYSQL を使用した

トランザクション処理:

1. begin、rollback、commit を使用して実装しますトランザクションの開始トランザクションのロールバックを開始

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

2. set を直接使用して、 mysql

特 事の 4 つの性質: 原子性:

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

一貫性:

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

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

耐久性:

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

xss

防止方法:

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

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

union と Unionall の違い:

Unionall は重複排除を行いません

RBAC

ロールベースの権限制御:

5テーブル ユーザーテーブル、ロールテーブル、関数テーブル、および相互に関連するテーブル: ユーザーとロールのテーブル、ロールと関数のテーブル

redis

永続性:

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

サブテーブル:

データベースの負担を軽減し、クエリ時間を短縮します。

水平テーブルシャーディングで挿入された ID

が一意であることを確認するにはどうすればよいですか?

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

jquery

セレクター:

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

インライン要素とインライン要素

行内:
表示: インライン、ブロック、インラインブロック

違い:

ブロック、 ①常に新しい行で開始し、行全体を占有します。

② 高さ、行の高さ、マージンおよびパディングを制御できます

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

④ インライン要素やその他のブロック要素を収容できます。

Row、

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

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

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

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

グループクエリ

: orderby

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

:

年齢が20〜30歳で性別ごとにグループ化されているテーブルからカウント(性別)を選択します

ORM

オブジェクト リレーショナル マッピング (ORM) モードは、オブジェクト指向データベースとリレーショナル データベース間の不一致を解決する技術です

Linux

ビューポート :ブラシ選択したファイル:ビュープロセス:

through using out through out through out ' ' through ' through ' s ‐ ‐ ‐‐‐‐‐ netstat-ntlp � ポート使用状況 ·

Linux

View実行されたコマンドの数:history

file操作機能:

オープンファイルを開くファイルを取得

入个个数组fclose关闭关闭fwrite二进制文件用) file_get_contents() 文件文を一文字串に整形する

打开文件の几种方式:

Fopen(), file_get_contents()

読み取りと書き込み、追加

php

フォルダー削除コマンド

Unlink();

中国語文字列インターセプト:

mb_substr

... $encoding、Web ページのエンコード (utf-8、GB2312、GBK など)

D

とM

の違い:

Mは基本クラスをインスタンス化でき、Dはカスタムクラスをインスタンス化できます

table

インターレースカラー変更:

JQ を使用して、テーブル tr td の偶数と奇数を指定し、対応する奇数と偶数に異なる CSS スタイルを割り当てると、異なる背景を通じてインターレース色の変化効果を実現できます。

マウスが通過すると、JQは別途設定されたtrtd背景を呼び出し、マウスが通過すると背景色が変化します。serverの返品結果を待つことなく非同期に処理する。P:s z-index値が大きいほど、ob bunction:

ブラウザですが、出力バッファに保存されます。

「」 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年くらいはどうですか?

データベース内の特定のフィールドをクエリする

3 秒以内に 30 百万個のデータを取得するにはどうすればよいですか?どのようなインデックスを作成するか?

違いは次のとおりです。 1. 保存方法:

。 Redis の一部はハードディスクに保存されるため、データの永続性が保証されます。

2. データ サポートの種類: Redis は memecache よりもはるかに多くのデータ サポートを備えています。

3. 基礎となるモデルが異なります:

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

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

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

SKU

方法:

属性の仕様。

実際、SKU は商品テーブル、商品属性テーブル、商品テーブルの設定ファイルを含む商品の在庫単位です

tp

:

common/config.php

php タイプ::4つのタイプのスカラータイプ:标ブール(ブール)

整数

シングルケースモード:singletonモードの主要な機能「3つのプライベートと1つのパブリック」:プライベート静的カテゴリを保存する必要があるメンバー変数変数

コンストラクターは、オブジェクトの外部プログラムが単一のケースの重要性を失うことを防ぐために、プライベートとして宣言する必要があります。プライベートであるためには、クローン関数を宣言する必要があります。オブジェクトが複製されないようにするには、このインスタンスにアクセスするためのパブリック静的メソッド (通常は getInstance という名前) を提供する必要があります。これにより、一意のインスタンスへの参照が返されます。

20-30の男性と女性の数をクエリします:

//select count(sex) from table where age between 20 and 30group by sex

Select count(*) from table name where 20 歳から 30 歳までの年齢別のグループ

private (プライベート)

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

クラスのメンバーが public アクセス修飾子で宣言されている場合、そのメンバーにアクセスできます。外部コードによって操作されます。

private (プライベート)

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

protected (保護された)

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

mysql int

ストレージ:

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) 値渡し: 関数スコープ内の値への変更は外部では無視されます。関数

スルーの使用 スルー スルー スルー スルー スルー スルー アウト スルー アウト 一緒に スルー アウト 一緒に十分に十分な特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。

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

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

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

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

。文字列関数:

http1.0

と http1.1

の違い:

HTTP1.0 は、ブラウザがサーバーとの一時的な接続のみを維持することを規定しています。ブラウザの各リクエストは、サーバーとの TCP 接続を確立する必要があります。サーバーは、各クライアントを追跡したり、過去のリクエストを記録したりすることはありません。

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

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

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

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

1. 異なるスコープ: グローバル変数のスコープはプログラム全体ですが、ローカル変数のスコープは現在の関数やループなどです。 2 . メモリ 異なる保存方法: グローバル変数はグローバルデータ領域に保存され、ローカル変数はスタック領域に保存されます 3. 異なるライフタイム: グローバル変数のライフタイムはメインプログラムのライフタイムと同じであり、破棄されます。プログラムが破棄されると、ローカル変数は関数内またはループ内に保存され、関数が終了するかループが終了すると存在しなくなります

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

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

最初: コンテンツ指向の最適化

1. HTTP リクエストを削減します

2. DNS ルックアップを削減します 3. リダイレクトを回避します

4. A を使用しますjax キャッシング

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. 互換モード

ポート番号の設定方法

nginx.conf で 2 つを設定します。各サーバーには異なるポート番号があります。

jq

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

変数変数とは:

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

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

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

netstat –apn chmod chown chgrp

プロセスの表示

Top pa aux|grep

全員が実行を追加 権限:

chmod-x

Mysqlマスタースレーブコピー:

ライブラリからの 2 つのスレッド、1 つの I/O スレッド、および 1 つの SQL スレッド)fileは、使用を使用して使用します

showmaster status;

startsalve;

GRANTREPLICATIONSLAVE,RELOAD,SUPER ON * " ql_backup',

master_password='123456',

master_log_file=' mysql -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 エラーを報告すると、クライアントに直接エラーが返されます。 (2)重量(デフォルトはRR+重量)に基づいて、アクセスに比例しますサーバー構成に応じて設定される重みにより、不均一なサーバーパフォーマンスとリクエスト割り当ての問題を解決できます

(3) ip_hash

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

各アクセスリクエストはIPのハッシュ値に従って割り当てられますIP のハッシュ値が同じである限り、同じサーバーに割り当てられます (lvs ロード バランシングの -p パラメーター、keepalived 構成のpersistence_timeout50)。このスケジューリング アルゴリズムは、動的な Web セッション共有の問題を解決できます。ただし、場合によってはリクエストが不均等に分散される可能性があります。 ヒント: 国内での使用のため、すべてが nat モードであるため、ip_hash は他のアルゴリズムでは使用できません。つまり、重み付けやバックアップは使用できません。

(4) 公平 (サードパーティ) バックエンドサーバーの応答時間に応じて設定するこのアルゴリズムは、上記よりもインテリジェントに負荷分散を実行できます。 nginx自体はfairをサポートしていません。nginxのupstrea_fairモジュールをダウンロードする必要があります

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

主にキャッシュサーバーで使用されます

アクセスされたURLに応じてリクエストを割り当てます。同じ URL が同じサーバーに送信されるようにするため、バックエンド サーバーがキャッシュ サーバーである場合は、サーバー ステートメントに重みなどの他のパラメータを記述することはできません。使用されるハッシュ アルゴリズムです。

欠点: マシンがダウンしている場合、Consistent_hash でこの問題を解決することは困難です

。url_hashを持っているURLは、URLにURLにURLにURLにURLにURLにURLからURLにURLにURLにURLにURLにURLに、urlをurl、url to urlをurlにします

3

、負荷分散:

負荷分散導入方法:

ルーティングモード (推奨) ブリッジモード

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

ネットワークからのすべてのリクエストは順番に内部サーバーに割り当てられ、 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中国語の文字は何文字まで保存できますか?

まず mysql のバージョンを決定する必要があります

4.0 以下、varchar(20) は 20 バイトを参照します。UTF8 の中国語文字を保存する場合、保存できるのは 16 バイトのみです (各漢字は 3 バイトです)

5.0 以降。 、varchar(20) は、数字、文字、または UTF8 漢字 (各漢字は 3 バイト) のいずれであっても、20 文字を格納できることを意味します。実際に、中国語を何文字まで保存できるかを試してみましょう。 MySQL 5.0 がリリースされたので、varchar(20) は 20 文字の漢字を保存できるようになりました

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

通常、私たちは Cookie を使用します ユーザー情報7 日間ログイン不要のシステムなど、クライアントに保存されます。

保存する必要がある問題

次のページに進みます。

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

ファイアウォールを表示するコマンド:

service iptables stop

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

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

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

ストレージの順序を変更したい場合、ソートはデータ行のストレージソートとまったく同じです。

d) テーブルには、主キーを変更できます (元の主キーをキャンセルし、主キーの要件を満たす別のフィールドまたはフィールドのグループを見つけて、主キーを再構築します)。 1 つのクラスター化インデックス (理由: データが保存されると、順序は 1 つだけになります)

2

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

a) 「直接アクセス」することはできませんが、アクセスすることは可能ですデータ ページを見つける前にチェーン内のマルチレベル ページ テーブルを作成します

b) テーブルには複数の非クラスター化インデックスを含めることができます

シングル サインオン:

1. ログイン原理の説明

技術シングルサインオンの実装メカニズム: ユーザーが初めてアプリケーションシステム 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 つの方法は、