![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 71
kesay
这个作者很懒,什么都没留下…
展开
-
Java同步: synchronized用法
Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized关键字的作用进行深入了解才可定论。总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于instan转载 2010-03-17 18:45:00 · 733 阅读 · 0 评论 -
OSGi体系结构
<br />OSGi体系结构OSGi 的初衷是面向嵌入式系统的应用,支持在一个Java虚拟机上加载和启动多个Java应用程序。随着OSGi在Eclipse3.0上的应用成功,其逐渐成为构建纯插件结构的企业级应用软件系统的首选平台。<br /><br />OSGi 是一个纯插件的体系结构,OSGi 框架实现是一个最为核心的插件,逻辑实现分层见下面两张图:<br /><br /><br /> L0层Java执行环境OSGi最初规范定位到嵌入式系统,例如家电、汽车、手机等执行环境,所以转载 2010-08-11 15:27:00 · 1778 阅读 · 0 评论 -
实例讲解OSGI开发
<br /> OSGI,或者通俗点说JAVA动态模块系统,定义了一套模块应用开发的框架。OSGI容器实现方案如Knopflerfish, Equinox, and Apache Felix允许你把你的应用分成多个功能模块,这样通过依赖管理这些功能会更加方便。<br />和Servlet和EJB规范类似,OSGI规范包含两大块:一个OSGI容器需要实现的服务集合;一种OSGI容器和应用之间通信的机制。开发OSGI平台意味着你需要使用OSGI API编写你的应用,然后将其部署到OSGI容器中。从开发者的视角来看转载 2010-08-12 11:03:00 · 6306 阅读 · 1 评论 -
运行jar应用程序引用其他jar包的四种方法
<br />大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口。<br /> 具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。<br /> <br />比如有个叫做test.jar的jar包,里面有一个拥有main函数的main class:test.someClassName<br />我们就只要在MANIFEST.MF里面添加如下一句话:<br />Main-Class: test.som原创 2010-08-12 15:55:00 · 1244 阅读 · 0 评论 -
java classLoader 体系结构
<br /><br />jvm classLoader architecture:Bootstrap ClassLoader/启动类加载器 <br />主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作。Extension ClassLoader/扩展类加载器 <br />主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作。System ClassLoader/系统类加载器原创 2010-08-17 15:57:00 · 545 阅读 · 0 评论 -
Tomcat6 类装载器分析
在研究Tomcat之前,一般是借用现有的UML工具分析Tomcat整体结构,但要分析Tomcat的流程就必须从分析Tomcat的StartUp入手。Tomcat的启动是从解析bat文件开始,bat文件最终调用org.apache.catalina.startup.Bootstrap开始类的加载。Tomcat6 类装载器的实现都是通过继承于JDK中的 java.lang.ClassLoader类。包括Bootstrap,System,Common和Webapp这四种类加载器来实现不同目录的类文件装载。原创 2010-08-17 17:24:00 · 912 阅读 · 0 评论 -
java常用的Listener分类
Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。(通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发 sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。)Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前、发生后可以做一些必要的处理。目前 Servlet2.4 和 JSP2.0 常用的有7 个监听器接口,分为3 类: 1. Servlet上下文进行监原创 2010-10-09 16:33:00 · 1010 阅读 · 0 评论 -
OSGi入门
<br />借助网上的一些资料,对OSGi有了一些了解,将到目前的一些粗浅认识记录如下,由于自己对J2EE比较熟悉,所以借助与J2EE的对比来认识OSGi。 <br /><br />Module <br /><br />OSGi中具体实现Module的单位是bundle,一个bundle就是一个jar文件,其中包含所需的类文件和资源文件,同时必须包含一个描述文件;每个bundle都可以被独立打包、部署。看到这里,你是否会觉得跟J2EE中的WAR定义很类似? <br /><br />单从形式上来看,它们的确非原创 2010-08-11 13:56:00 · 753 阅读 · 0 评论 -
ClassLoader:由不同的类加载器实例加载,那么它们的类型是不相同的
同一个Class,如果是由不同的类加载器实例加载的,那么它们的类型是不相同的原创 2010-08-09 10:48:00 · 2555 阅读 · 0 评论 -
ThreadPoolExecutor 可扩展性
<br /> <br />到这里对于这个线程池还只是介绍了一小部分。ThreadPoolExecutor 具有很强的可扩展性,不过扩展它的前提是要熟悉它的工作方式。后面的文章将会介绍如何扩展 ThreadPoolExecutor 类。 <br /> java.util.concurrent.ThreadPoolExecutor 类提供了丰富的可扩展性。你可以通过创建它的子类来自定义它的行为。例如,我希望当每个任务结束之后打印一条消息,但我又无法修改任务对象,那么我可以这样写: <br /> 除了 aft原创 2010-08-03 09:37:00 · 2560 阅读 · 0 评论 -
异常处理之最佳实践(Best Practices for Exception Handling )
关于异常处理最主要的问题是什么时间、怎么使用,在本文将含括一些关于异常处理的最佳实践方案。 异常的本质(这里有三种不同的情况会产生并抛出异常):程序错误:这种异常时由于程序的错误而产生的(例如,NullPointerException and IllegalArgumentException)。代码调用错误:客户端代码试图违反API协议调用接口。如果异常能提供一些有用的翻译 2010-03-18 18:00:00 · 3356 阅读 · 0 评论 -
Synchronized: 递归与死锁
所谓递归函数就是自调用函数,在函数体内直接或间接的调用自己,即函数的嵌套是函数本身。 递归方式有两种:直接递归和间接递归,直接递归就是在函数中出现调用函数本身。间接递归,指函数中调用了其他函数,而该其他函数又调用了本函数。那什么时候使用递归呢?一般来说当你要在某段代码逻辑中使用循环迭代的时候但是迭代的次数在迭代之前无法知晓的情况下使用递归。打个比方你要在一个文件夹中查找某个文件,而这个文件夹底下有转载 2010-03-22 16:35:00 · 5651 阅读 · 2 评论 -
基于 J2EE 网银系统的安全系统解决方案概述
<br />简介: 本文介绍网络银行所普遍采用的安全技术和方案,将从数据和业务逻辑的两个角度详细地分析一般网络银行系统的安全需求,并据此引入以 PPDRR 为安全模型的安全设计方案。通过阅读本文,读者不但可以了解网上银行普遍采用的安全系统架构以及相关技术,而且对开发实际安全应用系统具有一定的指导意义。<br /> <br />摘要<br />随着中国加入 WTO,外国银行进入中国市场,国内银行的业务越来越多的移植到网络银行上,因此网上银行的需求日益增加。但是 Internet 的开放性特点,使网上银行面临种转载 2010-07-05 15:40:00 · 818 阅读 · 0 评论 -
PermGen space
<br /> PermGen space<br />PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运转载 2010-07-12 13:12:00 · 607 阅读 · 0 评论 -
java.lang.OutOfMemoryError: unable to create new native thread
解决 - java.lang.OutOfMemoryError: unable to create new native thread工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP, 1.5.0_22, myeclipse 6.6,测试程序: Java代码 import java.uti原创 2010-07-12 13:50:00 · 5497 阅读 · 1 评论 -
TCP/IP选项解析(Java Socket)
1. SO_LINGER/ SO_REUSEADDR TCP正常的关闭过程如下(四次握手过程): (FIN_WAIT_1) A ---FIN---> B(CLOSE_WAIT) (FIN_WAIT_2) A (TIME_WAIT)A (TIME_WAIT)A ---ACK-> B(CLOSED) A端首先发送一个FIN请求给B端,要求关闭,发送后A段的TCP状态变更为FIN_WAIT_1,接收到FIN请求后B原创 2010-07-15 17:55:00 · 1374 阅读 · 0 评论 -
Dynamic Proxy、 Proxy Pattern and Decorator Pattern
动态代理:在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现,如下,IHelloWorld接口定义的业务方法,HelloWorld是IHelloWorld接口的实现,HelloWorldProxy是 InvocationHandler接口实现。p原创 2010-07-28 18:48:00 · 775 阅读 · 0 评论 -
线程中的current thread not owner异常错误
<br />多线程常用的一些方法: wait(),wait(long),notify(),notifyAll()等<br /><br />这些方法是当前类的实例方法,<br /><br />wait() 是使持有对象锁的线程释放锁;<br />wait(long)是使持有对象锁的线程释放锁时间为long(毫秒)后,再次获得锁,wait()和wait(0)等价;<br />notify() 是唤醒一个正在等待该对象锁的线程,如果等待的线程不止一个,那么被唤醒的线程由jvm确定;<br />no原创 2010-08-03 09:20:00 · 2320 阅读 · 0 评论 -
HttpSessionBindingListener应用
如果需要对象X在被纳入session、移出session时分别执行某些任务的话:仅需使X继承HttpSessionBindingListener接口,然后将X纳入session即可( session.setAttribute("abc", X) ); 原理如下: 在tomcat5.5下,HttpSession的实现类位于 tomcat5.5/server/lib/catalina.jar中,以下是部分源码:public class StandardSession implements Ht原创 2010-11-16 16:31:00 · 648 阅读 · 0 评论