文章分类 -  java机制

摘要:这里用到了 Java RMI (Remote Method Invocation)Java RMI是一种机制, 是能够让一个 java虚拟机 调用 另一个java 虚拟机上对象的方法, 从而实现远程访问.但是通过客户端实现该远程访问 必须绑定一个远程接口对象.定义远程接口首先 我们写个远程接口 HelloInterface 该接口继承了远程对象Remote接口HelloInterface 里面有个sayHello的方法 用于客户端连接后 打招呼由于sayHello方法 继承了远程Remote对象 所以需要抛一个 RemoteException 远程异常。package Remote_Inter 阅读全文
posted @ 2012-02-08 16:24 agile_work 阅读(1249) 评论(0) 推荐(0)
摘要:Java Web 开发中上下文的保存 java.lang.ThreadLocal可以存储属于当前thread的变量,而servlet的一次请求正好满足这种情况(包括后面业务代码的调用)所以可以把需要的东西放在ThreadLocal实例中。 Java代码 public class Content { private static ThreadLocal _localInstance; public static setContent(Content c) { _localInstance.put(c); } public static Co... 阅读全文
posted @ 2012-01-11 15:28 agile_work 阅读(1665) 评论(0) 推荐(0)
摘要:大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解。我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:Java代码public class InitialOrderTest { // 静态... 阅读全文
posted @ 2012-01-11 10:35 agile_work 阅读(195) 评论(0) 推荐(0)
摘要:类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。 一、简单过程 Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,JVM会将HelloWorld.class加载到内存中,并形成一个Class的对象HelloWorld.class。其中的过程就是类加载过程:1、寻找jre目录,寻找jvm.dll,并初始化JVM;2、产生一个Bootstrap Loader(启动类加载器);3、Bootstrap L 阅读全文
posted @ 2011-12-29 14:20 agile_work 阅读(389) 评论(0) 推荐(0)
摘要:Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。目前有关这方面的资料和书籍都少之又少,大所属介绍线程方面书籍还停留在java5之前的知识层面上。 当然新特征对做多线程程序没有必须的关系,在java5之前通用可以写出很优秀的多线程程序。只是代价不一样而已。 线程 阅读全文
posted @ 2011-12-28 16:16 agile_work 阅读(206) 评论(0) 推荐(0)
摘要:package lhm.hcy.guge.frameset.cache; import java.util.*; /** * <p>Title: </p> * * <p>Description: 管理缓存</p> * Deep blue 2008-11-28 think * 可扩展的功能:当chche到内存溢出时必须清除掉最早期的一些缓存对象,这就要求对每个缓存对象保存创建时间 * <p>Copyright: Copyright (c) 2008</p> * * <p>Company: </p> * 阅读全文
posted @ 2011-12-19 14:35 agile_work 阅读(10400) 评论(2) 推荐(3)
摘要:一.Java并发基础当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A之前,B也获取了A的值0,然后A写入,i变成1,然后B也写入i,i这个时候依然是1.当然java的内存模型没有上面这么简单,在Java Memory Model中,Memory分为两类,main memory和working memory,main memory为所有线程共享,working memo 阅读全文
posted @ 2011-12-19 10:47 agile_work 阅读(2572) 评论(0) 推荐(0)
摘要:刚开始看到HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的。于是自己搜索了一些相关资料来学习,以下就是我的学习沉淀。java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类。Map是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个一个值。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 N 阅读全文
posted @ 2011-12-19 10:12 agile_work 阅读(428) 评论(0) 推荐(0)
摘要:摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。目录:一、术语session二、HTTP协议与状态保持三、理解cookie机制四、理解session机制五、理解javax.servlet.http.HttpSession六、HttpSession常见问题七、跨应用程序的session共享八、总结参考文档一、术语session在我的经验里,session这个词被滥用的程度 阅读全文
posted @ 2011-12-16 15:10 agile_work 阅读(5999) 评论(0) 推荐(1)
摘要:一、什么是用户自动登录? 对于我们的网站向已注册用户提供某些专门的服务,比如网上购物、在线下载、收费浏览等等,就会要求用户在使用这些服务之前进入登录页面,输入用户名和密码,并进行验证。 如果用户经常访问我们的网站,假如每天都访问一次,或者好几次,那么用户每次都重复这些登录操作就会感到相当厌烦。通过一些简单的技术手段,我们可以让网站“记住”那些在曾经登录过的用户。当该用户下次再来访问的时候,网站可以识别该用户,并为其自动完成登录过程。二、基本思路 作为网站的编写者,我们无从知道坐在电脑前的那个人是谁。我们能够知道的是,访问网站的是哪一台电脑——这一点可以通过Cookie实现。因此,... 阅读全文
posted @ 2011-12-16 15:01 agile_work 阅读(1306) 评论(0) 推荐(0)
摘要:一.AOP概述 AOP(Aspect Oriented Programing),即面向切面编程,它主要用于日志记录、性能统计、安全控制、事务处理、异常处理等方面。它的主要意图就要将日志记录,性能统计,安全控制、事务处理、异常处理等等代码从业务逻辑代码中清楚地划分出来。通过对这些行为的分离,我们希望可以将它们独立地配置到业务逻辑方法中,而要改变这些行为的时候也不需要影响到业务逻辑方法代码。 下面让我们来看一个利用AOP来实现日志记录的例子,在没有使用AOP之前,我们的代码如下面所讲述。 下面这段代码为业务的接口类代码: package org.amigo.pr... 阅读全文
posted @ 2011-12-16 13:51 agile_work 阅读(576) 评论(0) 推荐(0)
摘要:1.package test.dao; 2. 3.import java.util.LinkedList; 4. 5.import org.apache.log4j.Logger; 6. 7. 8./** 9. * 10. * @author Andy.xiaomeng 11. * 12. */ 13.public class ThreadPool { 14. 15. private static final Logger Log = Logger.getLogger(ThreadPool.class); 16. 17. private ThreadWorker[] worker; 18. p 阅读全文
posted @ 2011-12-09 15:07 agile_work 阅读(202) 评论(0) 推荐(0)
摘要:转自:http://www.blogjava.net/fastzch/archive/2007/01/16/94308.html一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 session.有时候我们可以看到这样的话“在一个浏览器会话期间,……”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个 阅读全文
posted @ 2011-12-06 10:30 agile_work 阅读(225) 评论(0) 推荐(0)
摘要:建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。我对此书印象最深之一的就是:equal()方法,由浅入深,经典!还有就是同步了,其中提到了我的几个编程误区,以前如何使用同步提高性能等等,通过学习,使我对同步的认识进一步加深。简单介绍 创建线程有两种方式:继承Thread或实现Runnable。Thread实现了Runnable接口 阅读全文
posted @ 2011-12-05 17:44 agile_work 阅读(221) 评论(0) 推荐(1)