split方法不能按照“|”符号分割?汗,今天才知道,笨呀 没办法,只能想想办法了 public static Hashtable split(String fieldsru, String tag) { Hashtable returnarray = new Hashtable(); char dot = tag.charAt(0); String field; field = fieldsru + dot; int num = 0; int field_len = field.length(); fo ...
获取当前日期所在星期的7个日期,记下来,以后用得着: Date date = new Date(); SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd"); Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY-1); c.setTime(date); String[] d = new String[7]; for(int i=0;i<7;i++){ c.se ...
最近项目中使用Spring+iBatis,其中用到的公共dao记录在此  /** * 数据库Dao必须继承的接口,该接口定义了DaoTemplate的Set和Get方法 * 其他dao继承IBaseDao后自动获得CRUD等功能 */ public interface IBaseDao { public void setDaoTemplate(IBatisDaoTemplate template); public IBatisDaoTemplate getDaoTemplate(); /** * 更新数据 * @param stateme ...
2008-04-01

设计模式学习之复合模式(2)

关键字: 设计模式
接上篇------>设计模式学习之复合模式(1) 我们为什么不将创建鸭子的程序集中在一个地方呢?换句话说,让我们将创建和装饰的部分包装起来,这看起来像是什么模式?10.我们需要一些质量控制来确保鸭子一定是被包装起来的,需要建造一个工厂创建装饰过的鸭子.此工厂应该生产各种不同类型的鸭子的产品家族,使用我们使用抽象工厂模式.//定义一个抽象工厂,它的子类会创建不同的家族 public abstract class AbstractDuckFactory { //每个方法创建一种鸭子 public abstract Quackable createMallardDuck() ...
2008-04-01

设计模式学习之复合模式(1)

关键字: 设计模式
使用模式最棒的方式,就是把他们从家里找出来同其他模式展开交互.你越多的使用模式就越容易发现他们一同现身在你的设计中,对于这些在设计中携手合作征服许多问题的模式,我们给了一个特别的名字:复合模式.但是我们将某些模式结合使用,并不代表这些模式就够资格称为复合模式.复合模式必须够一般性,适合解决许多问题才行.我们将再次使用鸭子的例子来说明并学习,下一章我们会拜访一个真正的复合模式--MVC,没错,就是MVC.1.首先,我们将创建一个Quackable接口public interface Quackable { //只做一件事:呱呱叫 public void quack(); }  ...
原来还不知道iBatis也有像Hibernate类似的自动化代码生成工具,今天找到Abator这工具也挺不错的,在ecelipse上面小试了一把:1.获得Abator      http://ibatis.apache.org/abator.html      Eclipse可以自动的进行Update获取此Plugin,具体见官方的安装步骤2.安装好后将在New菜单中看到一个新的文件类型Abator for iBATIS Configuration File,此是Abator的配置文件,配置文件 ...
有些人没有咖啡就活不下去,有些人则离不开茶。两者共同的成分是什么?当然是咖啡因了!但还不只这样,茶和咖啡的冲泡方式非常相似:一、咖啡冲泡法    1.把水煮沸    2.用沸水冲泡咖啡    3.把咖啡倒进杯子    3.加糖和牛奶二、茶冲泡法    1.把水煮沸    2.用沸水浸跑茶叶    3.把茶倒进杯子    4.加柠檬让我们写一些代码来快速搞定咖 ...
接上篇在我们新的设计中,真正需要做些什么呢?1.我们需要某种树形结构,可以容纳菜单、子菜单、菜单项2.我们需要确定那个在每个菜单的各个项之间游走,而且至少要像在用迭代器一样方便3.我们要能够更有弹性的在菜单项之间游走,比如说可能只需要遍历甜点菜单,或者可以遍历餐厅的整个菜单管理菜单的问题已经到了一个迭代器无法解决问题的新维度,我们改用“组合模式”来实现这部分组合模式允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,在大多数情况下 ...
如果我们允许我们的聚合实现他们内部的集合,以及相关的操作和遍历的方法,又会如何?我们已经知道这会增加聚合中的方法个数,但又怎样呢?为什么这么做不好?我们要清楚:当我们允许一个类不但要完成自己的事情(管理某种聚合),还同时要担负更多的责任(如遍历)时,我们就给了这个类2个变化的原因。没错,就是2个:如果这个集合改变的话,这个类也必须改变;如果我们遍历的方式改变的话,这个类也要跟着改变。所以我们要知道有这个设计原则:单一责任设计原则:一个类应该只有一个引起变化的原因。这个原则告诉我们,尽量让每个类保持单一责任,这听起来很容易,但其实做起来并不简单:区分设计中的责任,是最困难的事情。想要成功的唯一方 ...
有许多种方法可以把对象堆起来成为一个集合.你可以把它们放进数组/堆栈/列表/散列表中,每一种都有它自己的优点和适合使用的时机,当有需要遍历这些对象的需求时,你打算让客户看到你的实现吗?我们还是以简单的例子来学习.我们先自己从头创建一个迭代器      现在煎饼早餐店和中餐厅合并了,他们想用煎饼店的菜单当做早餐的菜单,并用餐厅的菜单当做午餐的菜单,但煎饼店使用的是ArrayList记录他的菜单,而中餐厅用数组,他们都不愿意改变他们的实现,毕竟各自有太多的代码依赖他们了//我们先来看看菜单项 public class MenuItem { S ...
2008-02-01

设计模式入门学习之状态模式

关键字: 设计模式
策略模式和状态模式是双胞胎,策略模式是围绕可以互换的算法来创建成功业务的,然而状态模式是通过改变对象内部的状态来帮助对象控制自己的行为. 看到下面附件里的那个图了没,我自己画着玩的,看不明白没关系(我明白就行了,呵呵),你就看成是糖果机的状态图好了: 我们如何从状态图得到真正的代码呢?首先我们找出所有的状态: 没有25分钱//有25分钱//售出糖果//糖果售完--------------这就是状态,共有4个 接下来我们来实现糖果机: public class GumballMachine { //这就是那4个状态,每个状态都用一个不同的整数代表,他们符合状态图 final stat ...
当你直接实例化一个对象时,就是在依赖它的具体类.很清楚地,代码里减少对于具体类的依赖是件"好事".依赖倒置原则:         要依赖抽象,不要依赖具体类.这个原则说明了:不能让高层组件依赖低层组件,而且,不管高层或低层组件,两者都应该依赖于抽象.现在我们通过这个原则来重写披萨代码以便我们依赖抽象类而不依赖具体类.下面的几个指导方针,能帮你避免在OO设计中违反依赖倒置原则:1.变量不可以持有具体类的引用2.不要让类派生自具体类3.不要覆盖基类中已经实现的方法.在工厂方法模式中,非常依赖披萨店的 ...
当看到"new",就会想到"具体","new"有什么不对劲的?在技术上,new没有错,毕竟这是java的基础部分.针对接口编程,可以隔离掉以后系统可能发生的一大堆改变.为什么呢?如果代码是针对接口而写,你们通过多态,它可以与任何新类实现该接口.但是,当代码使用大量的具体类时,等于是自找麻烦,因为一但加入新的具体类就必须改变代码,也就是说你的代码并非"对修改关闭".别忘了,我们的第一个原则用来处理改变,"找出会变化的方面,把它们从不变的部分分离出来".假设你有个披萨店,你的代码可能这么写:pizz ...
2008-01-27

设计模式入门学习之外观模式

关键字: 设计模式
你已经知道适配器模式是如何将一个类的接口转换成另一个符合客户期望的接口的,你也知道在java中要做到这一点,必须将一个不兼容接口的对象包装起来,变成兼容的对象.现在我们来看一个改变接口的新模式,也就是外观模式,但它改变接口的原因是为了简化接口:他将一个或多个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观.在进入外观模式的细节之前,我们先来建立自己的一套家庭影院,内含DVD/投影仪/自动屏幕/环绕立体音响等等,你花了好长时间来布线等工作才能享受一部电影,那么你想看电影,必须先执行一些任务:将灯光调暗-放下屏幕-打开投影仪-将投影仪的输入切换到DVD-打开功放......还不只这样,你还要 ...
2008-01-26

设计模式入门学习之适配器模式

关键字: 设计模式
还记得策略模式里面讲的鸭子吗?让我们来看看鸭子接口和类的一个简化版本://鸭子具有呱呱叫和飞的能力 public interface Duck { public void quack(); public void fly(); } //绿头鸭是鸭子的子类 public class MallardDuck implements Duck { public void quack() { System.out.println("Quack"); } public void fly() { System.out.println("I ...
2008-01-25

设计模式入门学习之命令模式

关键字: 设计模式
命令模式将"请求"封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,命令模式也支持可撤销的操作.我们还是以讲解遥控器的实例来学习:这个遥控器具有七个可编程的插槽,每个可指定到一个不同的家电装置(如电灯/热水器/音响等),每个插槽都有对应的开关按钮,这个遥控器还有一个整体的撤销按钮,需要创建一组控制遥控器的API,让每个插槽都能够控制一个或一组装置.//-----实现命令接口 public interface Command { public void execute(); //执行方法 public void undo(); //撤销方法 } // ...
2008-01-25

设计模式入门学习之单件模式

关键字: 设计模式
此模式就是用来创建独一无二的对象,比方说线程池/缓存/对话框/日志对象,我们先来剖析经典的单件模式实现:public class Singleton{ //利用一个静态变量来记录Singleton类的唯一实例 private Static Singleton uniqueInstance; //把构造器声明为私有的,只有自Singleton类内才可以调用构造器 private Singleton(){} //用getInstance方法实例化对象,并换回这个实例 public Static Singleton getInstance(){ //如果uniqueIn ...
2008-01-24

设计模式入门学习之装饰者模式

关键字: 设计模式
装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案.我们以星巴兹咖啡连锁店为例来学习,他们准备更新订单系统,原有的设计是这样的://-----------Beverage饮料是一个抽象类,店内提供的饮料都必须继承自此类 public abstract class Beverage { //这个"叙述"实例变量由每个子类设置,用来描述 String description = "Unknown Beverage"; public String getDescription() { return des ...
2008-01-24

设计模式入门学习之观察者模式(2)

关键字: 设计模式
java API提供了内置的观察者模式,java.util包内包含最基本的Observer接口和Observable类,这和我们在上一篇介绍观察者模式中写的Subject接口和Observer很相似,但使用内置的更方便,因为许多功能已经事先准备好了,你甚至可以使用推(push)或拉(pull)的方式传送数据.那么我们来看一下java内置的观察者模式如何运作:1.如何把对象变成观察者         如同以前一样,实现观察者接口java.util.Observer,然后调用任何Observable对象的addObse ...
2008-01-24

设计模式入门学习之观察者模式(1)

关键字: 设计模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新.当2个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节,观察者模式提供了一种对象设计,让主题和观察者之间松耦合.为什么呢?1.关于观察者的一切,主题只知道观察者实现了某个接口,不需要知道观察者的具体类是谁2.任何时候我们都可以增加新的观察者,因为主题唯一依赖的东西是一个实现Observer接口的对象列表3.有新类型的观察者出现时,主题的代码不需要修改.只要在新类里实现观察者接口,然后注册为观察者即可4.我们可以独立的复用主题或观察者,因为2者并非紧耦合5.改变主题或观察者任何一方 ...
2008-01-23

设计模式入门学习之策略模式

关键字: 设计模式
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.回顾----OO基础:抽象,封装,多态,继承            OO原则: 1:封装变化                         ...
这是我的第一个项目里做的,很久了,现在转到javaeye里来,备忘,原来的blog废弃 #每个软件中都有权限这个功能,搞了个通过tag实现的方法,复用性很强,今天把标签功能给改了,可以支持多个code,具体实现如下:#psy-operation.tld<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.blog.com. ...
今天Spring+Hibernate开发中遇到的中文问题,搜索了一下,发现了一个比较好的解决方案,先记录在此xml 代码在web.xml里面添加     <filter>     <filter-name>SetCharacterEncodingfilter-name>     <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>  &nb ...
org.springframework.samples.jpetstore.dao.ibatis中的SqlMapAccountDao.java,是AccountDao接口的实现,相关的Account.java与Account.xml文件就不帖上来了,这2个文件很简单,这个文件中的一些API请查询spring2.0API.java 代码package org.springframework.samples.jpetstore.dao.ibatis;     import java.util.List;   impor ...
dataAccessContext-local.xmlxml 代码<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">    < ...
本来想先学习SpringSide的,可本人资质愚钝,只好先学习简单点的了,Spring包中自带的JPetStore就很不错,毕竟是官方的,很值得研究,以后会不定期的贴出JPetStore的学习笔记。先从web.xml文件开始学吧,(我只贴出spring部分,struts部分暂时不学)下面是本人的分析,有不对的地方还请指正。: )<?xml version="1.0" encoding="ISO-8859-1"?>  <!DOCTYPE web-app PUBLIC & ...
blank
搜索本博客
我的相册
5c2c51d9-1a15-3713-8084-e1742c808801-thumb
P1080256
共 30 张
存档
最新评论