Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der PHP-Interviewfragen

Zusammenfassung der PHP-Interviewfragen

不言
不言Original
2018-04-27 11:31:292654Durchsuche

Dieser Artikel stellt hauptsächlich eine Zusammenfassung von PHP-Interviewfragen vor, die einen gewissen Referenzwert haben. Jetzt können Freunde in Not darauf verweisen

csrf Was es ist:

CSRF-Cross-Site-Request-Forgery,

1. Benutzer C öffnet den Browser, besucht die vertrauenswürdige Website A und gibt den Benutzernamen und das Passwort ein, um eine Anmeldung anzufordern Website A;

2. Nachdem die Benutzerinformationen überprüft wurden, generiert Website A Cookie-Informationen und gibt sie an den Browser zurück. Zu diesem Zeitpunkt meldet sich der Benutzer erfolgreich bei Website A an und kann normal Anfragen senden ;

3. Der Benutzer verlässt Website A nicht, bevor er eine TAB-Seite im selben Browser öffnet.

4 Nachdem Website B die Benutzeranfrage erhalten hat, wird sie zurückgegeben anstößiger Code und sendet eine Anfrage zum Zugriff auf die Website A eines Drittanbieters. ;

5. Nach Erhalt dieser anstößigen Codes überträgt der Browser die Cookie-Informationen und sendet eine Anfrage an Website A entsprechend der Anfrage von Website B ohne das Wissen des Benutzers. Website A weiß nicht, dass die Anfrage tatsächlich von B initiiert wurde

, daher verarbeitet sie die Anfrage mit den Berechtigungen von C basierend auf den Cookie-Informationen von Benutzer C, wodurch der Schadcode von Website B ausgeführt wird

Der Unterschied zwischen Sitzung und Cookie:

1. COOKIE existiert auf der Clientseite. SESSION existiert auf der Serverseite.

2. Die Standardspeichergröße von COOKIE beträgt 4 KB. Im Allgemeinen wird die Anzahl der COOKIES 20 nicht überschreiten, abhängig von den spezifischen Anforderungen.

3.SESSION wird standardmäßig als Datei gespeichert. Die Standardüberlebenszeit beträgt 24 Minuten, die anfängliche Speichergröße beträgt 1 MB und kann theoretisch unbegrenzt geändert werden. Kann durch Ändern der php.ini konfiguriert werden.

4.SESSION basiert standardmäßig auf COOKIE. Wenn SESSION geöffnet wird, wird session_id generiert und in COOKIE gespeichert.

5. SESSION COOKIE sind alle Sitzungssteuerungen. Weil unser http zustands- und verbindungslos ist. Daher ist eine Sitzungskontrolle erforderlich, um den Benutzer zu identifizieren.

php super globale Variable:

$GLOBALS $_SERVER $_REQUEST $_POST $_GET

$_FILES $_ENV $ _COOKIE         $_SESSION

PHP und MYSQL Transaktionsverarbeitung:

1. Verwenden Sie begin, rollback, commit, um

begin zu implementieren Starten Sie eine Transaktion

Rollback-Transaktions-Rollback

Transaktionsbestätigung festschreiben

2. Verwenden Sie set direkt, um den automatischen Festschreibungsmodus von MySQL zu ändern


4 Hauptmerkmale von Transaktionen (ACID):

Atomizität:

Transaktion ist die logische Arbeitseinheit der Datenbank, und sie hat entweder alles Änderungen werden ausgeführt oder keine werden ausgeführt.

Konsistenz:

Vor und nach einer Transaktion erfüllt der Zustand der Datenbank alle Integritätsbeschränkungen.

Isolierung:

Gleichzeitig ausgeführte Transaktionen sind isoliert und eine hat keinen Einfluss auf die andere. Wenn zwei Transaktionen gleichzeitig ausgeführt werden und dieselbe Funktion ausführen, stellt die Isolierung der Transaktionen sicher, dass jede Transaktion im System denkt, dass nur diese Transaktion das System verwendet. Diese Eigenschaft wird manchmal als Serialisierung bezeichnet. Um Verwechslungen zwischen Transaktionsvorgängen zu vermeiden, müssen Anforderungen serialisiert oder deserialisiert werden, sodass jeweils nur eine Anforderung für dieselben Daten vorliegt.

Durch Festlegen der Isolationsstufe der Datenbank können unterschiedliche Isolationseffekte erzielt werden.

Dauerhaftigkeit:

Nach Abschluss einer Transaktion bleiben die durch die Transaktion an der Datenbank vorgenommenen Änderungen in der Datenbank erhalten und werden nicht rückgängig gemacht.

xss

So verhindern Sie: XSS wird auch CSS genannt, der vollständige Name ist CrossSiteScript, Cross-Site-Scripting-Angriff

Verhindern: Skriptinjektion, Escape-Filter-Skript-Tags. Der Unterschied zwischen

Union

und Unionall: Union entfernt Duplikationen, Unionall entfernt keine Duplikationen

RBAC

Rollenbasierte Berechtigungssteuerung: 5 Tabellen Benutzertabelle, Rollentabelle, Funktionstabelle und miteinander verbundene Tabellen: Benutzer und Rollen Tabellen, Rollen- und Funktionstabellen

redis

Persistenz: Speicher-Snapshot (RDB) RDB-Persistenz kann in bestimmten Intervallen generiert werden. Point-in-Time-Snapshot des Datensatzes

Protokoll (AOF) AOF zeichnet dauerhaft alle vom Server ausgeführten Schreiboperationsbefehle auf und stellt den Datensatz wieder her, indem diese Befehle beim Serverstart erneut ausgeführt werden.

Untertabelle:

Reduzieren Sie die Belastung der Datenbank und verkürzen Sie die Abfragezeit.

Vertikale Tabellenaufteilung: Die vertikale Aufteilung wird durch Felder unterteilt.

Horizontale Tabellenaufteilung: Teilen Sie die Datenzeilen basierend auf den Werten einer oder mehrerer Datenspalten in zwei unabhängige Tabellen ein.

Wie kann sichergestellt werden, dass die eingefügte ID in der horizontalen Tabelle eindeutig ist?

Sie können einen neuen ID-Dienst erstellen und die Benutzer-ID in der Datenbank oder Redis speichern.

jAbfrageSelektor:

1. Element 2. Attribut 3.id 4. Klasse 5. Global.

Inline-Elemente und In-Block-Elemente

Inline: , ,
, ,

Im Block:

,

,

Konvertierung: display:inline,block,inline-block.

Unterschied:

Block,

①Immer in einer neuen Zeile beginnen und eine ganze Zeile einnehmen; Der Abstand kann gesteuert werden;

③Die Breite ist immer gleich als Browserbreite, unabhängig vom Inhalt;

④Es kann Inline-Elemente und andere Blockelemente aufnehmen.

Zeile,

① und andere Elemente befinden sich alle in einer Zeile

② Höhe, Zeilenhöhe sowie Rand- und Füllteile können geändert werden

③Die Breite bezieht sich nur auf den Inhalt

④Inline-Elemente können nur Text oder andere Inline-Elemente aufnehmen.

Gruppenabfrage

: orderby

Die Anzahl der Männer und Frauen in der Tabelle beträgt 20-30

: select count (Geschlecht) aus Tabelle, in der Alter zwischen 20 und 30 nach Geschlecht gruppiert ist

ORM

Der Object Relational Mapping (ORM)-Modus ist eine Technologie zur Beheben Sie die Diskrepanz zwischen objektorientierten und relationalen Datenbanken

Linux

Ansichtsport: Ausgewählte Datei ausmalen: Prozess anzeigen: Netstat-antu // Alle aktuellen TCP-Ports anzeigen·

Netstat-ntulp |grep80 //Alle 80 Port-Nutzung anzeigen·

Netstat-an |.Alle 3306 Port-Nutzung anzeigen·

Linux

Anzeigen, wie viele Befehle ausgeführt werden: Verlauf

Dateioperationsfunktion:

open Öffnen Sie die Datei

fstat Datei abrufen

file Die gesamte Datei in ein Array einlesen

fclose Datei schließen

fwrite In die Datei schreiben (sichere Verwendung als Binärdatei)

file_get_contents() liest die gesamte Datei in einen String

Mehrere Möglichkeiten, die Datei zu öffnen:

Fopen(), file_get_contents()

Lesen und schreiben, anhängen

php

Ordner löschenUnlink();

Abfangen chinesischer Zeichenfolgen:

mb_substr mb_substr($str,$start, $length, $encoding)

$str, die Zeichenfolge, die abgeschnitten werden muss

$start, der Startpunkt der Kürzung, der Startpunkt ist 0

$length, die Anzahl der abzufangenden Wörter

$encoding, Webseitenkodierung, z. B. utf-8, GB2312 , GBK

Der Unterschied zwischen D

und M: M instanziiert die Basisklasse, D kann die benutzerdefinierte Klasse instanziieren

Tabelle

ändert die Farbe in alternativen Zeilen: Verwenden Sie JQ, um die geraden und ungeraden Zahlen der Tabelle tr td zu identifizieren, und weisen Sie den entsprechenden ungeraden und unterschiedliche CSS-Stile zu Gerade Zahlen. Durch unterschiedliche Hintergründe können Sie die Farben in abwechselnden Zeilen ändern.

Wenn die Maus vorbeigeht, ruft JQ den trtd-Hintergrundsatz separat auf, sodass sich die Hintergrundfarbe ändert, wenn die Maus vorbeigeht

AjaxSynchronisation und Asynchronität:

Warten Sie synchron auf das Rückgabeergebnis vom Server und führen Sie dann andere Vorgänge aus

Linux

Alle Dateien anzeigen:

ls

Setzen Sie ein p auf ein anderes p:

Je größer der Z-Indexwert, desto höher geht er

ob

Funktion:

ob_start(); //Öffne einen Ausgabepuffer, alle Ausgabeinformationen werden nicht mehr direkt an den Browser gesendet, sondern im Ausgabepuffer gespeichert. Ob_clean(); //Löschen Sie den Inhalt des internen Puffers, ohne den Puffer zu schließen (keine Ausgabe). OB_END_CLEAN (); // Inhalt des internen Puffers löschen und Puffer schließen (keine Ausgabe).

Ob_get_clean(); //Den Inhalt des internen Puffers zurückgeben und den Puffer schließen. Entspricht der Ausführung von ob_get_contents() und ob_end_clean()

    ob_flush();     // Den Inhalt des internen Puffers an den Browser senden, den Inhalt des Puffers löschen und den Puffer nicht schließen.

Ob_end_flush(); //Sende den Inhalt des internen Puffers an den Browser, lösche den Inhalt des Puffers und schließe den Puffer.

Ob_get_flush(); // Den Inhalt des internen Puffers zurückgeben, den Puffer schließen und dann den Inhalt des Puffers freigeben. Entspricht ob_end_flush() und gibt den Pufferinhalt zurück.

Flush(); // Den von ob_flush freigegebenen Inhalt und den Inhalt, der nicht im PHP-Puffer ist, an den Browser ausgeben und ihn ausgeben.

Ob_get_contents(); //Den Inhalt des Puffers ohne Ausgabe zurückgeben.

OB_GET_LENGTH (); // Die Länge des internen Puffers wird zurückgegeben. Wenn der Puffer nicht aktiviert ist, gibt die Funktion false zurück.

Ob_get_level(); //Die Verschachtelungsebene des Ausgabepuffermechanismus zurückgeben.

ob_get_status(); //Status der Ausgabepuffer abrufen 🎜>

So geht's einen Einkaufswagen erstellen? Verfahren. .

1. Fügen Sie das Produkt in den Warenkorb

1. Fügen Sie zuerst einen Link auf der Seite hinzu

1. Holen Sie sich zuerst die Produkt-ID

2. Fragen Sie das Produkt anhand der ID aus der Datenbank ab.

3. Fügen Sie das Produkt zum Warenkorb hinzu a. Holen Sie sich den Warenkorb aus der Sitzung, wenn nicht, erstellen Sie einen neuen

Stellen Sie fest, ob das Produkt ist im Warenkorb Existiert? Wenn nicht, ist die Menge 1. Wenn sie vorhanden ist, wird die Menge um 1 erhöht

c.

Problem: Unser Einkauf verwendet eine HashMap-Sammlung, der Schlüssel ist eindeutig, die einzige Möglichkeit, den Schlüssel sicherzustellen, ist über den HashCode und die Equals-Methode

Also verwenden wir Beim Umschreiben müssen wir die Methoden hashCode und equal der Klasse Product neu schreiben. Beim Umschreiben müssen wir nur die ID-Werte vergleichen.

2. Warenkorb-Artikel anzeigen

Unser Warenkorb existiert in der Sitzung. Wir müssen nur die Cartt-Karte in der Sitzung auf der Seite cart.jsp sammeln und anzeigen.

1. Bearbeiten Sie die Artikel im Warenkorb

2. Sie können die Anzahl der Artikel im Warenkorb ändern, indem Sie auf das + oder - Zeichen

klicken

3. Wenn auf die Schaltfläche „+“ oder „-“ geklickt wird, rufen wir eine Funktion in Javascript auf. changeCount(); Über diese Funktion senden wir eine Anfrage an den Server, rufen die Daten im Warenkorb von der Sitzung auf der Serverseite ab und ändern die angegebene Anzahl von Artikeln im Warenkorb basierend auf den übermittelten Daten, bevor wir zu zurückkehren die Warenkorbseite zur Anzeige.


Wie erhalte ich das Verkaufsvolumen des letzten Monats? Drei Monate? Wie wäre es mit einem Jahr?

Ein bestimmtes Feld in der Datenbank abfragen


Wie rufe ich 300.000 Daten innerhalb von 3 Sekunden ab? Welcher Index soll erstellt werden?

Gewöhnlicher Index

Indextyp:

Gewöhnlicher Index, eindeutiger Index, Primärschlüsselindex, kombinierter Index

Redis

und Memecache ist: 1. Speichermethode:

Memecache speichert alle Daten im Speicher Stromausfall, es bleibt hängen, da die Daten die Speichergröße nicht überschreiten dürfen. Ein Teil von Redis wird auf der Festplatte gespeichert, was die Datenpersistenz gewährleistet.

2. Datenunterstützungstyp:

Redis bietet viel mehr Datenunterstützung als Memecache.

3. Das zugrunde liegende Modell ist anders:

Die neue Version von Redis baut direkt seinen eigenen VM-Mechanismus auf, denn wenn das allgemeine System Systemfunktionen aufruft, verschwendet es eine gewisse Zeit dafür umziehen und anfordern.

4. Verschiedene Betriebsumgebungen:

Redis unterstützt derzeit offiziell nur LINUX, sodass keine Unterstützung für andere Systeme erforderlich ist, sodass Sie Ihre Energie besser auf die Optimierung dieser Systemumgebung verwenden können Später schrieb ein Team von Microsoft einen Patch dafür. Aber es wird nicht auf den Kofferraum gelegt


SKU

Wie es geht: Attributspezifikationen.

Tatsächlich ist SKU die Produktinventareinheit, einschließlich der Produkttabelle, der Produktattributtabelle und der Produkttabelle

tp

Konfiguration Datei: common/config.php

php

Datentyp: Vier Skalartypen:

boolean ( Boolescher Typ)

Integer (Ganzzahltyp)

Float (Gleitkommatyp, auch Double genannt)

String (String)

Zwei zusammengesetzte Typen:

                                                                                                                                                                                        ; NULL (NULL)

Singleton-Modus:

Das Hauptmerkmal des Singleton-Modus ist „drei private und ein öffentliches“:

Erfordert eine Speicherklasse. Die private statische Mitgliedsvariable der einzigen Instanz

Der Konstruktor muss als privat deklariert werden, um zu verhindern, dass externe Programme ein Objekt neu erstellen und dadurch die Bedeutung des Singletons verlieren

Die Klonfunktion muss als privat deklariert werden, um zu verhindern, dass das Objekt neu ist. Das geklonte muss eine öffentliche statische Methode (normalerweise mit dem Namen getInstance) bereitstellen, um auf diese Instanz zuzugreifen und dadurch einen Verweis auf die eindeutige Instanz zurückzugeben.

Fragen Sie die Anzahl der Männer und Frauen zwischen 20 und 30 ab

:

//Wählen Sie die Anzahl (Geschlecht) aus der Tabelle aus, in der das Alter zwischen 20 und 30 nach Geschlecht gruppiert ist

Wählen Sie count(*) aus dem Tabellennamen aus, wobei das Alter zwischen 20 und 30 liegt, gruppieren Sie nach Alter.

Es gibt drei Zugriffsmodifikatoren in PHP

, nämlich:

öffentlich (öffentlich, Standard)

geschützt (geschützt)

privat (privat) Zugriffsberechtigungsänderung Umfang der Operatoren:

Wenn ein Mitglied einer Klasse mit einem öffentlichen Zugriffsmodifikator deklariert wird, kann auf das Mitglied durch externen Code zugegriffen und es manipuliert werden.

privat (privat)

Als privat definierte Mitglieder sind für alle Mitglieder innerhalb der Klasse sichtbar und unterliegen keinen Zugriffsbeschränkungen. Der Zutritt außerhalb der Klasse ist nicht gestattet.

protected (protected)

protected ist etwas komplizierter. Es wird als geschütztes Mitglied deklariert und ermöglicht nur den Zugriff durch Unterklassen dieser Klasse.

mysql intSpeicher:

Die Bigint-Speichergröße beträgt 8 Byte.

Die int-Speichergröße beträgt 4 Byte.

Die Smallint-Speichergröße beträgt 2 Byte.

tinyint Ganzzahlige Daten von 0 bis 255. Die Speichergröße beträgt 1 Byte. Umfang des

Cookies:

Domain selbst. Alle Domänennamen unter Domäne.

Hiermit wird eine Berechtigung für das Cookie festgelegt. Wenn die Domäne auf „leer“ gesetzt ist, wird als Domäne standardmäßig der aktuelle Domänenname verwendet und Subdomänen unter diesem Domänennamen können Cookies empfangen.

Wenn der Domänenparameter jedoch seinen Subdomänennamen festlegt, können nicht alle Domänennamen empfangen werden, einschließlich dieses Subdomänennamens.

LinuxBefehl zum Anzeigen des Inhalts der Protokolldatei

tail, cat, tac, head, echo

tail-f-Test. log

top Speicher anzeigen

df-lh Datenträger anzeigen

ps-a Alle Prozesse anzeigen

Konstante:

Verwenden Sie $ für Variablen:

Es ist nicht erforderlich, das $-Symbol beim Definieren und Verwenden von Konstanten zu verwenden.

Der Wert einer Konstante muss ein fester Wert sein und darf keine Variable, kein Klassenattribut, das Ergebnis einer mathematischen Operation oder eines Funktionsaufrufs sein.

Konstanten können auch in Schnittstellen definiert werden.

Abstrakte Klassen können nicht instanziiert werden. Abstrakte Klassen können statische Methoden haben. In abstrakten Klassen kann es keine abstrakten Methoden geben.

Gewöhnliche Methoden, in der Klasse gespeichert, nur eine Kopie

Statische Methoden, auch in der Klasse gespeichert, nur eine Kopie

Der Unterschied ist:

Gewöhnliche Methoden erfordern zum Aufrufen ein Objekt, und $this muss gebunden werden. Das heißt, gewöhnliche Methoden müssen ein Objekt haben und das Objekt dann aufrufen lassen

Statische Methoden hingegen nicht Sie gehören zu jedem Objekt und müssen daher nicht gebunden werden.

Statische Mitglieder: Auf sie kann ohne Instanziierung zugegriffen werden Gehören nur zu dieser Klasse.

Klassenmitglieder: Eines ist in der Klasse definiert und das andere ist im Konstruktor definiert.

Der Unterschied zwischen Methoden und Funktionen:

Funktionen existieren alleine, während Methoden von Klassen abhängen und nur über Objekte aufgerufen werden können.

Ob Funktionen in Klassendateien definiert werden können: Nein

Wertübertragung und Wertreferenz:

(1) Von Wertübergabe: Alle Änderungen am Wert innerhalb des Funktionsumfangs werden außerhalb der Funktion ignoriert

(2) Übergabe als Referenz: Alle Änderungen am Wert innerhalb des Funktionsumfangs werden diese Änderungen auch außerhalb der Funktion widerspiegeln

(3) Vor- und Nachteile:

A: Bei der Wertübergabe muss PHP den Wert kopieren. Insbesondere bei großen Strings und Objekten kann dies ein kostspieliger Vorgang sein.

B. Bei der Referenzübergabe ist kein Kopieren des Werts erforderlich, was sich sehr positiv auf die Leistungsverbesserung auswirkt.

Verhindern Sie die wiederholte Übermittlung von Bestellungen:

1. Verwenden Sie JS, um die Schaltfläche zu deaktivieren, nachdem Sie einmal darauf geklickt haben. Durch die Verwendung dieser Methode können mehrere Klicks verhindert werden.

2. Legen Sie den Sitzungswert fest. Löschen Sie ihn, nachdem Sie ihn einmal übermittelt haben. Wenn kein Sitzungswert vorhanden ist, lassen Sie die Übermittlung nicht zu.

Es gibt 3 Cookies das Gleiche

String-Funktionen:

strlen();strpos();echo();implode();trim(); usw.,,

String-Umkehrfunktion:

strrev, mb_string;

Der Unterschied zwischen http1.0 und http1.1:

HTTP1.0 schreibt vor, dass der Browser und der Server nur eine kurzfristige Verbindung aufrechterhalten müssen. Bei jeder Anfrage des Browsers muss der Server die TCP-Verbindung sofort trennen die Anfrageverarbeitung,

Der Server verfolgt nicht jeden Client und protokolliert auch keine vergangenen Anfragen.

HTTP1.1 unterstützt dauerhafte Verbindungen. Über eine TCP-Verbindung können mehrere HTTP-Anfragen und -Antworten übertragen werden, wodurch der Verbrauch und die Verzögerung beim Herstellen und Schließen von Verbindungen reduziert werden.

HTTP1.1 ermöglicht es dem Client auch, die nächste Anfrage zu stellen, ohne auf die Rückgabe des Ergebnisses der vorherigen Anfrage zu warten, aber der Server muss die Antwortergebnisse in der Reihenfolge zurücksenden, in der die Client-Anfrage empfangen wird ,

Um sicherzustellen, dass der Client den Antwortinhalt jeder Anfrage unterscheiden kann, wird dadurch auch die für den gesamten Download-Prozess erforderliche Zeit erheblich reduziert

HTTP1.0 unterstützt das Host-Request-Header-Feld nicht .

H Das Host-Request-Header-Feld wurde in TTP1.1 hinzugefügt.

Der Unterschied zwischen globalen Variablen und lokalen Variablen:

1. Unterschiedliche Bereiche: Der Bereich globaler Variablen ist das gesamte Programm, während der Bereich lokaler Variablen das gesamte Programm ist aktuelle Funktion Oder Schleife usw.

2. Die Speicherspeichermethoden sind unterschiedlich: Globale Variablen werden im globalen Datenbereich und lokale Variablen im Stapelbereich gespeichert

3. Die Der Lebenszyklus ist unterschiedlich: Der Lebenszyklus globaler Variablen und der Hauptvariablen ist dasselbe wie das Programm. Lokale Variablen befinden sich innerhalb der Funktion oder innerhalb der Schleife und sind nicht mehr vorhanden, wenn die Funktion beendet wird Die Schleife wird beendet

4. Die Verwendung ist unterschiedlich: Globale Variablen werden in jedem Teil des Programms verwendet, nachdem sie deklariert wurden. Teile können verwendet werden, lokale Variablen können jedoch nur lokal verwendet werden. Innerhalb der Funktion werden lokale Variablen zuerst vor globalen Variablen verwendet

. Zu beachten ist, dass lokalen Variablen nicht der Wert einer globalen Variablen mit demselben Namen zugewiesen werden kann.

Frontend-Optimierung:

Erstens: Inhaltsorientierte Optimierung

1. HTTP-Anfragen reduzieren

2. DNS reduzieren Suchen

3. Umleitung vermeiden

4. Ajax-Cache verwenden

5. Komponenten verzögert laden

6. Komponenten vorladen

7 . Reduzieren Sie die Anzahl der DOM-Elemente

8. Teilen Sie Komponenten in mehrere Domänen auf

9. Minimieren Sie die Anzahl der Iframes

10. Erhalten Sie keine http 404-Fehler

Zweitens: Für Server

1. Cookies minimieren

2. Domänennamenunabhängigkeit für Webkomponenten verwenden

Was ist Cache Avalanche?

Wenn der Cache-Server neu gestartet wird oder eine große Anzahl von Caches in einem bestimmten Zeitraum ausfällt, wird auch das Back-End-System (z. B. die Datenbank) stark unter Druck gesetzt scheitert.

Wie kann man es vermeiden?

1: Steuern Sie nach Ablauf des Caches die Anzahl der Threads, die die Datenbank lesen und in den Cache schreiben, indem Sie Sperren oder Warteschlangen verwenden. Beispielsweise darf nur ein Thread Daten abfragen und Cache für einen bestimmten Schlüssel schreiben, während andere Threads warten.

2: Legen Sie unterschiedliche Ablaufzeiten für verschiedene Schlüssel fest, um die Cache-Ungültigmachungszeit so gleichmäßig wie möglich zu gestalten.

3: Erstellen Sie einen Cache der zweiten Ebene. A1 ist der Original-Cache und A2 ist der Kopier-Cache. Wenn A1 ausfällt, können Sie auf A2 zugreifen ist auf Langzeit eingestellt (dieser Punkt ist ergänzend)

tpRouting-Modus:

1. Normalmodus 2. Rewrite-Modus 3. Kompatibilitätsmodus


niginxSo konfigurieren Sie die Portnummer:

Konfigurieren Zwei dienen in dieser nginx.conf, jede hat eine andere Portnummer.

jqZweite Zeile der Tabelle abrufen Tag:

$(tr:eq(1))

Was sind variable Variablen:

Variable Variablen ermöglichen es uns, den Namen einer Variablen dynamisch zu ändern. Verwenden Sie den Wert einer Variablen als Namen einer anderen Variablen.

Überprüfen Sie, ob der Port belegt ist:                                                                                                                                                               >Fortschritt anzeigen

Top pa aux|grep

Ausführungsberechtigungen für alle hinzufügen:

chmod-x

MySQLMaster-Slave-Replikation:

Generieren Sie zwei Threads aus der Bibliothek, einen I/O-Thread und einen SQL-Thread

i Der /o-Thread fordert das Binlog der Hauptbibliothek an und schreibt das erhaltene Binlog-Protokoll in die Relay-Log-Datei (Relay-Log)

Die Hauptbibliothek generiert einen Log-Dump-Thread, um die Slave-Bibliothek i/ bereitzustellen; o Thread übergibt binlog;

SQL-Thread liest das Protokoll in der Relay-Protokolldatei und analysiert es in bestimmte Vorgänge, um konsistente Master-Slave-Vorgänge und konsistente Daten zu erreichen; >

Für die Master-Slave-Replikation erforderliche Befehle:

showmaster status; Startsalve;

Stopsalve;

Flushprivileges ;

GRANTREPLICATIONSLAVE,RELOAD,SUPER ON *.*

TOmysql_backup@'%'

IDENTIFIEDBY '123456';

  CHANGEMASTER TOmaster_host = '127.0.0.1',

   master_user='mysql_backup',

   master_password='123456',

  log_file='mysql-bin .000001 ',master_log_pos = 3696;

Primärschlüsselkonfliktproblem lösen

Erstellen Sie eine Mastertabelle, und die IDs werden aus der Mastertabelle verteilt .

Master-Master-Replikation:

1. Konten jeweils auf zwei Maschinen autorisieren: Replikations-Slave gewähren, Datei auswählen, auf *.* to'repl'@'10.17.%'identifiziert durch 'xxxx' 2. Konfigurationsdatei/etc/my.cnf, wenn die Hauptbibliothekskonfigurationsdatei verwendet wird Fügen Sie grundsätzlich die folgenden Konfigurationselemente hinzu:

nginx

Reverse Proxy:

(1 ) rr-Abfrage (Standard) Es wird jedem RS gemäß der Anforderungsreihenfolge zugewiesen. Es ist dasselbe wie der rr-Algorithmus in lvs, nur wenn der RS ​​ausfällt Port 80 wird erkannt. Wenn der RS ​​402-, 403-, 503- und 504-Fehler meldet, werden diese direkt an den Client zurückgegeben.

(2) Gewicht (Gewicht)

Gewicht hinzufügen (Standard ist rr+Gewicht) Die Gewichtsabfrage ist proportional zum Zugriff mehr zugewiesen Darüber hinaus kann das Gewicht entsprechend der Serverkonfiguration festgelegt werden, wodurch das Problem der ungleichmäßigen Serverleistung und Anforderungszuweisung gelöst werden kann

(3) ip_hash

Lösen Sie das Problem dynamischer Webseiten Sitzungsfreigabe

Jede Zugriffsanforderung wird entsprechend dem Hash-Wert der IP-Adresse zugewiesen. Solange der Hash-Wert der IP gleich ist, wird sie demselben Server zugewiesen (Parameter -p). Dieser Planungsalgorithmus kann das Problem der dynamischen Webseitenfreigabe lösen, führt jedoch manchmal zu einer ungleichmäßigen Verteilung der Anforderungen Modus wird in China verwendet, Hash ist nicht für die Verwendung geeignet

ip_hash kann nicht mit anderen Algorithmen verwendet werden Das heißt, Sie können keine Gewichtung oder Sicherung vornehmen

(4) fair (Dritter). )

Es wird entsprechend der Antwortzeit des Back-End-Servers konfiguriert. Die Prioritätszuweisung mit kurzer Antwortzeit ist intelligenter als die oben genannten. Dieser Algorithmus kann den Lastausgleich entsprechend der Seitengröße und -auslastung intelligent durchführen Zeit. Nginx selbst unterstützt Fair nicht. Sie müssen das Upstrea_fair-Modul von Nginx herunterladen Ordnen Sie Anforderungen entsprechend der aufgerufenen URL zu, sodass dieselbe URL an denselben Server weitergeleitet wird. Der Effekt ist größer, wenn der Back-End-Server ein Cache-Server ist. Fügen Sie Hash-Anweisungen und Server-Anweisungen zum Upstream hinzu kann nicht eingeschrieben werden. hash_method ist der verwendete Hash-Algorithmus.

Nachteile: Wenn eine Maschine ausfällt, kann Consistent_hash dieses Problem lösen.

Es kann die Effizienz des Back-End-Cache-Servers verbessern. Nginx selbst unterstützt URL_Hash nicht muss heruntergeladen werden. Hash-Software

(6) least_conn

Mindestanzahl an Verbindungen, welches Gerät weniger Verbindungen hat, wird welchem ​​Gerät zugewiesen

(7) konsistenter_hash

Konsistenzalgorithmus

3, Lastausgleich:

Lastausgleich-Bereitstellungsmethode:

Routing-Modus (empfohlen)

Bridge-Modus

Service-Direct-Return-Modus

Round-Robin-Balancing:

Jede Anfrage aus dem Netzwerk wird dem internen zugeordnet Server, gehen Sie von 1 zu N und beginnen Sie dann erneut. Dieser Ausgleichsalgorithmus eignet sich für Situationen, in denen alle Server in der Servergruppe über die gleiche Hardware- und Softwarekonfiguration verfügen und die durchschnittlichen Dienstanforderungen relativ ausgeglichen sind.

Gewichtungs-Round-Robin-Balancing:

Entsprechend den unterschiedlichen Verarbeitungskapazitäten des Servers werden jedem Server unterschiedliche Gewichtungen zugewiesen, damit er Dienste mit den entsprechenden akzeptieren kann Anzahl der Gewichte fragen. Beispiel: Die Gewichtung von Server A soll 1 betragen, die Gewichtung von B beträgt 3 und die Gewichtung von C beträgt 6. Dann erhalten die Server A, B und C 10 %, 30 % und 60 % des Dienstes Anfragen bzw. Dieser Ausgleichsalgorithmus sorgt dafür, dass Hochleistungsserver stärker ausgelastet werden und verhindert, dass Server mit geringer Leistung überlastet werden.

Zufälliger Ausgleich:

Anfragen aus dem Netzwerk nach dem Zufallsprinzip an mehrere interne Server verteilen.

Zufälliger Gewichtsausgleich:

Dieser Ausgleichsalgorithmus ähnelt dem gewichteten Round-Robin-Algorithmus, es handelt sich jedoch um einen zufälligen Auswahlprozess bei der Verarbeitung der Anforderungsfreigabe

4, der Unterschied zwischen Lastausgleich und Reverse-Proxy

Reverse-Proxy ist eine Methode, um einen Lastausgleich zu erreichen.

Lassen Sie uns zunächst über Reverse Proxy sprechen. Wenn der Benutzer eine Anfrage stellt, sendet er die Anfrage zuerst an den Proxyserver, und dann fordert der Proxyserver basierend auf dem Algorithmus den realen Server an und gibt sie schließlich an den Benutzer zurück. Dieser Ansatz verbessert erstens die Sicherheit; zweitens teilt er Benutzeranfragen über mehrere echte Server, um einen Lastausgleich zu erreichen.

Lassen Sie uns über den Lastausgleich sprechen. Das Aufkommen des Lastausgleichs besteht darin, den Druck auf einen einzelnen Server durch horizontale Erweiterung so weit wie möglich zu reduzieren. Zu den gängigen Lastausgleichslösungen auf WEB-Ebene gehören Hardware F5, Nginx-Proxy, LVS, Lastausgleichsdienste verschiedener Cloud-Anbieter (z. B. der ELB-Dienst von AWS) usw. Hinter dem Lastausgleich steht in der Regel der Server, der den Dienst tatsächlich bereitstellt. Beispielsweise kann der Datenverkehr über den ELB-Dienst gleichmäßig verteilt werden, wodurch der Druck auf den eigenständigen Server verringert wird.

Aufgrund der Hinzufügung der Lastausgleichsschicht muss bei der einfachen Verwendung einer bestimmten Lösung immer noch ein einziger Problempunkt berücksichtigt werden. Der für den Lastausgleich zuständige Server hielt dem Druck nicht stand, fiel aus und der Dienst war nicht verfügbar. Daher versuchen Nginx und LVS, mehrere Proxys zu konfigurieren, um Failover und Fehleralarme zu ermöglichen, um Probleme mit Proxy-Layer-Servern rechtzeitig zu beheben. ELB ist ein von Amazon bereitgestellter Dienst, dessen Implementierung Hunderte oder sogar Tausende von Maschinen umfasst. Stellen Sie sich ihn also einfach als Proxy-Cluster vor.

Wie man eine Sitzung durchführt

Teilen: Zunächst sollten wir klären, warum Wenn eine Freigabe erforderlich ist, vorausgesetzt, dass Ihre Site auf einem Computer gespeichert ist, besteht dieses Problem nicht, da sich die Sitzungsdaten auf diesem Computer befinden. Was aber, wenn Sie den Lastausgleich verwenden, um Anforderungen auf verschiedene Computer zu verteilen? Zu diesem Zeitpunkt gibt es kein Problem mit der Sitzungs-ID im Client. Unter der Annahme, dass die beiden Anforderungen des Benutzers an zwei verschiedene Computer gehen und seine Sitzungsdaten möglicherweise auf einem der Computer vorhanden sind, kommt es zu einer Situation, in der die Sitzung unterbrochen wird Daten können nicht abgerufen werden. Daher wird die Sitzungsfreigabe zu einem Problem

1. Sitzungsfreigabe basierend auf NFS

2. Sitzungsfreigabe basierend auf Datenbank

3. Sitzungsfreigabe basierend auf Cookie

4. Sitzungsfreigabe basierend auf Cache (Memcache)

5. Sitzungskopie

Umfang der Variablen :

Globale Variablen, lokale Variablen.

Komprimierte Dateien erstellen:

zip, gzip, bzip2, tar Zcvf;

varchar20

Wie viele chinesische Schriftzeichen können gespeichert werden? Zuerst müssen Sie die MySQL-Version ermitteln

Unter Version 4.0 bezieht sich varchar(20) auf 20 Bytes. Wenn chinesische UTF8-Zeichen gespeichert werden, können nur 16 gespeichert werden (3 Bytes pro chinesisches Zeichen)

Version 5.0 oder höher, varchar( 20) , bezieht sich auf 20 Zeichen, unabhängig davon, ob es sich um Zahlen, Buchstaben oder chinesische UTF8-Zeichen handelt (jedes chinesische Zeichen besteht aus 3 Bytes), 20

können tatsächlich in Ihrer eigenen Datenbank gespeichert werden . Versuchen wir, wie viele chinesische Zeichen in eine Tabelle eingefügt werden können. MySQL 5.0 kann jetzt 20 chinesische Zeichen speichern

Benutzername und Passwort So speichern Sie:

Im Allgemeinen verwenden wir Cookies, um Benutzerinformationen auf dem Client zu speichern, z. B. ein siebentägiges Login-freies System.

Wir legen beim Einloggen zunächst die Cookie-Parameter fest und speichern beim nächsten Sprung zur nächsten Seite,

Wir können zunächst feststellen, ob dort ein Cookie vorhanden ist ist ein Wert, wird direkt zur nächsten Seite gesprungen. Wenn kein Wert vorhanden ist, werden Sie aufgefordert, sich anzumelden.

Nach der Implementierung der Cookie-Speicherung können sich Benutzer erfolgreich anmelden, ohne ein Passwort einzugeben!

Firewall-Befehl anzeigen (vor Centos7.0):

Firewall-Status anzeigen : Status des Dienstes iptables

Firewall einschalten: Dienst iptables starten

Firewall ausschalten: Dienst iptables stoppen

Clustered-Index und Nicht-Clustered-Index:

1. Clustered-Index

a) Ein Indexelement entspricht direkt der Speicherseite des tatsächlichen Datensatzes, was gesagt werden kann „direkt“ sein

b) Der Primärschlüssel verwendet ihn standardmäßig

c) Die Sortierung der Indexelemente stimmt vollständig mit der Speichersortierung der Datenzeilen überein. Dies wird ausgenutzt, wenn Wenn Sie die Speicherreihenfolge der Daten ändern möchten, können Sie den Primärschlüssel ändern (den Originalschlüssel rückgängig machen). Wenn ein Primärschlüssel vorhanden ist, suchen Sie ein anderes Feld oder eine Gruppe von Feldern, die auch die Anforderungen des Primärschlüssels erfüllen können, und erstellen Sie den Primärschlüssel neu Schlüssel)

d) Eine Tabelle kann nur einen Clustered-Index haben (Grund: Sobald die Daten gespeichert sind, kann es nur eine Reihenfolge geben) )

2, nicht gruppierter Index

a) Es kann nicht „direkt zugegriffen“ werden und kann auf mehrere Objekte in einer Kette zugreifen. Erst nach dem Nivellieren der Seitentabelle kann die Datenseite

gefunden werden Klicken Sie hier, um sich anzumelden:

1. Beschreibung des Anmeldeprinzips

Technischer Implementierungsmechanismus von Single Sign-On: Wenn der Benutzer zum ersten Mal auf das Anwendungssystem 1 zugreift Da er sich noch nicht angemeldet hat, führt das Authentifizierungssystem anhand der vom Benutzer bereitgestellten Anmeldeinformationen eine Identitätsüberprüfung durch - Das Ticket sollte an den Benutzer zurückgegeben werden. Wenn der Benutzer auf andere Anwendungen zugreift, wird das Ticket als Berechtigungsnachweis für seine eigene Authentifizierung verwendet. Nach Erhalt der Anfrage sendet das Anwendungssystem das Ticket zur Überprüfung an das Authentifizierungssystem die Gültigkeit des Tickets. Bei bestandener Verifizierung kann der Benutzer ohne erneute Anmeldung auf das Anwendungssystem 2 und das Anwendungssystem 3 zugreifen.

Es ist ersichtlich, dass zur Implementierung von SSO die folgenden Hauptfunktionen erforderlich sind:

a) Alle Anwendungssysteme teilen sich ein Identitätsauthentifizierungssystem;

b) Alle Anwendungssysteme kann Ticketinformationen identifizieren und extrahieren;

c) Das Anwendungssystem kann angemeldete Benutzer identifizieren und automatisch feststellen, ob sich der aktuelle Benutzer angemeldet hat, wodurch die Single-Sign-On-Funktion abgeschlossen wird

Basierend auf den oben genannten Grundprinzipien habe ich ein Single-Sign-On-Systemprogramm mit der PHP-Sprache entworfen und es in Betrieb genommen, um den Server offiziell zu generieren. Dieses Systemprogramm verwendet die Ticketinformationen mit der eindeutigen Sitzungs-ID des gesamten Systems als Medium, um die gesamten Site-Informationen des aktuellen Online-Benutzers (Anmeldestatusinformationen und andere benutzerweite Site-Informationen, die verarbeitet werden müssen) abzurufen.

Anmeldevorgang:

1. Melden Sie sich zum ersten Mal auf einer Website an:

a) Der Benutzer betritt Geben Sie den Benutzernamen + das Passwort ein und senden Sie eine Anmeldeanfrage an das Benutzerverifizierungszentrum

b) Wenn Sie derzeit auf der Website angemeldet sind, überprüft das Benutzerverifizierungszentrum über eine Webservice-Anfrage die Legitimität des Benutzernamens und des Passworts. Wenn die Überprüfung bestanden wird, wird ein Ticket generiert, um den Benutzer der aktuellen Sitzung zu identifizieren, und die Site-ID der aktuell angemeldeten Unterseite wird im Benutzercenter aufgezeichnet und schließlich

c) Geben Sie die erhaltenen Benutzerdaten und Tickets an die Unterseite zurück. Wenn die Überprüfung fehlschlägt, wird der entsprechende Fehlerstatuscode zurückgegeben.

d) Gemäß dem von der Webservice-Anfrage im vorherigen Schritt zurückgegebenen Ergebnis meldet die aktuelle Unterseite den Benutzer an: Wenn der Statuscode Erfolg anzeigt, speichert die aktuelle Seite das Ticket über das Cookie davon Die Site zeichnet den Anmeldestatus des Benutzers auf. Wenn der Statuscode einen Fehler anzeigt, erhält der Benutzer eine entsprechende Meldung zum Anmeldefehler.

2. Im angemeldeten Zustand geht der Benutzer zu einem anderen Unterabschnitt:

a) Überprüfen Sie den Anmeldestatus des Benutzers über das Cookie oder die Sitzung der Website: Wenn die Überprüfung bestanden wird, Geben Sie das normale Site-Verarbeitungsprogramm ein. Andernfalls überprüft das Benutzercenter den Anmeldestatus des Benutzers (sendet ein Ticket an das Benutzerüberprüfungscenter. Wenn die Überprüfung erfolgreich ist, wird die lokale Anmeldeverarbeitung für die zurückgegebenen Benutzerinformationen durchgeführt.) Der Benutzer ist nicht angemeldet.

Abmeldevorgang:

a) Die aktuelle Abmeldung löscht den Anmeldestatus des Benutzers für die Site und die eindeutige Zufalls-ID des lokal gespeicherten Benutzers für die gesamte Site

b) Löschen Sie über die Webservice-Schnittstelle die eindeutige Zufalls-ID, die auf der gesamten Site aufgezeichnet wurde. Die Webservice-Schnittstelle kehrt zurück, meldet den Javascript-Code anderer angemeldeter Unterseiten ab und diese Site gibt diesen Code aus.

c) js-Code greift auf das W3C-Standard-Abmeldeskript der entsprechenden Site zu

So definieren Sie Klassenkonstanten:

Const

Was ist eine abstrakte Methode:

Eine Methode ohne Methodenkörper ist Eine abstrakte Methode, verwenden Sie das Schlüsselwort abstract, um den Datentyp von

ajax, Parameter:

1 .json 2.jsonp 3.xml 4.html

Dreistufige Verknüpfung:

Unterklasse ruft übergeordnete Klasse auf ID rekursiv

Primärschlüsselkonflikt lösen Konfigurationsdateibefehl

#auto_increment_offset =1

#auto_increment_increment=2

5. Warum Sitzungssteuerung verwenden

Das http-Protokoll ist ein zustandsloses Protokoll, das Benutzer anhand der Sitzungs-ID identifiziert

6.Was sind die Protokolle

httpHTTPS ip

7 Was ist das HTTP Protokoll

Hypertext Transfer Protocol

8. Was sind XML und HTML;

XML ist Extensible Markup Language

HTML ist eine Hypertext-Auszeichnungssprache

9, was ist JSONP

Eine Möglichkeit, domänenübergreifende Anfragen zu stellen nutzt

10.yiiFramework-Widgets

Kleine Widgets werden grundsätzlich in Ansichten verwendet, und die Methode yiibaseWidget::widget() kann in der Ansicht aufgerufen werden, um Widgets zu verwenden.

11.tpFramework-Konfigurationsdatei

common/config.php

12.tpEinzelbuchstabe-Methoden des Frameworks

C Den Konfigurationswert abrufen

D Instanziieren Sie die Model-Klasse

L Sprachdefinitionsfunktion

I ruft Eingabeparameter ab

M wird verwendet, um ein Modell ohne Modelldatei zu instanziieren

...

13 .Rückruffunktion

array_map, array_walk, array_reduce

Die Unterklasse ruft die auf übergeordnete Klasse statisch Methode

parent::$a

phpFehlerstufe:

fatalerror schwerwiegender Fehler: 0000 0000 0000 001 Offen 1

Warnung Warnung Fehler: 0000 0000 0000 010 offen 2

HINWEIS Warnung: 0000 0000 0001 000 offen 8

while do while Unterschied:

while bedeutet, zuerst zu urteilen und dann auszuführen

dowhile bedeutet, zuerst auszuführen und dann zu urteilen

Häufig verwendete magische Methoden:

__dectruct(); __get(); __isset()

Konstruktionsmethode

Wird beim Instanziieren automatisch aufgerufen __construct():

Destruktormethode, wird automatisch aufgerufen, wenn das Programm endet. __destrcut():

Magische Konstante:

Namespace der Funktionsklassendateizeilenmethode


Unterabfrage:

(verwenden Sie das Ergebnis der inneren Abfrage als Vergleichsbedingung der äußeren Abfrage)

#Keine Bestellung erforderlich, um die neuesten Produkte abzufragen

selectgoods_id,goods_name fromgoods wheregoods_id = (select max(goods_id)fromgoods);

MySAM InnoDB

Unterschied: innodb verfügt über schnelle Schreibvorgänge, unterstützt Transaktionen, Datenzeilensperren und Fremdschlüssel, unterstützt jedoch keine Volltextindizes. Der Primärschlüsselbereich von InnoDB ist größer und maximal doppelt so groß wie der von MyISAM.

MyISAM unterstützt keine Transaktionen und Fremdschlüssel. Es verfügt über schnelle Lesevorgänge und unterstützt Datensperrtabellen, GIS-Daten und Volltextindizes (da es keine chinesische Wortsegmentierung unterstützt, ist der Volltextindex von MyISAM jedoch nicht verfügbar). eigentlich nutzlos).

Der Unterschied zwischen Sitzung

und Cookie: 1. Die Sitzung befindet sich auf dem Server Seite, Cookie Auf dem Client (Browser)

2. Die Sitzung wird standardmäßig in einer Datei auf dem Server gespeichert (nicht im Speicher)

3. Der Betrieb der Sitzung hängt von der ab Sitzungs-ID, und die Sitzungs-ID ist das Vorhandensein eines Cookies. Das heißt, wenn der Browser Cookies deaktiviert, ist die Sitzung ebenfalls ungültig (dies kann jedoch auf andere Weise erreicht werden, z. B. durch Übergeben von session_id in der URL)

4. Sitzungen können in Dateien, Datenbanken oder im Speicher abgelegt werden.

5. Sitzung wird im Allgemeinen zur Benutzerüberprüfung verwendet

Was ist der Unterschied zwischen Schnittstelle und abstrakter Klasse:

1 Weder abstrakte Klassen noch Schnittstellen können direkt instanziiert werden. Wenn sie instanziiert werden sollen, müssen abstrakte Klassenvariablen auf Unterklassenobjekte verweisen, die alle abstrakten Methoden implementieren, und Schnittstellenvariablen müssen auf Klassenobjekte verweisen, die Implementieren Sie alle Schnittstellenmethoden.

2 Abstrakte Klassen müssen von Unterklassen geerbt werden und Schnittstellen müssen von Klassen implementiert werden.

3 Abstrakte Klassen können nur für Methodendeklarationen und Methodenimplementierungen verwendet werden

 

4 In der Schnittstelle definierte Variablen können nur öffentliche statische Konstanten sein, und Variablen in abstrakten Klassen sind gewöhnliche Variablen.

5 Alle abstrakten Methoden in einer abstrakten Klasse müssen von der Unterklasse implementiert werden Unterklasse kann nur eine abstrakte Klasse sein. Wenn eine Klasse eine Schnittstelle implementiert und nicht alle Schnittstellenmethoden implementieren kann, kann die Klasse ebenfalls nur eine abstrakte Klasse sein.

6 Abstrakte Methoden können nur deklariert, nicht implementiert werden, und abstrakte Klassen sind das Ergebnis der Rekonstruktion

 

7, Es kann keine abstrakte Methode in einer abstrakten Klasse geben

 

8, Wenn es eine Zusammenfassung gibt Methode in einer Klasse, dann diese Klasse Es kann nur eine abstrakte Klasse sein

9 Abstrakte Methoden müssen implementiert werden, daher können sie nicht statisch oder privat sein.

10 Schnittstellen können Schnittstellen erben und können mehrere Schnittstellen erben, Klassen können jedoch nur von einem einzigen Stamm erben.

for-Schleife oder foreach-Schleife, welche ist schneller?

Wenn foreach das Array durchläuft, zeigt der Zeiger automatisch auf das nächste Element. Es ist keine bedingte Beurteilung und keine automatische Inkrementierung von Variablen erforderlich, sodass die Leistung definitiv höher ist für.

Löschen Sie alle Daten von Männern in der Tabelle zwischen 20 und 30 Jahren:

Löschen Sie den Namen der Formulartabelle, wobei Geschlecht =0 und Alter dazwischen 20 und 30;

Was sind die Unterschiede und Vorteile von Statik und Pseudostatik?

Statische Webseiten enden im Allgemeinen mit .html oder htm und die Adresse entspricht einer Datei, die tatsächlich in einem Verzeichnis auf dem Website-Server vorhanden ist.

Vorteile: 1. Wenn ein Besucher auf eine Webseite zugreift, wird die Datenbank nicht gelesen und es wird direkt auf die dem Website-Bereich entsprechenden Dateien zugegriffen. (Dateien direkt lesen)

2. Rein statische Webseiten sind suchmaschinenfreundlich und lassen sich am einfachsten von Suchmaschinen einbinden. (Einfach einzubinden)

3. Da der Server beim Zugriff auf eine Webseite nicht allzu viel Verarbeitung leisten muss, ist der Druck auf den Server minimal, sodass hohe Besuchszahlen leichter bewältigt werden können. (Einsparung von Serverdruck)

4. Bei einigen datenbankbezogenen Angriffen wie SQL-Injection-Angriffen ist es bei statischen Webseiten oft schwierig, mit der Adresse zu beginnen. (Hohe Sicherheit)

Pseudostatisch ist eigentlich dynamisch, und der Datenverarbeitungsprozess ist der gleiche wie dynamisch.

Vorteile: In Bezug auf die Form der URL kann die pseudostatische Adresse genau mit der statischen Adresse identisch sein. Für normale Besucher ist es nicht einfach zu unterscheiden, ob es sich um eine echte statische Adresse handelt oder um eine pseudostatischer (einfach einzubinden)

Synchroner Alipay-Rückruf und asynchroner Rückruf:

Wenn eine Zahlungsanforderung an gesendet wird Wenn Sie den Zahlungskanal verwenden, wird der Zahlungskanal schnell ein Ergebnis zurückgeben. Dieses Ergebnis sagt Ihnen jedoch nur, dass der Anruf erfolgreich war, nicht, dass die Ableitung erfolgreich war. Dies wird als synchroner Anruf bezeichnet . Viele Anfänger gehen davon aus, dass die Zahlung erfolgreich war, und werden dadurch ausgetrickst. Das Ergebnis ist, dass die Erfolgsquote der Zahlung extrem hoch ist, begleitet von einer Reihe ungeklärter Forderungsausfälle. Tester müssen besonders auf die Manipulation von Testdaten achten : Betrag, Synchronisierung Rückgabeergebnisse, Bestellnummer usw.

In den synchronen Anforderungsparametern wird diese Adresse vom Zahlungskanal aufgerufen, nachdem der Abzug erfolgreich war. Im Allgemeinen prüft die Synchronisationsschnittstelle nur, ob die Parameter korrekt sind, ob die Signatur korrekt ist usw. Die asynchrone Schnittstelle teilt Ihnen das Abzugsergebnis mit. Im Allgemeinen haben asynchrone Schnittstellen eine Verzögerung von weniger als 5 Sekunden. Wenn der Anruf nicht erfolgreich ist, wird er erneut versucht. Manchmal ist es hier erfolgreich, aber die Seite des Zahlungskanals erhält keine Rendite, sodass sie sich weiter anpassen wird. Es ist normal, dass an einem Tag getätigte Zahlungen asynchron bis zum nächsten Tag abgerufen werden. Darauf müssen Entwickler auch besonders achten und dürfen es nicht als wiederholte Zahlung behandeln. Tester sollten auch auf wiederholte Rückrufe testen, die nur einmal gültig sein sollten. Dies ist nicht die größte Gefahr. Auf der Seite des Zahlungskanals werden Sie in der Regel nur benachrichtigt, wenn die Zahlung erfolgreich ist. Wenn die Zahlung fehlschlägt, werden wir Sie nicht darüber informieren. Warum kann ich andererseits nicht immer asynchrone Ergebnisse erhalten? Dann müssen Sie es sich ansehen. Synchrone Ergebnisse sind unzuverlässig und asynchrone Aufrufe sind unzuverlässig. Wie kann man also das Zahlungsergebnis ermitteln? Der letzte Trick besteht darin, die Bestellung und die Rückwärtsprüfung zu überprüfen. Im Allgemeinen stellt die Zahlungskanalseite eine Rückwärtsscheckschnittstelle bereit, um die zu bezahlenden Bestellungen regelmäßig in der Datenbank abzurufen, und ruft die Rückwärtsscheckschnittstelle auf der Zahlungskanalseite auf die Bestellungen mit erfolgreichen Abzügen auf der Zahlungskanalseite verlieren.

Das obige ist der detaillierte Inhalt vonZusammenfassung der PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn