java树形结构
最近看到一个有意思的树形结构,为每个节点添加了lft和rgt两个属性。这样查找该节点的子节点、查找该节点所有父节点,就不用去递归查询,只需要用between、and语句就可以实现。下面以创建一个栏目树为例,以下是我的理解。
一般来讲,我们创建栏目树的时候,大多只需要一个外键parentid来区分该节点属于哪个父节点。数据库的设计如下图:
这样一来,
1.查找该节点的所有子节点,则需要采用sql的递归语句:
Sql代码
select * from tableName connect by prior id=sj_parent_id start with id=1
select * from tableName connect by prior id=sj_parent_id start with id=1
(oracle 写法,mysql目前不支持,如果mysql想查找树形,可以利用存储过程).
2.查找该节点的父节点的sql递归语句:
Sql代码
select * from tableName connect by prior sj_parent_id =id start with id=1
select * from tableName connect by prior sj_parent_id =id start with id=1
如果数据量过大或者层次太多,那么这样操作是会影响性能的。
“任何树形结构都可以用二叉树来表示”。其实我们创建的栏目树就是一个简型的二叉树。根据数据结构里面二叉树的遍历,再稍微修改下,将数据库设计如下图所示:
这样我们查找该节点的所有子节点,则只需要查找id在lft和rgt之间的所有节点即可。
<!--EndFragment-->
Sql代码
select * from tb_subject s,tb_subject t where s.lft between t.lft and t.rgt and t.id=1
select * from tb_subject s,tb_subject t where s.lft between t.lft and t.rgt and t.id=1
2.查找该节点的所有父节点的sql语句为:
<!--EndFragment-->
Sql代码
select s.* from tb_subject s,tb_subject t where s.lft<t.lft and (s.rgt-s.lft)>1 and s.rgt>t.rgt and t.id=1
select s.* from tb_subject s,tb_subject t where s.lft<t.lft and (s.rgt-s.lft)>1 and s.rgt>t.rgt and t.id=1
下面�
相关文档:
重写的主要优点是能够定义某个子类特有的特征:
如:
public class Father
{
public void speak()
&nb ......
reflection: 指我们可以于java程序执行期载入、探知、使用编译期间完全未知的classes.换句话说,java程序可以载入一个执行期才得知名称的class,获悉其完整构造(但不包括methods定义),并生成实体、或对其fields设值、或唤起其methods。 ......
在DWR中需要用到session,request等这些东西的时候,可以用以下方法获取:
1. 使用DWR的API (很多人都不推荐这种做法,经测试,使用起来肯定没问题)
import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
WebContext ctx = WebContextFactory.get();
ctx.getSession()
ctx.getHttp ......
Java在JDK1.3之后加入了可协助开发动态代理功能的API.使用动态代理,可以使一个处理者(代理)服务于各个对象。创建一个动态代理类只需实现java.lang.reflect.InvocationHandler接口。
下面创建一个处理日志的动态代理类LogHandler去代理HelloSpeaker类
首先创建HelloSpeaker的接口
pa ......
JAVA可以说是从C++发展起来的完全面向对象的开发语言,两者的实质区别是利益分属不同的公司:SUN和微软.对此微软发布了.NET与之抗衡.
从最新的Visual Studio .NET 2005看,.NET主要是4种语言:VB.NET, C#, C++.NET, J#.
VB.NET可以说是VB6的升级,但我认为VB.NET和C#已经是完全全新的语言了,两者的目的都是要打败JAVA这个竞� ......