Categorygithub.com/bpfs/defs
modulepackage
2.0.1+incompatible
Repository: https://github.com/bpfs/defs.git
Documentation: pkg.go.dev

# README

flow diagram

DeFS

Go Reference Go

DeFS(Decentralized file service) 去中心化文件服务,引领了数据存储领域的革新,通过引入动态存储技术,解决了传统静态存储和去中心化存储所面临的挑战。其核心设计理念是为用户提供更加高效、安全且可靠的数据存储解决方案。通过数据的自由流动和动态迁移,在去中心化的同时,又保障了数据的安全性和可靠性。

该项目目前正在积极开发中,处于 Alpha 状态。

文档

该文档正在编写中……

# Packages

No description provided by the author
No description provided by the author
badgerhold 是一个基于 Badger DB 之上的索引和查询层。它的目的是提供一种简单、持久的 Go 类型存储和检索方法。Badger DB 是一个嵌入式键值存储,而 badgerhold 提供了一个更高级的接口,适用于 Badger 的常见用例。 # Go 类型 badgerhold 直接处理 Go 类型。插入数据时,您可以直接传递结构体。当查询数据时,您需要传递一个指向要返回类型的切片的指针。默认情况下,使用 Gob 编码。 您可以在同一个 DB 文件中存储多种不同的类型,并且它们(及其索引)会被分别存储。 示例代码展示了如何插入数据和查询数据: err := store.Insert(1234, Item{ Name: "Test Name", Created: time.Now(), }) var result []Item err := store.Find(&result, query) # 索引 badgerhold 会自动为结构体中标记为 badgerholdIndex 的字段创建索引。例如: type Item struct { ID int Name string Category string `badgerholdIndex:"Category"` Created time.Time } 查询时,第一个指定的字段(如果存在索引)将用作索引。 # 查询 查询是对一组字段应用的链式条件。例如: badgerhold.Where("Name").Eq("John Doe").And("DOB").Lt(time.Now()) 这个查询语句表示查找 Name 为 "John Doe" 且 DOB 小于当前时间的记录。 # 总结 badgerhold 提供了一种高效且易于使用的方法来在 Badger DB 之上进行复杂的查询和数据操作,并自动处理了索引的创建和使用。 */.
Package bitset 实现了位集合,它是一个在非负整数和布尔值之间的映射。 相比于 map[uint]bool,它的效率更高。 它提供了设置、清除、翻转和测试单个整数的方法。 同时也提供了集合的交集、并集、差集、补集和对称操作,以及测试是否有任何位被设置、 所有位被设置或没有位被设置的方法,并可以查询位集合的当前长度和设置位的数量。 位集合会扩展到最大设置位的大小;内存分配大约是最大位数,其中最大位是最大的设置位。 位集合永远不会缩小。在创建时,可以给出将要使用的位数的提示。 许多方法,包括 Set、Clear 和 Flip,都返回一个 BitSet 指针,这允许链式调用。 使用示例: import "bitset" var b BitSet b.Set(10).Set(11) if b.Test(1000) { b.Clear(1000) } if B.Intersection(bitset.New(100).Set(10)).Count() > 1 { fmt.Println("Intersection works.") } 作为 BitSets 的替代方案,应该查看 'big' 包,它提供了位集合的(较少集合理论)视图。 */.
No description provided by the author
Package database 提供了数据库相关的功能实现.
package downloads_ 实现文件下载相关功能.
Package main 是DeFS系统的主包.
Package files 提供文件相关的操作功能,包括密钥分片生成和恢复等功能.
No description provided by the author
No description provided by the author
Package kbucket implements a kademlia 'k-bucket' routing table.
No description provided by the author
Package defs 提供了DeFS去中心化存储系统的网络握手协议实现.
No description provided by the author
No description provided by the author
Package reedsolomon 实现了Reed-Solomon编码算法.
No description provided by the author
Package segment 提供了基本数据类型的编解码功能 支持所有Go语言的基本类型,包括整数、浮点数、复数、字符串、字节数组和布尔值.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
// tarfs 包实现了 tar 档案的只读内存表示.
Package uploads 提供文件上传相关的功能实现.
No description provided by the author
No description provided by the author

# Functions

Open 创建并返回一个新的DeFS实例 参数: - h: libp2p网络主机实例 - options: 可选的配置选项列表 返回值: - *DeFS: 新创建的DeFS实例 - error: 如果创建过程中发生错误则返回错误信息 示例: defs, err := Open(h, fscfg.WithBucketSize(200),// 设置桶大小为 200 fscfg.WithMaxPeersPerCpl(10),// 每个 CPL 最多允许 10 个节点 // PubSub 相关配置 fscfg.WithPubSubOption(pubsub.WithSetFollowupTime(1 * time.Second)), fscfg.WithPubSubOption(pubsub.WithSetGossipFactor(0.3)), fscfg.WithPubSubOption(pubsub.WithSetMaxMessageSize(2 << 20)), fscfg.WithPubSubOption(pubsub.WithNodeDiscovery(d)), ) if err != nil { logger.Errorf("创建DeFS实例失败: %v", err) return nil, err }.

# Variables

NoOpThreshold 表示无操作的时间阈值,设定为 100 小时.

# Structs

DeFS 是一个封装了DeFS去中心化(动态)存储的结构体.