只显示主题贴
无明 写道“r-tree在olap的实现中广泛使用”,能举例么?
比如 PostgreSQL.
R tree是数据仓库的基础性数据结构。就象b tree是数据库的基础性数据结构一样。现今的关系数据库有可能不用到btree吗?同样,支持数据仓库的数据库绝大部分也都用rtree.
- 进入论坛 综合技术 版
dlee 写道
R-Trees (i.e., used on indexes)
R-Tree 有什么意义?哪位科班出身的网友帮我解释一下。
r tree又称spatial tree,用于多维数据分析。它和b tree一样,有许多变种,在olap的实现中广泛使用。r tree在olap的地位相当于b tree在oltp中的地位。
不知坛子里有没有做r tree的朋友?希望能交流一下。
- 进入论坛 综合技术 版
mochow 写道比如
[code:1]
public interface DestFileConstants {
public static final String DESTFILE_COMMENT_DISCRIPTION = "#";
public static final String TIME_DISCRIPTION = "T";
public static final String NAME_DISCRIPTION = "N";
public static final String ...
- 进入论坛 Java 版
final solution
[code:1]
public Comparator getByteArrayComparator(int byteArrayLength)
{
switch(arrayLength)
{
..........
case 3:
return new BC3();
.........
case 10:
return new BC10();
..... ...
- 进入论坛 Java 版
cat 写道引用最后再比较一下剩下的。
不过所谓节省也就是省了循环里面比较的开销。
思路已经对了。
这里计数的增加和比较所用的时间比byte的比较还要多,优化只能在这里动脑筋了。
我的第二次优化
[code:1]
class byte3 implements Comparator
{
public int compare(Object o1,Object o2)
{
byte[] b1=(byte[])o1;
byte[] b2=( ...
- 进入论坛 Java 版
cat 写道一次循环里面多比个几次?
比如:
[code:1]
int len = b1.length - 4;
for(int i=0;i<len;i++)
{
if(b1[i]!=b2[i])
return (b1[i]&0xff)-(b2[i]&0xff);
++i;
if(b1[i]!=b2[i] ...
- 进入论坛 Java 版
good.mochow.
在我的机器上,我测试了一下。
楼顶我的方法所用时间是1472,你的是1232.优化了大约10%。
我的第一次优化和你的差不多,大约是1151。
[code:1]
class byte3 implements Comparator
{
public int compare(Object o1,Object o2)
{
byte[] b1=(byte[])o1;
byte[] b2=(byte[] ...
- 进入论坛 Java 版
mochow 写道可以这样比较:
1,先判断是否相等,如果不等则继续到2;
2,再判断如果符号不同,是一个正一个负,那么负的大
3,如果符号相同,那么取绝对值比较,绝对值大的就大
1不错。
2,3怎么做?
mochow,这个代码很简单的,你就写两句吧。有代码大家好讨论点。
- 进入论坛 Java 版
firebody 写道
给出一个思路,没有code test 过。
[code:1]
BigInteger bi1=new BigInteger(b1);
BigInteger bi2=new BigInteger(b2);
return bi1.compareTo(bi2);
}[/code:1]
前提,两个数组长度必须一致。
数组的长度是一致的,也就是参数中int byteArrayLength的值。
不过,我说老火,你一句new BigInteger,我原来的程序就可以运行好几次了。
mochow 写道几点疑问:
...
- 进入论坛 Java 版
我先声明,这个算法本身简单,但要优化,就不是那么简单了。为啥,因为它太简单了。
要求是返回一个Comparator,该Comparator能比较两个byte数组的大小。byte数组大小的定义是:数组中每一个byte都是无符号的整数。即0xff不是-128,而是255;按数组中byte的顺序比较对应byte,如果相等,则比较下一个,如果不等,则byte数值大的数组为大。
byte数组的长度可以肯定是在1-50之间。
byte数组的长度在 getByteArrayComparator方法的参数中可以得到,也就是 int byteArrayLength.
这是我工作中遇到的一个真实问题。下面 ...
- 进入论坛 Java 版







评论排行榜