Cet article présente principalement un résumé des questions d'entretien PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
csrf. Qu'est-ce que c'est :
Faux de demande intersite CSRF,
1. L'utilisateur C ouvre le navigateur, visite le site Web de confiance A, saisit le nom d'utilisateur et le mot de passe pour demander à se connecter. site Web A ;
2. Une fois les informations de l'utilisateur vérifiées, le site Web A génère des informations de cookie et les renvoie au navigateur. À ce moment, l'utilisateur se connecte avec succès au site Web A et peut normalement envoyer des demandes au site Web A. ;
3. L'utilisateur ne quitte pas le site Web A, ouvrez une page TAB dans le même navigateur pour visiter le site Web B
4. Une fois que le site Web B a reçu la demande de l'utilisateur, il en renvoie. code offensant et envoie une demande d'accès au site tiers A. ;
5. Après avoir reçu ces codes offensants, le navigateur transporte les informations du cookie et envoie une demande au site Web A selon la demande du site Web B sans. les connaissances de l'utilisateur. Le site Web A ne sait pas que la demande est réellement initiée par B
, il traitera donc la demande avec les autorisations de C en fonction des informations du cookie de l'utilisateur C, provoquant l'exécution du code malveillant du site Web B
La différence entre session et cookie :
1. COOKIE existe côté client. SESSION existe côté serveur.
2. La taille de stockage par défaut du COOKIE est de 4 Ko. Généralement, le nombre de COOKIES ne dépassera pas 20, en fonction des besoins spécifiques.
3.SESSION est stocké sous forme de fichier par défaut. Le temps de survie par défaut est de 24 minutes, la taille de stockage initiale est de 1 Mo et elle peut être modifiée théoriquement sans limite. Peut être configuré en modifiant php.ini.
4.SESSION est basé sur COOKIE par défaut Lorsque SESSION est ouverte, session_id sera généré et stocké dans COOKIE.
5.SESSION COOKIE sont tous des contrôles de session. Parce que notre http est sans état et sans connexion. Un contrôle de session est donc nécessaire pour identifier l'utilisateur.
variable super globale php :
$GLOBALS $_SERVER $_REQUEST $_POST $_GET
$_FILES $_ENV $ _COOKIE $_SESSION
PHP et MYSQL traitement des transactions :
1. Utiliser start, rollback, commit pour implémenter
begin. Démarrer une transaction
rollback transaction rollback
confirmation de la transaction de validation
2 Utilisez directement set pour modifier le mode de validation automatique de MySQL
<.>
4 caractéristiques majeures des transactions (ACID) :
Atomicité : La transaction est l'unité logique de travail de la base de données, et elle a Soit tout les modifications sont exécutées ou aucune n’est exécutée. Cohérence : Avant et après une transaction, l'état de la base de données satisfait à toutes les contraintes d'intégrité. Isolement : Les transactions exécutées simultanément sont isolées et l'une n'affecte pas l'autre. S'il y a deux transactions exécutées en même temps et remplissant la même fonction, l'isolation des transactions garantira que chaque transaction dans le système pense que seule cette transaction utilise le système. Cette propriété est parfois appelée sérialisation. Pour éviter toute confusion entre les opérations de transaction, les requêtes doivent être sérialisées ou désérialisées afin qu'il n'y ait qu'une seule requête pour les mêmes données à la fois. En définissant le niveau d'isolement de la base de données, différents effets d'isolement peuvent être obtenus. Durabilité : Une fois une transaction terminée, les modifications apportées à la base de données par la transaction sont conservées dans la base de données et ne seront pas annulées.xss
Comment prévenir : XSS est également appelé CSS, le nom complet est CrossSiteScript, attaque de script intersite
Prévenir : injection de script, balises de script de filtre d'échappement. La différence entreunion
et unionall : l'union supprime les doublons, unionall ne supprime pas les doublons
RBAC
Contrôle des autorisations basé sur les rôles : 5 tables Table des utilisateurs, table des rôles, table des fonctions et tables liées les unes aux autres : tables des utilisateurs et des rôles, tables de rôles et de fonctions
redis
Persistance : Instantané de mémoire (RDB) La persistance RDB peut être générée à des intervalles spécifiés Instantané ponctuel de l'ensemble de données
Log (AOF) AOF enregistre de manière persistante toutes les commandes d'opération d'écriture exécutées par le serveur et restaure l'ensemble de données en réexécutant ces commandes au démarrage du serveur.Sous-tableau :
Réduisez la charge sur la base de données et réduisez le temps de requête.
Division verticale du tableau : la division verticale est divisée par champs.Fractionnement horizontal des tableaux : placez les lignes de données dans deux tableaux indépendants en fonction des valeurs d'une ou plusieurs colonnes de données.
Comment s'assurer que l'identifiant inséré est unique dans le tableau horizontal ?
Vous pouvez créer un nouveau service d'identification et enregistrer l'ID de l'utilisateur dans la base de données ou Redis.
jquerySélecteur :
1. Élément 2. Attribut 3.id 4. Classe 5. Global.
Éléments en ligne et éléments en bloc
En ligne : , , En bloc : , ,
, ,
Conversion : affichage : en ligne, bloc, bloc en ligne.
Différence :
bloc,
①Toujours commencer sur une nouvelle ligne, occupant une ligne entière
②Hauteur, hauteur de ligne et marges et remplissage La distance peut être contrôlé ;
③La bande passante est toujours la même que la largeur du navigateur, quel que soit le contenu
④Il peut accueillir des éléments en ligne et d'autres éléments de bloc.
rangée,
① et les autres éléments sont tous sur une seule ligne
② La hauteur, la hauteur de la ligne et les parties de marge et de rembourrage peuvent être modifiées
; ③La largeur est uniquement liée au contenu ;
④Les éléments en ligne ne peuvent accueillir que du texte ou d'autres éléments en ligne.
Requête de groupe : orderby
Le nombre d'hommes et de femmes dans le tableau est de 20 à 30 :
sélectionnez le nombre (sexe) du tableau où l'âge entre 20 et 30 ans est regroupé par sexe
ORM:
Le mode Object Relational Mapping (ORM) est une technologie permettant résoudre l'inadéquation entre les bases de données orientées objet et relationnelles
LinuxAfficher le port : Brosser le fichier sélectionné : Afficher le processus :
Netstat-antu // Afficher tous les ports TCP actuels·
Netstat-ntulp |grep80 //Afficher l'utilisation des 80 ports·
Netstat-an grep3306 //Afficher l'utilisation des 3306 ports Situation·
LinuxAfficher le nombre de commandes exécutées : historique
Fonction d'opération de fichier :
ouvrir Ouvrir le fichier
fstat Récupérer le fichier
file Lire l'intégralité du fichier dans un tableau
fclose Fermer le fichier
fwrite Écrire dans le fichier (en toute sécurité utiliser un fichier binaire)
file_get_contents() lit le fichier entier dans une chaîne
Plusieurs façons d'ouvrir le fichier :
Fopen(), file_get_contents ()
Lire et écrire, ajouter
phpCommande de suppression du dossier
Dissocier(); >
Interception de chaîne chinoise :mb_substr mb_substr($str,$start, $length, $encoding)
$str, la chaîne qui doit être tronquée
$start, le point de départ de la troncature, le point de départ est 0
$length, le nombre de mots à intercepter
$encoding, encodage de page web, tel que utf -8, GB2312, GBK
La différence entre Det M : M instancie la classe de base, D peut instancier la classe personnalisée
tablechange de couleur sur les lignes alternées : Utilisez JQ pour identifier les nombres pairs et impairs de la table tr td et attribuez différents styles CSS à les nombres impairs et pairs. À travers différents arrière-plans, vous pouvez changer les couleurs sur des lignes alternées.
Lorsque la souris passe, JQ appelle le jeu d'arrière-plan trtd séparément, de sorte que la couleur d'arrière-plan change lorsque la souris passe.
ajaxSynchronisation et asynchrone : <.>
Attendez de manière synchrone le résultat de retour du serveur puis effectuez d'autres opérations LinuxAfficher tous les fichiers :ls
Définir un p sur un autre p : Plus la valeur du z-index est grande, plus elle monte
ob
Fonction :
Ob_start(); //Ouvre un tampon de sortie, toutes les informations de sortie ne sont plus envoyées directement au navigateur, mais stockées dans le tampon de sortie. Ob_clean(); //Supprime le contenu du tampon interne sans fermer le tampon (pas de sortie). OB_END_CLEAN (); // Supprime le contenu du tampon interne et ferme le tampon (pas de sortie).
. Équivaut à l'exécution de ob_get_contents() et ob_end_clean() ob_flush(); //Envoie le contenu du tampon interne au navigateur, supprime le contenu du tampon et ne ferme pas le tampon. Ob_end_flush(); //Envoyer le contenu du tampon interne au navigateur, supprimer le contenu du tampon et fermer le tampon. Ob_get_flush(); //Renvoie le contenu du tampon interne, ferme le tampon, puis libère le contenu du tampon. Équivalent à ob_end_flush() et renvoie le contenu du tampon. flush(); // Affiche le contenu publié par ob_flush et le contenu qui ne se trouve pas dans le tampon PHP vers le navigateur ; actualise le contenu du tampon interne et l'affiche. Ob_get_contents(); //Renvoie le contenu du buffer, sans sortie.OB_GET_LENGTH (); // La longueur du tampon interne est renvoyée Si le tampon n'est pas activé, la fonction renvoie false.
Ob_get_level(); //Renvoyer le niveau d'imbrication du mécanisme de mise en mémoire tampon de sortie.
ob_get_status(); //Obtenir l'état des tampons de sortie 🎜>3.
Comment. faire un panier ? processus. .
1. Ajoutez le produit au panier 1. Ajoutez d'abord un lien sur la page 1. Obtenez d'abord l'identifiant du produit 2. Recherchez le produit par ID dans la base de données.3. Ajoutez le produit au panier a. Récupérez le panier de la session, sinon créez-en un nouveau
b. est dans le panier Existe-t-il ? Sinon, la quantité est de 1. Si elle existe, la quantité est augmentée de 1 c. Rechargez le panier dans la session. Problème : Nos achats utilisent une collection HashMap, la clé est unique, la seule façon de garantir la clé est via la méthode hashCode et égal Nous utilisons donc Lors de la réécriture, nous devons réécrire les méthodes hashCode et equals de la classe Product. Lorsque nous réécrivons, il nous suffit de comparer les valeurs d'identifiant.2. Afficher les articles du panier
Notre panier existe dans la session. Il nous suffit de collecter la Cartt Map lors de la session sur la page cart.jsp et de l'afficher. 1. Manipuler les articles dans le panier 2. Vous pouvez modifier la quantité d'articles dans le panier en cliquant sur le signe + ou -3. Lorsque le bouton + ou - sera cliqué, nous appellerons une fonction en javascript. changeCount(); Grâce à cette fonction, nous envoyons une requête au serveur, obtenons les données du panier à partir de la session côté serveur et modifions le nombre spécifié d'articles dans le panier en fonction des données soumises avant de revenir à la page du panier pour affichage.
Comment obtenir le volume des ventes du mois dernier ? Trois mois ? Et environ un an ?
Interroger un certain champ dans la base de données
Comment récupérer 300 000 données en 3 secondes ? Quel index créer ?
Index ordinaireType d'index :
Index ordinaire, index unique, index de clé primaire, index combinéredis
et memecache est : 1. Méthode de stockage :
Memecache stocke toutes les données dans la mémoire après. panne de courant, il se bloquera car les données ne peuvent pas dépasser la taille de la mémoire. Une partie de Redis est stockée sur le disque dur, ce qui garantit la persistance des données.
2. Type de support de données :
Redis a beaucoup plus de support de données que Memecache.
3. Le modèle sous-jacent est différent :
La nouvelle version de redis construit directement son propre mécanisme de VM, car si le système général appelle les fonctions système, il perdra un certain temps à déménagement et demande.
4. Différents environnements d'exploitation :
Redis ne prend actuellement officiellement en charge que LINUX, éliminant ainsi le besoin de prise en charge d'autres systèmes, afin que vous puissiez mieux consacrer votre énergie à cet environnement système Optimisation, bien que plus tard, une équipe de Microsoft a écrit un correctif pour cela. Mais il n'est pas mis sur le coffre
Comment faire : Spécifications des attributs.
En fait, le sku est l'unité d'inventaire unique du produit, y compris la table des produits, la table des attributs du produit, la table des produits
tp
fichier de configuration : common/config.php
phptype de données : Quatre types scalaires :
booléen (type booléen)
entier (type entier)
float (type à virgule flottante, également appelé double)
chaîne (chaîne)
Deux types composites :
Mode Singleton :
La principale caractéristique du mode singleton est "trois privés et un public": Nécessite une classe de sauvegarde La variable membre statique privée de la seule instance Le constructeur doit être déclaré privé pour empêcher les programmes externes de créer un objet et de perdre ainsi le sens du singleton La fonction clone doit être déclarée comme privée pour éviter que l'objet soit nouveau. Lecloné doit fournir une méthode statique publique (généralement nommée getInstance) pour accéder à cette instance, renvoyant ainsi une référence à l'unique exemple.
Requérez le nombre d'hommes et de femmes entre 20 et 30
: //sélectionnez le nombre (sexe) dans le tableau où l'âge entre 20 et 30 est regroupé par sexeSélectionnez le nombre (*) dans le nom de la table où l'âge est compris entre 20 et 30 ans, regroupez par âge
Il existe trois modificateurs d'accès en PHP
, à savoir :
public (public, par défaut) protégé (protégé) privé (privé)Modification de l'autorisation d'accès Portée des opérateurs :
Lorsqu'un membre d'une classe est déclaré avec un modificateur d'accès public, le membre peut être consulté et manipulé par du code externe. privé (privé) Les membres définis comme privés sont visibles par tous les membres de la classe et n'ont aucune restriction d'accès. L’accès n’est pas autorisé en dehors du cours.protected (protected)
protected est légèrement plus compliqué Il est déclaré comme membre protégé et autorise uniquement l'accès aux sous-classes de cette classe.
mysql intStockage :
la taille du stockage bigint est de 8 octets.
la taille de stockage int est de 4 octets.
La taille de stockage Smallint est de 2 octets.
tinyint Données entières de 0 à 255. La taille de stockage est de 1 octet. Portée du
cookie :
domaine lui-même. Tous les noms de domaine sous domaine.
Il s'agit de définir une autorisation pour le cookie. Lorsque le domaine est défini sur vide, le domaine utilise par défaut le nom de domaine actuel et les sous-domaines sous ce nom de domaine peuvent recevoir des cookies.
Mais lorsque le paramètre de domaine définit son nom de sous-domaine, tous les noms de domaine ne peuvent pas être reçus, y compris ce nom de sous-domaine.
linuxAfficher la commande du contenu du fichier journal
tail, cat, tac, head, echo
tail-f test. log
top Voir la mémoire
df-lh Voir le disque
ps-a Voir tous les processus
Constante :
Utilisez $ pour les variables :
Il n'est pas nécessaire d'utiliser le symbole $ lors de la définition et de l'utilisation de constantes.
La valeur d'une constante doit être une valeur fixe et ne peut pas être une variable, un attribut de classe, le résultat d'une opération mathématique ou un appel de fonction.
Des constantes peuvent également être définies dans les interfaces.
Les classes abstraites ne peuvent pas être instanciées. Les classes abstraites peuvent avoir des méthodes statiques. Il ne peut y avoir de méthodes abstraites dans les classes abstraites.
Méthodes ordinaires, stockées dans la classe, une seule copie
Méthodes statiques, également stockées dans la classe, une seule copie
La différence est :
Les méthodes ordinaires nécessitent qu'un objet soit appelé, et $this doit être lié. Autrement dit, les méthodes ordinaires doivent avoir un objet, puis laisser l'objet appeler
Et les méthodes statiques ne le font pas. appartiennent à n'importe quel objet, ils n'ont donc pas besoin d'être liés. Autrement dit, vous pouvez l'appeler sans objet
Membres statiques : ils sont accessibles sans instanciation. n'appartiennent qu'à cette classe.
Membres de la classe : l'un est défini dans la classe et l'autre est défini dans le constructeur.
La différence entre les méthodes et les fonctions :
Les fonctions existent seules, tandis que les méthodes dépendent des classes et ne peuvent être appelées que via des objets.
Si les fonctions peuvent être définies dans les fichiers de classe : Non
Transfert de valeur et référence de valeur :
(1) Par valeur Passage : Toute modification de la valeur dans la portée de la fonction sera ignorée en dehors de la fonction
(2) Passage par référence : Toute modification de la valeur dans la portée de la fonction reflétera également ces modifications en dehors de la fonction
(3) Avantages et inconvénients :
A : Lors du passage par valeur, php doit copier la valeur. Surtout pour les chaînes et les objets volumineux, cela peut s'avérer une opération coûteuse.
B. Le passage par référence ne nécessite pas de copier la valeur, ce qui est très bon pour améliorer les performances.
Empêcher la soumission répétée de commandes :
1. Utilisez JS pour désactiver le bouton après avoir cliqué une fois dessus. L'utilisation de cette méthode peut empêcher plusieurs clics
2. Définissez la valeur de session Après l'avoir soumise une fois, supprimez-la S'il n'y a pas de valeur de session, n'autorisez pas la soumission.
3 cookies sont. le même
Fonctions de chaîne :
strlen();strpos();echo();implode();trim();,,
Fonction d'inversion de chaîne :
strrev, mb_string
La différence entre http1.0 et http1.1 :
HTTP1.0 stipule que le navigateur et le serveur ne maintiennent qu'une connexion à court terme. Chaque requête du navigateur doit établir une connexion TCP avec le serveur. Le serveur déconnecte immédiatement la connexion TCP une fois terminée. le traitement des demandes,
Le serveur ne garde pas de trace de chaque client ni n'enregistre les demandes passées.
HTTP1.1 prend en charge les connexions persistantes. Plusieurs requêtes et réponses HTTP peuvent être transmises sur une connexion TCP, réduisant ainsi la consommation et le délai d'établissement et de fermeture des connexions.
HTTP1.1 permet également au client de faire la requête suivante sans attendre le résultat de la requête précédente, mais le serveur doit renvoyer les résultats de la réponse dans l'ordre dans lequel la requête du client est reçue ,
Pour garantir que le client puisse distinguer le contenu de la réponse de chaque requête, cela réduit également considérablement le temps requis pour l'ensemble du processus de téléchargement
HTTP1.0 ne prend pas en charge le champ d'en-tête de requête Host .
H Le champ d'en-tête de requête Host a été ajouté dans TTP1.1.
La différence entre les variables globales et les variables locales :
1. Différentes portées : La portée des variables globales est l'ensemble du programme, tandis que la portée des variables locales est le fonction actuelle Ou boucle, etc.
2. Les méthodes de stockage en mémoire sont différentes : les variables globales sont stockées dans la zone de données globales, et les variables locales sont stockées dans la zone de pile
3. Le Le cycle de vie est différent : le cycle de vie des variables globales et de la principale Identique au programme, il sera détruit lorsque le programme sera détruit. Les variables locales sont à l'intérieur de la fonction ou à l'intérieur de la boucle et n'existeront plus à la sortie de la fonction ou. la boucle se termine
4. L'utilisation est différente : les variables globales sont utilisées dans chaque partie du programme après leur déclaration. Les parties peuvent être utilisées, mais les variables locales ne peuvent être utilisées que localement. Dans la fonction, les variables locales seront utilisées en premier avant les variables globales
. Une chose à noter est que les variables locales ne peuvent pas se voir attribuer la valeur d'une variable globale du même nom.
Optimisation front-end :
Premièrement : Optimisation orientée contenu
1. Réduire les requêtes HTTP
2. Réduire le DNS Trouver
3. Éviter la redirection
4. Utiliser le cache Ajax
5. Chargement différé des composants
6. Précharger les composants
7 . Réduisez le nombre d'éléments DOM
8. Divisez les composants en plusieurs domaines
9. Minimisez le nombre d'iframes
10. Ne recevez pas d'erreurs http 404
Deuxièmement : orienté serveur
1. Réduire les cookies
2. Utiliser l'indépendance du nom de domaine pour les composants Web
Qu'est-ce que l'avalanche de cache ?
Lorsque le serveur de cache est redémarré ou qu'un grand nombre de caches échouent au cours d'une certaine période de temps, cela mettra également beaucoup de pression sur le système back-end (tel que la base de données) lorsqu'il échoue.
Comment l'éviter ?
1 : Une fois le cache expiré, contrôlez le nombre de threads qui lisent la base de données et écrivent le cache via le verrouillage ou la mise en file d'attente. Par exemple, un seul thread est autorisé à interroger les données et à écrire dans le cache pour une certaine clé, tandis que les autres threads attendent.
2 : Définissez différents délais d'expiration pour différentes clés afin de rendre le délai d'invalidation du cache aussi uniforme que possible.
3 : Créez un cache de deuxième niveau. A1 est le cache d'origine et A2 est le cache de copie. Lorsque A1 échoue, vous pouvez accéder à A2. Le délai d'expiration du cache de A1 est défini sur court terme et A2. est réglé sur long terme (ce point est supplémentaire)
tpMode routage :
1. Mode normal 2. Mode réécriture 3. Mode compatibilité
niginxComment configurer le numéro de port :
Configurer deux servent dans ce nginx.conf, chacun est un numéro de port différent.
jqObtenir la deuxième ligne du tableau tag :
$(tr:eq(1))
Que sont les variables variables :
Les variables variables nous permettent de changer dynamiquement le nom d'une variable. Utilisez la valeur d'une variable comme nom d'une autre variable.
Vérifiez si le port est occupé : Modifier les autorisations Modifier le propriétaire Modifier le groupe d'utilisateurs
netstat –apn chmod chown chgrp
Afficher la progression
Top pa aux|grep
Ajouter des autorisations d'exécution pour tout le monde :
chmod-x
MysqlRéplication maître-esclave :
Générez deux threads à partir de la bibliothèque, un thread d'E/S et un thread SQL
i Le thread /o demande le binlog de la bibliothèque principale et écrit le journal binlog obtenu dans le fichier journal de relais (relay log)
La bibliothèque principale générera un thread de vidage de journal pour fournir à la bibliothèque esclave i/ ; o le thread transmet binlog ;
Le thread SQL lira le journal dans le fichier journal du relais et l'analysera en opérations spécifiques pour obtenir des opérations maître-esclave cohérentes et des données cohérentes
Commandes requises pour la réplication maître-esclave :
showmaster status; startalve; stopalve; flushprivileges ; GRANTREPLICATIONSLAVE,RELOAD,SUPER ON *.* TOmysql_backup@'%' IDENTIFIÉ PAR '123456';CHANGEMASTER TOmaster_host = '127.0.0.1', master_user='mysql_backup', master_password='123456', log_file='mysql bin.000 001 ',master_log_pos = 3696;
Résoudre le problème de conflit de clé primaire
Créez une table maître et les identifiants sont distribués à partir de la table maître .Réplication maître-maître :
1. Autoriser les comptes sur deux machines respectivement : accorder l'esclave de réplication, fichier, sélectionner sur *.* à 'repl'@'10.17.%'identifié par 'xxxx' 2. Fichier de configuration/etc/my.cnf, lors de l'utilisation du fichier de configuration de la bibliothèque principale En gros, ajoutez les éléments de configuration suivantsnginxProxy inverse :
(1 ) Polling rr (par défaut) Il est attribué à chaque RS selon l'ordre de la requête. C'est le même que l'algorithme rr dans lvs. Si le RS est en panne, il sera automatiquement éliminé par défaut. le port 80 est détecté. Si le RS signale les erreurs 402, 403, 503 et 504, il sera renvoyé directement au client. (2) Poids (poids) Ajoutez du poids (la valeur par défaut est rr+weight) sur la base de rr L'interrogation de poids est proportionnelle à l'accès. plus alloué De plus, le poids peut être défini en fonction de la configuration du serveur, ce qui peut résoudre le problème des performances inégales du serveur et de l'allocation des demandes (3) ip_hash Résoudre le problème de la page Web dynamique partage de session Chaque Chaque demande d'accès est allouée en fonction de la valeur de hachage de l'adresse IP Tant que la valeur de hachage de l'IP est la même, elle sera allouée au même serveur (le paramètre -p. de l'équilibrage de charge lvs, persistence_timeout50 dans la configuration keepalived). Cet algorithme de planification peut résoudre le problème des pages Web dynamiques, mais cela entraînera parfois une répartition inégale des requêtes Conseils : Depuis le nat. Le mode est utilisé en Chine, le hachage n'est pas adapté à l'utilisation ip_hash ne peut pas être utilisé avec d'autres algorithmes, c'est-à-dire que vous ne pouvez pas faire de poids ou de sauvegarde (4) équitable (tiers) <.>Il est configuré en fonction du temps de réponse du serveur back-end. Celui avec le temps de réponse court est alloué en premier, ce qui est plus intelligent que le précédent. Cet algorithme peut effectuer intelligemment l'équilibrage de charge en fonction de la taille de la page. et le temps de chargement. nginx lui-même ne prend pas en charge fair. Vous devez télécharger le module upstrea_fair de nginx
(5) url_hash (tiers)
Main appliqué au serveur de cache
Allouez les requêtes en fonction de l'URL consultée, afin que la même URL soit dirigée vers le même serveur. L'effet est plus significatif lorsque le serveur back-end est un serveur de cache. Ajoutez des instructions de hachage et des instructions de serveur aux autres paramètres en amont. tels que le poids ne peuvent pas être écrits. hash_method est l'algorithme de hachage utilisé.
Inconvénients : Si une machine est en panne, ce sera difficile. Consistent_hash peut résoudre ce problème
Cela peut améliorer l'efficacité du serveur de cache back-end lui-même ne prend pas en charge url_hash et. doit être téléchargé un logiciel de hachage
(6) least_conn
Nombre minimum de connexions, quel que soit l'appareil ayant le moins de connexions, il sera attribué à quel appareil
(7) consistent_hash
Algorithme de cohérence
3, Équilibrage de charge :
Méthode de déploiement d'équilibrage de charge :
Mode de routage (recommandé)
Mode pont
Mode retour direct du service
Équilibrage round robin :
Chaque requête du réseau est allouée au réseau interne Serveur, passez de 1 à N puis recommencez. Cet algorithme d'équilibrage convient aux situations dans lesquelles tous les serveurs du groupe de serveurs ont la même configuration matérielle et logicielle et où les demandes de service moyennes sont relativement équilibrées.
Equilibrage à tour de rôle des poids :
Selon les différentes capacités de traitement du serveur, différents poids sont attribués à chaque serveur afin qu'il puisse accepter des services avec le correspondant nombre de poids demander. Par exemple : le poids du serveur A est conçu pour être de 1, le poids de B est de 3 et le poids de C est de 6, alors les serveurs A, B et C recevront 10 %, 30 % et 60 % du service. demandes respectivement. Cet algorithme d'équilibrage garantit que les serveurs hautes performances sont davantage utilisés et empêche la surcharge des serveurs peu performants.
Équilibrage aléatoire :
Distribuez de manière aléatoire les requêtes du réseau vers plusieurs serveurs internes.
Equilibrage aléatoire des poids :
Cet algorithme d'équilibrage est similaire à l'algorithme de round robin pondéré, mais il s'agit d'un processus de sélection aléatoire lors du traitement des demandes de partage
4, la différence entre l'équilibrage de charge et le proxy inverse
Le proxy inverse est une méthode pour réaliser l'équilibrage de charge.
Parlons d’abord du proxy inverse. Lorsque l'utilisateur fait une demande, il envoie d'abord la demande au serveur proxy, puis le serveur proxy demande au serveur réel selon l'algorithme et la renvoie enfin à l'utilisateur. Cette approche, premièrement, améliore la sécurité ;
Deuxièmement, elle partage les demandes des utilisateurs via plusieurs serveurs réels, réalisant ainsi un équilibrage de charge.
Parlons de l’équilibrage de charge. L'émergence de l'équilibrage de charge consiste à réduire autant que possible la pression sur un seul serveur grâce à une expansion horizontale. Les solutions d'équilibrage de charge courantes au niveau WEB incluent le matériel F5, le proxy Nginx, LVS, les services d'équilibrage de charge de divers fournisseurs de cloud (tels que le service ELB d'AWS), etc. Ce qui est connecté derrière l'équilibrage de charge est généralement le serveur qui fournit réellement le service. Par exemple, via le service ELB, le trafic peut être partagé de manière égale, réduisant ainsi la pression sur le serveur autonome.
En raison de l'ajout de la couche d'équilibrage de charge, le simple fait d'utiliser une certaine solution doit toujours prendre en compte un seul point problématique. Le serveur responsable de l'équilibrage de charge n'a pas résisté à la pression, est tombé en panne et le service n'est pas disponible. Par conséquent, Nginx et LVS tentent de configurer plusieurs proxys pour activer le basculement et les alarmes de panne, afin de résoudre rapidement les problèmes de serveur de couche proxy. ELB est un service fourni par Amazon. Son implémentation comporte des centaines, voire des milliers de machines en bas, alors considérez-le simplement comme un cluster proxy.
Comment mettre en œuvre le partagede session :
Tout d'abord, nous devons clarifier pourquoi le partage est requis, en supposant que votre site est stocké sur une seule machine, alors ce problème n'existe pas, car les données de session se trouvent sur cette machine, mais que se passe-t-il si vous utilisez l'équilibrage de charge pour distribuer les requêtes sur différentes machines ? Pour le moment, il n'y a aucun problème avec l'ID de session dans le client. Cependant, en supposant que les deux requêtes de l'utilisateur soient envoyées sur deux machines différentes et que ses données de session puissent exister sur l'une des machines, il y aura une situation où la session sera terminée. les données ne peuvent pas être obtenues. Le partage de session devient donc un problème
1. Partage de session basé sur NFS
2. Partage de session basé sur la base de données
3. Partage de session basé sur Cookie
4. Partage de session basé sur le cache (Memcache)
5. Copie de session
Portée des variables :
Variables globales, variables locales.
Créer des fichiers compressés :
zip, gzip, bzip2, tar Zcvf;
varchar20
Combien de caractères chinois peuvent être stockés ? Tout d'abord, vous devez déterminer la version de MySQL
Sous la version 4.0, varchar(20) fait référence à 20 octets Si les caractères chinois UTF8 sont stockés, seuls 16 peuvent être stockés (3 octets par caractère chinois)
Version 5.0 ou supérieure, varchar( 20) , fait référence à 20 caractères. Qu'il s'agisse de chiffres, de lettres ou de caractères chinois UTF8 (chaque caractère chinois fait 3 octets), 20
peuvent être stockés. En fait, le meilleur moyen est de le créer dans votre propre base de données. . Essayons combien de caractères chinois peuvent être mis dans une table. MySQL 5.0 est maintenant disponible, et varchar(20) peut stocker 20 caractères chinois
Nom d'utilisateur et mot de passe lors de la connexion. dans Comment stocker :
Généralement, nous utilisons des cookies pour stocker les informations utilisateur sur le client, comme un système sans connexion pendant sept jours.
Nous définissons d'abord les paramètres des cookies lors de la connexion et stockons le nom d'utilisateur et le mot de passe. La prochaine fois que nous passerons à la page suivante,
Nous pourrons d'abord déterminer s'il y a un cookie. est une valeur, il passera directement à la page suivante. S'il n'y a pas de valeur, il vous demandera de vous connecter.
Après avoir mis en œuvre le stockage des cookies, les utilisateurs peuvent se connecter avec succès sans saisir de mot de passe !
Afficher la commande du pare-feu (avant Centos7.0) :
Afficher l'état du pare-feu : service iptables status
Activer le pare-feu : service iptables start
Désactiver le pare-feu : service iptables stop
Index clusterisé et index non clusterisé :
1. Index clusterisé
a) Un élément d'index correspond directement à la page de stockage de l'enregistrement de données réel, ce qui peut être dit être "direct"
b) La clé primaire l'utilise par défaut
c) Le tri des éléments d'index est tout à fait cohérent avec le tri de stockage des lignes de données. J'en profite, si. vous souhaitez modifier l'ordre de stockage des données, vous pouvez changer la clé primaire (annuler l'original S'il existe une clé primaire, rechercher un autre champ ou un groupe de champs pouvant également répondre aux exigences de la clé primaire, et reconstruire la clé primaire clé)
d) Une table ne peut avoir qu'un seul index clusterisé (raison : une fois les données stockées, il ne peut y avoir qu'une seule commande) )
2, index non clusterisé
a) Il ne peut pas être "directement accessible" et peut accéder à plusieurs objets dans une chaîne Ce n'est qu'après avoir nivelé la table des pages que la page de données peut
être localisé Cliquez pour vous connecter :
1. Description du principe de connexion Mécanisme technique de mise en œuvre de l'authentification unique : Lorsque l'utilisateur accède pour la première fois au système d'application 1 le temps, il sera connecté car il ne s'est pas encore connecté. Guide du système d'authentification pour se connecter en fonction des informations de connexion fournies par l'utilisateur, le système d'authentification effectue une vérification d'identité. Si la vérification est réussie, un identifiant d'authentification. - le ticket doit être restitué à l'utilisateur ; lorsque l'utilisateur accède à d'autres applications, il apportera le ticket comme identifiant pour sa propre authentification. Après réception de la demande, le système d'application enverra le ticket au système d'authentification pour vérification. la validité du billet. Si la vérification est réussie, l'utilisateur peut accéder au système d'application 2 et au système d'application 3 sans se reconnecter.On constate que pour mettre en œuvre le SSO, les fonctions principales suivantes sont requises :
a) Tous les systèmes d'application partagent un système d'authentification d'identité b) Tous les systèmes d'application ; peut identifier et extraire les informations sur les tickets ; c) Le système d'application peut identifier les utilisateurs qui se sont connectés et peut déterminer automatiquement si l'utilisateur actuel s'est connecté, complétant ainsi la fonction d'authentification uniqueSur la base des principes de base ci-dessus, j'ai conçu un programme de système d'authentification unique utilisant le langage PHP, et il a été officiellement mis en service pour générer le serveur. Ce programme système utilise les informations du ticket avec l'identifiant de session unique de l'ensemble du système comme moyen pour obtenir les informations complètes du site de l'utilisateur en ligne actuel (informations sur l'état de connexion et autres informations sur le site à l'échelle de l'utilisateur qui doivent être traitées).Processus de connexion :
1. Connectez-vous à un site pour la première fois : a) L'utilisateur saisit le nom d'utilisateur + Mot de passe, envoyer une demande de connexion au centre de vérification des utilisateursb) Actuellement connecté au site, via une demande de webservice, le centre de vérification des utilisateurs vérifie la légitimité du nom d'utilisateur et du mot de passe. Si la vérification est réussie, un ticket est généré pour identifier l'utilisateur de la session en cours, et l'identifiant du site du sous-site actuellement connecté est enregistré dans le centre utilisateur, et enfin
c) Renvoyez les données utilisateur et les tickets obtenus au sous-site. Si la vérification échoue, le code d'état d'erreur correspondant est renvoyé.
d) Selon le résultat renvoyé par la requête du webservice à l'étape précédente, le sous-site actuel enregistre l'utilisateur : si le code d'état indique un succès, le site actuel enregistre le ticket via le cookie de ce site, et le site enregistre le statut de connexion de l'utilisateur. Si le code d'état indique un échec, l'utilisateur recevra une invite d'échec de connexion correspondante.
2. Une fois connecté, l'utilisateur accède à une autre sous-section :
a) Vérifiez le statut de connexion de l'utilisateur via le cookie ou la session du site : Si la vérification est réussie, entrez dans le programme de traitement normal du site ; Sinon, le centre utilisateur vérifie l'état de connexion de l'utilisateur (envoie un ticket au centre de vérification de l'utilisateur). Si la vérification est réussie, le traitement de connexion local est effectué sur les informations utilisateur renvoyées. l'utilisateur n'est pas connecté.
Processus de déconnexion :
a) La déconnexion actuelle efface le statut de connexion de l'utilisateur sur le site et l'ID aléatoire unique de l'utilisateur enregistré localement pour l'ensemble du site
b) Via l'interface du service Web, effacez l'identifiant aléatoire unique enregistré sur l'ensemble du site. L'interface du service Web reviendra, déconnectera le code javascript des autres sous-sites connectés, et ce site affichera ce code.
c) Le code js accède au script de déconnexion standard W3C du site correspondant
Comment définir constantes de classe :
Const
Qu'est-ce qu'une méthode abstraite :
Une méthode sans corps de méthode est une méthode abstraite, utiliser Keyword abstract est utilisé pour modifier le type de données des paramètres
ajax, :
1 .json 2.jsonp 3.xml 4.html
Lien à trois niveaux :
La sous-classe appelle la classe parent ID récursivement
Résoudre le conflit de clé primaire Commande du fichier de configuration
#auto_increment_offset =1
#auto_increment_increment=2
5. Pourquoi utiliser le contrôle de session
Le protocole http est un protocole sans état qui identifie les utilisateurs via l'ID de session
6.Quoi sont les protocoles
httpHTTPS ip
7 Qu'est-ce que le protocole HTTP
Protocole de transfert hypertexte
8. Que sont XML et HTML
XML est un langage de balisage extensible
HTML est un langage de balisage hypertexte9, qu'est-ce que jsonp
Une façon de faire des requêtes inter-domaines utilise