- 浏览: 175800 次
- 性别:
- 来自: 杭州
最新评论
-
lgh1992314:
String.intern()在全局常量池1.8在native ...
Java 内存模型 -
lgh1992314:
try with resource
Java GC的过程 -
lgh1992314:
JDK8 HotSpot 方法区在MetaSpace
Java 内存模型 -
空城回转:
永洁童心 写道最后的图中,在afterload_1步骤中,op ...
栈帧、局部变量表、操作数栈 -
永洁童心:
最后的图中,在afterload_1步骤中,operand s ...
栈帧、局部变量表、操作数栈
文章列表
1.定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2.注意事项
:
建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的地方,虽然同为创建类模式,但是注重点不同。
建造者模式和工厂方法模式非常相像,以下是它们之间的区别:
建造者模式最主要的功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗的讲就是零件的装配,顺序不同产生的对象也不同;而工厂方法模式则重点是创建,创建零件是它的主要职责,组装顺序则不是它关心的
。
3.建造者模式的使用场景:
相同的方法,不同的执行顺序,产生不同的事件结果时, ...
定义:
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
例子:
继承Thread实现一个多线程类时,我们重写了run方法,然后调用start方法,start方法定义在父类中,会调用子类中的run方法,是模板方法模式的典型应用。
特点:
把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
模板方法模式非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的模式。抽象模板中的方法分为两类:
基本方法:也叫基本操作,是由子类实现的方法,并且在模板方法中被调用。
模板方法:可 ...
一、简介
定义:
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)
。所谓产品族,是指位于不同产品等级结构,功能相 ...
定义:
定义一个用于创建对象的接口,让子类来决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
它是简单工厂模式的一种延伸。
例子:
Spring中ApplicationContext的getBean方法就是典型的工厂方法模式。
工厂方法的通用代码:
产品抽象类
package _2FactoryMethodPattern;
public abstract class Product {
public void method1()
{
//处理业务逻辑
}
public abstract void method2 ...
package _1Singleton;
public class Singleton {
private static Singleton singleton = new Singleton(1);
private Singleton(int i)
{
System.out.println(i);
}
/**
* Solution 1
* 在调用本类任何参数或方法时,singleton都将被实例化
*
* @return
*/
p ...
内建约束
注解
应用目标
运行时检查
Hibernate元数据效果
@Length(min=, max=)
property (String)
check if the string length match the range
Column length will be set to max
@Length(min=, max=)
property (String)
检查字符串长度是否符合范围
列长度会被设到最大值
@Max(value=)
property (numeric or string representation of a numer ...
1.@ModelAttribute注释方法
例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
(1)@ModelAttribute注释void返回值的方法
@Controller
public class HelloWorldController {
@ModelAttribute
public void populateMod ...
0.
提示
1) Spring
发行版本附带了
PetClinic
示例,它是一个在简单的表单处理的上下文中,
利用了本节中说明的注解支持的
Web
应用程序。
可以在
“samples/petclinic
”
目录中找到
PetClinic
应用程序。
2)
另外一个建立在基于注解的
Web MVC
上的示例应用程序,请见
imagedb
。
这个示例集中在无状态的
multi-action
控制器,包括多段文件上传的处理。
可以在
“samples/i ...
1.处理方法入参,如何绑定URL参数
(1)按参数名匹配绑定
例如:
listBoardTopic(int topicId):和 topicId URL 请求参数绑定;
listBoardTopic(int topicId,String boardName):分别和 topicId、boardName URL 请求参数绑定;
请注意,如果入参是基本数据类型(如 int、long、float 等),URL 请求参数中一定要有对应的参数,否则将抛出 TypeMismatchException 异常, ...
为数据库属性hibernate.dialect设置正确的 org.hibernate.dialect.Dialect子类. 如果指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.
表 4.8. Hibernate SQL方言 (hibernate.dialect)
RDBMS
方言
DB2
org.hibernate.dialect.DB2Dialect
DB2 AS/400
org.hibernate.dialect.DB2400Dialect
DB2 OS390
org.hibernate ...
1.解释器与编译器 在部分虚拟机(Sun HotSpot)中,Java程序是最初通过解释器进行解释执行的,当虚拟机发现某个方法或者代码块运行特别频繁,就会把这些代码认定为"热点代码"(Hot Spot Code),为了提高热点代码 ...
JDK自带的动态代理支持必须要求基于接口编程,使用
java.lang.reflect.InvocationHandler和
java.lang.reflect.Proxy,请看下面的例子:
首先是接口:
package proxy;
public interface HelloWorld {
public String helloWord();
}
然后是接口实现类:
package proxy;
public class HelloWorldImpl implements HelloWorld {
...
写了两个验证码生成的代码,存着以备不时之需。
要看结果请自己运行一下:
package securityCode;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Output ...
1.使用句柄访问 如果使用句柄访问方式,Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。
2.使用直接指针访问 如果使用直接指针访问方式,Java堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,reference中存储的就是对象地址
这两种对象的访问方式各有优势,使用句柄访问方式的最大好处就是reference中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而reference本身不需要被修改。 使用直接指针访问 ...
解释一个概念,宗量:方法的调用者和参数统称为方法的宗量。 前面讲了Java的分派调用,这里有一个更直观的例子来说明分派的过程,请看代码:
public class Dispatch {
static class QQ{}
static class _360{}
public static class ...