??xml version="1.0" encoding="utf-8" standalone="yes"?>
2006-1-1
2006-1-2
2006-10-1
2006-10-2
2006-5-1
ҎA表中的数据写一条sql语句查询出如下结?
today nextday
2006-1-1 2006-1-2
2006-10-1 2006-10-2
单的题目都把我难倒,痛苦。。?br />下面是QQ朋友帮我想的办法Q?br />解决办法Q?。select a.today as today ,b.today as nextdate from A a join A b on b.today -a.today =1
2。select a.today,b.today as nextdate from A a,A b where a.today=b.today-1
]]>
架构是jstl+struts+spring+hibernate. 但经验不I设计q有很多问题?br />
希望跟大家交学习?br />
希望哪位朋友?“批斗”一?我的pȝ?img src ="http://www.aygfsteel.com/pear/aggbug/80561.html" width = "1" height = "1" />
]]>
最q在写一个相册系l,准备l我老哥用的Q呵呵,架构是经典的 JSTL+Struts+Spring+Hibernate+Mysql
׃本h不喜Ƣ一个Action对应一个方法,所以就用了DispathAction,避免了过多的c(呵呵Q个点)
我的Ҏ基本是一个Action包含所有的增删查改操作Q由于一个Action中的Ҏl常要调?多个service 层的多个ҎQ所以就会因为页面表单传来的控制参数?if else个不停,实在烦h。拿最单的例子来说Q?br />
分页查询中,一个最常用的控制参数就?四个 首页Q上一,下一,N. Action中的查询Ҏp好几个if else。看到就不是滋味。所以就在纳P人家Struts 都可以有DispathAction 我ؓ什么不能实C个有怼功能的东西呢Qh家的配置昄够简单,但是q是要配|。不是很爽?br />
于是Q就用JAVA的反来实现个MethodTable, 说白了就是根据一个字W串的值来调用相应的函敎ͼ
是把那些烦人的if else 变成一句调用。呵Q构思时׃滋滋了?br />
下蝲地址 里面有源代码Q测试案例,和注释,看不懂可以留aQ跟大家交流学习?br />
----------------------------------------------------------------------------------------------------------
//树Ş菜单初探
<script language="javascript">
function toggle(_dt){
var _dl = _dt.parentNode;
if(_dl.className=="collapse") _dl.className="expand";
else _dl.className="collapse";
}
</script>
<style type="text/css">
dl dt {cursor:pointer; padding:3px;}
dl dd {padding:3px;}
.expand {height:auto;}
.collapse {height:20px; overflow:hidden}
</style>
<dl>
<dt onClick="toggle(this)">root</dt>
<dd><a href="http://blogjava.net/pear">child</a></dd>
<dd><a href="http://blogjava.net/pear">child2</a></dd>
<dl>
<dt onClick="toggle(this)">root2</dt>
<dd><a href="http://blogjava.net/pear">child3</a></dd>
<dd><a href="http://blogjava.net/pear">child4</a></dd>
</dl>
</dl>
<dl>
<dt onClick="toggle(this)">root2</dt>
<dd>child3</dd>
<dd>child4</dd>
</dl>
<br><br>
----------------------------------------------------------------------------------------------------------
<ul>
<li>text</li>
<li>text2</li>
<ul>
<li>text3</li>
<li>text4</li>
<ul>
<li>textpk</li>
</ul>
</ul>
<li>text5</li>
</ul>
</body>
</html>
----------------------------------------------------------------------------------------------------------
//创徏一个节点的基本方式
var newnode = document.createTextNode("meme");
var element = document.createElement("option");
element.appendChild(newnode);
leftt.appendChild(element);
-------------------------------
leftt.options[leftt.options.length]=new Option(value,text)
----------------------------------------------------------------------------------------------------------
//实现列表诓中的字W串q接
<script language="javascript">
function goright(){
var myleft = document.getElementById("left");
var myright = document.getElementById("gogo");
var len = myleft.options.length;
for(var i=0; i<len; i++){
alert(myleft.options[i].text);
myright.value=myright.value+myleft.options[i].text+'#';
}
}
</script>
<select id="left" name="left" size="4">
<option value="fir">first</option>
<option value="value2">second</option>
</select>
<input type="button" value=">>" onClick="goright();">
<input type="text" id="gogo" name="gogo">
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br /><html>
<head>
<title>maomao</title>
</head>
<body>
<script language="javascript">
function goright(){
var name=new Array();
var myleft = document.getElementById("left");
var myright = document.getElementById("gogo");
var right = document.getElementById("gg");
var len = myleft.options.length;
for(var i=0; i<len; i++){
name.push(myleft.options[i].text);
myright.value=myright.value+myleft.options[i].text+'#';
}
right.value=name;
alert(right.value);
}
</script>
<select id="left" name="left" size="4">
<option value="fir">first</option>
<option value="value2">second</option>
</select>
<input type="button" value=">>" onClick="goright();">
<input type="text" id="gogo" name="gogo">
<input type="text" id="gg" name="gg">
</body>
</html>
Employee original = new Employee ("tomsui",4000);
Employee copy = original ;
original 与copy仅仅是同一对象的不同引用?/p>
ҎQ二Q?克?/strong>
直接利用Object的clone()ҎQ?/p>
protected Objectclone() throws CloneNotSupportedException
Employee copy = (Employee)original.clone();
注意两点Q?/p>
1Q?Object的clone() 是protected. 只能在包内或子类调用.
2Q?如果克隆的对象中存在对象Ş式的成员变量:
public class Employee
{
String name;
int salary;
Date birthday;
}
那么:
Employee copy = (Employee) original.clone();
只是拯了original对象中的基本cd和不变量.可变的对象成员变量拷贝得到的仍然是引?
不变量应该包?可以参见<java多线E设计模?gt;Immutable模式中界定的情况):
a. Stringcd?/p>
b. 被final定义,子对象在生存周期中仅保存一些常?/p>
Ҏ(? 深克?/strong>
例子:
class Employee implements Cloneable
{
private String name;
private double salary;
private Date birthday;
// setter ?getter
public Object clone()
{
try
{
Employee cloned = (Employee ) super.clone();
cloned.birthday = (Date) birthday.clone();
}catch(CloneNotSupportedException e) {
return null;
}
}
}
说明Q?/p>
1QEmployee 必须实现 Cloneable接口 Q标志接口)
标志接口Q完全的I接口。这里的作用是告诉JQӞQ类的设计者理解了cloneable()ҎQ可以通过isInstanceOfq行q行时检查?/p>
2Q覆写的clone()Ҏ必须定义为public (原是protected)
3Qclone()Ҏ体必dtry-catch {}中,捕获处理CloneNotSupportedException 。(防止cL有实现Cloneable接口Q正实C深克隆的话,q个异常肯定不会抛出Q?/p>
ps. JDK中,StringBuffer没有覆写clone()ҎQ虽然它实l承了Object的clone()Q但在实际应用中Q 因ؓStringBufferl不会有子类Q而且是在JDK外用StringBufferQ所以被protected界定的clone()Ҏ是完全不可见的!
ҎQ四Q用序列化q行克隆
q种Ҏ涉及IO操作Q所以相Ҏ讲要比方法(三)慢.
import java.io.*;
import java.util.*;
public class SerialCloneTest
{
public static void main(String[] args)
{
Employee harry = new Employee("Harry Hacker", 35000,
1989, 10, 1);
// clone harry
Employee harry2 = (Employee)harry.clone();
// mutate harry
harry.raiseSalary(10);
// now harry and the clone are different
System.out.println(harry);
System.out.println(harry2);
}
}
/**
A class whose clone method uses serialization.
*/
class SerialCloneable implements Cloneable, Serializable
{
public Object clone()
{
try
{
// save the object to a byte array
ByteArrayOutputStream bout = new
ByteArrayOutputStream();
ObjectOutputStream out
= new ObjectOutputStream(bout);
out.writeObject(this);
out.close();
// read a clone of the object from the byte array
ByteArrayInputStream bin = new
ByteArrayInputStream(bout.toByteArray());
ObjectInputStream in = new ObjectInputStream(bin);
Object ret = in.readObject();
in.close();
return ret;
}
catch (Exception e)
{
return null;
}
}
}
/**
The familiar Employee class, redefined to extend the
SerialCloneable class.
*/
class Employee extends SerialCloneable
{
public Employee(String n, double s,
int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar
= new GregorianCalendar(year, month - 1, day);
// GregorianCalendar uses 0 for January
hireDay = calendar.getTime();
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public Date getHireDay()
{
return hireDay;
}
public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}
public String toString()
{
return getClass().getName()
+ "[name=" + name
+ ",salary=" + salary
+ ",hireDay=" + hireDay
+ "]";
}
private String name;
private double salary;
private Date hireDay;
}
ҎQ五Q?其他Ҏ
可以通过java的反机制定义一个类g对象序列化的万能克隆。改q后再脓上来?/p>