自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

转载 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释放垃圾占用的空间,这一切都交给了JVM来处理。本文主要解答三个问题:1、哪些内存需要回收?(对象是否可以被回收的两种经典算法: 引用计数法 和 可达性分析算法) 2、如何回收?

2017-12-19 17:25:13 3830

原创 java 类加载机制-class生命周期

虚拟机将描述类的数据从class文件加载到内存,并对数据进行校验,准备,解析和初始化,最终就会形成可以被虚拟机使用的java类型,这就是一个虚拟机的类加载机制。java在类中的类是动态加载的,只有在运行期间使用到该类的时候,才会将该类加载到内存中,java依赖于运行期动态加载和动态链接来实现类的动态使用。一个类的生命

2017-12-19 17:04:33 394

转载 Java ClassLoader原理深入分析

一、什么是ClassLoader?         大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在

2017-12-19 16:51:14 335

原创 java虚拟机(JVM)详解

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。JVM屏蔽了与具体平台相关的信息,编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。一、JVM体系结构二、类装载器(ClassLoader) 在JVM中负责装载.class文件(一种8位二

2017-12-18 10:59:09 340

转载 Spring源码分析3 — spring bean创建和初始化

1 介绍创建并初始化spring容器中,refresh()方法中解析xml配置文件,注册容器后处理器,bean后处理器,初始化MessageSource,ApplicationEventMulticaster广播器,注册完ApplicationListener监听器后,关键一步就是创建和初始化其他非lazy-init的singleton beans。这样在容器初始化好的时候,这些singleton

2017-12-11 11:07:31 268

转载 Spring源码分析2 — XML配置文件的解析流程

1 介绍创建并初始化spring容器中,关键一步就是读取并解析spring XML配置文件。这个过程比较复杂,本文将详细分析整个流程。先看涉及到的关键类。XmlWebApplicationContext:web应用的默认Spring容器XmlBeanDefinitionReader:读取XML并解析xml文件DocumentLoader:文件先被读取为了原始的输入流InputStream,然后封装为

2017-12-11 10:41:58 282

转载 Spring源码分析1 — 容器启动流程

1 主要类部署web应用时,web容器(比如Tomcat)会读取配置在web.xml中的监听器,从而启动spring容器。有了spring容器之后,我们才能使用spring的IOC AOP等特性。弄清spring容器启动流程,有利于理解spring IOC中的各种特性,比如BeanPostProcessor,MessageSource,ApplicationListener等。我们先来看下容器启动流

2017-12-08 17:35:47 280

原创 Java 序列化 (Serializable)

1、序列化是干什么的? Java 对象序列化是 JDK 1.1 中引入的一组开创性特性之一,用于作为一种将 Java 对象的状态转换为字节数组,以便存储或传输的机制, 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机

2017-09-07 17:12:23 330

转载 23种设计模式汇总整理

设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式

2017-05-27 11:53:05 261

转载 JAVA设计模式之门面模式(外观模式)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。  首先病人必须先挂号,然后门诊。如果医生要求化验,病人必

2017-05-27 11:45:26 258

转载 JAVA设计模式初探之装饰者模式

这个模式花费了挺长时间,开始有点难理解,其实就是定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。

2017-05-26 10:51:27 276

转载 JAVA设计模式初探之适配器模式

1. 概述  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题  即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。      下面是两个非常形象的例子             3. 模式中的角色  3.1 目标接口(Target):客户所期待的接

2017-05-24 11:53:15 326

转载 JAVA设计模式之抽象工厂模式

本文继续介绍23种设计模式系列之抽象工厂模式。前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例。例子背景:随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B

2017-05-24 11:35:49 226

转载 JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部

2017-05-24 11:09:01 229

转载 JAVA设计模式之代理模式

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编

2017-05-23 15:54:13 211

转载 Java设计模式之策略模式

本文继续介绍23种设计模式系列之策略模式。背景在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的

2017-05-23 15:45:23 272

转载 JAVA设计模式初探之桥接模式

生活中的一个例子:    拿汽车在路上行驶的来说。既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也有不同类型,在软件系统中就要适应两个方面(不同车型,不同道路)的变化,怎样实现才能应对这种变化呢?概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“

2017-05-23 11:58:27 381

原创 java带有效期的map

在日常工作中有很多场景需要一个类似于MC或者redis这种可以设置过期时间的K,V存储方式,但是使用MC或者redis又有点大材小用,最理想的就是希望map有这个功能ExpiryMap继承至HashMap 重写了所有对外的方法,对每个key值都设置了有效期package com.aiggo.common.util;import java.util.Collection;i

2017-01-05 11:40:14 16824 11

原创 logback冲突导致日志级别失效的解决办法

在使用logback日志的时候,可能会与log4j等日志插件产生冲突,导致日志级别失效为debug部分错误日志输出截图14:20:53.084 [localhost-startStop-1] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initial

2017-01-05 11:04:05 8643

原创 java小型web框架

# ankang-reportreport 是一个开源的访问层框架,基于java平台,依赖于spring,以Mozilla Public License 2.0 协议发布。可用于接口的调试及性能的展示,以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,剥离的请求前的一系列操作,耦合性低,REST风格的接口使用简单,report采用责任链模式设计,轻便可控、扩展性强。r

2017-01-05 10:16:48 1070

原创 并发程序设计之Future模式

Future模式future模式是Java并发设计模式的一种,jdk内置了实现方式,可以直接拿过来用。当然也可以自己进行设计。这种模式实际上是把代码的执行从同步的方式改为了异步,当一个调用方法执行的时间比较长的时候,在原先单线程模式必须要等到该方法执行完成返回结果后在进行下一步的操作,如果这个操作是远程方法的调用,或者需要处理相当多的业务的时候,那么这个处理效率是非常低的,因此出现了future模式

2016-01-18 11:53:57 461

原创 String源码解读之Resource接口

一、前言我们都知道java自身也提供了底层资源的方法,如(java.net.URL,File)等,但是java所提供的并不支持访问web容器资源的类,因此spring在此次方面做了强大的扩展,设计了Resource接口,提供了更强的底层资源访问能力,也是spring重要的辅助类。Resource可以在完全不依赖spring容易的情况下运行,是个比较强大的资源访问类。二、

2015-10-09 17:07:12 805

原创 为什么数据库索引查询会快

一、使用索引的好处        创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用

2015-09-18 20:46:51 27371 5

原创 lombok简介及使用方法

前言:    又一次项目中用到了,发现简化了很多的代码,因此自己研究了一下 ,看了一下官网和网上的教程,总结了如下内容,部分内容来自于http://blog.csdn.net/hack8/article/details/23790579  Lomboz是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,测试,以及debug等各个软件开发的生命周期提供支持,支

2015-09-17 23:24:25 6848

原创 zookeeper异常ConnectionLossException的解决办法

今天在用centerOS装zookeeper,然后本地搭建dubbo项目,注册到zookeeper上时出现了这个错误Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /dubbo  

2015-09-13 21:40:13 26636 1

原创 spring定时器入门例子

最小spring定时器配置全,拷贝即可运行

2015-03-31 12:03:24 2112

bin文件工具

bin文件工具是一个专业的工具,能有效的转换你的bin目录

2015-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除