Google File System(GFS)是由Google公司开发的一种分布式文件系统,它专门用于存储和管理Google的海量数据。GFS的设计目标是支持高吞吐量的应用,并且能够在大规模机器集群上运行。GFS使用一种特殊的元数据来存储文件信息,这些元数据包括文件名、文件大小、文件创建日期、文件拥有者、文件权限等信息。
GFS使用一个叫做Master的单独进程来存储所有元数据。Master会将所有元数据存储在内存中,并根据客户端请求加载或者保存相应的元数据。当客户端请求对文件进行读写时,Master会根据客户端请求加载相应的元数据,然后将该元数据发送到Chunk Server上去执行相应的读写功能。
// 创建一个 GFS 文件 CreateFile(filename, owner, permission) { // 在 Master 上创建一个 GFS 文件 CreateFileEntry(filename, owner, permission); // 在 Chunk Server 上创建一个 GFS 文件 CreateChunk(filename); // 返回成功标志位 return SUCCESS; }
主要用于嵌入到用户自定义的结构体中,并且通过标签的形式给gmeta
包的结构体打上自定义的标签内容(元数据),并在运行时可以特定方法动态获取这些自定义的标签内容。
使用方式:
import "github.com/gogf/gf/v2/util/gmeta"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/util/gmeta
方法列表:
func Data(object interface{}) map[string]interface{}
func Get(object interface{}, key string) *gvar.Var
Data
方法用于获取指定struct
对象的元数据标签,构成map
返回。
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gmeta"
)
func main() {
type User struct {
gmeta.Meta `orm:"user" db:"mysql"`
Id int
Name string
}
g.Dump(gmeta.Data(User{}))
}
执行后,终端输出:
{
"db": "mysql",
"orm": "user"
}
Get
方法用于获取指定struct
对象中指定名称的元数据标签信息。
package main
import (
"fmt"
"github.com/gogf/gf/v2/util/gmeta"
)
func main() {
type User struct {
gmeta.Meta `orm:"user" db:"mysql"`
Id int
Name string
}
user := User{}
fmt.Println(gmeta.Get(user, "orm").String())
fmt.Println(gmeta.Get(user, "db").String())
}
执行后,终端输出:
user
mysql
请求输入依靠ghttp.Request对象实现,ghttp.Request继承了底层的http.Request对象。ghttp.Request包含一个与当...
GoFrame提供了优雅的中间件请求控制方式,该方式也是主流的WebServer提供的请求流程控制方式,基于中间件设计可以为We...
动态分页是通过GET参数(通过QueryString)传递分页参数,默认分页参数名称为page。示例如下:package mainimport ("g...
对于比较大型的应用,更好的做法是使用包管理代码,而不是模块来管理代码。 这非常简单,设想一个如下结构的应用:/yourapplicati...
考虑一个包含 FileField 的表单:from django import formsclass UploadFileForm(forms.Form):title = forms.CharField(max_...
例如:在最基本的层面上,使用 filter 和 exclude 在数据库中进行过滤。使用 F 表达式 根据同一模型中的其他字段进...
模型准确且唯一的描述了数据。它包含您储存的数据的重要字段和行为。一般来说,每一个模型都映射一张数据库表。基础:每个模型都...
本文将介绍 MybatisPlus 注解包相关类详解@TableName描述:表名注解,标识实体类对应的表使用位置:实体类@TableName("sys_user"...
MyBatis-Plus 条件构造器-AbstractWrapperle(R column, Object val)le(boolean condition, R column, Object val)小于等于=例:...