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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btree.java

?? 用JAVA實現的miniSQL
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.io.*;
import java.util.*;
public class Btree {
    String table; //表名
    String index; //索引名
    String attribute; //屬性名
    int length;//屬性長度
    long total;//索引鍵值總數
    int type;//屬性類型
    long rootpos;//根節點地址
    int heigth;//樹當前高度
    long nodenumber; //節點個數
    long newpos; //空節點指針
    BufferManager buffer;
    public Btree(String indexname, BufferManager bf){
        buffer= bf;
        index = indexname;
    	try{
    		long current = 0;
    	    int length;
    	    byte[] name;
    	    RandomAccessFile indexlog = new RandomAccessFile(new File("indexlog.log"),"rws");
    	    while(current<indexlog.length()){
    	    	indexlog.seek(current);
    	    	length = indexlog.read();
    	    	if(length==0){
    	    		current = current+1533;
    	    		continue;
    	    	}
    	    	name = new byte[length*2];
    	    	indexlog.read(name);
    	    	if(index.equalsIgnoreCase(new String(name,"UTF16")))
    	    		break;
    	    	current = current+1533;
    	    }
    	    if(current>indexlog.length()){
    	    	indexlog.close();
    	    }
    	    else{
    	        indexlog.seek(current+511);
    	        length = indexlog.read();
    	        name = new byte[length*2];
    	        indexlog.read(name);
    	        table = new String(name, "UTF16");
    	        indexlog.seek(current+1022);
    	        length = indexlog.read();
    	        name = new byte[length*2];
    	        indexlog.read(name);
    	        attribute = new String(name, "UTF16");
    	        RandomAccessFile indexfile = new RandomAccessFile(new File(index),"rws");
    	        total = indexfile.readLong();
    	        type = indexfile.read();
    	        this.length = indexfile.read()*2;
    	        rootpos = indexfile.readLong();
         	    heigth = indexfile.readInt();
    	        nodenumber = indexfile.readLong();
    	        newpos = indexfile.readLong();
    	        indexfile.close();
    	    }
    	}catch(Exception e){
    		System.out.println("構建B+樹失敗");
    	}
    }
    public boolean insert(Keyword K, long P){
    	BtreeNode L;
    	if(rootpos == 0){
    		L = newNode(true, type, length, 0);
    		heigth++;
    		rootpos = L.getAddress();
    	}
    	else{
    		L = insertsearch(K);
    		if(L.search(K)>=0){
    			System.out.println("某unique屬性值已存在,不能重復");
    			return false;
    		}
    	}
    	if(L.indexno<L.max){
    		L.insert(K,P);
    	}
    	else{
    		BtreeNode newL = newNode(true, type, length, L.parent);
    		nodenumber++;
    		L.insert(K,P);
            int half = (L.indexno+1)/2;
            for(int i=half;i<=L.max; i++){
            	newL.address.add(L.address.get(i));
            	newL.keyentry.add(L.keyentry.get(i));
            	newL.indexno++;
            }
            newL.address.add(L.address.get(L.max+1));
            for(int i=half;i<=L.max; i++){
            	L.address.removeLast();
            	L.keyentry.removeLast();
            	L.indexno--;
            }
            L.address.removeLast();
            L.address.addLast(new Long(newL.getAddress()));
            Keyword minK = newL.keyentry.getFirst();
            L.updata();
            newL.updata();
            insert_in_parent(L,minK,newL);
    	}
    	total++;
    	updata();
    	return true;
    }
    public void insert_in_parent(BtreeNode N, Keyword K, BtreeNode newN){
    	if(N.getAddress()==rootpos){
    		BtreeNode rootNode = newNode(false, type, length, 0);
    		rootNode.address.add(N.getAddress());
    		rootNode.address.add(newN.getAddress());
    		rootNode.keyentry.add(K);
    		rootNode.indexno++;
    		heigth++;
    		nodenumber++;
    		rootNode.updata();
    		N.parent = newN.parent = rootNode.getAddress();
    		N.updata();
    		newN.updata();
    		rootpos = rootNode.getAddress();
    		return;
    	}
        BtreeNode P = getNode(N.parent);
        if(P.indexno<P.max){
        	P.insert(K,newN.getAddress(),true);
        	P.updata();
        }
        else{
        	P.insert(K,newN.getAddress(),true);
        	int half = (P.max+1)/2;
        	BtreeNode newT = newNode(false,type,length,P.parent);
        	nodenumber++;
        	for(int i=half;i<=P.max ; i++){
        		newT.address.add(P.address.get(i));
        		newT.keyentry.add(P.keyentry.get(i));
        		newT.indexno++;
        	}
        	newT.address.add(P.address.get(P.max+1));
        	for(int i=half; i<=P.max ; i++){
        		P.address.removeLast();
        		P.keyentry.removeLast();
        		P.indexno--;
        	}
        	P.address.removeLast();
        	Keyword newK = P.keyentry.getLast();
        	P.keyentry.removeLast();
        	P.indexno--;
        	P.updata();
        	newT.updata();
        	for(int i=0;i<=newT.indexno;i++){
        		BtreeNode b = getNode(newT.address.get(i));
        		b.parent = newT.getAddress();
        		b.updata();
        	}
        	insert_in_parent(P,newK,newT);
        }
    }
    public boolean delete(Keyword K){
    	BtreeNode L = insertsearch(K);
    	if(L.search(K)<0)
    		return false;
    	delete_entry(L,K);
    	total--;
    	updata();
    	return true;
    }
    public void delete_entry(BtreeNode N, Keyword K){
    	N.delete(K);
    	if(N.getAddress()==rootpos&&N.indexno==0){
    		rootpos = N.address.get(0);
    		N.address.removeFirst();
    		N.updata();
    		updata();
    		heigth--;
    	}
    	else if(N.indexno+1<(N.max+2)/2&&N.getAddress()!=rootpos){
    		BtreeNode parent = getNode(N.parent);
    		nodenumber--;
    		int add = parent.search(N.getAddress());
    		BtreeNode brotherN;
    		Keyword newK;
    		if(add>0){
    			brotherN = getNode(parent.address.get(add-1));
    			newK = parent.keyentry.get(add-1);
    		}
    		else{
    			brotherN = getNode(parent.address.get(add+1));
    			newK = parent.keyentry.get(add);
    		}
    		if(N.indexno+brotherN.indexno<= N.max){
    			if(add==0){
    				BtreeNode temp = brotherN;
    			    brotherN = N;
    			    N = temp;
    			}
    			if(!N.isleaf){
    				brotherN.keyentry.addLast(newK);
    				brotherN.indexno++;
    				for(int i = 0;i < N.indexno ;i++){
    					brotherN.address.addLast(N.address.get(i));
    					BtreeNode tempnode = getNode(brotherN.address.getLast().longValue());
    					tempnode.parent = brotherN.getAddress();
    					tempnode.updata();
    					brotherN.keyentry.addLast(N.keyentry.get(i));
    					brotherN.indexno++;
    				}
    				brotherN.address.addLast(N.address.get(N.indexno));
    				BtreeNode tempnode = getNode(brotherN.address.getLast().longValue());
    				tempnode.parent = brotherN.getAddress();
    				tempnode.updata();
    				brotherN.updata();
    			}
    			else{
    				for(int i = 0;i < N.indexno ;i++){
    					brotherN.address.add(brotherN.indexno, N.address.get(i));
    					brotherN.keyentry.addLast(N.keyentry.get(i));
    					brotherN.indexno++;
    				}
    				brotherN.address.set(brotherN.indexno, N.address.get(N.indexno));	
    				brotherN.updata();
    			}
    			if(add==0){
    				parent.address.set(add+1,parent.address.get(add));
    			}
    			else{
    				parent.address.set(add,parent.address.get(add-1));
    			}
    			brotherN.updata();
    			parent.updata();
    			delete_entry(parent, newK);
    		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba视频| 欧美日韩一区二区三区四区| 波波电影院一区二区三区| 成人开心网精品视频| 99国产精品久| 欧美色成人综合| 日韩视频在线你懂得| 国产欧美一区在线| 亚洲精品你懂的| 天天色天天操综合| 国产一区在线观看麻豆| 成人小视频免费在线观看| 一本久久综合亚洲鲁鲁五月天 | 国产一区二区在线视频| 国产99久久久精品| 一本色道**综合亚洲精品蜜桃冫| 欧美三级电影精品| 精品久久久久久亚洲综合网| 国产精品美女一区二区在线观看| 一区二区三区四区精品在线视频| 日本成人在线不卡视频| 国产成人啪午夜精品网站男同| av激情亚洲男人天堂| 91精品国产麻豆| 日本一区二区高清| 性感美女极品91精品| 激情成人午夜视频| 91免费小视频| 精品乱人伦小说| 亚洲免费大片在线观看| 另类小说综合欧美亚洲| 色婷婷久久久综合中文字幕| 在线精品视频一区二区三四| 亚洲精品一区二区三区福利| 亚洲男女毛片无遮挡| 日韩国产成人精品| 91一区二区三区在线播放| 日韩一区二区三区视频在线观看| 国产精品久久久久四虎| 日本色综合中文字幕| 国产精品一区二区视频| 欧美日韩综合在线免费观看| 国产精品天干天干在观线| 日韩电影在线观看一区| 99re成人精品视频| 精品国内二区三区| 一区二区三区在线不卡| 国产成人免费9x9x人网站视频| 欧美日韩成人高清| 亚洲天堂福利av| 国产美女娇喘av呻吟久久| 日韩亚洲欧美中文三级| 97精品电影院| 日韩午夜av电影| 国内精品久久久久影院薰衣草 | 亚洲视频一二三区| 日韩高清国产一区在线| 欧美一区二区三区视频免费| 亚洲激情综合网| 99re热视频精品| 视频一区国产视频| 精品一区精品二区高清| 色妞www精品视频| 国产欧美精品区一区二区三区| 激情六月婷婷综合| 日韩丝袜美女视频| 婷婷开心激情综合| 欧洲一区二区av| 久久奇米777| 九九九久久久精品| 色综合久久久久久久久久久| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩精品一级二级 | 欧美日本不卡视频| 亚洲精品福利视频网站| 99久久综合国产精品| 国产精品免费网站在线观看| 久久精品国产久精国产爱| 欧美xxxx在线观看| 久久精品国产精品亚洲红杏| 日韩视频在线你懂得| 日本麻豆一区二区三区视频| 91精品国产美女浴室洗澡无遮挡| 五月天中文字幕一区二区| 色狠狠av一区二区三区| 国产精品成人午夜| www..com久久爱| 亚洲特级片在线| 91在线观看高清| 亚洲免费看黄网站| 色哟哟国产精品| 樱花草国产18久久久久| 色呦呦国产精品| 亚洲美女区一区| 在线免费观看日韩欧美| 一区二区视频在线| 欧美综合一区二区三区| 亚洲五码中文字幕| 欧美午夜电影一区| 日本免费在线视频不卡一不卡二| 日韩一区二区三区在线观看| 极品瑜伽女神91| 日韩视频免费观看高清完整版在线观看| 美女精品自拍一二三四| www..com久久爱| 日本午夜精品一区二区三区电影| 国产精品一区二区黑丝| 六月丁香综合在线视频| 国产精品网曝门| 欧美日韩亚洲丝袜制服| 国产美女av一区二区三区| 亚洲精品久久嫩草网站秘色| 欧美国产日韩一二三区| 欧美一二三四区在线| 欧美在线视频你懂得| 欧美性猛交xxxxxxxx| 亚洲天堂免费看| 成人av第一页| 日韩va欧美va亚洲va久久| 精品国产污污免费网站入口| 成人aa视频在线观看| 亚洲国产cao| 欧美xxxx老人做受| 色8久久人人97超碰香蕉987| 三级不卡在线观看| 国产精品福利在线播放| 欧美日韩国产精品成人| 成人一级黄色片| 亚瑟在线精品视频| 国产精品美日韩| 777午夜精品视频在线播放| 亚洲最新在线观看| 国产午夜精品在线观看| 在线免费不卡电影| 国产美女精品一区二区三区| 亚洲最大成人综合| 国产精品无圣光一区二区| 欧美日韩精品三区| 精品中文av资源站在线观看| 亚洲欧美综合另类在线卡通| 91精品国产综合久久精品麻豆| 懂色av一区二区三区蜜臀| 亚洲va韩国va欧美va精品| 久久久久九九视频| 欧美亚州韩日在线看免费版国语版| 久久精品国产久精国产爱| 亚洲欧美电影院| 久久综合九色综合久久久精品综合 | 日本va欧美va欧美va精品| 欧美大片一区二区三区| 不卡高清视频专区| 男女男精品视频网| 自拍偷拍国产亚洲| 精品国产第一区二区三区观看体验| 色婷婷av久久久久久久| 国产一区91精品张津瑜| 性做久久久久久免费观看欧美| 国产日韩欧美精品在线| 欧美一区午夜视频在线观看| 99久久国产综合精品女不卡| 久久机这里只有精品| 欧美精品日韩综合在线| 国产精品高清亚洲| 成人性视频免费网站| 一区二区免费在线播放| 国产一区二区三区国产| 欧美视频自拍偷拍| 亚洲三级电影全部在线观看高清| 麻豆视频一区二区| 欧美性做爰猛烈叫床潮| 亚洲免费视频中文字幕| 国产制服丝袜一区| 日韩三级免费观看| 亚洲一级二级三级| 欧美精品日日鲁夜夜添| 成人高清视频免费观看| 精品一区二区三区在线视频| 日韩av一二三| 婷婷综合五月天| 午夜精品福利一区二区蜜股av| 亚洲精品日日夜夜| 成人欧美一区二区三区视频网页| 中文字幕在线不卡一区二区三区| 久久久久久久久久美女| 国产清纯白嫩初高生在线观看91 | 91蜜桃传媒精品久久久一区二区| 韩国精品一区二区| 国产盗摄视频一区二区三区| 狠狠色丁香久久婷婷综合_中 | 久久综合av免费| 日韩欧美在线网站| 日韩欧美123| 欧美一区二区三区免费| 欧美一区二区黄色| 欧美一级日韩免费不卡| 91黄色免费版| 91一区二区三区在线播放| 99riav一区二区三区| 色综合久久99| 在线看日本不卡|