Zusammenfassung der PHP Junior Classic-Interviewfragen (Teil 1)
isset bestimmt, ob die Variable definiert oder leer ist
变量存在返回ture,否则返回false 变量定义不赋值返回false unset一个变量,返回false 变量赋值为null,返回false
Leer: Bestimmen Sie, ob der Wert der Variablen leer ist. Alles, was in „false“ konvertiert werden kann, ist leer. Wenn es leer ist, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben.
"",0,"0",NULL,FALSE都认为为空,返回true 没有任何属性的对象都认为是空
is_null: Überprüfen Sie, ob der eingehende Wert (Wert, Variable, Ausdruck) null ist
定义了,但是赋值为Null 定义了,但是没有赋值 unset一个变量
Firefox Firebug
Chrome-Entwicklungstools
Emmet
Tool zur Überprüfung des JSON-Formats
Indizes sind eine besondere Art von Dateien (die Indizes in der InnoDB-Datentabelle sind ein integraler Bestandteil des Tabellenbereichs). enthalten die Referenzzeiger auf alle Datensätze in der Tabelle.
Die einzige Aufgabe eines normalen Index (ein durch das Schlüsselwort KEY oder INDEX definierter Index) besteht darin, den Zugriff auf Daten zu beschleunigen.
Normale Indizes ermöglichen, dass indizierte Datenspalten doppelte Werte enthalten. Wenn Sie feststellen können, dass eine bestimmte Datenspalte nur voneinander verschiedene Werte enthält, sollten Sie beim Erstellen eines Indexes für diese Datenspalte das Schlüsselwort UNIQUE verwenden, um diesen als eindeutigen Index zu definieren. Mit anderen Worten: Ein eindeutiger Index kann die Einzigartigkeit von Datensätzen sicherstellen.
Primärschlüssel ist ein spezieller eindeutiger Index. In einer Tabelle kann nur ein Primärschlüsselindex definiert werden. Der Primärschlüssel wird zur eindeutigen Identifizierung eines Datensatzes verwendet und wird mit dem Schlüsselwort PRIMARY KEY erstellt.
Ein Index kann mehrere Datenspalten abdecken, beispielsweise ein INDEX(SpalteA, SpalteB)-Index, bei dem es sich um einen gemeinsamen Index handelt.
Indizes können die Geschwindigkeit der Datenabfrage erheblich verbessern, verlangsamen jedoch die Geschwindigkeit des Einfügens, Löschens und Aktualisierens von Tabellen, da beim Ausführen dieser Schreibvorgänge die Indexdatei bedient werden muss.
Eine Transaktion ist eine geordnete Menge von Datenbankoperationen als Einheit. Eine Transaktion gilt als erfolgreich, wenn alle Vorgänge in der Gruppe erfolgreich sind. Auch wenn nur ein Vorgang fehlschlägt, ist die Transaktion nicht erfolgreich. Wenn alle Vorgänge abgeschlossen sind, wird die Transaktion festgeschrieben und ihre Änderungen werden auf alle anderen Datenbankprozesse angewendet. Wenn ein Vorgang fehlschlägt, wird die Transaktion zurückgesetzt und die Auswirkungen aller Vorgänge in der Transaktion werden aufgehoben. Die vier Hauptmerkmale von ACID sind Atomizität, Isolation, Konsistenz und Haltbarkeit.
XSS ist ein Cross-Site-Scripting-Angriff. Zunächst wird die Cross-Site-Scripting-Schwachstelle genutzt, um ein vom Angreifer erstelltes Skript in einem privilegierten Modus auszuführen, und dann wird das unsichere Activex-Steuerelement verwendet, um böswillige Verhaltensweisen auszuführen .
Verwenden Sie die Funktion htmlspecialchars(), um den übermittelten Inhalt zu filtern und die Sonderzeichen in der Zeichenfolge zu materialisieren.
Ursache der SQL-Injection: Während des Programmentwicklungsprozesses haben Sie nicht auf das standardmäßige Schreiben von SQL-Anweisungen und die Filterung von Sonderzeichen geachtet, was dazu geführt hat, dass der Client einige übermitteln konnte SQL-Anweisungen werden normalerweise über die globalen Variablen POST und GET implementiert.
Einstellungen „magic_quotes_gpc“ und „magic_quotes_runtime“ in der Konfigurationsdatei aktivieren
Beim Ausführen von SQL-Anweisungen verwenden addslashesSQL-Anweisungen konvertieren
Versuchen Sie beim Schreiben von SQL-Anweisungen, doppelte und einfache Anführungszeichen nicht wegzulassen.
Filtern Sie einige Schlüsselwörter in der SQL-Anweisung heraus: aktualisieren, einfügen, löschen, auswählen, *.
Verbessern Sie Ihre Benennungsfähigkeiten für Datenbanktabellen und -felder und benennen Sie einige wichtige Felder entsprechend den Merkmalen des Programms, sodass sie schwer zu erraten sind.
Register_globals in der PHP-Konfigurationsdatei auf „Aus“ setzen, globale Variablenregistrierung deaktivieren
Kontrolle Fehlermeldung, tun nicht durchsuchen Fehlerinformationen auf dem Server ausgeben und in die Protokolldatei schreiben.
Befehlsinjektion
Evaluierungsinjektion
Client-Skript-Einfügung
Cross Site Scripting (XSS)
SQL-Injection
Cross Site Request
Forgeries, CSRF)
Sitzungshijacking
Sitzungsfixierung
HTTP-Antwortaufteilung
Sicherheitslücke beim Hochladen von Dateien (Datei-Upload-Angriff)
Verzeichnisdurchquerung (Verzeichnisdurchquerung)
Remote-Inklusion-Angriff (Remote-Inklusion)
Dynamische Variable
Auswertung)
URL-Angriff (URL-Angriff)
Formularübermittlung gefälschtes Formular
Einreichungen
HTTP-Request-Spoofing-Angriff (gefälschte HTTP-Anfragen)
Duokou erfüllt Benutzeranfragen, indem er auf verschiedene Dateien zugreift. Ein Webprogramm mit nur einem Eintrag leitet alle Anfragen an eine Skriptdatei weiter.
Ein einziger Zugang erleichtert die Kontrolle von Berechtigungen und erleichtert Sicherheitsüberprüfungen bei http-Anfragen.
Nachteile: Die URL sieht nicht so schön aus, vor allem nicht suchmaschinenfreundlich.
Schneller Zugriff auf spezifische Informationen in der Datentabelle und Verbesserung der Abrufgeschwindigkeit
Erstellen Sie einen eindeutigen Index, um die Einzigartigkeit jeder Datenzeile sicherzustellen die Datenbanktabelle sex.
Beschleunigen Sie Tabellen und Verknüpfungen zwischen Tabellen
Wenn Sie Gruppierungs- und Sortierklauseln für den Datenabruf verwenden, können Sie die Gruppierung in Abfragen und die Sortierzeit erheblich reduzieren
Negative Auswirkung:
Das Erstellen und Verwalten von Indizes nimmt Zeit in Anspruch, und diese Zeit nimmt zu, wenn die Datenmenge zunimmt; nicht nur Tabellen müssen Daten belegen Speicherplatz: Jeder Index muss auch physischen Speicherplatz belegen. Wenn die Tabelle hinzugefügt, gelöscht oder geändert wird, muss der Index dynamisch verwaltet werden, was die Datenwartungsgeschwindigkeit verringert.
Erstellen Sie einen Index für die am häufigsten verwendeten Felder, um den Abfrageumfang einzugrenzen.
Indizes für häufig verwendete Felder erstellen, die sortiert werden müssen
Es ist nicht angebracht, einen Index für Spalten zu erstellen, die selten an Abfragen beteiligt sind, oder für Spalten mit vielen doppelten Werten.
Für einige spezielle Datentypen ist es nicht geeignet, Indizes zu erstellen, wie z. B. Textfelder (Text) usw.
Das wichtigste Merkmal, das es von anderen Datenbanken unterscheidet, ist sein Plug Tabellenspeicher-Engine vom Typ -in. Denken Sie daran: Die Speicher-Engine basiert auf Tabellen, nicht auf Datenbanken.
Der Unterschied zwischen InnoDB und MyISAM:
InnoDB-Speicher-Engine: Hauptsächlich für OLTP-Anwendungen (Online Transaction Processing, Online-Transaktionsverarbeitung) ist es die erste ACID mit vollständiger Unterstützung Transaktionsspeicher-Engine (die erste Speicher-Engine von BDB, die Transaktionen unterstützt, hat die Entwicklung eingestellt).
Funktionen:
Zeilensperrendesign, Unterstützung von Fremdschlüsseln
Unterstützung ähnlich wie bei Oracle Stilkonsistentes, nicht sperrendes Lesen (dh: Lesevorgänge generieren standardmäßig keine Sperren);
InnoDB platziert Daten in einem logischen Tabellenbereich, der von InnoDB selbst verwaltet wird. Ab der MySQL 4.1-Version kann jede InnoDB-Speicher-Engine-Tabelle in einer unabhängigen ibd-Datei gespeichert werden.
InnoDB verwendet MVCC (Multi-Version Concurrency Control: Lesen blockiert das Schreiben und Schreiben). blockiert das Lesen nicht), um eine hohe Parallelität zu erreichen, und implementiert die 4 Isolationsstufen des SQL-Standards (die Standardeinstellung ist REPEATABLE-Stufe).
InnoDB bietet außerdem hohe Leistung und hohe Verfügbarkeit Funktionen wie Puffer einfügen, doppeltes Schreiben, adaptiver Hash-Index und Vorauslesen;
InnoDB verwendet eine Cluster-Methode, um Daten in der Reihenfolge zu speichern Primärschlüssel (wenn der Primärschlüssel beim Erstellen der Tabelle nicht explizit angegeben wird, generiert InnoDB für jede Zeile eine 6-Byte-ROWID und verwendet diese als Primärschlüssel). Die InnoDB-Tabelle verfügt über drei versteckte Felder: Zusätzlich zu der oben erwähnten 6-Byte-DB_ROW_ID gibt es auch eine 6-Byte-DB_TX_ID (Transaktions-ID) und eine 7-Byte-DB_ROLL_PTR (die auf die Adresse des entsprechenden Rollback-Segments zeigt). Dies kann über den Innodb-Monitor gesehen werden;
Funktionen:
Unterstützt keine Transaktionen, unterstützt jedoch Tabellen und Volltextindizes. Die Betriebsgeschwindigkeit ist hoch;
Die MyISAM-Speicher-Engine-Tabelle besteht aus MYD und MYI, MYD wird zum Speichern von Datendateien und MYI zum Speichern von Indexdateien verwendet. Die MySQL-Datenbank speichert nur ihre Indexdateien und das Zwischenspeichern der Datendateien wird dem Betriebssystem selbst überlassen
Ab MySQL 5.0 unterstützt MyISAM standardmäßig 256T Einzeltabellendaten;Was ist zunächst einmal Cross-Join: Cross-Join, auch kartesisches Produkt genannt, bezieht sich auf den direkten Abgleich aller Datensätze in einer Tabelle mit allen Datensätzen in einer anderen Tabelle, ohne dass irgendwelche Bedingungen verwendet werden müssen.
Inner Join ist eine Querverbindung, bei der nur Datensätze, die die Bedingungen erfüllen, gemäß einer bestimmten Bedingung herausgefiltert werden. Datensätze, die die Bedingungen nicht erfüllen, werden nicht im Ergebnis angezeigt festgelegt, das heißt, innere Verknüpfungen verbinden nur übereinstimmende Linien.
Äußerer Join Die Ergebnismenge enthält nicht nur Zeilen, die die Join-Bedingungen erfüllen, sondern auch alle Datenzeilen
in der linken Tabelle, der rechten Tabelle oder beiden Tabellen Sie sind „Left Outer Join“, „Right Outer Join“ und „Full Outer Join“.
Linker äußerer Join, auch linker Join genannt, die linke Tabelle ist die Haupttabelle, alle Datensätze in der linken Tabelle werden in der Ergebnismenge angezeigt, und die Datensätze, die in der rechten Tabelle nicht übereinstimmen, müssen trotzdem angezeigt werden angezeigt werden, rechts werden die entsprechenden Feldwerte mit NULL gefüllt. Rechter äußerer Join, auch rechter Join genannt. Die rechte Tabelle ist die Haupttabelle und alle Datensätze in der rechten Tabelle werden im Ergebnissatz angezeigt. Left-Joins und Right-Joins sind austauschbar und MySQL unterstützt derzeit keine vollständigen Outer-Joins.
MyISAM, InnoDB, BDB (BerkeleyDB), Merge, Memory (Heap), Beispiel , Federated,
Archive, CSV, Blackhole, MaxDB und mehr als ein Dutzend Engines
Objektorientiert ist ein Entwurfsmuster eines Programms, das dazu beiträgt, die Wiederverwendbarkeit des Programms zu verbessern und die Programmstruktur klarer zu machen. Die Hauptmerkmale sind: Kapselung, Vererbung und Polymorphismus.
Fünf Grundprinzipien: Prinzip der Einzelverantwortung; Prinzip der offenen und geschlossenen Schnittstelle;
Statische Routen sind Routen, die durch Routing-Tabellen angegeben werden, die von Systemadministratoren entworfen und erstellt wurden. Es eignet sich für Netzwerke, in denen die Anzahl der Gateways begrenzt ist und sich die Netzwerktopologie nicht häufig ändert. Der Nachteil besteht darin, dass es sich nicht dynamisch an Änderungen der Netzwerkbedingungen anpassen kann. Wenn sich die Netzwerkbedingungen ändern, muss die Routing-Tabelle vom Netzwerkadministrator geändert werden.
Dynamisches Routing wird dynamisch erstellt, indem Routing-Protokolle den Inhalt von Routing-Tabellen in Echtzeit aktualisieren, indem sie ihre eigenen Routing-Informationen austauschen. Dynamisches Routing kann die Topologie des Netzwerks automatisch lernen und die Routing-Tabelle aktualisieren. Der Nachteil besteht darin, dass das Routing von Broadcast-Aktualisierungsinformationen viel Netzwerkbandbreite beansprucht.
Memcahce verwendet den LRU-Algorithmus, um abgelaufene Daten schrittweise zu löschen.
jQuery, Prototype, Dojo und MooTools.
Das Arbeitsprinzip von Ajax besteht darin, dass der angegebene Speicherort einer Seite den gesamten Ausgabeinhalt einer anderen Seite laden kann. Auf diese Weise kann eine statische Seite auch die zurückgegebenen Dateninformationen aus der Datenbank abrufen. Daher ermöglicht die Ajax-Technologie, dass eine statische Webseite mit dem Server kommuniziert, ohne die gesamte Seite zu aktualisieren, wodurch die Wartezeit des Benutzers verkürzt wird, wodurch der Netzwerkverkehr reduziert und die Freundlichkeit des Kundenerlebnisses verbessert wird.Bei der Verwendung von Ajax handelt es sich um eine Datenübertragung, also um die Rückgabe von Daten vom Server an den Client. Der Server und der Client verwenden unterschiedliche Skriptsprachen, um Daten zu verarbeiten, was ein gemeinsames Datenformat,
XML und JSON sind die beiden am häufigsten verwendeten, und JSON ist einfacher als XML. 33. Überblick über den Transaktions-Rollback-Mechanismus in Myql
Wenn Sie zwei verschiedene Tabellen in der Datenbank gleichzeitig ändern möchten und es sich nicht um eine Transaktion handelt, kann beim Ändern der ersten Tabelle während des Änderungsprozesses der zweiten Tabelle eine Ausnahme auftreten und diese nicht geändert werden Zu diesem Zeitpunkt kann nur die zweite Tabelle geändert werden. Die beiden Tabellen befinden sich noch in ihrem unveränderten Zustand, während die erste Tabelle geändert wurde. Wenn Sie sie als Transaktion festlegen und die erste Tabelle geändert wird und die zweite Tabelle abnormal geändert wird und nicht geändert werden kann, kehren die erste Tabelle und die zweite Tabelle in den unveränderten Zustand zurück. Dies wird als Transaktions-Rollback bezeichnet.
Das obige ist der detaillierte Inhalt vonZusammenfassung der neuesten klassischen PHP-Interviewfragen (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!