Maison Java javaDidacticiel Comment utiliser la méthode finalize() de Java

Comment utiliser la méthode finalize() de Java

Apr 30, 2023 pm 02:43 PM
java finalize()

Java est une utilisation alternative de finalize() Quiconque a fait de la programmation JAVA sait qu'il existe un mécanisme de garbage collector dans JAVA. runtime (généralement exécuté automatiquement lorsque la mémoire système est faible jusqu'à une certaine limite), la mémoire occupée par les objets qui ne sont plus utilisés sera recyclée. Par conséquent, dans les programmes JAVA, nous envisageons généralement uniquement de créer des objets et ne nous soucions jamais de l'effacement. objets. Finalize() est une méthode spéciale fournie par JAVA pour les classes.

Le processus de travail du garbage collector est à peu près le suivant : une fois que le garbage collector est prêt à libérer l'espace de stockage occupé par les objets inutiles, il appelle d'abord la méthode finalize() de ces objets, puis recycle réellement les objets. En utilisant finalize(), vous pouvez effectuer un travail spécial pendant que le garbage collector est en cours d'exécution. L'exemple suivant illustre une utilisation intelligente de finalize().

Les systèmes d'applications commerciales d'aujourd'hui adoptent de plus en plus la forme du WEB. Dans les applications de type WEB, chaque visite de page est indépendante et non liée. Même si plusieurs utilisateurs visitent la même page de l'application en même temps, les utilisateurs ne se connaissent pas. Que devez-vous faire si vous souhaitez vérifier quels utilisateurs utilisent actuellement le système (par exemple, lors de la préparation d'une restauration de données ou d'une mise à niveau du système, les administrateurs système aimeraient connaître ces informations fournies par les serveurs WEB basés sur la technologie Servlet et Jsp) ? caché Il contient des objets Session et Application, qui peuvent aider les développeurs à réaliser la sauvegarde et le partage continus de certaines informations. Lorsqu'un utilisateur accède à une application WEB, le serveur WEB créera automatiquement un objet Session, qui pourra être utilisé par l'utilisateur pour partager des données dans toutes les pages de l'application pendant la session. L'application est un objet global de l'application WEB. À l’aide des objets Session et Application, vous pouvez atteindre l’objectif de suivre toutes les informations utilisateur.

Lorsque l'utilisateur ouvre le navigateur et commence à demander la page de connexion de l'application WEB, le service WEB crée une session pour le client. Après cela, dans le délai d'expiration de la session, le client utilise. cette session (délai d'expiration Il peut être défini, par exemple, le serveur Tomcat est défini dans le fichier web.xml de chaque application). Si vous utilisez le navigateur IE, la session a une relation correspondante avec la connexion identifiée conjointement par l'adresse IP du client et l'ID de processus du programme client Windows avec la même adresse IP et le même processus (comme une nouvelle fenêtre ouverte via IE-File-New). -Window) ont la même session A, la session peut donc être utilisée pour identifier les connexions d'application client individuelles.

Ce qui suit est un exemple :

Afin de faciliter le traitement, créez d'abord une classe simple (utilisateur) pour exprimer les informations de l'utilisateur et stocker l'ID de session :

package com;  public class user {  public String name="";  public String sessionId="";  }
Copier après la connexion
# 🎜 🎜#Une autre classe (testSession) est utilisée pour traiter les informations de connexion, de déconnexion et d'autres actions de l'utilisateur, afin que le système puisse suivre les informations de l'utilisateur actuellement connecté.

package com;  import java.util.Vector;  import com.user;  public class testSession {  public user User;  private Vector vsid;  public testSession()  {  User=new user();  }  public boolean verify(String username,String password)  throws Exception //验证用户/密码  {  return true;  }  public void setSessionVar(String sesid,Vector sid) {  this.User.sessionId=sesid;  this.vsid=sid;  }  private static synchronized void addappses(user puser,  Vector pvsid) { //记录一个新连接的用户  int pos=-1;  user l_user;  if (puser==null || pvsid==null)  return;  for(int i=0;i  l_user=(user)pvsid.get(i);  if(l_user.sessionId.equals(puser.sessionId)){  pos=i;  break;  }  }  if(pos==-1){  pvsid.add(puser);  }  else{  pvsid.set(pos,puser);  }  }  private static synchronized void removeappses(user puser,  Vector pvsid) { //移除一个退出的用户  int pos=-1;  user l_user;  if (puser==null || pvsid==null)  return;  for(int i=0;i  l_user=(user)pvsid.get(i);  if(l_user.sessionId.equals(puser.sessionId)){  pos=i;  break;  }  }  if(pos!=-1){  pvsid.remove(pos);  }  }  protected void finalize() {  this.removeappses(this.User,this.vsid);  }  public boolean login(String username) throws Exception  { //处理登录  this.User.name=username;  this.addappses(this.User,this.vsid);  return true;  }  public boolean logout() throws Exception  { //处理注销  this. finalize();  this.User=null;  this.vsid=null;  return true;  }  }
Copier après la connexion
Chaque utilisateur crée un objet testSession pour enregistrer les informations de l'utilisateur. Afin de décrire la classe testSession, un autre fichier logintest.jsp doit être introduit en même temps. Cet exemple de fichier JSP fournit une interface simple pour le traitement de la connexion et de la déconnexion. Le contenu du fichier est le suivant :

<%@ page import=" com.testSession,  java.util.Vector"%>  <%@page contentType="text/html;charset=GBK" %>  <% request.setCharacterEncoding(response.  getCharacterEncoding());%>  <%  String actionType=request.getParameter("actiontype");  String actionResult="";  if(actionType!=null) {  if(actionType.equals("login")){ // -1-  String userName=request.getParameter("username");  if(userName==null || userName.equals("")){  ;  }  else{  String password=request.getParameter("password");  if(password==null)  password="";  testSession ts=  (testSession)session.getAttribute("testSession");  if(ts!=null) { //-1.1-  session.removeAttribute("testSession");  if( !ts.User.name.equals(""))  ts.logout();  }  ts=new testSession();  if(!ts.verify(userName,password)) {  //验证用户与密码,看是否合法用户  actionResult="login fail";  //非法用户,显示错误信息  }  else{ //验证成功  session.setAttribute("testSession",ts);  Vector app_vts=  (Vector)application.getAttribute("app_vts");  if(app_vts==null) {  app_vts=new Vector();  application.setAttribute("app_vts",app_vts);  }  ts.setSessionVar(session.getId(),app_vts);  ts.login(userName);  actionResult=userName+" login success";  }  }  }  if(actionType.equals("logout")){  testSession ts=  (testSession)session.getAttribute("testSession");  if(ts!=null) {  session.removeAttribute("testSession");  if( !ts.User.name.equals("")){ //-2-  actionResult=ts.User.name;  ts.logout();  }  session.invalidate();  }  actionResult=actionResult+" logout success";  }  }  else actionResult="null";  %>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

See all articles