algorithm - 用于建模包含/复合关系的数据结构

标签 algorithm design-patterns go

我在 golang 邮件列表中发布了类似的消息,因为它涉及一些特定于语言的细节。我希望语言本身的并发支持可能有比模式更好的建模方法。如果您不熟悉 golang,请帮助我了解您的数据结构知识。我认为我的大部分疑虑都是语言中立的,我从 SO 那里得到了更好的回应。

我正在尝试为存储区域建模(具有容器关系,例如存储 -> 货架 -> 货架 -> 箱子。 据我了解,通常它可能会使用“复合模式”进行建模。但是,为了努力 - 将结构(层次结构)细节与对象分开 - 使用语言结构(走树的 channel 等) 我正在考虑在树中对信息进行建模。我不了解适合此应用程序的最佳树结构是什么。

  1. 在 go 中,我看到两个库实现了 LLRB 和 treap。你会推荐什么?是否有更合适的数据结构可用?
  2. 树必须是平衡的吗?例如,我可能在一个架子上只有一个架子,但在其他架子上可以任意放置。
  3. 为了快速遍历,我会把它保存在内存中。我如何管理加载、构建和持久化树结构?我是否在每次打开应用程序时都构建树,并且不持久化树本身,而是持久化对象。

最佳答案

您在 Go-Nuts 列表中得到了很好的答案。 Sameer Ajmani 从内置类型开始的建议很好。不要陷入更复杂的事情,直到简单的解决方案被证明是不够的。 Si guy 有你的持久性解决方案。 Gob 快速而简单。

关于algorithm - 用于建模包含/复合关系的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9861420/

相关文章:

java - 如何检查对象是否属于子对象

c++ - 我们如何使用 boost::mpl 实现 Builder 设计模式?

string - 在golang中将子字符串转换为int

javascript - 在 Javascript 中使用极小极大算法解决 TicTacToe

asp.net - AntFarm 反模式——避免策略、帮助治愈的解药

c - 在 C 中实现(包含)过滤器的最佳方式

go - 在浏览器关闭时关闭 Go 服务器

sockets - 在 Golang 中,如何接收套接字绑定(bind)到特定地址/端口的多播数据包?

python - 单机和库?

javascript - 递增整数序列