So verwenden Sie die finalize()-Methode von Java
Eine alternative Verwendung von
finalize() in Java Jeder, der sich mit JAVA-Programmierung beschäftigt hat, weiß, dass es in JAVA einen Garbage-Collector-Mechanismus gibt, der normalerweise ausgeführt wird, wenn der Systemspeicher eine bestimmte Grenze erreicht ) wird den von Objekten belegten Speicher wiederverwenden, der nicht mehr verwendet wird. Daher berücksichtigen wir in JAVA-Programmen normalerweise nur das Erstellen von Objekten und kümmern uns nie um das Löschen von Objekten. Finalize() ist eine spezielle Methode, die JAVA für Klassen bereitstellt.
Der Arbeitsprozess des Garbage Collectors sieht ungefähr so aus: Sobald der Garbage Collector bereit ist, den von nutzlosen Objekten belegten Speicherplatz freizugeben, ruft er zunächst die finalize()-Methode dieser Objekte auf und fordert dann tatsächlich den Speicher des Objekts zurück Objekte. Durch die Verwendung von finalize() können Sie einige spezielle Arbeiten ausführen, während der Garbage Collector ausgeführt wird. Das folgende Beispiel veranschaulicht eine clevere Verwendung von finalize(). Heutzutage übernehmen immer mehr kommerzielle Anwendungssysteme die WEB-Form. Bei Anwendungen im WEB-Stil ist jeder Seitenbesuch unabhängig und nicht miteinander verbunden. Selbst wenn mehrere Benutzer gleichzeitig dieselbe Seite der Anwendung besuchen, kennen sich die Benutzer nicht. Was sollten Sie tun, wenn Sie überprüfen möchten, welche Benutzer das System derzeit verwenden (z. B. möchten Systemadministratoren diese Informationen bei der Vorbereitung einer Datensicherung oder der Durchführung von Systemaktualisierungen wissen)? versteckt Es enthält Sitzungs- und Anwendungsobjekte, mit denen Entwickler das kontinuierliche Speichern und Teilen einiger Informationen erreichen können. Wenn ein Benutzer auf eine WEB-Anwendung zugreift, erstellt der WEB-Server automatisch ein Sitzungsobjekt, mit dem der Benutzer während der Sitzung Daten auf allen Seiten der Anwendung teilen kann. Die Anwendung ist ein globales Objekt der WEB-Anwendung. Mithilfe von Sitzungs- und Anwendungsobjekten können Sie alle Benutzerinformationen verfolgen. Wenn der Benutzer den Browser öffnet und beginnt, die Anmeldeseite der WEB-Anwendung anzufordern, erstellt der WEB-Dienst eine Sitzung für den Kunden. Danach nutzt der Kunde diese Sitzung (die Timeout-Zeit). kann festgelegt werden, z. B. Tomcat-Server. Es wird in der Datei web.xml jeder Anwendung festgelegt. Wenn Sie den IE-Browser verwenden, hat die Sitzung eine entsprechende Beziehung zu der Verbindung, die durch die Client-IP-Adresse und die Client-Programmprozess-ID mit derselben IP-Adresse und demselben Prozess gemeinsam identifiziert wird (z. B. ein neues Fenster, das über IE-File-New geöffnet wird). -Fenster) haben die gleiche A-Sitzung, sodass die Sitzung zum Identifizieren jeder unabhängigen Clientanwendungsverbindung verwendet werden kann. Das Folgende ist ein Beispiel: Um die Verarbeitung zu erleichtern, erstellen Sie zunächst eine einfache Klasse (Benutzer), um Benutzerinformationen auszudrücken und die Sitzungs-ID zu speichern:package com; public class user { public String name=""; public String sessionId=""; }
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; } }
<%@ 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"; %>
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die finalize()-Methode von Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.
