ホームページ Java &#&チュートリアル Javaのfinalize()メソッドの使い方

Javaのfinalize()メソッドの使い方

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

Java での finalize() の別の使用法 JAVA プログラミングを行ったことがある人なら誰でも、JAVA にガベージ コレクター メカニズムがあることを知っています。実行中 (通常、システム メモリが特定の制限に達すると自動的に実行されます) は、使用されなくなったオブジェクトによって占有されているメモリをリサイクルします。そのため、JAVA プログラムでは、通常、オブジェクトの作成のみを考慮し、オブジェクトのクリアについては考慮しません。 。 Finalize() は、JAVA がクラス用に提供する特別なメソッドです。

ガベージ コレクターの作業プロセスは大まかに次のとおりです。ガベージ コレクターは、不要なオブジェクトによって占有されているストレージ領域を解放する準備ができると、最初にそれらのオブジェクトの Finalize() メソッドを呼び出し、次に実際に再利用します。オブジェクトの記憶。 Finalize() を使用すると、ガベージ コレクターの実行中に特別な作業を実行できます。次の例は、finalize() の賢い使い方を示しています。

現在、商用アプリケーションシステムではWEB形式を採用するシステムが増えています。 WEB 型アプリケーションでは、各ページへのアクセスは独立しており関連性がなく、複数のユーザーが同時にアプリケーションの同じページにアクセスしたとしても、ユーザー同士はお互いを知りません。現在システムを使用しているユーザーを確認したい場合はどうすればよいでしょうか (たとえば、データ バックアップの復元やシステム アップグレードの実行の準備をしているとき、システム管理者はこの情報を知りたいと考えています)? サーブレットおよび Jsp テクノロジに基づく WEB サーバーは、次のことを行います。 hidden これには Session オブジェクトと Application オブジェクトが含まれており、開発者が一部の情報を継続的に保存および共有するのに役立ちます。ユーザーが WEB アプリケーションにアクセスすると、WEB サーバーは自動的に Session オブジェクトを作成し、ユーザーはこれを使用してセッション中にアプリケーションのすべてのページのデータを共有できます。Application は WEB アプリケーションのグローバル オブジェクトです。 Session オブジェクトと Application オブジェクトを使用すると、すべてのユーザー情報を追跡するという目的を達成できます。

ユーザーがブラウザを開いてWEBアプリケーションのログインページへのリクエストを開始すると、WEBサービスは顧客向けにセッションを作成し、その後セッションのタイムアウト時間内に顧客はこのセッションを利用します。 (タイムアウト時間は、Tomcat サーバーが各アプリケーションの web.xml ファイルで設定されるなど、設定できます)。 IEブラウザを使用する場合、SessionはクライアントIPアドレスとクライアントプログラムのプロセスIDで識別される接続と対応関係があり、同一IPアドレス、同一プロセスのWindows(IE-ファイル-新規で開いた新規ウィンドウなど) -Window) には同じ A セッションがあるため、セッションを使用してそれぞれの独立したクライアント アプリケーション接続を識別できます。

以下は例です。

処理を容易にするために、まずユーザー情報を表現する単純なクラス (user) を作成し、sessionId:

package com;  public class user {  public String name="";  public String sessionId="";  }
ログイン後にコピー

別のクラス ( testSession) は、システムが現在接続しているユーザー情報を追跡できるように、ユーザーのログイン、ログアウト、その他のアクション情報を処理するために使用されます。

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;  }  }
ログイン後にコピー

各ユーザーは、ユーザーの情報を保存するために testSession オブジェクトを作成します。クラスtestSessionを記述するためには、別のファイルlogintest.jspを同時に導入する必要があります。たとえば、この JSP ファイルは、ログインおよびログアウト処理のための単純なインターフェイスを提供します。ファイルの内容は次のとおりです:

<%@ 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";  %>
ログイン後にコピー

以上がJavaのfinalize()メソッドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

See all articles