资源简介
使用antlr规则引擎解析sql成对象.里面只有查询语句,但是也预留了update,delete,insert等语句的接口.可以非常方便的扩展

代码片段和文件信息
/**
*
*/
package com.hiyouyu.core.struct;
import java.io.Serializable;
import java.util.Arrays;
import com.hiyouyu.core.struct.BinaryHeap.Heap;
/**
* 二叉堆
* 堆的性质: 在起始索引为 0 的“堆”中:
* 1) 堆的根节点将存放在位置 0
* 2) 节点 i 的左子节点在位置 2 * i + 1
* 3) 节点 i的右子节点在位置 2 * i + 2
* 4) 节点 i 的父节点在位置 floor( (i - 1) / 2 ) : 注 floor 表示“取整”操纵
*
* 在起始索引为 1 的“堆”中:
* 1) 堆的根节点将存放在位置 1
* 2) 节点 i 的左子节点在位置 2 * i
* 3) 节点 i 的右子节点在位置 2 *i + 1
* 4) 节点 i 的父节点在位置 floor( i / 2 ) : 注 floor 表示“取整”操纵
*
* 以起始索引为1的堆比较好算
*
* 可以参考:http://wxg6203.iteye.com/blog/668968
*
* @author rain
*/
public class BinaryHeap implements Serializable {
private static final long serialVersionUID = 9073021753354720234L;
private T[] heaps = null;
private int size = 0;
private int DEFAULT_SIZE = 10;
@SuppressWarnings(“unchecked“)
public BinaryHeap(int n) {
if (++n > DEFAULT_SIZE) {
DEFAULT_SIZE = n;
}
heaps = (T[]) new Heap[DEFAULT_SIZE];
}
@SuppressWarnings(“unchecked“)
public BinaryHeap() {
heaps = (T[]) new Heap[DEFAULT_SIZE];
}
/** 对整个堆进行堆化*/
public void heapify() {
for (int i = size / 2; i >= 1; i--) {
fixDown(i);
}
}
/**
* 是否包含{@link T}
*
* @param value
* @return 返回传入value所在位置如果没有找到则返回-1
*/
public int contain(T heap) {
if(heap == null){
return -1;
}
for(int i = 1;i < heaps.length;i++){
if (heap.equals(heaps[i])) {
return i;
}
}
return -1;
}
/** 返回所有数据*/
public T[] toArray() {
return (T[]) heaps;
}
/** 获取根节点 */
public T first() {
return heaps[1];
}
/** 获取最后一个节点 不保证最后一个节点是最大的只能保证根节点是最大或最小的 */
public T last() {
return heaps[size];
}
/** 弹出第一个节点 */
public T removeFirst() {
T f = heaps[1];
heaps[1] = heaps[size];
heaps[size--] = null;
fixDown(1);
return f;
}
/** 返回堆中的个数*/
public int size() {
return size;
}
/**
* 下移
*
* @param k
* 目标节点的索引
*/
private void fixDown(int k) {
int j;// 目标节点的(左/右)子节点索引
while ((j = k << 1) <= size && j > 0) {
// 假如目标节点k的左子节点大于目标节点k的右子节点,那么重置子节点索引为较小的那个
if (j < size && heaps[j].getValue() > heaps[j + 1].getValue())
j++;
if (heaps[k].getValue() <= heaps[j].getValue())
break;
swap(heaps k j);
k = j;// 非递回式下移搜索
}
}
/**
* 交换数据中的位置
*
* @param a
* 数组
* @param i
* 位置I
* @param j
* 位置J
*/
private void swap(T[] a int i int j) {
T tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
/** 向堆中添加元素堆的根节点的索引是从1开始的 */
public void add(T o) {
if (size + 1 == heaps.length)
heaps = Arrays.copyOf(heaps heaps.length << 1);
heaps[++size] = o;// 堆根节点的索引从1开始保存数组的第一个值为NULL
// 每次新增元素后可能会破坏堆的性质,所以要进行上移操纵。
// 假如当前新增的元素比它的父节点要大,那么就要把当前元素和它的父节点进行交换,这么反复的直到根节点位置。这就是上移。
fixUp(size);
}
/**
* 上移:即我们把该节点移动到它的父节点的位置,而让它的父节点到它的位置上,然后我们继续判定该节
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-05-29 09:26 .settings\
文件 522 2012-04-17 10:30 .settings\org.deved.antlride.core.prefs
文件 88 2012-04-17 10:30 .settings\org.eclipse.core.resources.prefs
文件 83 2012-04-17 10:30 .settings\org.eclipse.core.runtime.prefs
目录 0 2012-05-29 09:26 src\
目录 0 2012-05-29 09:26 src\lib\
文件 2388361 2012-04-17 10:35 src\lib\antlr-3.4-complete.jar
目录 0 2012-05-29 09:26 src\main\
目录 0 2012-05-29 09:26 src\main\java\
目录 0 2012-05-29 09:26 src\main\java\com\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\struct\
文件 4570 2012-05-24 23:58 src\main\java\com\hiyouyu\core\struct\BinaryHeap.java
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\util\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\util\antlr\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\util\antlr\sql\
目录 0 2012-05-29 09:26 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\
文件 1173 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\ColumnName.java
文件 4114 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Condition.java
文件 1753 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\ConditionItem.java
文件 759 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\From.java
文件 1403 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Join.java
文件 2653 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\MySql.java
文件 1112 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Order.java
文件 1464 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\OrderItem.java
文件 2367 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Search.java
文件 1553 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\SearchItem.java
文件 1455 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Select.java
文件 1812 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\SelectItem.java
文件 1565 2012-04-17 10:30 src\main\java\com\hiyouyu\core\util\antlr\sql\bean\Table.java
............此处省略37个文件信息
- 上一篇:淘宝mysql数据库高可用的设计实现
- 下一篇:NoSQL精粹中文
相关资源
- 在线词典项目v1.1.zip
- php mysql经典留言本源码 代码通俗易懂
- SQLTOOLS2.0汉化版(1433连接工具)
- PHP MySQL 物流管理 数据库文件
- PHP MySQL 技术 毕业设计 物流管理系统
- 4秒100万条数据导入SQL数据库
- php mysql 在线作业管理系统
- MySql.data.dll +使用说明
- pb 酒店管理系统(代码、sql数据库)
- 图书管理系统 PHP MYSQL实现
- [PHP MySQL]图书馆管理系统前后台全部代
- sql数据库导出到txt文件
- 人事管理系统数据库文件SQL2000
- sqlserver学习ppt 全套共18个
- 门禁系统论文及数据库sqlserver2005数据
- labview中LABSQL数据库的使用
- C 开发的SQL数据库实现的公司员工信
- 企业人事管理系统【SQLServer数据库+课
- 数据字典导出工具 导出SqlServer数据库
- 通过SqlBulkCopy对象从Excel中批量导入到
- 基于PHP+MYSQL的学生成绩管理系统
- 批处理执行sql语句
- Spring+Struts2+Hibernate人力资源管理系统
- 我自己写php mysql聊天室
- mysql 数据库连接池
- sql server 2000经典范例
- 设备管理系统(SQL体验版)
- 完整的php mysql js用户注册与登陆
- MySQL数据库用户在线注册系统
- 东城大学在线答疑系统struts2+spring带
评论
共有 条评论