热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Go企业级框架GoFrame发布v2.1版本

go,企业级,框架,goframe,

大家好,本次发布的v2.1版本包含一些与业务实践相关的功能特性、改进以及Bug Fix,建议大家升级。

新特性
  1. 开发工具新增gen service命令,支持自动化地根据logic层级代码,生成service接口代码、实现注入:接口维护-gen service
  2.  数据库组件特性:
    1. 新增WhereBuilder特性,用于更加灵活的SQL条件语句组合:ORM查询-Where/WhereOr/WhereNot
    2. 新增Hook特性,用于自定义钩子事件处理:ORM链式操作-Hook特性
  3. 框架新增DeepCopy特性,用于类型的深度拷贝:
    1. 新增gutil.Copy方法,用于深度拷贝指定内容。
    2. 泛型类型新增Copy方法,用于深度拷贝自身内容。
    3. 框架部分数据类型已支持深度拷贝特性,例如:gvar, garray, gmap等基础容器类型。

主要改进

社区组件

ORM驱动实现

  1. 新增drivers/clickhouse,用于对接clickhousegoframe ORM组件。
  2. 完善clickhouse/mssql/pgsql/sqlite/oracle组件单元测试。
  3. mysql驱动从主库迁移到社区模块,便于将mysql从主库解耦。因此从后续版本开始,开发者需要手动引入驱动依赖:https://github.com/gogf/gf/tree/master/contrib/drivers

注册发现实现

  1. 新增polaris北极星服务注册接口实现:https://github.com/gogf/gf/tree/master/contrib/registry/polaris
  2. 改进etcd服务注册发现接口实现组件:https://github.com/gogf/gf/tree/master/contrib/registry/etcd

注册发现

  1. Service实现对象改进为接口定义,并提供默认的Service实现,提高扩展性和易用性。
  2. 改进HTTP/GRPC Client&Server对接实现。

负载均衡

  1. 改进Node接口定义,新增Nodes接口定义。
  2. 修复HTTP Client下的服务发现负载均衡问题。

网络组件

  1. gclient
    1. 改进服务发现实现逻辑。
    2. 修复客户端关闭错误,引起的连接池无法复用问题。
  2. ghttp
    1. 改进Request.GetUrl方法对URL Schema获取细节。
    2. 参数接收支持UploadFile属性自动接收。
    3. 新增接口文档自定义UI指导文档:接口文档-自定义UI
    4. 接口文档默认依赖的外部JS CDN改为unpkg.com
    5. 改进服务注册实现逻辑。
    6. 改进内部细节实现逻辑。
    7. 修复参数为空判断问题。
  3. goai
    1. 改进更规范化符合OpenAPIV3协议实现。
    2. 支持所有x-开头的自定义标签,自动添加OpenAPIV3的结果中。

系统组件

  1. gcfg
    1. 默认的文件系统接口实现新增对property文件格式的支持。
  2. gcmd
    1. 参数解析新增CaseSensitive配置,默认不区分大小写解析,特别针对结构化参数接收影响较大:命令管理-结构化参数
    2. 新增跨进程的链路跟踪特性:命令管理-链路跟踪
  3. glog
    1. 新增全局的Handler设置功能,开发者可以全局自定义处理glog组件的所有日志,例如全局输出JSON文件格式:日志组件-Handler
    2. 新增默认的JSON格式Handler供开发者使用:日志组件-Handler
  4. gsession
    1. 解决当访问用户过多造成的内存占用过大的问题。
  5. gproc
    1. 新增跨进程的链路跟踪特性:进程管理-链路跟踪

容器组件

  1. garray
    1. 改进Unique方法性能,增加DeepCopy接口实现。
  2. glist
    1. 增加DeepCopy接口实现。
  3. gmap
    1. 增加DeepCopy接口实现。
  4. gset
    1. 增加DeepCopy接口实现。
  5. gtype
    1. 增加DeepCopy接口实现。
  6. gvar
    1. 增加Copy方法,用于深度拷贝当前泛型对象。
    2. 增加DeepCopy接口实现。

数据库组件

  1. gdb
    1. 新增WhereBuilder特性,用于更加灵活的SQL条件语句组合:ORM查询-Where/WhereOr/WhereNot
    2. 新增HOOK特性,用于自定义钩子事件处理:ORM链式操作-Hook特性
    3. 改进数据提交到底层driver前的数据转换处理逻辑。
    4. mysql驱动从主库迁移到社区模块,便于将mysql从主库解耦。因此从后续版本开始,开发者需要手动引入驱动依赖:https://github.com/gogf/gf/tree/master/contrib/drivers

编解码组件

  1. gproperty
    1. 新增gproperty组件,用于解析Java Property格式文件。
  2. gjson
    1. 新增对property文件格式的编解码、数据操作支持:通用编解码-gjson
    2. 修复对大整形数据读取的精度丢失问题。

文本处理

  1. gstr
    1. 改进WordWrap方法,使得对Unicode特别是中文换行更加友好。
    2. 修复RepliceI忽略大小写字符串替换在特定场景下的问题。

错误处理

  1. gerror
    1. 新增Unwrap方法(同Next方法),用以支持Golang新版本的Unwrap错误接口。
    2. 新增Equal方法,用于判断两个错误是否相等:错误处理-错误比较
    3. 新增Is方法,用于支持Golang新版本的Is错误接口:错误处理-错误比较

工具方法

  1. gconv
    1. 去掉整型转换时对八进制字符串的支持。
    2. 改进内部实现逻辑,提高可读性保障可维护性。
  2. gutil
    1. 新增gutil.Copy方法,用于深度拷贝指定内容。
    2. 改进gutil.Dump方法。

开发工具

相对于主库稳定的代码组件,CLI开发工具在近期的版本发布有一些非兼容更新,各位在升级时注意发布记录,细节请查看源码调整。

  1. 改进build命令,支持指定pack代码文件的生成目录,参数有个别调整。
  2. 改进docker命令,支持多个docker tag的重命名及仓库自动推送。
  3. 改进gen dao命令,支持自定义dao/do/entity代码生成目录,不再强制生成到service/internal目录下:数据规范-gen dao
  4. 新增gen service命令,支持自动化地根据logic层级代码,生成service接口代码:接口维护-gen service
  5. 修复run命令自定义程序启动参数问题、gofmt/goimports程序路径带空格问题。

推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 华为鸿蒙系统官网2.0报名方法及适用设备
    本文介绍了华为鸿蒙系统官网2.0报名的适用设备、报名方法以及三种方式,包括在应用商店下载开发者联盟app、在官网中进行报名、在微信公众号中申请体验HarmonyOS 2.0 手机开发者Beta版本。同时提醒错过测试机会的用户可以等待后续的正式版发布。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 论坛最近流量一直很大,pv却没增长多少,纠结啊,cdn的流量太贵了,跑不起啊最近mysql经常占cpu很高,今 ... [详细]
  • 小白的Python 学习笔记(八)推导式详解
    大家好,今天我总结一下Python的推导式,首先让我们来看定义推导式(comprehensions)是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体 ... [详细]
author-avatar
立行谏圣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有