`
gaoyuntao2005
  • 浏览: 311375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tree的实现

阅读更多

实现高并发的Btree结构从内存到磁盘的映射(草稿,未完成)

一、问题介绍
对于一个数据库管理系统来说, BTree是它实现存储管理的基础.
 
实现一个原理简洁,并发性能好的BTree,是实现数据较高性能的基本要求.
所以我们用最新的,又成熟BTree结构.
 
而实际的论文通常是内寸结构形式来描述的。理解它,并较高效实现从
内存到磁盘的映射对没有经验的人来说是个不小的挑战.
 
二、普通对象和有内存对象的区别
1.Java提供的工具

  java提供对象序列化工具,它实现java对象的序列化大磁盘,然后可以从磁盘中反序列化出来。

  要实现只要有以下一种接口

  • Serializable

      该接口是一个无方法的接口, 当一个Class实现该接口时,它的对象可以直接被writeObjet(),

      而readObject()来实现反序列化(有意思的是:反序列化过程中,它不会调用Class的构造方法).

     它有几个缺点,就是我们不能控制那个Field不用序列化(这个可以用transient部分解决),

   不清楚它对象的各个Field存在什么位置, 本身对象占多少字节。

     所以它一般用于,不在乎对象大小的情况,比如状态对象,和对象的网络传输

  • Extenalizable
    该接口要实现两方法 writeExternal(ObjectOutput out)和readExternal(ObjectInput in)(它会调用调用Class的缺省构造方法)
2.直接对byte array存储操作
   这是最原始,也是直接的控制Btree对象的序列化,和反序列化。
   它是直接要把存储的对象,转换成byte array, 然后把它写入磁盘,反序列花时也是先读出byte array, 然后把她转化成对象
 
三、我的BTree的实现
  由于初次写BTree的映射实现, 我首先采用直接byte array 操作, 然后进行refactor,希望有好的结构,然后想利用java Externalizable 接口
    Btree的磁盘映射,当然是以Block(1024 * 2^n bytes)  为单位,每个Block存储Btree的一个node
  
 1. 直接对byte array存储操作的实现
     实现大致分为一下几步
  •  
    • 定义Btree Header 在block存储的结构
    • 定义每个Node在Block上的存储
    • 建立Btree class

     先讲讲Btree class的结构

     同内寸对象不同的, 除了class 的构造涵数,应该包括以下方法

  1.  
    1.  createBtree() 创建一个新的Btree
    2.  opneBtree() 从磁盘中读去Btree
    3. writeBtree() 把Btree写回磁盘
分享到:
评论

相关推荐

    element-tree 实现部门-人员选择(支持ID相同)

    element-tree 实现部门-人员选择(支持ID相同)

    使用jsTree实现js树形结构

    jsTree 是一个强大且灵活的前端库,可以帮助你快速实现交互式的树形结构。通过深入学习其配置选项、事件、插件和 API,你可以创建出满足各种需求的树形视图。无论你是新手还是经验丰富的开发者,jsTree 都能提供简洁...

    AjaxTree实现动态加载

    在这个示例中,"AjaxTree实现动态加载"意味着它允许用户交互时按需加载树节点,减少初始页面加载时的数据量,从而提高页面性能。 **1. Ajax工作原理** Ajax的基本工作流程包括以下几个步骤: - 创建XMLHttpRequest...

    kdtree实现源码(C++) 范围查询

    kd-tree(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。K-D树是二进制空间分割树的特殊的情况。 在计算机科学里,k-d树( k-维树的...

    基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip

    基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree实现的近似查询处理AQP问题python源码(课程大作业).zip基于KD-Tree...

    Flex中tree实现的种种细节

    这篇博客文章“Flex中tree实现的种种细节”深入探讨了如何在Flex应用中有效地利用Tree组件,以及在实现过程中可能遇到的一些关键问题。 首先,Tree组件的基础知识包括它的构造函数、属性、方法和事件。例如,`data`...

    tree实现

    在IT行业中,"tree实现"通常指的是数据结构中的树形结构的编程实现。树是一种非线性数据结构,由节点(或称为顶点)和边组成,每个节点可以有零个或多个子节点,这样的层次关系模拟了自然界中的许多结构。在计算机...

    基于HuffmanTree实现的对数据进行编码

    基于HuffmanTree实现的对数据进行编码是一种高效的数据压缩方法,源于1952年David Huffman提出的一种熵编码算法——霍夫曼编码(Huffman Coding)。本项目设计主要探讨了如何构建Huffman树,并利用它对数据进行编码...

    javascript面向对象tree实现实例

    自己手写一个tree实例,tree实现其实很简单,主要先弄清楚html如何显示tree,可以先查看html元素,会发现tree的每个节点都是一个元素,很有规律;然后使用javascript操作dom,例子中有些使用javascript的面向对象,...

    ALVTREE实现库存控制报表源码.txt

    alvtree实现库存控制报表,主节点是成本物料,展开节点为组件物料,要求添加完全展开和合并功能源代码,方便查询库存明细

    avltree实现

    平衡二叉树实现 平衡二叉树的实质就是保持树“尽量胖,尽量矮

    Go中的MerkleizedIAVL+Tree实现.zip

    Go中的MerkleizedIAVL+Tree实现.zip

    orgtree实现树列表基本功能

    `orgtree`是一个专门用于实现树列表功能的工具,类似于前端库`jquery ztree`,提供了简便的方式来创建和管理树列表。在本篇中,我们将深入探讨`orgtree`的基本原理、使用方法以及如何通过JSON数据来驱动树列表。 ...

    基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看!

    基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,优秀数据结构程序设计,新手必看! 基于Qt和C++的B-Tree实现,...

    组合element里面的select和tree实现的treeSelect选择器

    在提供的`vue-treeSelect-master`压缩包中,应该包含了实现这样一个`SelectTree`组件的源代码。通过查看源码,你可以深入理解其工作原理,包括如何结合`Element UI`的API,如何处理父子组件间的通信,以及如何定制...

    基于c的kd-tree实现方法.zip

    kd-tree的简约实现。该实现既可以通过MEX调用在MATLAB内部使用,也可以直接从C / C ++程序中作为独立工具使用。网站上的图像已使用“ fulltest.m”创建。 此实现提供以下功能: -kdtree_build:kd树构造O -kdtree_...

    layui-tree实现Ajax异步请求后动态添加节点的方法

    总结来说,这个示例展示了如何利用 layui.tree 结合 AJAX 异步请求来实现动态添加树形结构的子节点。关键在于监听用户操作,处理 AJAX 请求,并使用 layui.tree 的 API 来更新前端显示。这种动态交互的实现增强了...

    B+ tree的java实现

    在IT领域,B+树(B Plus Tree)是一种常见的数据结构,广泛应用于数据库索引、文件系统以及其他需要高效检索的数据存储系统中。B+树的特点是平衡性、分层结构和所有叶子节点在同一层,这使得它在处理大量数据时具有...

    kd_tree实现代码

    这里面是kd_tree的实现算法,看完对kd_tree将会有更深的了解

    python实现FP-TREE挖掘算法

    Python作为一种强大的编程语言,因其易读性与丰富的库支持,成为了实现FP-TREE算法的理想选择。在这个项目中,我们使用Python 3.2版本来实现这一算法,并且能可视化每一步的FP树,帮助用户更好地理解和分析过程。 ...

Global site tag (gtag.js) - Google Analytics