- 浏览: 14581 次
- 性别:
- 来自: 杭州
最新评论
文章列表
Spring IoC容器概述
- 博客分类:
- Spring
Spring和EJB在提供服务的开发模式上的差别:
在基本服务的获取方式上,Spring提供和服务和EJB提供的服务并没有太大差别,但是在获取服务的实现方
式上,有本质的区别:在Spring中,Spring IoC提供了一个基本的JavaBean容器,通过IoC模式管理依赖关系,并通过依赖注入和AOP切面增强了为JavaBean这样的POJO对象赋予事务管理、生命周期管理等基本功能;而对于EJB而言,一个简单的EJB组件需要编写远程/本地接口、Home接口以及Bean的实现类,而且EJB运行也是不能脱离EJB容器的,查找其他EJB组件也需要通过诸如JNDI这样的方式,对外部依赖性太强。
...
Spring生态系统中的主要子项目:
1. Spring Framework:Spring项目的核心。IoC、AOP、MVC、JDBC、事务处理等等。
2. Spring Web Flow:Web工作流引擎,建立在Spring MVC基础之上。相对较独立于Spring Framework发
展。
3. Spring BlazeDS Integration:提供Spring与Flex技术集成的模块。
4. Spring Security:基于Spring的认证和安全工具,基于Acegi框架。
5. Spring Security OAuth:对OAuth和Spring的集成提供支持 ...
1. 垃圾收集 -- why?
垃圾收集不仅仅起到释放那些不再被引用对象的作用,它还要能够处理堆碎块。另外,垃圾收集也是Java
安全策略的一部分,可以帮助保持程序的完整性。
但是,垃圾收集也有潜在的缺陷,即增加了程序的负担,影响性能。因为Java虚拟机必须追踪那些正在被
执行的程序所 引用的,动态的终结并释放不再被引用的对象,这个活动需要更多的CPU时间。并且,在垃圾收集环境下,程序员对安排CPU时间来释放无用对象缺乏控制。
1.动态连接和解析
在程序运行过程中,Java虚拟机内部组织了一张互相连接的类和接口的网。
class文件把它所有的引用符号都保存在常量池中。每个class文件都有一个常量池。来自相同或不同方法的
几条指令,可能指向同一个常量池入口,但是每一个常量池入口都植被解析一次。当符号引用被一条指令解析后,来自其他指定的访问该符号引用的操作都使用第一次解析出的直接引用结果。连接不仅仅包括把符号引用转换为直接引用,还包括检查正确定和权限。
对象生命周期起始阶段:类的实例化和初始化;生命周期尽头:垃圾收集和终结。
1.类的实例化
当Java虚拟机创建一个类的新实例时,无论是显示的还是隐含的,都需要在堆中为保存对象的实例变量分
配内存。所有在对象的类中和它的父类中声明的变量也都需要分配内存。
2.卸载类型
使用启动类装载器装载的类型永远是可触及的,所以永远不会被卸载(回收)。
当被以二进制形式来表现Java类型的Java Class文件被导入到虚拟机中时,会发生什么呢?下面,将描述
Java类型(类或借口)的生命周期过程:装载 -> 连接 -> 初始化 -> 对象实例化 -> 垃圾收集 -> 终结 -> 卸载。
装载:就是把以二进制形式表现的Java类型读入到Java虚拟机中。
连接:就是把已经读入的类型数据合并到虚拟机的运行时状态中。此过程分为三个步骤:验证、准备、解
析。“验证”确保格式正确且适于Java虚拟机使用;“准备”则负责分配它所需要的内存,设置默认初始值;“解析”则负责把常量池中的符号引用转换为直接引用,此 ...
在Java中,所有的对象都是按引用传递,并且都存储再堆中,在局部变量和操作数栈中永远都不会存在对
象的拷贝,只会有对象引用。
先引用一张图来说明JVM体系结构是怎样的:
由所有线程共享的运行时数据区如下所示:
Java虚拟机中的基本数据类型的值域在任何平台都是一样的。
引用类型中有一种特殊的引用,即空引用null。
JVM内部有两种线程:守护线程和非守护线程。
前者一般是由JVM自己使用的,如执行GC任务的线程;但是Java程序也可以把它创建的任何线程标记为守
护线程。而Java程序的初始线程--开始于main方法的线程,就是非守护线程。
只要还有任何非守护线程在运行,那么JVM的生命周期就还没结束。当所有的非守护线程终止时,JVM实例
将自动退出。
Java体系结构概述
- 博客分类:
- JVM
Java体系结构包括以下四个部分:
1. Java语言
2. Java class文件格式(被编译后的java类文件格式)
3. Java API
4. Java虚拟机JVM
它们之间的关系,总结一句话:使用java语言调用API编写源代码,被编译成java class文件后,在JVM
中运行。运行时,JVM通过调用class文件中实现了Java API的方法来满足程序对Java API的调用。附图:
Java虚拟机的主要任务就是使用类装载器(包括启动类装载器和用户自定义类装载器)装在class文件,
并交由执行引擎执行其字节码。
类装载器装载两类class文件, ...
HTTP Content-Type分类
- 博客分类:
- WEB/HTTP
HTTP实体首部字段Content-Type表示实体所承载对象的类型。具体可分为以下类型:
.*( 二进制流,不知道下载文件类型)
application/octet-stream
override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点: 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类 ...
- 2009-04-22 10:01
- 浏览 985
- 评论(0)
介绍为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。示例有一个Message实体类,某个类对它的操作有Insert()方法。现在要求根据插入信息的字符长度,让不同的对象去处理,这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
(图示 见附件)
MessageModel
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.ChainOfResponsibility
{
...
- 2009-03-26 22:33
- 浏览 901
- 评论(0)
据国外媒体报道,虽然JavaEE 6在Java社区进程(JCP)中发布了公共预览版,但这一过程并非一帆风顺。
在上月刚刚结束的公共预览版投票中显示Apache软件基金会对JavaEE 6投了反对票。这一反对票揭开了昔日Apache软件基金会与Sun关于Java Compatibility Kit(JCK)许可条款之争的旧伤。
尤其是Apache认为Sun违背了JCP中Java规范分享协议(JSPA)中的条款,因为这些条款包括JCK的许可,而这会降低Java的被接受度。
在该协议下,JCK目前只能针对OpenJDK,有GPL认证的Ja ...
- 2009-03-23 09:49
- 浏览 960
- 评论(0)