仓酷云 发表于 2015-1-18 11:26:28

来看Java中finalize()的另类用法

C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
做过JAVA编程的都晓得,在JAVA中有一种渣滓搜集器的机制,当它运转时(一般在体系内存低到必定限制时主动运转),会接纳不再利用的对象所占用的内存,以是,在JAVA程序中,我们一般只思索创立对象,而从不体贴对象的扫除。Finalize()是JAVA为类供应的一种特别办法。渣滓搜集器的事情历程大抵是如许的:一旦渣滓搜集器筹办好开释无用对象占用的存储空间,它起首挪用那些对象的finalize()办法,然后才真正接纳对象的内存。经由过程利用finalize(),就能够在渣滓搜集器运转时代举行一些特别的事情。上面一例就申明了finalize()的一种奇妙用法。
如今的贸易使用体系愈来愈多的接纳WEB情势。在WEB情势使用中,每次页面会见是自力的,前后不相干联,哪怕多个用户在统一时候会见使用的统一个页面,用户互相之间也是不晓得的。假如想要反省以后有哪些用户正在利用体系(如筹办恢单数据备份或举行体系晋级时,体系办理员都很但愿晓得这些信息),该怎样办呢?基于Servlet、Jsp手艺的WEB服务器供应了隐含的Session、Application对象,使用它能够帮开辟者完成一些信息的延续保留和共享。当用户会见一个WEB使用时,WEB服务器会主动创立一个Session对象,该对象能够供用户在会话期内涵使用的一切页面中共享数据;Application是WEB使用的一个全局对象。使用Session、Application对象,能够到达跟踪一切用户信息的目标。
当用户翻开扫瞄器入手下手哀求WEB使用的登录页面时,WEB服务即为该客户创立一个session,今后,在session的timeout工夫内,该客户都利用这个session(timeout工夫可设置,如Tomcat服务器是在各使用的web.xml文件中设置)。假如利用IE扫瞄器,Session与客户IP地点、客户程序历程ID所配合标识的毗连有对应干系,不异IP地点、不异历程的窗口(如经由过程IE-文件-新建-窗口翻开的新窗口)具有统一个session,以是session可用于标识各个自力的客户使用毗连。
上面是一个样例
为了便利处置,先建一个复杂类(user)用来表达用户信息及寄存sessionId:
packagecom;
publicclassuser{
publicStringname="";
publicStringsessionId="";
}
另外一个类(testSession)用于处置用户的login、logout等举措信息,使体系能够跟踪以后毗连的用户信息。
packagecom;
importjava.util.Vector;
importcom.user;
publicclasstestSession{
publicuserUser;
privateVectorvsid;
publictestSession()
{
User=newuser();
}
publicbooleanverify(Stringusername,Stringpassword)
throwsException//考证用户/暗码
{
returntrue;
}
publicvoidsetSessionVar(Stringsesid,Vectorsid){
this.User.sessionId=sesid;
this.vsid=sid;
}
privatestaticsynchronizedvoidaddappses(userpuser,
Vectorpvsid){//纪录一个新毗连的用户
intpos=-1;
userl_user;
if(puser==null||pvsid==null)
return;
for(inti=0;i<pvsid.size();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);
}
}
privatestaticsynchronizedvoidremoveappses(userpuser,
Vectorpvsid){//移除一个加入的用户
intpos=-1;
userl_user;
if(puser==null||pvsid==null)
return;
for(inti=0;i<pvsid.size();i++){
l_user=(user)pvsid.get(i);
if(l_user.sessionId.equals(puser.sessionId)){
pos=i;
break;
}
}
if(pos!=-1){
pvsid.remove(pos);
}
}
protectedvoidfinalize(){
this.removeappses(this.User,this.vsid);
}
publicbooleanlogin(Stringusername)throwsException
{//处置登录
this.User.name=username;
this.addappses(this.User,this.vsid);
returntrue;
}
publicbooleanlogout()throwsException
{//处置刊出
this.finalize();
this.User=null;
this.vsid=null;
returntrue;
}
}
<p>
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,

金色的骷髅 发表于 2015-1-19 20:51:58

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

活着的死人 发表于 2015-1-24 16:36:07

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

小魔女 发表于 2015-1-26 09:28:18

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

老尸 发表于 2015-1-27 08:33:21

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

仓酷云 发表于 2015-2-5 03:31:27

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

蒙在股里 发表于 2015-2-8 08:09:25

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

莫相离 发表于 2015-2-9 04:28:58

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

第二个灵魂 发表于 2015-2-23 01:50:55

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

冷月葬花魂 发表于 2015-2-27 11:53:34

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

飘飘悠悠 发表于 2015-3-9 02:30:06

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

飘灵儿 发表于 2015-3-12 07:56:42

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

乐观 发表于 2015-3-19 18:57:09

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

简单生活 发表于 2015-4-1 09:42:43

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
页: [1]
查看完整版本: 来看Java中finalize()的另类用法