MySQL 完全折りたたみクエリ正規マッチングの詳細な説明

MySQL 完全折りたたみクエリ正規マッチングの詳細な説明

概要

前の章では、クエリのフィルター条件について学習しました。MySQL では、like % ワイルドカードを使用してあいまい一致を実行できることを学びました。同様に、他の正規表現のマッチングもサポートしています。正規表現のマッチングを実行するには、MySQL の REGEXP 演算子を使用します。使い方といいね

に似ていますが、はるかに強力であり、非常に特殊で複雑なルール マッチングを実現できます。 REGEXP コマンドを使用して正規表現が一致すると、一致が真であれば 1 が返され、一致が真でなければ 0 が返されます。デフォルトで一致するルールが追加されていない場合、REGEXP は '%%' と同等になります。前に NOT を追加すると (NOT REGEXP)、NOT LIKE と同じになります。

マッチングパターン分析

次の表は、REGEXP 演算子に適用できる正規表現一致パターンの一覧です。説明は比較的詳細です。後で 1 つずつテストします。


マッチングパターン

説明する

^

入力文字列の先頭と一致します。 REGEXP オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の後の位置にも一致します。

$

入力文字列の末尾に一致します。 REGEXP オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の前の位置にも一致します。

「\n」を除く任意の 1 文字に一致します。 '\n' を含む任意の文字を一致させるには、'[.\n]' のパターンを使用します。

[….]

文字のコレクション。含まれている文字のいずれかと一致します。たとえば、「[abc]」は「plain」の「a」と一致します。

[^...]

一致しない文字のセット。文字列に含まれていない任意の文字と一致します。たとえば、「[^abc]」は「plain」の「p」と一致します。

[ナノメートル]

[0-9]、[az]、[AZ]など、mとnの間の任意の1文字に一致します。

*

直前の部分式と 0 回以上一致します。たとえば、a* は「a」と「ab」に一致します。 * {0,} と同等です。

+

直前の部分式と 1 回以上一致します。たとえば、「a+」は「ab」や「abc」に一致しますが、「a」には一致しません。 + は {1,} と同等です。

?

直前の部分式と 1 回以上一致します。たとえば、「a?」は「ab」と「a」に一致します。 ? は {0,1} と同等です。

a1| a2|a3

a1 または a2 または a3 に一致します。たとえば、「z|food」は「z」または「food」に一致します。 「(z|f)ood」は「zood」または「food」に一致します。

{n}

n は負でない整数です。特定の回数一致します。たとえば、「o{2}」は「Bob」の「o」とは一致しませんが、「food」の 2 つの「o」とは一致します。

{n,}

直前の部分式 n を複数回一致します。たとえば、「o{2,}」は「food」だけでなく「foodood」にも一致します。

{n,m}

n と m はどちらも負でない整数です (n <= m)。少なくとも n 回、最大 m 回一致します。

{,m}

直前の部分式に0回からm回一致します

(…)

要素の組み合わせ、つまりパターン要素を1つの要素に結合すること。たとえば、(do)*は0個以上のdoに一致することを意味します。

一致するパターン ^

文字列の最初の部分を一致させます。これは s で始まる文字列と一致します。一致する場合は 1 を返します。一致しない場合は 0 を返します。テーブルに適用すると、一致するデータが返されます。

mysql> 'selina' REGEXP '^s' を選択します。
+----------------------+
| 'selina' 正規表現 '^s' |
+----------------------+
| 1 |
+----------------------+
セット内の1行

mysql> 'aelina' REGEXP '^s' を選択します。
+----------------------+
| 'aelina' 正規表現 '^s' |
+----------------------+
| 0 |
+----------------------+
セット内の1行
mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します where name REGEXP '^s';
+----+--------+-----+--------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+--------+-----+
| 3 | ソル | 21 | 厦門 | 0 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+--------+-----+
2行セット

一致するパターン $

文字列の末尾から一致します。これは、名前が d で終わるデータと一致します。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択し、名前 REGEXP 'd$' を指定します。
+----+-------+-----+--------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+--------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
+----+-------+-----+--------+-----+
セット内の1行

一致するパターン。

. は任意の 1 文字に一致します。次のスクリプトは、n の後に任意の文字が続くものに一致します。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します。 where name REGEXP 'n.';
+----+--------+-----+--------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+--------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+--------+-----+
3行セット

一致するパターン [...]

少なくとも 1 つの文字が条件を満たしていれば、括弧内の任意の 1 文字と一致することを意味します。次の例では、名前 brand と weng のみが b、w、z と一致できます。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します。 where name REGEXP [bwz];
1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の '[bwz]' 付近で使用する正しい構文を確認してください。
mysql> user2 から * を選択します。名前は REGEXP '[bwz]' です。
+----+-------+-----+--------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+--------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 4 | 翁 | 33 | 貴州 | 1 |
+----+-------+-----+--------+-----+
2行セット

一致するパターン [^...]

[^...] は文字列に含まれていない任意の文字と一致することを意味します。たとえば、「[^brand]」は「helen」の「h」、「sol」の「s」、「weng」の「w」、および「selina」の「s」に一致しますが、「brand」には一致しないため、フィルタリングされます。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します。名前は REGEXP '[^brand]' です。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
4行セット

マッチングモード[nm]

[0-9]、[az]、[AZ] など、m と n の間の任意の 1 文字と一致します。次のコードでは、a から e の間にない要素 "sol" はすべて除外されます。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します。名前は REGEXP '[ae]' です。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
4行セット

一致するパターン*

直前の部分式と 0 回以上一致します。たとえば、a* は「a」と「ab」に一致します。 * {0,} と同等です。 次の「e*g」は名前「weng」にのみ一致します。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
5行セット

mysql> user2 から * を選択します。名前は REGEXP 'e*g' です。
+----+------+-----+--------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+------+-----+--------+-----+
| 4 | 翁 | 33 | 貴州 | 1 |
+----+------+-----+--------+-----+
セット内の1行

マッチングモード+

直前の部分式と 1 回以上一致します。たとえば、「a+」は「ab」や「abc」に一致しますが、「a」には一致しません。 + は {1,} と同等です。以下のスクリプトに示すように、条件は 1 から n 個以上の組み合わせと d によって満たされ、"brand" と "annd" のみが条件を満たします。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
7行セット

mysql> user2 から * を選択します。 where name REGEXP 'n+d';
+----+-------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 7 | そして | 24 | 上海 | 1 |
+----+-------+-----+----------+-----+
2行セット

マッチングモード?

直前の部分式と 1 回以上一致します。たとえば、「a?」は「ab」と「a」に一致します。 ? は {0,1} と同等です。 e は 1 または 0 であり、l によって制限されるため、要件を満たすのは 3 つだけです。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
7行セット

mysql> user2 から * を選択します。名前が REGEXP 'e?l' の場合;
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
3行セット

パターンa1| a2|a3に一致します

a1 または a2 または a3 に一致します。たとえば、以下の「nn|en」はそれぞれ「anny」、「annd」および「helen」、「weng」に一致します。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
7行セット

mysql> user2 から * を選択します。name REGEXP 'nn|en';
+----+-------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+----------+-----+
| 2 | ヘレン | 20 | 泉州 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+-------+-----+----------+-----+
4行セット

パターン {n} {n,} {n,m} {,m} に一致します

n と m はどちらも負でない整数です (n <= m)。少なくとも n 回、最大 m 回一致します。 m は空で n 以上の任意の数を表し、n は空で 0 を表します。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
7行セット

mysql> user2 から * を選択します。名前 REGEXP 'n{2}';
+----+------+-----+---------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+------+-----+---------+-----+
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+------+-----+---------+-----+
2行セット

mysql> user2 から * を選択します。ここで、名前は REGEXP 'n{1,2}' です。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
6行セット

mysql> user2 から * を選択します。名前は REGEXP 'l{1,}' です。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 5 | セリーナ | 25 | NULL | 0 |
+----+--------+-----+----------+-----+
3行セット

パターンに一致します(...)

括弧の内容が abc であると仮定すると、abc 全体が一致し、このルールを満たすデータがフィルタリングされます。を例に挙げて、上で学んだ知識と組み合わせてみましょう。

mysql> user2 から * を選択します。
+----+--------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+--------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 2 | ヘレン | 20 | 泉州 | 0 |
| 3 | ソル | 21 | 厦門 | 0 |
| 4 | 翁 | 33 | 貴州 | 1 |
| 5 | セリーナ | 25 | NULL | 0 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+--------+-----+----------+-----+
7行セット

mysql> user2 から * を選択します。name REGEXP '(an)+';
+----+-------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+-------+-----+----------+-----+
3行セット

mysql> user2 から * を選択します。名前は REGEXP '(ann)+' です。
+----+------+-----+---------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+------+-----+---------+-----+
| 6 | アニー | 23 | 上海 | 0 |
| 7 | そして | 24 | 上海 | 1 |
+----+------+-----+---------+-----+
2行セット

mysql> user2 から * を選択します。名前は REGEXP '(an).*d{1,2}' です。
+----+-------+-----+----------+-----+
| ID | 名前 | 年齢 | 住所 | 性別 |
+----+-------+-----+----------+-----+
| 1 | ブランド | 21 | 福州 | 1 |
| 7 | そして | 24 | 上海 | 1 |
+----+-------+-----+----------+-----+
2行セット

特殊文字に一致します \\

正規表現言語は、特定の意味を持つ特殊文字で構成されています。 .、[]、|、*、+ などを見てきました。これらの文字をどのように一致させるのでしょうか?次の例では、特殊文字を一致させるために \\ を使用します。\\ は先頭文字、\\- は - の検索を意​​味し、\\. は . の検索を意​​味します。

mysql> user3 から * を選択します。
+----+------+-------+
| ID | 年齢 | 名前 |
+----+------+-------+
| 1 | 20 | ブランド |
| 2 | 22 | ソル |
| 3 | 20 | ヘレン |
| 4 | 19.5 | 日 |
+----+------+-------+
4行セット

mysql> select * from user3 where age REGEXP '[0-9]+\\.[0-9]+';
+----+------+------+
| ID | 年齢 | 名前 |
+----+------+------+
| 4 | 19.5 | 日 |
+----+------+------+
セット内の1行

要約する

1. 正規表現を使用してデータを一致させる必要がある場合は、REGEXP 演算子と NOT REGEXP 演算子 (LIKE と NOT LIKE に類似) を使用できます。

2. REGEXP はデフォルトでは大文字と小文字を区別しませんが、BINARY キーワードを使用して大文字と小文字を区別するように強制できます。WHERE NAME REGEXP BINARY '^[AZ]';

3. REGEXP はデフォルトで部分一致になり、一致する場合は true を返します。たとえば、SELECT 'A123' REGEXP BINARY '[AZ]' は 1 を返します。

4. () を使用して一致させる場合、括弧内のコンテンツ全体が一致します。たとえば、(ABC) は ABC 全体に一致する必要があります。

5. これは正規表現の基本の紹介にすぎません。より深く理解したい場合は、よく書かれている正規表現のチュートリアルを参照してください。

これで、MySQL クエリの正規マッチングの詳細な説明に関するこの記事は終了です。MySQL クエリの正規マッチングの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLで正規表現クエリを使用する方法
  • mysql 正規表現クエリに数字以外の文字のレコードが含まれています
  • MySql で正規表現クエリを使用する方法
  • MySql の基本クエリ、結合クエリ、サブクエリ、正規表現クエリの詳細な説明
  • 正規表現を使用した MySQL クエリ操作の典型的な例のまとめ
  • MySql 公式マニュアル学習ノート 2 MySql ファジークエリと正規表現

<<:  Docker ベースの GitLab 環境をデプロイする方法と手順

>>:  JS配列メソッドsome、every、findの使用に関する詳細

推薦する

Innodb システムテーブルスペースのメンテナンス方法

環境説明:実行中の MySQL 環境があります。以前の構成ファイルの設定が単純すぎたため (inno...

Linux コマンド sort、uniq、tr ツールの詳細な説明

並べ替えツールLinux の sort コマンドは、テキスト ファイルの内容を並べ替えるために使用さ...

flexとは何か、flexレイアウト構文の詳細なチュートリアル

フレックスレイアウトFlex は Flexible Box の略で、「柔軟なレイアウト」を意味します...

docker.service 起動エラーの詳細なトラブルシューティング

エラーを報告するには次のコマンドを実行しますsystemctl dockerを再起動しますエラーメッ...

VueのkeepAliveコンポーネントの機能と使い方の詳細な説明

序文面接中、多くの面接官は「keep-alive が何をするのか知っていますか?」と質問する際に V...

HTML 代替カラーコードを実現する n 通りの方法 サンプルコード

この記事では、主に HTML のサンプル コードを紹介し、次のように交互に色を変更する方法を共有しま...

サブクエリ最適化における MySQL 選択の実装

以下のデモはMySQLバージョン5.7.27に基づいています。 1. MySQLサブクエリ最適化戦略...

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....

CSS3アニメーションジャミングソリューションについての簡単な説明

なぜ詰まっているのでしょうか?言及しなければならない前提があります。フロントエンド開発者は皆、ブラウ...

MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。

インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...

Markodwnによるタイトル配置による同期スクロールのアイデアの詳細な説明

序文私が作成中の Markodwn エディターに同期スクロール機能を追加する必要があります。Baid...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

Vueは適切なスライドアウトレイヤーアニメーションを実装します

この記事では、適切なスライドアウトレイヤーアニメーションを実装するためのVueの具体的なコードを例と...

HTML チュートリアル: title 属性と alt 属性

XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...

nginx は画像表示の遅さとダウンロードの不完全さの問題を解決します

前面に書かれた最近、ある読者から、ブラウザからサーバーにアクセスすると、画像の表示が遅く、ブラウザに...