结构模式(-)
Adapter(适配器)
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter分为2种:
类适配器和对象适配器。Adapter和Adaptee之间是is-a关系的时候,属于类适配器,Adapter和Adaptee之间是has-a关系的时候,属于对象适配器。
基于“当涉及到依存性时,应当始终优先选择组合/成员关系而不是继承”的设计原则,并且由于多继承在使用上的复杂性,及在部分情况下不可行等原因,对象适配器优先于类适配器
使用场景
1 你想使用一个已经存在的类,但他的接口不符合你的需求。
2 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3 你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口。
主要参与者
Target
:决定要用什么方法
public interface Target {
public void request();
}
Adaptee
:提交最初的方法
public class Adaptee {
public void requestSpecial(){
&nbs ......
JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法
一 插入法:遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把所有的东西按一定的顺序规整,过来一个,规整一个.
处理代码如下:
public void sort(int[] data) {
int temp;
for(int i=1; i〈data.length; i++){
for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){
temp=date[j];
data[j]=data[j-1];
data[j-1]=temp; }
}
}
二冒泡法:比较容易,它的内层循环保证遍历一次后,集合中最小(大)元素出现在它的正确位置,下一次就是次小元素。。。该方法在集合分布的各种情况下交换移动的次数基本不变,属于最慢的一种排序。实现也是双重循环控制。这种排序法属于过江龙,就是要找到极端,但是过奖龙也有大哥,二哥等,所以他们只能是大哥挑了二哥挑.
处理代码如下:
public static int [] maopao(int[ ......
原文传送门:http://www.blogjava.net/improviser/archive/2008/12/07/244911.html
在前一篇文章中简单介绍了JAVA程序如何调用Oracle存储过程的基本语法程序结构, 本文将介绍JAVA跟Oracle的另一种关系,即通过JAVA编写Oracle存储过程。 通常情况下,我们都是使用Oracle数据库系统中的ps/sql语句来为oracle编写各种存储过程,不过,在Oracle的第八个版本8之后,为我们提供了编写存储过程的另一种新的选择,那就是使用JAVA来编写Oracle存储过程。从Oracle8.0版本开始,在Oracle数据库系统中自带了java虚拟机jvm,因此使得Oracle内置了对JAVA的全面支持,我们在使用JAVA可以实现的任何功能现在都可以放到Oracle中来实现,当然我们也可以在oracle中来操作其他数据库。JAVA的加入让Oracle展能力得到了升华,我们可以定义一个触发器来在进行任何数据库操作的时候对外界进行其他操作的功能。
下面准备举个例子来说明下如何通过JAVA来创建Oracle存储过程,例子不在于有多高级,功能不在于多完善,我想,如果能从一个简单例子,引申出去,去繁衍更多的方法,去实现更多你自己需要的功能,这才是简单例子的作用。所以,认为我写的简单,写的肤浅的人你 ......
原文传送门:http://www.blogjava.net/improviser/archive/2008/12/07/244911.html
在前一篇文章中简单介绍了JAVA程序如何调用Oracle存储过程的基本语法程序结构, 本文将介绍JAVA跟Oracle的另一种关系,即通过JAVA编写Oracle存储过程。 通常情况下,我们都是使用Oracle数据库系统中的ps/sql语句来为oracle编写各种存储过程,不过,在Oracle的第八个版本8之后,为我们提供了编写存储过程的另一种新的选择,那就是使用JAVA来编写Oracle存储过程。从Oracle8.0版本开始,在Oracle数据库系统中自带了java虚拟机jvm,因此使得Oracle内置了对JAVA的全面支持,我们在使用JAVA可以实现的任何功能现在都可以放到Oracle中来实现,当然我们也可以在oracle中来操作其他数据库。JAVA的加入让Oracle展能力得到了升华,我们可以定义一个触发器来在进行任何数据库操作的时候对外界进行其他操作的功能。
下面准备举个例子来说明下如何通过JAVA来创建Oracle存储过程,例子不在于有多高级,功能不在于多完善,我想,如果能从一个简单例子,引申出去,去繁衍更多的方法,去实现更多你自己需要的功能,这才是简单例子的作用。所以,认为我写的简单,写的肤浅的人你 ......
java中字符串的编码解码问题
1.将字符串转换成byte数组再恢复:
byte[] getBytes(String charsetName)
String(byte[] bytes, String charsetName)
或getBytes()
String(byte[] bytes)
2.使用String sun.misc.BASE64Encode.encode(byte[] b)
byte[] String sun.misc.BASE64Decode.decodeBuffer(String str)
将字符串转换成byte[],再转换成ASCII码;恢复时做逆操作。
在字符串转换成byte[]时,尽量用byte[] getBytes(String charsetName)方法,解码时也用相同的charsetName做参数,如果都不charsetName可能会导致一些中文字符不能正确解码。
应用例子如下:
package test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Tools
{
/**
*
* <p>Discription:Base64解码方法</p>
* @param data 要进行解码的数据
* @param encode 编码方式
&nbs ......
代理模式
代理模式的作用: 为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个客户不想或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到 中介 的作用
举一个例子: 某一个人想请一个局长为他办一些事情,这个人可能不能直接去这个局长,因为局长不认识他,即使客户给他送礼或一些钱,局长也不会收,这时候怎么办?客户可以先去找局长的秘书或身边红人,局长秘书当然啦,跟局长比较密切,
这个客户他认识这个秘书,他通过秘书,告诉这个秘书,我要想请局长办些什么事情由这个秘书去让局长去做这个事情,他呢,把一些送礼啊,礼品啊送给秘书,由秘书转交给局长局长收到秘书给他的礼物之后,他就可以为这个人办些事情,这时候秘书就相当于是中介。
抽象角色:想办事的人
代理角色:秘书
真实角色:局长,他具有完成所需要的功能
1.示例
主要实现代码,分 4 步:
第一步 抽象角色:
Subject.java
abstract public class Subject{ abstract public void request();}
第二步代理角色:
ProxySubject.java
public class ProxySubject{
private RealSubject realSubject; //以真实角色作为代理角色的 ......
java 输入/输出流小记 (2)
字符输入流
BufferedReader
从 Reader 中读取多个字符到一个缓冲区,然后返回整个缓冲区内容。使小量读写更加
有效。
CharArrayReader
从一个 Char 数组中顺序读入多个字符
FileReader
从文件中顺序读入多个字符,是 InputStreamReader 的子类,能从一个自动创建的
FileInputStream 中读取数据。
FilterReader
字符输入流过滤器类的超类
InputStreamReader
从一个字节输入流读入字符,使用默认的编码方式或指定的编码方式将字节转化成字符
LineNumberReader
读取多行文本,并记录已经读取多少内容。
PipedReader
读取它所连接的 PipedOutputStream 中的多个字符。在多线程程序中使用。
PushbackReader
将固定大小的“回推缓冲区”添加到 Reader 中,从而这些内容可以是 “读不出”的
,这在某些解析程序中很有用。
Reader
所有字符输入流的超类
StringReader
从一个字符串中顺序读入字符
-------------------------------------------------------------
字节输出流
BufferedOutputStream
将字节按缓冲区输出,当缓冲区满时才将其中字节写往 OutputStream
ByteArray ......