


Questions d'entretien d'embauche pour stagiaire Java 2023 - Protocoles HTTP et HTTPS
1. Introduction au HTTP
Le protocole HTTP est l'abréviation de Hyper Text Transfer Protocol. Le protocole HTTP fonctionne sur une architecture client-serveur. En tant que client HTTP, le navigateur envoie toutes les requêtes au serveur HTTP, c'est-à-dire au serveur WEB, via l'URL. Le serveur Web envoie des informations de réponse au client sur la base de la demande reçue.
(Partage du tutoriel vidéo : cours java)
2. Caractéristiques du protocole HTTP
Aucune connexion : Le sens de l'absence de connexion est de limiter chaque connexion. pour traiter uniquement une demande. Une fois que le serveur a traité la demande du client et reçu la réponse du client, il se déconnecte. Cette méthode permet de gagner du temps de transmission.
Apatride : Le protocole HTTP est un protocole sans état. Sans état signifie que le protocole n'a aucune capacité de mémoire pour le traitement des transactions. L'absence de statut signifie que si un traitement ultérieur nécessite les informations précédentes, celles-ci doivent être retransmises, ce qui peut entraîner une augmentation de la quantité de données transférées par connexion. En revanche, le serveur répond plus rapidement lorsqu’il n’a pas besoin d’informations préalables.
3. Codes d'état HTTP
1xx : informations d'instruction – indique que la demande a été reçue, continuez le traitement
2xx : réussite – indique que la demande a été reçue et comprise avec succès, et accepté
3xx : Redirection – une action supplémentaire est nécessaire pour terminer la demande
4xx : Erreur client – la demande contient une erreur de syntaxe ou la demande ne peut pas être satisfaite
5xx : Erreur côté serveur – le serveur n'a pas réussi à répondre à une demande légitime
Codes d'état courants :
200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
4. Comment fonctionne HTTP
Le protocole HTTP définit la manière dont le client Web demande une page Web au serveur Web, et comment le serveur transmet la page Web au client. Le protocole HTTP utilise un modèle requête/réponse. Le client envoie un message de demande au serveur. Le message de demande contient la méthode de demande, l'URL, la version du protocole, l'en-tête de la demande et les données de la demande. Le serveur répond avec une ligne d'état qui inclut la version du protocole, le code de réussite ou d'erreur, les informations sur le serveur, les en-têtes de réponse et les données de réponse.
Voici les étapes de la requête/réponse HTTP :
1. Le client se connecte au serveur Web
Un client HTTP, généralement un navigateur, établit un TCP avec le port HTTP du serveur Web (la valeur par défaut est 80) Connexion prise. Par exemple, http://www.baidu.con.
2. Envoyer une requête HTTP
Via le socket TCP, le client envoie un message de requête texte au serveur Web. Un message de requête se compose de quatre parties : la ligne de requête, l'en-tête de requête, la ligne vide et les données de requête.
3. Le serveur accepte la demande et renvoie une réponse HTTP
Le serveur Web analyse la demande et localise la ressource demandée. Le serveur écrit une copie de la ressource sur le socket TCP, qui est lue par le client. Une réponse se compose de quatre parties : la ligne d'état, l'en-tête de réponse, la ligne vide et les données de réponse.
(Questions d'entretien associées recommandées : questions et réponses d'entretien Java)
4. Libérez la connexion TCP
Si le mode de connexion est fermé, le serveur active ferme la connexion TCP, le client ferme passivement la connexion et libère la connexion TCP ; si le mode de connexion est keepalive, la connexion sera maintenue pendant un certain temps et les demandes pourront continuer à être reçues pendant ce temps ; Le navigateur client analyse le contenu HTML
Le navigateur client analyse d'abord la ligne d'état pour un code d'état indiquant si la demande a réussi. Ensuite, chaque en-tête de réponse est analysé et l'en-tête de réponse indique au document HTML suivant plusieurs octets et le jeu de caractères du document. Le navigateur client lit les données de réponse HTML, les formate selon la syntaxe HTML et les affiche dans la fenêtre du navigateur.
Par exemple : tapez l'URL dans la barre d'adresse du navigateur et appuyez sur Entrée, vous suivrez le processus suivant :
1 Le navigateur demande au serveur DNS de résoudre l'adresse IP correspondant au nom de domaine dans l'URL. ;
2 , après avoir analysé l'adresse IP, établissez une connexion TCP avec le serveur en fonction de l'adresse IP et du port par défaut 80
3. Le navigateur émet une requête HTTP pour lire le fichier (le fichier correspondant à ; la partie après le nom de domaine dans l'URL), et la demande rapporte Le texte est envoyé au serveur en tant que données du troisième message de la négociation à trois voies TCP
4 Le serveur répond à la demande du navigateur et ; envoie le texte html correspondant au navigateur ;
5. Libérez la connexion TCP ;
6. Le navigateur convertit le texte html et affiche le contenu ;
Les principales fonctions du protocole HTTPS peuvent être divisées en deux types : l'une consiste à établir un canal de sécurité des informations pour assurer la sécurité de la transmission des données ; l'autre est de confirmer l'authenticité du site Web ;
Les principales différences entre HTTPS et HTTP sont les suivantes :
1. Le protocole https nécessite de demander un certificat auprès de CA. Généralement, il y a moins de certificats gratuits, donc certains frais sont requis.
2. http est un protocole de transfert hypertexte et les informations sont transmises en texte brut, tandis que https est un protocole de transmission sécurisé et crypté SSL.
3. http et https utilisent des méthodes de connexion complètement différentes et utilisent des ports différents. Le premier est 80 et le second est 443.
4. La connexion http est très simple et sans état ; le protocole HTTPS est un protocole réseau construit à partir du protocole SSL+HTTP qui peut effectuer une transmission cryptée et une authentification d'identité, et est plus sécurisé que le protocole http.
6. Comment la sécurité du HTTPS est assurée
(1) Le client utilise l'URL https pour accéder au serveur Web et nécessite qu'une connexion SSL soit établie avec le serveur Internet.
(2) Après avoir reçu la demande du client, le serveur Web transmettra une copie des informations du certificat du site Web (le certificat contient la clé publique) au client.
(3) Le navigateur du client et le serveur Web commencent à négocier le niveau de sécurité de la connexion SSL, qui est le niveau de cryptage des informations.
(4) Le navigateur du client établit une clé de session en fonction du niveau de sécurité convenu par les deux parties, puis utilise la clé publique du site Web pour crypter la clé de session et la transmet au site Web.
(5) Le serveur Web utilise sa propre clé privée pour déchiffrer la clé de session.
(6) Le serveur Web utilise la clé de session pour crypter la communication avec le client.
Recommandations associées : Démarrer avec Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tout d'abord, CheckifThefnKeySettingisInterferingyTryingBothThevolumeKeyAlonEndfn volumeKey, thentogglefnlockwithfn espifavailable.2.enterbios / uefidUringbootAnableFunctionKeysordiSablehotKeyModetoenSureVolumeSarereCognined.3.updateorreinstallAdriodriving

TestThepdfinanotherApptodetermineIftheissueiswiththefileoredge.2.EnBlEthebuilt-inpdfViewerByTurningOff "AlwaysOpenpdffilesexternal" et "DownloadPdffiles" inedgestoSolver.

Calculé a un cache et les accès multiples ne sont pas recalculés lorsque la dépendance reste inchangée, tandis que les méthodes sont exécutées à chaque fois qu'elles sont appelées; 2.COMPUT est adapté aux calculs basés sur des données réactives. Les méthodes conviennent aux scénarios où les paramètres sont requis ou les appels fréquents, mais le résultat ne dépend pas de données réactives; 3.Coupation prend en charge les getters et les setters, ce qui peut réaliser la synchronisation bidirectionnelle des données, mais les méthodes ne sont pas prises en charge; 4. Résumé: Utilisez d'abord calculé pour améliorer les performances et utilisez des méthodes lors de la réussite des paramètres, de l'exécution d'opérations ou d'éviter le cache, en suivant le principe de "Si vous pouvez utiliser calculé, vous n'utilisez pas de méthodes".

Useeventmpmforhigh-concurrencyworkloads, en particulier avec le-fpm, orpreforkonlyifrequiredByNon-thread-saamodules.2.enable greeptivewithmaxkeepalivereonstSetttotto100 et greepaliveTtimeoutbetweend2–5secondstobalanceCectionreAnseRedResourceusage.

Exécutez le processus enfant à l'aide du package OS / EXEC, créez la commande via exec.command mais ne l'exécutez pas immédiatement; 2. Exécutez la commande avec .output () et attrapez stdout. Si le code de sortie est non nul, return exec.exiterror; 3. Utilisez .Start () Pour démarrer le processus sans blocage, combinez avec .StoutPipe () pour diffuser la sortie en temps réel; 4. Entrez les données dans le processus via .stDinpipe (), et après avoir écrit, vous devez fermer le pipeline et appeler .wait () pour attendre la fin; 5. exec.exiterror doit être traité pour obtenir le code de sortie et le stderr de la commande raté pour éviter les processus zombies.

La méthode la plus courante consiste à utiliser os.path.isdir () ou pathlib.path.is_dir (). 1. Utilisez os.path.isdir (): importos, path = "/ path / to / your / répertoire", ifos.path.isdir (path): print ("Ceci est un répertoire") else: print ("Ce n'est pas un répertoire ou un chemin n'existe pas"). 2. Utilisez Pathlib.path.is_dir () (recommandé): FromPathlibImportp

La surcharge de méthode et la surcharge de méthode sont deux mécanismes pour la mise en œuvre du polymorphisme en Java. 1. La surcharge de méthode se produit dans la même classe. Il nécessite le même nom de méthode mais la liste des paramètres différentes (nombre, type ou ordre des paramètres), qui appartient au polymorphisme de compilation. Le type de retour peut être différent mais ne peut pas être surchargé par le type de retour seul. Il peut y avoir différents modificateurs d'accès et déclarations d'exception; 2. La réécriture de la méthode se produit dans la relation d'héritage. La sous-classe fournit la mise en œuvre spécifique des méthodes existantes de la classe parent. Il nécessite la même signature de méthode et le type de retour est compatible. Le modificateur d'accès ne peut pas être plus strict. Il appartient au polymorphisme d'exécution. La méthode d'instance doit être utilisée et la réécriture correcte peut être assurée par l'annotation @Override. Ensemble, les deux améliorent la lisibilité et l'évolutivité du code.

Pour optimiser les boucles de Foreach imbriquées, les itérations redondantes doivent être évitées en premier et la complexité temporelle peut être réduite de O (n × m) à O (n m); Deuxièmement, si la structure n'est pas vraiment hiérarchique, les données doivent être aplaties à l'aide de méthodes telles que SelectMany; Troisièmement, sautez à l'avance ou sautez un traitement inutile par jugement conditionnel; Quatrièmement, sélectionnez les structures de données appropriées telles que les ensembles de dictionnaire ou de hachage pour améliorer l'efficacité de la recherche; Cinquièmement, la parallélisation peut être utilisée avec prudence lorsque les opérations sont indépendantes et prennent du temps; Sixièmement, extraire la logique complexe dans des méthodes ou des requêtes indépendantes pour améliorer la lisibilité et la maintenabilité. Le cœur de l'optimisation est de réduire la complexité, d'organiser raisonnablement les données et d'évaluer toujours la nécessité de nicher, en fin de compte de code efficace, clair et extensible.
