golang GF框架

news/2025/1/12 15:46:53/

GF(Go Frame)是一款模块化、松耦合、轻量级、高性能的Go语言Web开发框架。支持热重启、热更新、多域名、多端口、多服务、HTTP/HTTPS、动态路由等特性 ,并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、服务注册、配置管理、模板引擎、数据校验、分页管理、数据库ORM等等等等, 并且提供了数十个实用开发模块集,如:缓存、日志、时间、命令行、二进制、文件锁、对象池、连接池、数据编码、进程管理、进程通信、TCP/UDP组件、 并发安全容器、Goroutine池等等等等等等。

开源项目地址(仓库保持实时同步): Gitee,Github。 使用中有任何问题/建议,欢迎加入技术QQ群交流:116707870。 如有优秀的框架使用案例,欢迎联系作者将地址展示到项目库中,您的牛逼将被世人所瞻仰。

安装

go get -u gitee.com/johng/gf

限制

golang版本 >= 1.9.2

特点

  1. 轻量级、高性能,模块化、松耦合设计,丰富的开发模块;
  2. 热重启、热更新特性,并支持Web界面及命令行管理接口;
  3. 专业的技术交流群,完善的开发文档及示例代码,良好的中文化支持;
  4. 支持多种形式的服务注册特性,灵活高效的路由控制管理;
  5. 支持服务事件回调注册功能,可供选择的pprof性能分析模块;
  6. 支持配置文件及模板文件的自动检测更新机制,即修改即生效;
  7. 支持自定义日期时间格式的时间模块,类似PHP日期时间格式化;
  8. 强大的数据/表单校验模块,支持常用的40种及自定义校验规则;
  9. 强大的网络通信TCP/UDP组件,并提供TCP连接池特性,简便高效;
  10. 提供了对基本数据类型的并发安全封装,提供了常用的数据结构容器;
  11. 支持Go变量/Json/Xml/Yml/Toml任意数据格式之间的相互转换及创建;
  12. 强大的数据库ORM,支持应用层级的集群管理、读写分离、负载均衡,查询缓存、方法及链式ORM操作;
  13. 更多特点请查阅框架手册和源码;

文档

GoFrame开发文档:http://gf.johng.cn

使用

Hello World

package mainimport ("gitee.com/johng/gf/g""gitee.com/johng/gf/g/net/ghttp"
)func main() {s := g.Server()s.BindHandler("/", func(r *ghttp.Request) {r.Response.Write("Hello World")})s.Run()
}

多域名支持

package mainimport ("gitee.com/johng/gf/g""gitee.com/johng/gf/g/net/ghttp"
)func main() {s := g.Server()s.Domain("localhost1,localhost2").BindHandler("/", func(r *ghttp.Request) {r.Response.Write("localhostx")})s.Run()
}

多端口支持

package mainimport ("gitee.com/johng/gf/g""gitee.com/johng/gf/g/net/ghttp"
)func main() {s := g.Server()s.BindHandler("/", func(r *ghttp.Request){r.Response.Writeln("go frame!")})s.SetPort(8080, 8081, 8082)s.Run()
}

路由控制

package mainimport ("gitee.com/johng/gf/g""gitee.com/johng/gf/g/net/ghttp"
)func main() {s := g.Server()s.BindHandler("/order/:action/{page}.html", func(r *ghttp.Request){r.Response.Writef("action:%s, page:%s", r.Get("action"), r.Get("page"))})s.SetPort(8199)s.Run()
}

数据库ORM

ORM创建/关闭

// 获取默认配置的单例数据库对象(配置名称为"default")
db, err := gdb.DB()
// 获取配置分组名称为"user-center"的单例数据库对象
db, err := gdb.DB("user-center")
// 无须显示Close,数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭

单表/联表查询

// 查询多条记录并使用Limit分页
r, err := db.Table("user").Where("u.uid > ?", 1).Limit(0, 10).Select()
// 查询符合条件的单条记录(第一条)
r, err := db.Table("user u").LeftJoin("user_detail ud", "u.uid=ud.uid").Fields("u.*,ud.site").Where("u.uid=?", 1).One()
// 查询指定字段值
r, err := db.Table("user u").RightJoin("user_detail ud", "u.uid=ud.uid").Fields("ud.site").Where("u.uid=?", 1).Value()
// 分组及排序
r, err := db.Table("user u").InnerJoin("user_detail ud", "u.uid=ud.uid").Fields("u.*,ud.city").GroupBy("city").OrderBy("register_time asc").Select()
// 不使用john的联表查询
r, err := db.Table("user u,user_detail ud").Where("u.uid=ud.uid").Fields("u.*,ud.city").All()
// 不使用Fields方法指定查询字段时,默认查询为"*"
r, err := db.Table("user").Where("u.uid=1",).One()

更新/删除

// 更新
r, err := db.Table("user").Data(gdb.Map{"name" : "john2"}).Where("name=?", "john").Update()
r, err := db.Table("user").Data("name='john3'").Where("name=?", "john2").Update()
// 删除
r, err := db.Table("user").Where("uid=?", 10).Delete()
// Data数值方法的参数形式比较灵活
r, err := db.Table("user").Data(`name="john"`).Update()
r, err := db.Table("user").Data("name", "john").Update()
r, err := db.Table("user").Data(g.Map{"name" : "john"}).Update()

写入/保存

r, err := db.Table("user").Data(gdb.Map{"name": "john"}).Insert()
r, err := db.Table("user").Data(gdb.Map{"uid": 10000, "name": "john"}).Replace()
r, err := db.Table("user").Data(gdb.Map{"uid": 10001, "name": "john"}).Save()

事务操作

if tx, err := db.Begin(); err == nil {if r, err := tx.Table("user").Data(gdb.Map{"uid":1, "name": "john"}).Save(); err == nil {tx.Commit()} else {tx.Rollback()}fmt.Println(r, err)
}

http://www.ppmy.cn/news/263956.html

相关文章

基于ERDAS软件的高分三号(GF-3)SAR影像的预处理

一、GF3数据转换 1、在ERDAS中打开要校正的影像原始tif文件 2、在Raster里选择Utilities中的Radar conversation,形成L1B级数据,设置如下 在栅格里选择实用工具中的雷达影像转换,形成L1B级数据,设置如下 状态完成后关闭。 二、…

GF-3双极化SAR遥感影像预处理【基础版】

论文原文 2.3 数据预处理 本文对GF-3sar实验数据进行了双极化预处理。首先,采用IDL8.5对原始影像进行辐射定标和数据格式转换;其次,利用PolSARpro5.0工具将极化散射矩阵S2格式的影像数据提取到极化协方差矩阵C2;最后,借…

envi5.6处理gf3(SAR)详细过程记录

未完结 --- 待更新 ------ 可以参考的处理教程: SAR影像(雷达影像)的预处理 ENVI SARscape多极化单通道数据预处理流程 SARSCAPE中单雷达影像基础处理全过程 本文所使用的文件名: GF3_KAS_UFS_017384_E108.9_N35.0_20191128_L1A…

浅记一下对GF3数据进行了一些数据格式转换

ENVI5.3PolSARpro5.0环境下高分三号双极化数据预处理及地理编码_desertsTsung的博客-CSDN博客https://blog.csdn.net/desertsTsung/article/details/88361427?ops_request_misc%257B%2522request%255Fid%2522%253A%2522166804686516782428631972%2522%252C%2522scm%2522%253A%…

SAR影像辐射定标工程化实现之GF3

1、定标公式 其中:QV为图像量化前的最大值,具体在meat.xml元文件中对应QualifyValue字段,KdB为定标常数,对应meat.xml元文件中CalibrationConst字段。如下图 2、C++实现 算法大致流程 (1)根据元文件获取定标参数 (2)根据1中的公式进行逐点定标。 2.1 获取定标参数,读…

GF3 SAR产品应用调研

GF-3 卫星是我国自主研制的第一颗兼顾海陆应用的民用多极化SAR卫星,该卫星于 2016 年 8月 10 日发射,2017 年 1 月 23 日正式投入使用。 GF-3 卫星运行在平均轨道高度约 755km 的太阳同步回归轨道上,轨道重复周期为 29 天。卫星搭载的 C 频段…

高分三号卫星(GF-3)简介

高分三号卫星(GF-3)是我国的首颗C波段1m高分辨率SAR遥感卫星,由中国空间技术研究院北京空间飞行器总部设计部抓总研制,其发射时间是2016年8月10日6时55分。高分三号卫星可用于多个领域: 1.监视我国300万平方千米的广阔海域&#x…

高分3号(GF-3)数据参数简介

高分3号(GF-3)数据参数说明 1.星座介绍2.成像模式、数据产品、命名方式2.1成像模式2.2数据产品2.3命名方式 3.应用领域 1.星座介绍 高分三号卫星是我国首颗分辨率达到1米的C频段多极化合成孔径雷达(SAR)卫星,于2016年…