- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 jstack工具解析及案例
命令描述jstack:用来查看指定java进程的jvm线程栈信息使用方法jstack -[operation] pid 其中operation: -F:当 jstack pid没有响应时,使用-F强制dump线程信息 -m:打印java线程栈和本地线程栈 -l:长期监听,打印锁信息结果描述使用jstack pid dump出来的线程信息如下:"pool-24-thread-85" #2286
2016-09-29 13:37:30 7448
原创 jvm内存分配及垃圾回收
很久之前就一直在学习JVM,但是一直也没有好好的总结,最近终于有了空闲,将之前学习的内容整理成了一个PPT,PPT可以免费下载。也希望大神们可以批评指正。ppt中主要包含下面几部分:Java内存模型内存分配策略分代垃圾收集虚拟机工具垃圾收集器
2016-09-22 16:23:28 318
原创 Java 变量初始化顺序
变量定义的先后顺序决定初始化顺序,即使变量定义散布在方法定义之间,他们仍旧会在方法被调用之前得到初始化,构造方法也是特殊的方法执行顺序:静态块, 静态变量,非静态变量,构造方法 每次在创建对象的时候非静态变量都会被初始化 静态对象只会在类加载的时候被初始化一次
2016-09-18 14:44:56 312
原创 spring中bean,factorybean与beanfactory
1. 普通Bean的创建spring 中的普通bean的创建是通过读取配置文件,将所有配置文件信息保存到beandefinition中,在使用getbean的时候通过反射创建实例,然后再将属性值填充。1.1 普通bean的注入方式1) 使用构造器注入<bean id="person" class="framework.spring.test.Person"> <constructor
2016-09-18 14:22:28 1229
原创 Builder模式
Builder模式适合于属性比较多的对象,避免不停调用set方法进行属性注入。核心思想是在外部类中提供一个静态方法构建一个内部类的对象,再通过使用静态的内部类构建外部类对象。缺点是内部类和外部类几乎拥有相同的属性。
2016-09-18 14:07:20 442
原创 几种单例创建的方式
(1) 直接加载,无论是否需要,只要类被虚拟机加载,这个单例就存在 private static DirectSingleton directSingleton = new DirectSingleton(); public static DirectSingleton getInstance() { return directSingleton; }
2016-09-18 13:58:59 453
原创 Spring-BeanPostProcessor
转自:http://uule.iteye.com/blog/2094549BeanPostProcessorBeanPostProcessor接口作用是:如果我们需要在Spring容器完成Bean的实例化、配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcessor接口的实现,然后注册到容器中。BeanPostProcessor接口定义如下:pub
2016-09-18 13:58:53 228
原创 Spring IOC 源码-ClassPathXmlApplicationContext-bean解析
1、使用方式-使用ApplicationContext方式加载XML@Test public void testBeanLoader(){ BeanFactory bf = new ClassPathXmlApplicationContext("configuration/spring-test.xml");}2、解析ClassPathXmlApplicat
2016-09-18 13:58:47 861
原创 Spring IOC源码-bean加载
1、装载bean的第一步,调用doGetBean(name,...)方法(1)转换对应的beanName,参数里面的name未必是beanName,可能是别名或者factoryBean(2)首先尝试从缓存中加载单例(3)如果从缓存中拿到了bean,调用getObjectForBeanInstance 将bean实例化 (4)原型模式依赖检查(5)通过getParentBeanF
2016-09-18 13:58:41 372
原创 HashMap扩容
HahMap什么时候扩容呢?(1)当map中k-v总数即下面的size大于threshold 的时候if (++size > threshold) resize(); (2)table=null或者table.length =0 threshold 是个什么?HahMap在初始化的时候给threshold的赋值: this.thr
2016-09-18 13:58:36 342
转载 Java8系列之重新认识HashMap
转自:http://www.importnew.com/20386.html简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示:下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数
2016-09-18 13:58:30 1108
原创 HashMap源码
HashMap中的域(1) transient Node[] table;//存储node的数组(2)threshold:(3)static final int DEFAULT_INITIAL_CAPACITY = 1 (3)static final float DEFAULT_LOAD_FACTOR = 0.75f;//负载因子,当map中的数量大于DEFAULT_INITI
2016-09-18 13:58:23 233
转载 java volatile关键字
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/ftf-java-volatile 从并发编程网上转来,mark一下,好好学习http://ifeve.com/volatile/引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器
2016-09-18 13:58:17 294
原创 java 枚举使用中注意的问题
通常在需要使用数据集合的时候,枚举便派上了用场。大多数情况下使用枚举的时候无意识的不会去修改里面的值。那么枚举中的值到底能不能修改呢? 答案是:一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。 今天遇到的问题就是和枚举相关的,因为之前并不知道枚的对象实际上是单例,导致了非常严重的问题先看下代码(1)定义的枚举: public enum SquareAreaEn
2016-09-18 13:58:12 1599
原创 ibatis插入时获取自增主键的方式
(1)对象作为参数执行插入 Person"> insert ignore into tb_person_${tbIndex} (uid,name ) values(#{person.uid,jdbcType=INTEGER},#{person.name,jdbcType=VARCHAR})此时,如果表中有和属性对应的id字段,在插入动作返回后,会
2016-09-18 13:58:06 4587 1
原创 Spring IOC 源码-bean解析
spring bean的解析及创建过程:(1)元数据层(xml anotation )(2)逻辑定义层(解析元素,将结果汇总到beandefination,定义对象初始化逻辑和依赖关系,发生在Beanfactory初始化时候)(3)应用层(bean加载 将bean初始化成对象,发生在getBean时候)1、元数据到BeanDefination的解析过程DefaultListableFacto
2016-09-18 13:58:00 388
转载 final关键词在多线程环境中的使用
原文:http://www.javamex.com/tutorials/synchronization_final.shtml Contents为什么final在多线程中是必要的final对象的引用final的局限性什么时候需要使用final自java 5 起, final关键词在并发中的一个特殊应用是非常重要而且常常被忽视的,实际上,fianl 可以保证正在创
2016-09-18 13:57:54 11001 1
原创 java keywords -final
第一篇从final关键字说起 Contentsfinal基本用法final深入理解 final基本用法 final:无法改变的 1.1 final field: final field 有两种解释: (1)不会改变的编译时常量:编译器可以将该常量带入带能用到它的计算式中,在编译时执行计算,可以减轻运行时负担。此时的常量必须是 fina
2016-09-18 13:57:48 356
转载 JVM指令集
使用命令: javap -c classFileName。可以反汇编class文件,即可以看到class文件对应的JVM机器指令。1 指令码 助记符 说明 2 0x00 nop 什么都不做 3 0x01 aconst_null 将null推送至栈顶 4 0x02 iconst_m1 将int型-1推送至栈顶 5
2016-09-18 12:02:35 278
原创 Java finally使用
finally语句块的执行条件:(1)与finally对应的try语句块被执行 (2)try语句块没有执行System.exit, 换句话说是JVM没有退出
2016-09-17 10:39:17 449
转载 HTTP协议头部与Keep-Alive模式详解
——献给那些向我这样对HTTP的“伪”熟悉者。 故事发生在10月份的一次面试经历中,本来我不想说出来丢人显眼,但是为了警醒自己和告诫后人,我决定写成博文发出来。因为在面试过程中,我讲在2009年写过QQ农场助手,在这期间深入学习了HTTP协议,而且在2010-05-18写了博文:HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等 。面试官说既然我熟悉HTTP协议,就问“
2016-09-16 18:23:17 333
原创 Builder模式
Builder模式适合于属性比较多的对象,避免不停调用set方法进行属性注入。核心思想是在外部类中提供一个静态方法构建一个内部类的对象,再通过使用静态的内部类构建外部类对象。缺点是内部类和外部类几乎拥有相同的属性。 里面的关键点:(1)外部类的builder方法创建内部类(2)静态内部类(3)内部类的append方法(4)内部类的build方法,得到外部类的对象,构建完...
2016-09-13 10:39:47 116
jvm memory management and garbage collector
2016-09-22
jvm内存管理和垃圾回收
2016-09-22
Spring 配置
2011-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人