亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? persistentpagefile.java

?? 一個(gè)java實(shí)現(xiàn)的R樹(shù)
?? JAVA
字號(hào):
package rtree;

import java.io.*;
import java.util.*;

/**
 * A page file that stores all pages into Persistent storage. It uses a RandomAccessFile to store node data.
 * The format of the page file is as follows. First, a header is writen that stores important information
 * about the RTree. The header format is as shown below:
 * <br>
 * &nbsp;&nbsp;int dimension<br>
 * &nbsp;&nbsp;float fillFactor<br>
 * &nbsp;&nbsp;int nodeCapacity<br>
 * &nbsp;&nbsp;int pageSize<br>
 * &nbsp;&nbsp;int treeType<br>
 * <p>
 * All the pages are stored after the header, with the following format:
 * <br>
 * &nbsp;&nbsp;int parent<br>
 * &nbsp;&nbsp;int level<br>
 * &nbsp;&nbsp;int usedSpace<br>
 * &nbsp;&nbsp;// HyperCubes<br>
 * &nbsp;&nbsp;for (i in usedSpace)<br>
 * &nbsp;&nbsp;&nbsp;&nbsp;for (j in dimension) {<br>
 * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float p(i)1 [j]<br>
 * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float p(i)2 [j]<br>
 * &nbsp;&nbsp;&nbsp;&nbsp;}<br>
 * &nbsp;&nbsp;&nbsp;&nbsp;int branch<br>
 * &nbsp;&nbsp;}
 * <p>
 * Deleted pages are stored into a Stack. If a new entry is inserted it is placed in the last deleted page.
 * That way the page file does not grow for ever.
 * <p>
 * Created: Sun Oct 24 21:14:57 1999
 * <p>
 * @author Hadjieleftheriou Marios
 * @version 1.001
 */
public class PersistentPageFile extends PageFile {
    /** Stores node data into Persistent storage. */
    private RandomAccessFile file;
    private String fileName;

    private Stack emptyPages = new Stack();

    /**
     * Header size calculated using the following formula:
     *   headerSize = dimension + fillFactor + nodeCapacity + pageSize + treeType
     */
    private int headerSize = 20;

    public static final int EMPTY_PAGE = -2;

    public PersistentPageFile() {
	this(null);
    }

    public PersistentPageFile(String fileName) {
	try {
	    if (fileName == null) {
		File f = File.createTempFile("rtree", ".dat");
		this.fileName = f.getCanonicalPath();
		f.deleteOnExit();
		file = new RandomAccessFile(f, "rw");
	    } else {
		file = new RandomAccessFile(fileName, "rw");
		this.fileName = fileName;

		file.seek(0);
		byte[] header = new byte[headerSize];
		if (headerSize == file.read(header)) {
		    DataInputStream ds = new DataInputStream(new ByteArrayInputStream(header));
		    dimension = ds.readInt();
		    fillFactor = ds.readFloat();
		    nodeCapacity = ds.readInt();
		    pageSize = ds.readInt();
		    treeType = ds.readInt();

		    // find all empty pages and add them into the emptyPages stack.
		    int i = 0;
		    try {
			while (true) {
			    if (EMPTY_PAGE == file.readInt()) {
				emptyPages.push(new Integer(i));
			    }
			    i++;
			    file.seek(headerSize + i * pageSize);
			}
		    } catch (IOException e) {
		    }
		}
	    }
	} catch (Exception e) {
	    e.printStackTrace();
	}
    }

    protected void initialize(RTree tree, int dimension, float fillFactor, int capacity, int treeType) {
	super.initialize(tree, dimension, fillFactor, capacity, treeType);
	emptyPages.clear();
       
	try {
	    // FIXME: needs Java 2 to compile.
	    file.setLength(0);
	    //
	    file.seek(0);
	    file.writeInt(dimension);
	    file.writeFloat(fillFactor);
	    file.writeInt(nodeCapacity);
	    file.writeInt(pageSize);
	    file.writeInt(treeType);
	} catch (IOException e) {
	    e.printStackTrace();
	}
    }

    protected void finalize() throws Throwable {
	try {
	    file.close();
	} catch (Exception e) {
	    e.printStackTrace();
	}

	super.finalize();
    }

    /*
    protected byte[] readData(int page) throws PageFaultError {
	if (page < 0) {
	    throw new IllegalArgumentException("Page number cannot be negative.");
	}

	try {
	    file.seek(headerSize + page * pageSize);

	    byte[] b = new byte[pageSize];
	    if (-1 == file.read(b)) {
		throw new PageFaultError("EOF found while loading page " + page + ".");
	    }

	    return b;
	} catch (IOException e) {
	    e.printStackTrace();
	    return null;
	}
    }

    protected int writeData(byte[] d, int page) throws PageFaultError {
	if (d == null) {
	    throw new IllegalArgumentException("Data cannot be null.");
	}

	if (d.length > pageSize) {
	    throw new IllegalArgumentException("Byte array length must be at most equal to one page size.");
	}

	try {
	    if (page < 0) {
		if (emptyPages.empty()) {
		    page = (int) ((file.length() - headerSize) / pageSize);
		} else {
		    page = ((Integer) emptyPages.pop()).intValue();
		}
	    }

	    file.seek(headerSize + page * pageSize);
	    file.write(d);
	
	    return page;
	} catch (IOException e) {
	    e.printStackTrace();
	    return -1;
	}
    }
    */

    protected AbstractNode readNode(int page) throws PageFaultError {
	if (page < 0) {
	    throw new IllegalArgumentException("Page number cannot be negative.");
	}

	try {
	    file.seek(headerSize + page * pageSize);

	    byte[] b = new byte[pageSize];
	    int l = file.read(b);
	    if (-1 == l) {
		throw new PageFaultError("EOF found while trying to read page " + page + ".");
	    }

	    DataInputStream ds = new DataInputStream(new ByteArrayInputStream(b));

	    int parent = ds.readInt();
	    if (parent == EMPTY_PAGE) {
		throw new PageFaultError("Page " + page + " is empty.");
	    }

	    int level = ds.readInt();
	    int usedSpace = ds.readInt();

	    AbstractNode n;
	    if (level != 0) {
		n = new Index(tree, parent, page, level);
	    } else {
		n = new Leaf(tree, parent, page);
	    }

	    n.parent = parent;
	    n.level = level;
	    n.usedSpace = usedSpace;

	    float[] p1 = new float[dimension];
	    float[] p2 = new float[dimension];

	    for (int i = 0; i < usedSpace; i++) {
		for (int j = 0; j < dimension; j++) {
		    p1[j] = ds.readFloat();
		    p2[j] = ds.readFloat();
		}

		n.data[i] = new HyperCube(new Point(p1), new Point(p2));
		n.branches[i] = ds.readInt();
	    }

	    return n;
	} catch (IOException e) {
	    e.printStackTrace();
	    return null;
	}
    }

    protected int writeNode(AbstractNode n) throws PageFaultError {
	if (n == null) {
	    throw new IllegalArgumentException("Node cannot be null.");
	}

	try {
	    int page;
	    if (n.pageNumber < 0) {
		if (emptyPages.empty()) {
		    page = (int) ((file.length() - headerSize) / pageSize);
		} else {
		    page = ((Integer) emptyPages.pop()).intValue();
		}
		n.pageNumber = page;
	    } else {
		page = n.pageNumber;
	    }

	    ByteArrayOutputStream bs = new ByteArrayOutputStream(pageSize);
	    DataOutputStream ds = new DataOutputStream(bs);
	    ds.writeInt(n.parent);
	    ds.writeInt(n.level);
	    ds.writeInt(n.usedSpace);

	    for (int i = 0; i < tree.getNodeCapacity(); i++) {
		for (int j = 0; j < tree.getDimension(); j++) {
		    if (n.data[i] == null) {
			ds.writeFloat(Float.NaN);
			ds.writeFloat(Float.NaN);
		    } else {
			ds.writeFloat(n.data[i].getP1().getFloatCoordinate(j));
			ds.writeFloat(n.data[i].getP2().getFloatCoordinate(j));
		    }
		}
		ds.writeInt(n.branches[i]);
	    }
	    ds.flush();
	    bs.flush();

	    file.seek(headerSize + page * pageSize);
	    file.write(bs.toByteArray());

	    return page;
	} catch (IOException e) {
	    e.printStackTrace();
	    return -1;
	}
    }

    protected AbstractNode deletePage(int page) throws PageFaultError {
	try {
	    if (page < 0 || page > (file.length() - headerSize) / pageSize) {
		return null;
	    } else {
		AbstractNode n = readNode(page);
		file.seek(headerSize + page * pageSize);
		file.writeInt(EMPTY_PAGE);
		emptyPages.push(new Integer(page));
		return n;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    return null;
	}
    }

} // PersistentPageFile

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一二三四社区欧美黄| 欧美精品99久久久**| 国产精品午夜在线观看| 成人午夜精品一区二区三区| 久久九九99视频| 成人深夜福利app| 亚洲自拍另类综合| 日韩一区二区三| 国产一区二区免费视频| 中文字幕 久热精品 视频在线| 不卡免费追剧大全电视剧网站| 亚洲精品中文在线| 日韩一区二区三区在线观看 | 亚洲精品国产高清久久伦理二区| 一本大道久久精品懂色aⅴ| 亚洲一区二区成人在线观看| 欧美一区二区三区精品| 国产高清久久久久| 亚洲欧洲在线观看av| 欧美日韩亚洲综合在线| 国产在线视视频有精品| 一区二区三区在线视频免费观看| 欧美麻豆精品久久久久久| 国产一区二区成人久久免费影院| 中文字幕字幕中文在线中不卡视频| 欧美色窝79yyyycom| 国产一区激情在线| 一区二区三区国产| 国产午夜一区二区三区| 欧洲一区在线观看| 国产成人免费xxxxxxxx| 午夜伦欧美伦电影理论片| 国产欧美日韩在线看| 欧美人与禽zozo性伦| 成人黄动漫网站免费app| 日韩国产一二三区| 亚洲天堂2016| 久久久久久久久久久久久夜| 欧美午夜不卡视频| 成人免费高清在线| 久久精品国产一区二区三区免费看| ㊣最新国产の精品bt伙计久久| 日韩一区二区三区高清免费看看 | 亚洲欧美另类小说视频| 精品国产欧美一区二区| 欧美日本在线观看| 色综合一区二区| 粉嫩一区二区三区在线看| 日本不卡视频在线观看| 亚洲午夜在线视频| 亚洲欧美色图小说| 国产精品污www在线观看| 欧美成人精品福利| 欧美高清性hdvideosex| 欧美中文字幕一区二区三区 | 狠狠色丁香婷综合久久| 亚洲福利视频一区| 亚洲日本欧美天堂| 国产精品久久久久久妇女6080| 精品日产卡一卡二卡麻豆| 欧美日韩成人综合| 91福利小视频| 色婷婷国产精品综合在线观看| 国产成人免费网站| 成熟亚洲日本毛茸茸凸凹| 国产精品一二三在| 韩国精品主播一区二区在线观看| 日本亚洲欧美天堂免费| 午夜精品福利久久久| 亚洲一区二区三区中文字幕| 亚洲另类色综合网站| 综合亚洲深深色噜噜狠狠网站| 久久精品网站免费观看| 国产午夜精品理论片a级大结局 | 中文字幕在线一区| 国产精品久久久久永久免费观看| 国产三级三级三级精品8ⅰ区| 精品少妇一区二区三区免费观看 | 日本一区二区久久| 国产欧美一区二区三区网站 | 日韩视频一区二区三区在线播放| 欧美精品v国产精品v日韩精品 | 精品区一区二区| 欧美mv和日韩mv的网站| 久久无码av三级| 国产清纯在线一区二区www| 国产精品对白交换视频 | 丝袜a∨在线一区二区三区不卡| 亚洲激情一二三区| 日韩国产在线观看一区| 久久99久久99精品免视看婷婷| 激情五月婷婷综合| 成人h动漫精品一区二| 99riav一区二区三区| 欧美系列日韩一区| 日韩欧美亚洲一区二区| 欧美—级在线免费片| 亚洲最大色网站| 日本人妖一区二区| 国产成人三级在线观看| 在线一区二区视频| 日韩天堂在线观看| 国产精品女上位| 日欧美一区二区| 国产成人av电影在线观看| 91影院在线观看| 日韩一二三区视频| 国产精品久久久久久久久免费丝袜| 亚洲精品免费播放| 精品系列免费在线观看| www.99精品| 日韩欧美在线网站| 亚洲欧洲av在线| 美女高潮久久久| av一区二区三区黑人| 欧美一级在线免费| 亚洲日本va在线观看| 蜜臀精品一区二区三区在线观看| 成人av在线网站| 69堂亚洲精品首页| 日韩理论片网站| 国产做a爰片久久毛片| 色哟哟一区二区三区| wwww国产精品欧美| 天天爽夜夜爽夜夜爽精品视频 | 99精品国产视频| 精品欧美一区二区三区精品久久| 亚洲欧洲三级电影| 国产一区二区在线观看视频| 欧美在线观看一区| 中文字幕二三区不卡| 秋霞午夜鲁丝一区二区老狼| 97久久久精品综合88久久| 欧美精品一区二区精品网| 亚洲国产婷婷综合在线精品| 国产精品自拍三区| 日韩三级中文字幕| 亚洲高清在线精品| 色综合中文字幕国产 | 亚洲欧洲av另类| 国产美女视频91| 日韩视频在线你懂得| 亚洲大型综合色站| 一本大道久久a久久综合婷婷| 中文字幕乱码亚洲精品一区| 日本中文字幕一区| 欧美性生活影院| 一区二区三区美女| 91丨九色丨国产丨porny| 国产日韩亚洲欧美综合| 国内精品伊人久久久久影院对白| 这里只有精品视频在线观看| 亚洲制服欧美中文字幕中文字幕| av在线不卡免费看| 国产偷国产偷精品高清尤物| 韩国三级在线一区| 久久综合久色欧美综合狠狠| 麻豆高清免费国产一区| 91麻豆精品久久久久蜜臀| 亚洲午夜免费电影| 欧美视频中文一区二区三区在线观看 | 国产麻豆9l精品三级站| 日韩免费性生活视频播放| 麻豆成人av在线| 欧美成人一级视频| 国产精品一二三四区| 久久免费美女视频| 国产盗摄一区二区| 国产日本亚洲高清| www.亚洲人| 亚洲人成伊人成综合网小说| 91婷婷韩国欧美一区二区| 中文字幕在线一区免费| 日本韩国欧美一区二区三区| 一区二区三区四区蜜桃| 欧美性高清videossexo| 亚洲国产精品综合小说图片区| 欧美日韩国产三级| 美国十次综合导航| www久久精品| 91在线视频免费观看| 夜夜嗨av一区二区三区网页 | 精品国产91乱码一区二区三区 | 欧美日韩成人高清| 久久成人18免费观看| 国产视频911| 色婷婷av一区二区三区之一色屋| 亚洲h精品动漫在线观看| 日韩视频永久免费| 丁香激情综合五月| 亚洲成人精品影院| 精品成人一区二区| 91亚洲男人天堂| 午夜精品一区在线观看| 久久综合中文字幕| 91色九色蝌蚪| 日韩av一级电影| 国产精品久久一卡二卡| 欧美区一区二区三区| 国产一区二区三区国产|