分享开发、架构等综合知识,同名公众号,wx号:Java7749

哈罗,各位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

  1. 应多数开发者的要求,框架要求的最低Golang运行版本降级为了v1.11。
  2. 新增GoFrame视频教程地址:bilibili:https://www.bilibili.com/video/av94410029
  3. 西瓜视频: https://www.ixigua.com/pseries/6809291194665796100/
  4. 将不常用的guuid模块迁移到 github.com/gogf/guuid 作为社区模块维护,保持gf主仓库的轻量级。
  5. 新增guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index

tool chain

  1. 工具链更新:https://goframe.org/toolchain/cli
  2. 新增gf env命令,更优雅地查看当前Golang环境变量信息。
  3. 新增gf mod path命令,用于将当前go modules包拷贝到GOPATH中,以便使用原始的GOPATH方式开发项目。
  4. 对现有cli命令进行了一些改进,提高使用体验;预编译二进制版本在部分平台下提供了upx压缩,使得下载的文件更小。

container

  1. garrayhttps://goframe.org/container/garray/index简化数组使用方式,支持类似于var garray.Array的变量定义使用方式;增加Walk方法,用于自定义的数组元素处理方法;增加ContainsI方法,用于大小写忽略匹配的数组元素项存在性查找;完善单元测试,代码覆盖率94%;代码改进,提高性能;修复一些问题;
  2. gchan由于该封装包实际意义不是很大,因此从主框架中删除;
  3. glisthttps://goframe.org/container/glist/index简化链表使用方式,支持类似于var glist.List的变量定义使用方式;完善单元测试,代码覆盖率99%;
  4. gmaphttps://goframe.org/container/gmap/index简化Map使用方式,支持类似于var gmap.Map的变量定义使用方式;完善单元测试,代码覆盖率81%;代码改进,提高性能;
  5. gsethttps://goframe.org/container/gset/index简化集合使用方式,支持类似于var gset.Set的变量定义使用方式;增加Walk方法,用于自定义的集合元素处理方法;完善单元测试,代码覆盖率90%;代码改进,提高性能;
  6. gtreehttps://goframe.org/container/gtree/index简化树型使用方式,支持类似于var gtree.BTree的变量定义使用方式;完善单元测试,代码覆盖率90%;
  7. gvarhttps://goframe.org/container/gvar/index完善单元测试,代码覆盖率69%;代码组织结构调整,提高维护性;代码改进,提高性能;

database

  1. 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/selectResult结果对象增加Chunk方法,用于自定义的数据分批处理:https://goframe.org/database/gdb/result改进Schema数据库运行时切换特性;改进对pgsql, mssql, sqlite, oracle数据库字段类型的支持;进一步完善单元测试;代码组织结构调整,提高维护性;代码改进,提高性能;
  2. gredis增加MaxActive连接池参数默认配置为100,限制默认的连接数量;改进Conn连接对象的Do方法,支持对map/slice/struct类型进行自动的json.Marshal处理,注意获取数据时使用DoVar方法获取:https://goframe.org/database/gredis/usage完善单元测试,代码覆盖率72%;

net

  1. 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%;
  2. gipv4增加GetIpArray方法,用于获取当前主机的所有IPv4地址;增加GetMacArray及GetMac方法,用于获取当前主机的MAC地址信息;修改IntranetIP方法名称为GetIntranetIp,修改IntranetIPArray方法名称为GetIntranetIpArray;

encoding

  1. gjson新增GetMaps获取JSON内部节点变量方法;改进NewWithTag方法对map/struct的处理;完善单元测试,代码覆盖率77%;
  2. gyaml升级依赖的第三方yaml解析包,解决了map[interface{}]interface{}转换问题;

error

  1. gerror新增NewfSkip方法,用于创建skip指定堆栈的错误对象;放开框架所有的堆栈链路打印,展示错误时真实的链路调用详情;

os

  1. gcache增加GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;标记Removes方法废弃,改进Remove方法参数为不定参数,统一使用Remove方法删除单个/多个键值对;完善单元测试,代码覆盖率96%;
  2. genv增加GetVar方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;
  3. gfile改进CopyDir/CopyFile复制目录/文件方法;新增ScanDirFunc方法,用于支持自定义处理回调的目录检索;完善单元测试,代码覆盖率64%;
  4. glog增加支持Context上下文变量的日志打印特性:https://goframe.org/os/glog/context
  5. gres改进打包特性,增强生成二进制文件及Go文件的压缩比,比旧版本增加20%压缩率,使得编译生成的二进制文件体积更小;代码结构改进,提高执行效率及可持久维护性;
  6. gsession改进SessionId默认生成方法,采用guid.S方法生成;增加SetId及SetIdFunc方法,用于自定义SessionId及自定义的SessionId生成方法;

frame

  1. g新增g.Table方法,用于快速创建数据库模型操作对象;

i18n

  1. gi18n新增GetContent方法,用于获取指定i18n关键字为转译内容;改进代码细节,提高性能和持久可维护性;完善单元测试,代码覆盖率74%;

test

  1. gtest增加AssertNQ断言方法,用于强类型的不相等判断;

text

  1. gstr增加SubStrRune方法,用于支持unicode的字符串截取;增加StrLimitRune方法,用于支持unicode的字符串截断隐藏;增加LenRune方法,用于替换RuneLen方法,统一方法命名风格;增加PosRune/PosIRune/PosRRune/PosRIRune方法,用于支持unicode的字符串左右位置查找;增加CompareVersionGo方法,用于Golang风格的版本号大小比较;完善单元测试,代码覆盖率75%;

util

  1. gconv改进Convert转换方法,支持常见map类型的转换;改进类型转换过程中异常错误的捕获,通过error返回;其他一些细节改进;完善单元测试,代码覆盖率63%;
  2. grand增加B方法,用于获得随机的二进制数据;改进代码底层实现,部分接口性能提高50%;完善单元测试,代码覆盖率74%;
  3. guid新增guid模块,用于高效轻量级的唯一字符串生成:https://goframe.org/util/guid/index
  4. gutil增加MapContains方法,用于判断map中是否包含指定键名;增加MapDelete方法,用于删除map中指定的键名,可以为多个键名;增加MapMerge方法,用于合并两个map;增加MapMergeCopy方法,用于拷贝多个map;增加MapContainsPossibleKey方法,用于查找指定键名,忽略大小写及字符'-'/'_'/'.'/' ';
  5. gvalid所有默认的错误提示改为了英文;错误提示的配置改为了通过i18n来配置实现,以便支持国际化:https://goframe.org/util/gvalid/message身份证号规则名称从id-number改为了resident-id ;银行卡号规则名称从luhn改为了bank-card;完善单元测试,代码覆盖率96%;

Bug Fix

  1. 修复gcompress的多文件zip压缩问题;
  2. 修复ghttp.Client获取返回的过期Cookie的问题;
  3. 修复gres.File对于http.File接口的实现细节;
  4. 修复garray.Pop*方法的边界问题;
  5. 修复gres中Readdir方法参数为0时报错的问题;
  6. 其他一些修复:https://github.com/gogf/gf/issues?q=is%3Aissue+label%3Abug

框架 go_GoFrame v1.13.1 发布,Go 应用开发框架相关推荐

  1. XCMS V1.0 Beta1 发布

    XCMS V1.0 Beta1 发布 说明: XCMS是一个内容管理系统,是新生命开发团队利用业余时间开发的第一个成功项目! XCMS目前只有基本的文章发布.栏目管理.评论.用户管理和模板管理等功能. ...

  2. 云原生生态周报 Vol.9| K8s v1.15 版本发布

    本周作者 | 衷源.心贵 业界要闻 1.Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性.(https://github.com/kubernetes ...

  3. Kubernetes 1.13 版本发布:Kubeadm简化群集管理、容器存储接口(CSI)和CoreDNS作为默认DNS现已普遍可用

    Kubernetes 1.13 版本发布 Kubeadm简化群集管理.容器存储接口(CSI)和CoreDNS作为默认DNS现已普遍可用 我们很高兴地宣布推出Kubernetes 1.13,这是我们20 ...

  4. linux rkt命令,rkt 1.13.0发布,CoreOS的容器引擎

    rkt 1.13.0发布,CoreOS的容器引擎 发布时间:2016-08-19 09:35:58来源:红联作者:baihuo rkt 1.13.0 发布了.Rocket (也叫 rkt)是 Core ...

  5. 二进制部署Kubernetes v1.13.4 HA可选

    本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都 ...

  6. ​BAT 等 34 家企业签署合规经营承诺书;美团被判赔偿饿了么 35.2 万元;FreeBSD 13.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  7. Deno 1.13.2 发布

    Deno 是一个旨在改进甚至替代 Node 的 JavaScript / TypeScript 运行时.今日宣布了最新版本 1.13.2,该版本主要进行功能修复与改进: 修复(cli/flags):并 ...

  8. 我的世界java下载1.13_Minecraft Java版 1.13.1-pre2 发布

    Minecraft Java 版 1.13.1-pre2 发布 Back from vacation, we're now trying to finalize 1.13.1 and get it t ...

  9. OneGame V1.0.2 发布,让运营游戏不再是梦想

    OneGame V1.0.2 发布,让运营游戏不再是梦想,更新内容如下: 1.H5手游渠道进入游戏流程优化. 2.新增手游统计:游戏注册记录,每日汇总记录,游戏汇总,公会汇总,员工统计 与 APP下载 ...

最新文章

  1. Android 音视频开发入门指南
  2. 函数式编程之-bind函数
  3. 查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录
  4. 计算机网络:如何传输一条数据(详解)
  5. 前端学习(554):node实现登录和注册第二部分代码
  6. 我的IntelliJ IDEA一直都是这么设置的,效果很棒!
  7. kali linux2019镜像下载,Kali 2019下载_KaLi Linux镜像文件iso下载 2019.1a x86/x64_当载软件站...
  8. 数学中的皇冠——数论
  9. html 收藏网站 功能实现,网站常用的收藏网站实现代码
  10. YouTube技术架构
  11. 华为监事会副主席丁耘长跑28公里后突发疾病去世,年仅53岁!
  12. 基金知识整理--基金购买那些事(2)
  13. HTTP协议以及返回状态码
  14. 英特尔Sandy Bridge处理器深度解析
  15. google的秘密入口
  16. Linux2--修改root密码,文件操作
  17. 股票交易一点感悟和程序化交易实战
  18. C语言编程>第一周 ③ 输入某年某月某日,判断这一天是这一年的第几天
  19. 机器人的编程语言是什么语言
  20. switch语句及三种循环语句

热门文章

  1. UI设计师缺乏灵感,看看这些可以临摹的网站架构!
  2. qt 将相应字符写入txt文件
  3. 监视和调整Linux网络协议栈:接收数据
  4. Linux平台上DPDK入门指南
  5. Django:静态文件staticfiles
  6. java高级工程师认证考试_java高级工程师开放面试题集
  7. python3.6.5下载安装教程_Ubuntu16.04安装python3.6.5步骤详解
  8. 鸿蒙系统首批更新名单,鸿蒙系统首批升级名单是哪些-鸿蒙系统首批升级名单详细介绍 - 系统家园...
  9. java 返回两个值_Java - Number类
  10. Unity面试题精选(1)