资源简介
使用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精粹中文
相关资源
- NoSQL精粹中文
- 淘宝mysql数据库高可用的设计实现
- JIRA6.0.5破解及汉化说明+程序
- MySQL数据库管理员学生指南2
- 非常好用的mysql客户端sqlyog中文版
- Postgresql从入门到精通
- libmysql_win32(32位libmysql.dll)
- MySQL入门到精通经典教程.pdf
- 32位win7系统安装sql server2005的详细教程
- 最新列车时刻表数据库SQL通用版火车
- QT5.7_SQLITE_QSS基本应用
- MYSQLWorkBench中文教程
- snc sql native client
- 2019年最新淘宝叶子类目分类ID-24043条
- region_2018-05-16.sql
- VC和SQL结合的学生管理系统
- 完整版工资管理系统Delphi+SQL
- 串口数据采集并自动写入MySQL数据软件
- [SQL Server实用教程第4版SQL Server 2012版
- sqlite-netFx40-binary-x64-2010-1.0.94.0.zip
- 基于VC,SQL SERVER学生信息管理系统
- Eclipse+sql做的用户登录注册系统
- VS2010+SQL server2005网上购物系统
- SQL必知必会第4版带源码.zip
- SQL成绩管理系统,齐全报告
- 基于springboot的教师评价系统带sql文件
- 很方便的sql server 2000 客户端绿色版
- SQL必知必会 第四版 超清晰
- zw_MS官方卸载工具Sql2008和SQL2005,控制
- nodejs+mysql+ejs完成的博客
评论
共有 条评论