当前位置: 首页 > news >正文

树形结构的文件存储

一、目标

把树形结构用文件来保存,设计具体的存放格式。

二、树形节点的约定

假设节点只有下列格式:

node {

id 整形,是主键。

pid 长整形,是父节点主键。

name 10字节字符串,是节点名字。

size 整形,是子节点个数。

childs[] 数组类型,是子节点的主键集合。

}

三、设计文件保存格式

有两种:字符串格式和二进制格式。

(一)XML文件格式

有很多的<node>元素,用属性来连接和指向。

<nodes>

<node id="k01" pid="None" name="节点1">

<childs>

<child>k02</child>

</childs>

</node>

<node id="k02" pid="k01" name="节点2">

<childs>

</childs>

</node>

</nodes>

(二)二进制格式

每个节点连续存放,父节点指针和子节点指针指向文件偏移量位置。

每个节点存放格式如下:

主键(4字节,整型)

名字(10字节,字符串)

父节点指针(8字节,文件偏移量)

子节点个数(4字节,整型)

子节点指针集合(每个8字节,连续存放)

写完每个子节点,还需要把文件偏移量设置到父节点记录中。

节点写入接口设计:

// 参数: id是主键,pid是父节点指针,name是节点名字,size是子节点个数

// 返回值:节点起始的文件指针偏移量

long writeNode(int id, long pid, String name, int size)

http://www.jsqmd.com/news/740047/

相关文章:

  • ENVI5.3保姆级教程:高分二号影像从辐射定标到融合出图的完整避坑指南
  • 避坑指南:ESP32 MicroPython驱动ST7735屏显示中文,这几个问题你一定遇到过
  • 3大核心功能重塑网易云音乐:沉浸式播放界面与动态歌词动画美化插件终极指南
  • MCP协议与AI Agent控制平面:构建可靠智能工作流的核心架构
  • DC综合中set_fix_multiple_port_nets命令的实战解析:如何优雅地给直连线插BUF
  • 告别‘硬邦邦’的机器人:用准直驱(QDD)和齿带传动打造下一代柔顺机械臂,实战VR遥操作演示
  • 番茄小说下载器终极指南:3种界面轻松实现离线阅读自由
  • 扩散模型在机器人控制中的应用与优化
  • 团队代码规范管控:用 OpenClaw 自动扫描代码规范问题、生成整改报告、同步到团队协作群
  • 接入 Taotoken 后如何通过审计日志追踪与分析 API 调用异常
  • 别再瞎选了!Xilinx 7系列FPGA BRAM三种实现算法(最小面积/低功耗/固定原语)到底怎么选?
  • WorkshopDL:无需Steam客户端,轻松获取1000+游戏模组的终极方案
  • Appium MCP Server:用自然语言驱动移动端自动化测试
  • 基于Raycast与OpenAI的智能翻译插件开发实战
  • LOLIN S2 Pico开发板:ESP32-S2与OLED的物联网解决方案
  • Python hasattr getattr setattr 使用场景
  • 开发者YouTube内容创作全攻略:从选题到发布的系统性技能树
  • GroupGPT:企业级AI会话隔离与高并发优化方案
  • 百度SEO优化全攻略:3步提升排名
  • 利用 Taotoken 实现多模型聚合与智能路由以保障服务高可用
  • 车载诊断测试踩坑实录:流控制帧的BlockSize和STmin设置不当,如何导致ECU刷写失败?
  • 告别MongoDB?我用RedisJSON重构了Node.js项目的用户会话缓存(附性能对比)
  • 3步解锁二手iPhone:applera1n实现iOS 15-16激活锁高效绕过
  • 观测到接入Taotoken后大模型服务稳定性与延迟显著改善
  • Hearthstone-Script:炉石传说智能自动化解决方案深度解析
  • 从地图标记到飞行轨迹:用Cesium Entity玩转10个真实GIS可视化场景
  • 5分钟快速上手:Switch游戏文件终极管理工具NSC_BUILDER完全指南
  • R3nzSkin英雄联盟换肤工具终极指南:从零开始到实战精通
  • 别再乱用rm -rf了!Windows和Linux文件删除命令的保姆级对比指南
  • 基于Matrix与ChatGPT API构建私有化AI聊天机器人:架构、部署与优化