内容简介:哈罗,各位gfer久等啦,时隔两个月,新版本又来咯!! GoFrame GF(Go Frame)是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、...
哈罗,各位gfer久等啦,时隔两个月,新版本又来咯!!
GoFrame
GF(Go Frame)是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设以及开发 工具 链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPS、Rewrite等特性。
特点
- 模块化、松耦合设计;
- 模块丰富、开箱即用;
- 简便易用、易于维护;
- 高代码质量、高单元测试覆盖率;
- 社区活跃,大牛谦逊低调脾气好;
- 详尽的开发文档及示例;
- 完善的本地中文化支持;
- 设计为团队及企业使用;
发展
GoFrame开始得比较早,2011年始于北京一个智能物联网平台项目,那时还没有这么多物联网的现行标准,Go的标准库以及生态也未如此丰富。2017年的时候GF才开始发布测试版,2018年1024程序员节日的时候才发布v1.0正式版,为Go生态发展添砖加瓦。开源以来快速迭代、发展成长,广受开发者和企业的青睐,也有许多的开发者加入了贡献行列。GF原本是为开发团队设计的,因此她的开发效率和可维护性做得非常好,有着很高的代码质量以及丰富的单元测试和示例,并且GF是目前中文化文档做的最好的Golang开发框架。
Change Log
- 应多数开发者的要求,框架要求的最低
Golang运行版本降级为了v1.11。
- 新增
GoFrame视频教程地址:
- 将不常用的
guuid模块迁移到 github.com/gogf/guuid 作为社区模块维护,保持gf主仓库的轻量级。
- 新增
guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
tool chain
- 工具链更新:https://goframe.org/toolchain/cli
- 新增
gf env命令,更优雅地查看当前Golang环境变量信息。
- 新增
gf mod path命令,用于将当前go modules包拷贝到GOPATH中,以便使用原始的GOPATH方式开发项目。
- 对现有
cli命令进行了一些改进,提高使用体验;预编译二进制版本在部分平台下提供了upx压缩,使得下载的文件更小。
container
garray
- https://goframe.org/container/garray/index
- 简化数组使用方式,支持类似于
var garray.Array的变量定义使用方式;
- 增加
Walk方法,用于自定义的数组元素处理方法;
- 增加
ContainsI方法,用于大小写忽略匹配的数组元素项存在性查找;
- 完善单元测试,代码覆盖率
94%;
- 代码改进,提高性能;
- 修复一些问题;
gchan
- 由于该封装包实际意义不是很大,因此从主框架中删除;
glist
- https://goframe.org/container/glist/index
- 简化链表使用方式,支持类似于
var glist.List的变量定义使用方式;
- 完善单元测试,代码覆盖率
99%;
gmap
- https://goframe.org/container/gmap/index
- 简化
Map使用方式,支持类似于var gmap.Map的变量定义使用方式;
- 完善单元测试,代码覆盖率
81%;
- 代码改进,提高性能;
gset
- https://goframe.org/container/gset/index
- 简化集合使用方式,支持类似于
var gset.Set的变量定义使用方式;
- 增加
Walk方法,用于自定义的集合元素处理方法;
- 完善单元测试,代码覆盖率
90%;
- 代码改进,提高性能;
gtree
- https://goframe.org/container/gtree/index
- 简化树型使用方式,支持类似于
var gtree.BTree的变量定义使用方式;
- 完善单元测试,代码覆盖率
90%;
gvar
- https://goframe.org/container/gvar/index
- 完善单元测试,代码覆盖率
69%;
- 代码组织结构调整,提高维护性;
- 代码改进,提高性能;
database
gdb
- 增加
Transaction(f func(tx *TX) error) (err error)接口方法,用于通过闭包实现事务封装处理:https://goframe.org/database/gdb/transaction
- 去掉不常用的
From接口方法,改进Table及Model方法的参数为不定参数,并支持通过不定参数传递表别名:https://goframe.org/database/gdb/chaining/select
- 增加
DryRun特性,支持空跑时只执行查询不执行写入/更新/删除操作:https://goframe.org/database/gdb/senior
- 增加
create_at, update_at写入时间、更新时间字段自动填充特性:https://goframe.org/database/gdb/chaining/auto-time
- 增加
delete_at软删除特性:https://goframe.org/database/gdb/chaining/auto-time
- 增加
Having链式操作方法,用于having条件查询:https://goframe.org/database/gdb/chaining/select
Result结果对象增加Chunk方法,用于自定义的数据分批处理:https://goframe.org/database/gdb/result
- 改进
Schema数据库运行时切换特性;
- 改进对
pgsql, mssql, sqlite, oracle数据库字段类型的支持;
- 进一步完善单元测试;
- 代码组织结构调整,提高维护性;
- 代码改进,提高性能;
gredis
- 增加
MaxActive连接池参数默认配置为100,限制默认的连接数量;
- 改进
Conn连接对象的Do方法,支持对map/slice/struct类型进行自动的json.Marshal处理,注意获取数据时使用DoVar方法获取:https://goframe.org/database/gredis/usage
- 完善单元测试,代码覆盖率
72%;
net
-
ghttp
- 增加
Prefix及Retry客户端链式操作方法;
- 增加客户端原始请求打印特性:https://goframe.org/net/ghttp/client/demo/dump
- 增加
ClientMaxBodySize的服务端配置,用于限制客户端提交的Body大小,默认为8MB;在涉及到上传的Server中需要增加该配置的大小,在配置文件中指定对应的大小即可,如ClientMaxBodySize="100MB":https://goframe.org/net/ghttp/config
- 改进
SessionId生成的随机性,提高Session安全性:https://goframe.org/os/gsession/index
- 改进
ghttp.Server实现了标准库的http.Handler接口,便于与其他第三方的服务如Prometheus进行代码集成;
- 其他大量的代码细节改进工作,提高性能及持久维护性;
- 完善单元测试,代码覆盖率
61%;
-
gipv4
- 增加
GetIpArray方法,用于获取当前主机的所有IPv4地址;
- 增加
GetMacArray及GetMac方法,用于获取当前主机的MAC地址信息;
- 修改
IntranetIP方法名称为GetIntranetIp,修改IntranetIPArray方法名称为GetIntranetIpArray;
encoding
gjson
- 新增
GetMaps获取JSON内部节点变量方法;
- 改进
NewWithTag方法对map/struct的处理;
- 完善单元测试,代码覆盖率
77%;
gyaml
- 升级依赖的第三方
yaml解析包,解决了map[interface{}]interface{}转换问题;
error
gerror
- 新增
NewfSkip方法,用于创建skip指定堆栈的错误对象;
- 放开框架所有的堆栈链路打印,展示错误时真实的链路调用详情;
os
-
gcache
- 增加
GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;
- 标记
Removes方法废弃,改进Remove方法参数为不定参数,统一使用Remove方法删除单个/多个键值对;
- 完善单元测试,代码覆盖率
96%;
-
genv
- 增加
GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;
-
gfile
- 改进
CopyDir/CopyFile复制目录/文件方法;
- 新增
ScanDirFunc方法,用于支持自定义处理回调的目录检索;
- 完善单元测试,代码覆盖率
64%;
-
glog
- 增加支持
Context上下文变量的日志打印特性:https://goframe.org/os/glog/context
-
gres
- 改进打包特性,增强生成二进制文件及Go文件的压缩比,比旧版本增加
20%压缩率,使得编译生成的二进制文件体积更小;
- 代码结构改进,提高执行效率及可持久维护性;
-
gsession
- 改进
SessionId默认生成方法,采用guid.S方法生成;
- 增加
SetId及SetIdFunc方法,用于自定义SessionId及自定义的SessionId生成方法;
frame
g
- 新增
g.Table方法,用于快速创建数据库模型操作对象;
i18n
gi18n
- 新增
GetContent方法,用于获取指定i18n关键字为转译内容;
- 改进代码细节,提高性能和持久可维护性;
- 完善单元测试,代码覆盖率
74%;
test
gtest
- 增加
AssertNQ断言方法,用于强类型的不相等判断;
text
gstr
- 增加
SubStrRune方法,用于支持unicode的字符串截取;
- 增加
StrLimitRune方法,用于支持unicode的字符串截断隐藏;
- 增加
LenRune方法,用于替换RuneLen方法,统一方法命名风格;
- 增加
PosRune/PosIRune/PosRRune/PosRIRune方法,用于支持unicode的字符串左右位置查找;
- 增加
CompareVersionGo方法,用于Golang风格的版本号大小比较;
- 完善单元测试,代码覆盖率
75%;
util
-
gconv
- 改进
Convert转换方法,支持常见map类型的转换;
- 改进类型转换过程中异常错误的捕获,通过
error返回;
- 其他一些细节改进;
- 完善单元测试,代码覆盖率
63%;
-
grand
- 增加
B方法,用于获得随机的二进制数据;
- 改进代码底层实现,部分接口性能提高
50%;
- 完善单元测试,代码覆盖率
74%;
-
guid
- 新增
guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
-
gutil
- 增加
MapContains方法,用于判断map中是否包含指定键名;
- 增加
MapDelete方法,用于删除map中指定的键名,可以为多个键名;
- 增加
MapMerge方法,用于合并两个map;
- 增加
MapMergeCopy方法,用于拷贝多个map;
- 增加
MapContainsPossibleKey方法,用于查找指定键名,忽略大小写及字符'-'/'_'/'.'/' ';
-
gvalid
- 所有默认的错误提示改为了英文;
- 错误提示的配置改为了通过
i18n来配置实现,以便支持国际化:https://goframe.org/util/gvalid/message
- 身份证号规则名称从
id-number改为了resident-id ;
- 银行卡号规则名称从
luhn改为了bank-card;
- 完善单元测试,代码覆盖率
96%;
Bug Fix
- 修复
gcompress的多文件zip压缩问题;
- 修复
ghttp.Client获取返回的过期Cookie的问题;
- 修复
gres.File对于http.File接口的实现细节;
- 修复
garray.Pop*方法的边界问题;
- 修复
gres中Readdir方法参数为0时报错的问题;
- 其他一些修复:https://github.com/gogf/gf/issues?q=is%3Aissue+label%3Abug
Golang运行版本降级为了v1.11。GoFrame视频教程地址:
guuid模块迁移到 github.com/gogf/guuid 作为社区模块维护,保持gf主仓库的轻量级。guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/indextool chaingf env命令,更优雅地查看当前Golang环境变量信息。gf mod path命令,用于将当前go modules包拷贝到GOPATH中,以便使用原始的GOPATH方式开发项目。cli命令进行了一些改进,提高使用体验;预编译二进制版本在部分平台下提供了upx压缩,使得下载的文件更小。containergarray
- https://goframe.org/container/garray/index
- 简化数组使用方式,支持类似于
var garray.Array的变量定义使用方式; - 增加
Walk方法,用于自定义的数组元素处理方法; - 增加
ContainsI方法,用于大小写忽略匹配的数组元素项存在性查找; - 完善单元测试,代码覆盖率
94%; - 代码改进,提高性能;
- 修复一些问题;
gchan
- 由于该封装包实际意义不是很大,因此从主框架中删除;
glist
- https://goframe.org/container/glist/index
- 简化链表使用方式,支持类似于
var glist.List的变量定义使用方式; - 完善单元测试,代码覆盖率
99%;
gmap
- https://goframe.org/container/gmap/index
- 简化
Map使用方式,支持类似于var gmap.Map的变量定义使用方式; - 完善单元测试,代码覆盖率
81%; - 代码改进,提高性能;
gset
- https://goframe.org/container/gset/index
- 简化集合使用方式,支持类似于
var gset.Set的变量定义使用方式; - 增加
Walk方法,用于自定义的集合元素处理方法; - 完善单元测试,代码覆盖率
90%; - 代码改进,提高性能;
gtree
- https://goframe.org/container/gtree/index
- 简化树型使用方式,支持类似于
var gtree.BTree的变量定义使用方式; - 完善单元测试,代码覆盖率
90%;
gvar
- https://goframe.org/container/gvar/index
- 完善单元测试,代码覆盖率
69%; - 代码组织结构调整,提高维护性;
- 代码改进,提高性能;
databasegdb
- 增加
Transaction(f func(tx *TX) error) (err error)接口方法,用于通过闭包实现事务封装处理:https://goframe.org/database/gdb/transaction - 去掉不常用的
From接口方法,改进Table及Model方法的参数为不定参数,并支持通过不定参数传递表别名:https://goframe.org/database/gdb/chaining/select - 增加
DryRun特性,支持空跑时只执行查询不执行写入/更新/删除操作:https://goframe.org/database/gdb/senior - 增加
create_at,update_at写入时间、更新时间字段自动填充特性:https://goframe.org/database/gdb/chaining/auto-time - 增加
delete_at软删除特性:https://goframe.org/database/gdb/chaining/auto-time - 增加
Having链式操作方法,用于having条件查询:https://goframe.org/database/gdb/chaining/select Result结果对象增加Chunk方法,用于自定义的数据分批处理:https://goframe.org/database/gdb/result- 改进
Schema数据库运行时切换特性; - 改进对
pgsql,mssql,sqlite,oracle数据库字段类型的支持; - 进一步完善单元测试;
- 代码组织结构调整,提高维护性;
- 代码改进,提高性能;
gredis
- 增加
MaxActive连接池参数默认配置为100,限制默认的连接数量; - 改进
Conn连接对象的Do方法,支持对map/slice/struct类型进行自动的json.Marshal处理,注意获取数据时使用DoVar方法获取:https://goframe.org/database/gredis/usage - 完善单元测试,代码覆盖率
72%;
netghttp
- 增加
Prefix及Retry客户端链式操作方法; - 增加客户端原始请求打印特性:https://goframe.org/net/ghttp/client/demo/dump
- 增加
ClientMaxBodySize的服务端配置,用于限制客户端提交的Body大小,默认为8MB;在涉及到上传的Server中需要增加该配置的大小,在配置文件中指定对应的大小即可,如ClientMaxBodySize="100MB":https://goframe.org/net/ghttp/config - 改进
SessionId生成的随机性,提高Session安全性:https://goframe.org/os/gsession/index - 改进
ghttp.Server实现了标准库的http.Handler接口,便于与其他第三方的服务如Prometheus进行代码集成; - 其他大量的代码细节改进工作,提高性能及持久维护性;
- 完善单元测试,代码覆盖率
61%;
gipv4
- 增加
GetIpArray方法,用于获取当前主机的所有IPv4地址; - 增加
GetMacArray及GetMac方法,用于获取当前主机的MAC地址信息; - 修改
IntranetIP方法名称为GetIntranetIp,修改IntranetIPArray方法名称为GetIntranetIpArray;
encodinggjson
- 新增
GetMaps获取JSON内部节点变量方法; - 改进
NewWithTag方法对map/struct的处理; - 完善单元测试,代码覆盖率
77%;
gyaml
- 升级依赖的第三方
yaml解析包,解决了map[interface{}]interface{}转换问题;
errorgerror
- 新增
NewfSkip方法,用于创建skip指定堆栈的错误对象; - 放开框架所有的堆栈链路打印,展示错误时真实的链路调用详情;
osgcache
- 增加
GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量; - 标记
Removes方法废弃,改进Remove方法参数为不定参数,统一使用Remove方法删除单个/多个键值对; - 完善单元测试,代码覆盖率
96%;
genv
- 增加
GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;
gfile
- 改进
CopyDir/CopyFile复制目录/文件方法; - 新增
ScanDirFunc方法,用于支持自定义处理回调的目录检索; - 完善单元测试,代码覆盖率
64%;
glog
- 增加支持
Context上下文变量的日志打印特性:https://goframe.org/os/glog/context
gres
- 改进打包特性,增强生成二进制文件及Go文件的压缩比,比旧版本增加
20%压缩率,使得编译生成的二进制文件体积更小; - 代码结构改进,提高执行效率及可持久维护性;
gsession
- 改进
SessionId默认生成方法,采用guid.S方法生成; - 增加
SetId及SetIdFunc方法,用于自定义SessionId及自定义的SessionId生成方法;
frameg
- 新增
g.Table方法,用于快速创建数据库模型操作对象;
i18ngi18n
- 新增
GetContent方法,用于获取指定i18n关键字为转译内容; - 改进代码细节,提高性能和持久可维护性;
- 完善单元测试,代码覆盖率
74%;
testgtest
- 增加
AssertNQ断言方法,用于强类型的不相等判断;
textgstr
- 增加
SubStrRune方法,用于支持unicode的字符串截取; - 增加
StrLimitRune方法,用于支持unicode的字符串截断隐藏; - 增加
LenRune方法,用于替换RuneLen方法,统一方法命名风格; - 增加
PosRune/PosIRune/PosRRune/PosRIRune方法,用于支持unicode的字符串左右位置查找; - 增加
CompareVersionGo方法,用于Golang风格的版本号大小比较; - 完善单元测试,代码覆盖率
75%;
utilgconv
- 改进
Convert转换方法,支持常见map类型的转换; - 改进类型转换过程中异常错误的捕获,通过
error返回; - 其他一些细节改进;
- 完善单元测试,代码覆盖率
63%;
grand
- 增加
B方法,用于获得随机的二进制数据; - 改进代码底层实现,部分接口性能提高
50%; - 完善单元测试,代码覆盖率
74%;
guid
- 新增
guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
gutil
- 增加
MapContains方法,用于判断map中是否包含指定键名; - 增加
MapDelete方法,用于删除map中指定的键名,可以为多个键名; - 增加
MapMerge方法,用于合并两个map; - 增加
MapMergeCopy方法,用于拷贝多个map; - 增加
MapContainsPossibleKey方法,用于查找指定键名,忽略大小写及字符'-'/'_'/'.'/' ';
gvalid
- 所有默认的错误提示改为了英文;
- 错误提示的配置改为了通过
i18n来配置实现,以便支持国际化:https://goframe.org/util/gvalid/message - 身份证号规则名称从
id-number改为了resident-id; - 银行卡号规则名称从
luhn改为了bank-card; - 完善单元测试,代码覆盖率
96%;
gcompress的多文件zip压缩问题;ghttp.Client获取返回的过期Cookie的问题;gres.File对于http.File接口的实现细节;garray.Pop*方法的边界问题;gres中Readdir方法参数为0时报错的问题;以上所述就是小编给大家介绍的《GoFrame v1.13.1 发布,Go 应用开发框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- MediaPipe:跨平台机器学习应用开发框架
- Ionic 4.0.2 发布,移动应用开发框架
- Ionic 4.0.2 发布,移动应用开发框架
- Ionic 4.3.0 发布,移动应用开发框架
- Ionic 4.4.0 发布,移动应用开发框架
- Ionic 4.6.0 发布,移动应用开发框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mastering Regular Expressions, Second Edition
Jeffrey E F Friedl / O'Reilly Media / 2002-07-15 / USD 39.95
Regular expressions are an extremely powerful tool for manipulating text and data. They have spread like wildfire in recent years, now offered as standard features in Perl, Java, VB.NET and C# (and an......一起来看看 《Mastering Regular Expressions, Second Edition》 这本书的介绍吧!