1.フロントエンド、バックエンド、データベースからそれぞれWebプロジェクトのパフォーマンスの最適化について説明します
フロントエンドの最適化:
1.スプライト画像の作成などのhttpリクエストを減らします
2. HTMLとCSSはページの上部に配置され、javascriptはページの下に配置されます。jsはHTMLとCssよりも読み込みが遅いため、不完全なページ表示、パフォーマンスの低下を防ぐために、最初にhtmlとcssを読み込む必要があります。と貧弱なユーザーエクスペリエンス。
バックエンドの最適化:
1.キャッシュには、Webサイトのホームページの情報や製品の情報など、読み取りおよび書き込み時間が長く、変更がほとんどないデータが格納されます。アプリケーションがデータを読み取るとき、通常は最初にキャッシュからデータを読み取ります。アプリケーションが読み取れない場合、またはデータの有効期限が切れている場合、アプリケーションはディスクデータベースにアクセスし、データをキャッシュに再度書き込みます。
2.非同期モード、時間のかかる操作がある場合は、セロリなどの非同期を使用できます
3.サイクルと判断が多すぎないようにコードを最適化します。他に判断が複数ある場合は、最も可能性の高い状況を最初に判断します。
データベースの最適化:
1.可能であれば、データを高速の読み取り速度でredisに保存できます
2.インデックス、外部キーなどを作成します。
2.一般的なMYSQLデータストレージエンジンを一覧表示します
1. InnoDB:トランザクション処理、外部キー、クラッシュ修復機能、および同時実行制御をサポートします。トランザクションの整合性(銀行など)と同時実行制御(チケット販売など)に対して比較的高い要件が必要な場合は、InnoDBを選択することには大きな利点があります。データベースを頻繁に更新および削除する必要がある場合は、トランザクションのコミットとロールバックをサポートしているため、InnoDBを選択することもできます。
2. MyISAM:データをすばやく挿入し、使用するスペースとメモリを減らします。テーブルが主に新しいレコードの挿入と読み取りに使用される場合、MyISAMを選択すると高い処理効率を実現できます。また、アプリケーションの整合性と同時実行性の要件が比較的低い場合にも使用できます。
3.メモリ:すべてのデータがメモリ内にあり、データ処理速度は高速ですが、セキュリティは高くありません。高速な読み取りおよび書き込み速度が必要で、データセキュリティ要件が低い場合は、MEMOEYを選択できます。テーブルのサイズに関する要件があり、大きすぎるテーブルを作成することはできません。したがって、このタイプのデータベースは、比較的小さなデータベーステーブルでのみ使用されます。
2.同一生成元戦略を簡単に説明します
同一生成元戦略は、次の3つの要件を同時に満たす必要があります。
1)同じ合意
2)同じドメイン名
3)同じポート
http:www.test.comとhttps:www.test.comは異なるソースです-異なるプロトコル
http:www.test.comとhttp:www.admin.comは異なるソースです-異なるドメイン名
http:www.test.comとhttp:www.test.com:8081は異なるソースです-異なるポート
これらの要件のいずれかが満たされない限り、同一生成元ポリシーは満たされず、「クロスドメイン」が表示されます
3.2つの方法を使用してスペースを削除します
>>> a = 'welcome to MuMu`s Home page'
>>> b = a.replace(' ','')
>>> b
'welcometoMuMu`sHomepage'
>>> c = a.split(' ')
>>> c
['welcome', 'to', 'MuMu`s', 'Home', 'page']
>>> d = ''.join(c)
>>> d
'welcometoMuMu`sHomepage'
4.Intの使用法
>>> int('1.4')
Traceback (most recent call last):
File "<console>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.4'
>>> int(4)
4
>>> int('4')
4
5.楽観的ロックと悲観的ロックについて簡単に説明します
悲観的ロックは非常に悲観的です。データを取得するたびに、他の誰かがデータを変更すると思うので、データを取得するたびにロックして、誰かがデータを取得したい場合は、データが取得されるまでブロックします。ロックを取得します。このようなロックメカニズムの多くは、行ロック、テーブルロックなど、読み取りロック、書き込みロックなどの従来のリレーショナルデータベースで使用されており、これらはすべて操作前にロックされます。
楽観的ロックは非常に楽観的です。データを取得するたびに、他の人がデータを変更しないので、ロックされないと思います。ただし、更新時に、この期間中に他の人がデータを更新したかどうかを判断します。バージョン番号およびその他のメカニズム、楽観的ロックはマルチリードアプリケーションタイプに適しており、スループットを向上させることができます
6.Linuxコマンドのリダイレクト>および>>
Linuxでは、コマンドの実行結果をファイルにリダイレクトできます
本端末に表示する内容を指定したファイルに出力・追加します
>出力を示し、ファイルの元のコンテンツを上書きします
>>は追加を意味し、コンテンツは既存のファイルの最後に追加されます
使用例:
echoによって出力された情報を1.txtに保存しますechoHello Python> 1.txt
ツリーによって出力された情報を1.txtファイルツリーの最後に追加します>> 1.txt
7.楽観的ロックと悲観的ロックについて簡単に説明します
Pythonの関数パラメーターは参照によって渡されます(値によって渡されないことに注意してください)。不変型(数値型、文字列、タプル)の場合、従属変数は変更できないため、操作は変数自体に影響しません。変数型(リストディクショナリ)の場合、関数本体の操作により、入力されるパラメトリック変数が変更される場合があります。
8. 2つのリストの共通部分、相違点、および和集合を見つけます
>>> a=[1,2,3,4]
>>> b=[4,3,5,6]
>>> jj1=[i for i in a if i in b]
>>> jj1
交集:[3, 4]
>>> jj2=list(set(a).intersection(set(b)))
>>> jj2
交集:[3, 4]
>>> bj=list(set(a).union(set(b)))
>>> bj
并集:[1, 2, 3, 4, 5, 6]
>>> cj1=list(set(a).difference(set(b)))
>>> cj1
差集(相对于a):[1, 2]
>>> cj2=list(set(b).difference(set(a)))
>>> cj2
差集(相对于b):[5, 6]
9. 0〜100の乱数を生成します
>>> import random
>>> a=100*random.random()
>>> a
随机小数:47.56220877337418
>>> b=random.choice(range(1,100))
>>> b
随机整数:72
>>> c=random.randint(1,100)
>>> c
随机整数:53
10.一重引用符、二重引用符、三重引用符の使用法
1.一重引用符と二重引用符に違いはありませんが、一重引用符はShiftキーを押す必要がなく、入力が少し速くなります。文字列を表現する場合、エスケープ文字の代わりに二重引用符を一重引用符で使用できます。その逆も可能です。
「彼女は言った:「はい」。'または "彼女は言った:'はい。「」
2.ただし、一重引用符を使用して一重引用符を直接展開する場合は、次のようにエスケープする必要があります。
'彼女は言った:\'はい。\ ''
3. 3つの引用符で複数行を直接書き込むことができます。通常、大きな段落や長い文字列に使用されます。
"" "
hello
world
" ""
11.HTTPリクエストでのgetとpostの違い
1. GETリクエストはURLを介してデータを直接リクエストし、データ情報はブラウザアクセスなどのURLで直接表示できます。POSTリクエストはリクエストヘッダーに配置されますが、直接表示することはできません。
2. GET送信にはデータサイズの制限があり、通常は1024バイト以下であり、このステートメントは完全に正確ではありません。HTTPプロトコルはURLバイト長の上限を設定しませんが、ブラウザは何らかの処理を行います。したがって、長さはブラウザによって異なります。POSTリクエストはHTTPプロトコルでは説明されていません。一般的に、制限はありませんが、実際にはブラウザにもデフォルト値があります。一般に、少量のデータはGETを使用し、大量のデータはPOSTを使用します。
3. GETリクエストのデータパラメータはURLで公開されているため、セキュリティは比較的低くなります。たとえば、パスワードは公開できないため、GETリクエストは使用できません。POSTリクエストでは、リクエストパラメータ情報が配置されます。リクエストヘッダーに含まれるため、セキュリティが高くなり、使用できます。実際には、ログイン操作に関しては、セキュリティを強化するためにHTTPSリクエストを使用するようにしてください。
12.マルチスレッドとマルチプロセスについて簡単に説明します
処理する:
1.リソースの割り当てとスケジューリングのためのオペレーティングシステムの基本単位、および複数のプロセスは互いに独立しています
2.安定性が高く、プロセスがクラッシュしても他のプロセスには影響しませんが、プロセスは多くのリソースを消費し、開いているプロセスの数が制限されます
糸:
1. CPUリソースの割り当てとスケジューリングの基本単位。スレッドはプロセスの一部であり、プロセスよりも小さく、独立して実行できる基本単位です。プロセス内の複数のスレッドは、プロセスのすべてのリソースを共有できます。
2. IO操作が集中的である場合、高効率で複数のスレッドで実行できます。欠点は、スレッドがクラッシュすると、プロセスがクラッシュすることです。
応用:
IOを多用するマルチスレッドの使用、ユーザー入力、スリープ中に、実行のために他のスレッドに切り替えることができ、待機時間を短縮します
複数のプロセスをCPUに集中的に使用します。これは、IO操作とマルチスレッドがほとんどない場合、スレッドがグローバルインタープリターロックを共有するため、現在実行中のスレッドがGILを占有し、GILのない他のスレッドはマルチを十分に活用できないためです。コアCPU。