2013年10月11日

JVM工作原理和特点

摘要: 作为一种阅读的方式了解下jvm的工作原理JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4.调用JNIEnv实例装载并处理class类。在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.JVM是Java程序运行的环境,但是他同时一个操作系统的一个应用程序一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间.首先来说一下JVM工作原理中的jdk这个东西,不管你是初学者还是高手,是j2ee 阅读全文

posted @ 2013-10-11 18:09 heartstage 阅读(283) 评论(0) 推荐(0) 编辑

JVM的内存模型

摘要: Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域mainmemory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数)。................. 阅读全文

posted @ 2013-10-11 18:07 heartstage 阅读(164) 评论(0) 推荐(0) 编辑

JVM的参数配置

摘要: JVM管理的内存叫堆。在32Bit操作系统上有1.5G-2G的限制,而64Bit的就没有。JVM初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G。JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4但小于1G。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制,可以由-XX:MinHeapFreeRatio=指定。默认空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制,可以由-XX:MaxHeapFreeRatio=指定。 阅读全文

posted @ 2013-10-11 18:06 heartstage 阅读(163) 评论(0) 推荐(0) 编辑

JVM加载Class文件的机制

摘要: 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的, 类装载器所做的工作实质是把类文件从硬盘读取到内存中2.java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序员自定义的类3.类装载方式,有两种 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中, 2.显式装载, 通过class.forname()等方法,显式加载需要的类 隐式加载与显式加载的区别: 两者本质是一样?, ?4.类加载的动态性体现 一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的... 阅读全文

posted @ 2013-10-11 18:05 heartstage 阅读(255) 评论(0) 推荐(0) 编辑

JVM的内存布局

摘要: JVM的内存布局包括,其中:Java虚拟机在执行Java程序的过程中会把它所管理的内存(线程相关?)划分为若干个不同的数据区域。有些区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据规范,Java虚拟机所管理的内存包括以下运行时数据区域:方法区MethodArea堆Heap虚拟机栈VMStack本地方法栈NatvieMethodStack程序计数器ProgramCouterRegistern程序计数器程序计数器是当前线程所执行的字节码的行号指示器。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器 阅读全文

posted @ 2013-10-11 18:04 heartstage 阅读(450) 评论(0) 推荐(0) 编辑

内存泄露和内存溢出的区别和处理方式

摘要: 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。1)java.lang.OutOfMemoryError:PermGenspacePermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC不会在主程序运行期对PermGen 阅读全文

posted @ 2013-10-11 18:03 heartstage 阅读(613) 评论(0) 推荐(0) 编辑

Java集合类

摘要: HashMap和HashTable的区别Ø最明显的区别在于Hashtable是同步的(每个方法都是synchronized),而HashMap则不是.ØHashMap继承至AbstractMap,Hashtable继承至Dictionary,前者为Map的骨干,其内部已经实现了Map所需要做的大部分工作,它的子类只需要实现它的少量方法即可具有Map的多项特性。而后者内部都为抽象方法,需要它的实现类一一作自己的实现,且该类已过时Ø两者检测是否含有key时,hash算法不一致,HashMap内部需要将key的hash码重新计算一边再检测,而Hashtable则直接利用 阅读全文

posted @ 2013-10-11 18:02 heartstage 阅读(190) 评论(0) 推荐(0) 编辑

HashCode()的作用

摘要: 在实现Hash算法的集合里面,例如HashSet,该集合不能存放相同的数据,HashSet会根据对象的equals()和hashCode()方法来判断要存放的数据是否已经存在。Hash算法把HashSet划分成多个区域,每个区域就是以哈希码来作为该区域的唯一编码,而hashCode()的作用就是为某对象生成一个哈希码。Hash算法会认为如果两个对象的equals()比较后相等,那么它所对应的hashCode也应该相等,那么HashSet会从该哈希码所对应的那个区域来查找是否已经存在该对象数据,不存在则放进去。而如果只提供equals方法,不提供hashCode()方法,就算判断出两个对象引用相 阅读全文

posted @ 2013-10-11 18:00 heartstage 阅读(250) 评论(0) 推荐(0) 编辑

利用Java的反射与代理机制实现AOP

摘要: 在上一篇文章中,我们讲述了利用Java的反射机制中实现Spring中的IOC,在本文中,我们将更进一步,讲述用Java的反射和动态代理机制来实现Spring的AOP。一.AOP概述 AOP(AspectOrientedPrograming),即面向切面编程,它主要用于日志记录、性能统计、安全控制、事务处理、异常处理等方面。它的主要意图就要将日志记录,性能统计,安全控制、事务处理、异常处理等等代码从业务逻辑代码中清楚地划分出来。通过对这些行为的分离,我们希望可以将它们独立地配置到业务逻辑方法中,而要改变这些行为的时候也不需要影响到业务逻辑方法代码。 下面让我们来看一个利用AOP来实现日志记录的例 阅读全文

posted @ 2013-10-11 17:56 heartstage 阅读(726) 评论(0) 推荐(0) 编辑

String、StringBuffer与StringBuilder之间区别

摘要: 最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder> StringBuffer > String 2.String 1Strings="abcd"; 2s=s+1; 3System.out.print(s);//result:abcd1 我们明明就是改变了String型的变量s的,为什么说 阅读全文

posted @ 2013-10-11 17:53 heartstage 阅读(145) 评论(0) 推荐(0) 编辑

Java的反射机制

摘要: 一、什么是反射: 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。反射本身并不是一个新概念,尽管计算机科学赋予了反射概念新的含义。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述 阅读全文

posted @ 2013-10-11 17:53 heartstage 阅读(277) 评论(0) 推荐(0) 编辑

Java 反射调用的一种优化

摘要: 写一些Java框架的时候,经常需要通过反射get或者set某个bean的field,比较普通的做法是获取field后调用java.lang.reflect.Field.get(Object),但每次都这样调用,能否有优化的空间呢?答案是有。第一种: 由于每次都是重复的调用,所以想到了缓存每个bean的field,但这样做还是不够,所以想到了写一个code generator。通过生成代码的方式,get或者set每个bean的时候直接调用该bean的getter或者setter,这个实现听起来很牛逼,其实就是用asm生成一个类在用一个classloader加载进来每次调用直接invoke就可以了 阅读全文

posted @ 2013-10-11 17:33 heartstage 阅读(440) 评论(0) 推荐(0) 编辑

jQuery中常用正则表达式

摘要: http://wenku.baidu.com/view/c3c7c05977232f60ddcca1b2.html 阅读全文

posted @ 2013-10-11 17:23 heartstage 阅读(125) 评论(0) 推荐(0) 编辑

8种NoSql数据库系统对比

摘要: 导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章。虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举。但是NoSQL数据库之间的不同,远超过两 SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的 NoSQL数据库。针对这种情况,这里对 Cassandra、Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j和HBase进行了比较:(编注1:NoSQL:是 阅读全文

posted @ 2013-10-11 17:20 heartstage 阅读(160) 评论(0) 推荐(0) 编辑

Java的ClassLoader机制

摘要: http://blog.chenlb.com/2009/06/java-classloader-architecture.htmlhttp://blog.csdn.net/lovingprince/article/details/4238695http://www.cnblogs.com/ericchen/archive/2011/01/15/1936130.html 阅读全文

posted @ 2013-10-11 17:09 heartstage 阅读(154) 评论(0) 推荐(0) 编辑

Maven / Nexus 的用法和经验

摘要: Maven / Nexus 的用法和经验 阅读全文

posted @ 2013-10-11 17:02 heartstage 阅读(158) 评论(0) 推荐(0) 编辑

Spring中BeanFactory和ApplicationContext的区别

摘要: 1.BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期。2.ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:a.国际化支持b.资源访问:Resourcers=ctx.getResource(“classpath:config.properties”),“file:c:/config.properties”c.事件传递:通过实现ApplicationContextAware接口http://www.mianwww.com/html/2009/08/348 阅读全文

posted @ 2013-10-11 16:50 heartstage 阅读(189) 评论(0) 推荐(0) 编辑

Spring Bean的作用域

摘要: singleton:返回bean的同一个实例,也是默认的作用域(无状态bean使用此作用域)prototype:每次请求都会创建一个实例(有状态bean使用此作用域)request、session、globalsession这三个作用域主要用在web应用中在Spring2.0之前bean只有2种作用域:sigleton、non-singleton(prototype),Spring2.0以后增加了session、request、global【这三种情况的使用场景?】。Session三种专用于web应用程序上下文的bean。因此默认情况下Spring2.0现在有五种类型的bean。1.singl 阅读全文

posted @ 2013-10-11 16:45 heartstage 阅读(355) 评论(0) 推荐(0) 编辑

Spring 框架的设计理念与设计模式分析

摘要: 简介:Spring 作为现在最优秀的框架之一,已被广泛的使用,并且有很多对其分析的文章。本文将从另外一个视角试图剖析出 Spring 框架的作者设计 Spring 框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成 Spring 的骨骼架构? Spring 的 AOP 特性又是如何利用这些基础的骨骼架构来工作的? Spring 中又使用了那些设计模式来完成它的这种设计的?它的这种设计理念对对我们以后的软件设计有何启示?本文将详细解答这些问题。Spring 的骨骼架构Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总 阅读全文

posted @ 2013-10-11 16:34 heartstage 阅读(204) 评论(0) 推荐(0) 编辑

SSH框架的简单含义

摘要: 典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MV 阅读全文

posted @ 2013-10-11 16:20 heartstage 阅读(453) 评论(0) 推荐(0) 编辑

导航