最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java中finalize()方法如何使用

Java中finalize()方法如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)專注于永新網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供永新營銷型網(wǎng)站建設(shè),永新網(wǎng)站制作、永新網(wǎng)頁設(shè)計、永新網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造永新網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供永新網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

Javafinalize()的另類用法,做過JAVA編程的都知道,在JAVA中有一種垃圾收集器的機制,當它運行時(通常在系統(tǒng)內(nèi)存低到一定限度時自動運行),會回收不再使用的對象所占用的內(nèi)存,所以,在JAVA程序中,我們通常只考慮創(chuàng)建對象,而從不關(guān)心對象的清除。Finalize()是JAVA為類提供的一種特殊方法。

垃圾收集器的工作過程大致是這樣的:一旦垃圾收集器準備好釋放無用對象占用的存儲空間,它首先調(diào)用那些對象的finalize()方法,然后才真正回收對象的內(nèi)存。通過使用finalize(),就可以在垃圾收集器運行期間進行一些特殊的工作。下面一例就說明了finalize()的一種巧妙用法。

現(xiàn)在的商業(yè)應(yīng)用系統(tǒng)越來越多的采用WEB形式。在WEB形式應(yīng)用中,每一次頁面訪問是獨立的,前后不相關(guān)聯(lián),哪怕多個用戶在同一時刻訪問應(yīng)用的同一個頁面,用戶相互之間也是不知道的。如果想要檢查當前有哪些用戶正在使用系統(tǒng)(如準備恢復數(shù)據(jù)備份或進行系統(tǒng)升級時,系統(tǒng)管理員都很希望知道這些信息),該怎么辦呢? 基于Servlet、Jsp技術(shù)的WEB服務(wù)器提供了隱含的Session、Application對象,利用它可以幫開發(fā)者實現(xiàn)一些信息的持續(xù)保存和共享。當用戶訪問一個WEB應(yīng)用時,WEB服務(wù)器會自動創(chuàng)建一個Session對象,該對象可以供用戶在會話期內(nèi)在應(yīng)用的所有頁面中共享數(shù)據(jù); Application是WEB應(yīng)用的一個全局對象。利用Session、Application對象,可以達到跟蹤所有用戶信息的目的。

當用戶打開瀏覽器開始請求WEB應(yīng)用的登錄頁面時,WEB服務(wù)即為該客戶創(chuàng)建一個session,此后,在session的timeout時間內(nèi),該客戶都使用這個session(timeout時間可設(shè)置,如Tomcat服務(wù)器是在各應(yīng)用的web.xml文件中設(shè)置)。如果使用IE瀏覽器, Session與客戶IP地址、客戶程序進程ID所共同標識的連接有對應(yīng)關(guān)系,相同IP地址、相同進程的窗口(如通過IE-文件-新建-窗口打開的新窗口)具有同一個session,所以session可用于標識各個獨立的客戶應(yīng)用連接。

下面是一個樣例:

為了方便處理,先建一個簡單類(user)用來表達用戶信息及存放sessionId:

package com;  public class user {  public String name="";  public String sessionId="";  }

另一個類(testSession)用于處理用戶的login、logout等動作信息,使系統(tǒng)可以跟蹤當前連接的用戶信息。

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文件提供一個簡單的界面進行登錄、注銷處理。文件內(nèi)容如下:

<%@ 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";  %>

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


標題名稱:Java中finalize()方法如何使用
網(wǎng)頁鏈接:http://fisionsoft.com.cn/article/gppdoh.html