- 浏览: 60337 次
- 性别:
- 来自: 上海
最新评论
文章列表
内部类及静态内部类分析
- 博客分类:
- Java相关
内部类和静态内部类
一.静态和非静态的区别
1.static一般用于修饰成员变量和方法,当然也可以修饰类,不过这个类得是内部类才行.
2.用static修饰的变量或方法,不需要实例化类能够直接用类名访问,属于类的所有对象且只有一份.
3.在静态成员(方法)中不可以引用非静态成员.
二.内部类
1.在一个类中定义的其它类,被称为内部类.
2.内部类可以被修饰为private与其它类隔绝,那这个内部类只有它的外部类才能访问.
3.内部类可以被修饰为static.
三.内部类访问外部类成员
1.内部类可以访问外部类的任意级别成员,包括private.
2.非静态内部类不可以定义静态成员,静态内部 ...
Ibatis源码分析
- 博客分类:
- Ibatis
Ibatis的工作流程主要分为两个部分,配置文件解析和数据库操作,下面分别对两部分分别进行分析
一.配置文件解析
二.数据库操作
1.先看几个重要的接口定义
SqlMapTransactionManager接口定义了数据源的获取,数据库链接的获取,事务开启,事务提交,事务结束等方法.
SqlMapExecutor接口定义了一系列的数据库操作方法,如增删改查等.
这两个接口也是最顶端,最核心的接口.
SqlMapSession接口继承了SqlMapExecutor接口和SqlMapTransactionManager接口,并定义了一个close方法,
其实现类是SqlMapSessio ...
Visitor(访问者模式)
访问者
package com.dzeay.pattern.visitor;
public interface Visitor {
void visitorConcreteElementA(ConcreteElementA concreteElementA);
void visitorConcreteElementB(ConcreteElementB concreteElementB);
}
具体访问者
package com.dzeay.pattern.visitor;
public class ConcreteV ...
Proxy(代理模式)
定义RealSubject和Proxy共用的接口
package com.dzeay.pattern.proxy;
public abstract class Subject {
public abstract void excute();
}
定义Proxy所代表的实体
package com.dzeay.pattern.proxy;
public class RealSubject extends Subject {
@Override
public void excute() {
Sy ...
以下内容全部摘自<<深入Java虚拟机第二版>>
以下内容全部摘自<<深入Java虚拟机第二版>>
前面一篇文章分析了Spring的配置文件的解析,
Spring源码解析 配置文件装载与解析
下面接着来看配置的Bean是如何初始化的实例化的.
Java类中,有这么几个东西
静态变量,静态初始化块,变量,初始化块,构造器
它们的执行顺序,只要知道以下几个原则就好了
1. 静态 优先于 非静态
2. 变量 优先于 初始化块 优先于 构造器
3. 父类 优先于 子类
于是乎,顺序如下:
父类 静态变量
父类 静态初始化块
子类 静态变量
子类 静态初始化块
父类 变量
父类 初始化块
父类 构造器
子类 变量
子类 初始化块
子类 构造器
Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类中实现,而各子类中可变的行为则由各子类自己重写基类方法实现.
Strategy则是在使用策略模式的应用实例内部维护一个策略实例,针对不同的子类用不同的策略实现.
来看看两者的代码实现:
Template Method模式 -- 基类
package com.dzeay.pattern.template_method;
public class BaseTemplate {
public void doSameThing() {
System.out.pri ...
先上代码
package com.dzeay.aop;
public interface IBusiness {
public void excute();
}
package com.dzeay.aop;
public class BusinessImpl implements IBusiness {
public void excute() {
System.out.println("BusinessImpl.excute");
}
}
package com.dzeay.aop ...
Adapter(适配器模式)
Adapter -- IDAO接口
package com.dzeay.pattern.adapter;
public interface IDAO {
public void insert();
}
Adapter -- OracleDAO
package com.dzeay.pattern.adapter;
public class OracleDAO implements IDAO {
@Override
public void insert() {
System.out.print ...
Builder(创建者模式)
Builder -- 抽象创建者
package com.dzeay.pattern.builder;
public abstract class Builder {
public abstract void a();
public abstract void b();
public abstract void c();
public abstract void d();
public abstract void e();
}
Builder -- 创建者实现
package ...
工厂模式之Simple Factory, Factory Method 以及Abstract Factory三种模式比较
以常用多种数据库访问层DAO为例, 三种模式代码分别为:
Simple Factory(简单工厂模式)
Simple Factory -- IDAO接口
package com.dzeay.pattern.simple_factory;
public interface IDAO {
public void execute();
}
Simple Factory -- Db2DAO
package com.dzeay.pattern.s ...
删除SVN目录的批处理
总是在用的时候找不到, 记在这里吧
批处理
@for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTW ...