GoFrame v2.5 版本发布,企业级 Golang 开发框架

news2024/10/5 20:19:38

大家好啊,GoFrame 框架今天发布了 v2.5.0 正式版本啦!👏👏👏👏

本次版本主要是对已有功能组件以及开发工具上的改进工作。其中,开发工具新增了 gf gen ctrl 命令,以规范化定义、开发 API 接口,增加控制器、SDK 的代码生成提高开发效率,以解决 Golang 工程开发中接口层面的规范和效率问题,详情请参考:接口规范 - gen ctrl。其他变更内容请参考以下 change logEnjoy!🍺🍺🍺🍺🍺🍺🍺🍺

Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.5.0

完整代码变更: v2.4.0…v2.5.0,感谢本次所有的贡献开发者:

功能改进

  1. gdb

    1. 改进 ORM SQL 日志记录,操作的字段按照数据表字段定义顺序进行操作。
    2. 改进 HOOK 方法实现,支持修改 in 参数的 Table 字段后修改执行的表名。
    3. 新增 AllAndCount/ScanAndCount 方法,用于实现便捷的分页查询场景。
    4. 新增 Model.WhereOrNot/WhereOrPrefixNot 条件方法。
  2. gi18n

    1. 改进支持中文(Unicode)作为转译的键名。
  3. gclient

    1. 新增 Discovery 链式操作方法,用于设置本次请求的服务发现组件。
  4. ghttp

    1. 改进请求 Context 上下文处理,每次 Context 的变更将会影响底层的 http.Request 对象。以支持自定义 HTTP Handler 的数据交互场景。
    2. 新增 Endpoints 配置项支持,用于自定义 Server 的服务注册发现地址,而可以使用当前监听的地址。
  5. goai

    1. 改进参数校验识别,如果参数为必须参数,则在 OpenAPIv3 结果中进行标记。
  6. gsel

    1. 修复 RoundRobin 实现中 Endpoints 更新的锁机制问题。
  7. glog

    1. 新增 TimeFormat 配置,用于自定义日志输出的时间格式:日志组件 - 配置管理
    2. 改进 Rotation 实现,支持短运行程序的日志文件切分。
  8. gtag

    1. 新增 GetGlobalEnums 方法,用于获取全局注册的枚举类型。
  9. gutil

    1. 新增 DumpJson 方法,用于将任意类型变量按照 JSON 格式化打印到终端,便于人工阅读。
  10. gvalid

    1. 新增 enums 校验规则,用于实现枚举类型的自动识别和校验:数据校验 - 校验规则

社区组件

  1. 修复 contrib/registry/polaris 组件在多个服务端时的负载均衡问题。
  2. 改进 contrib/drivers/pgsql 在 TableFields 返回的 Index 字段序号统一从 0 开始。
  3. 改进 contrib/nosql/redis 新增用户配置项支持。
  4. 改进 contrib/rpc/grpcx 组件,grpcx.Server 新增 Endpoints 配置项支持,用于自定义服务注册发现的地址。
  5. 新增 contrib/sdk/httpclient 组件,用于本次版本新增的 gf gen ctrl 命令生成的 HTTP SDK 代码文件依赖库。
  6. 新增 contrib/trace/otlpgrpc 及 contrib/trace/otlphttp 组件,用以实现基于 OpenTelemetry 的链路跟踪统一对接组件。

开发工具

  1. 新增 gf gen ctrl 命令,用于编译 api 定义目录,自动生成规范的 controllerHTTP SDK 代码:接口规范 - gen ctrl

  2. 改进 gf gen dao 命令,新增 TypeMapping 特性,开发者可自定义数据表字段类型与生成的 Go 实体数据结构属性类型映射,并且可以方便引入第三方包类型(如 decimal 包以支持高精度类型):数据规范 - gen dao

  3. 改进 gf gen enums 命令,其中的 Prefix 参数改为 Prefixes,以支持多个生成枚举类型的包前缀指定:枚举维护 - gen enums

  4. 改进 gf gen service 命令:

    • 生成的 service 文件中,增加方法注释生成。
    • 当生成的 service 文件中存在 import 冲突时,自动生成 import alias
  5. 改进命令行封装,暴露 gfcmd.Command 类型,便于开发者可以继承扩展自定义命令行功能。

  6. 改进 gf docker 命令,将构建文件参数设置为非必须(考虑兼容),未来将会只用于 Docker 构建,不再耦合二进制构建功能。如果有完整构建需求,建议未来结合 gf build 功能共同使用。并更新项目工程模板的 make image 命令,使用 gf build+gf docker 命令实现。

  7. 改进 gf init 命令,修复在部分场景下初始化项目覆盖已存在的.git/.gitignore 目录及文件问题或权限报错问题。

  8. 改进 gf up 命令,修复在部分场景下的框架版本更新问题,以及在 windows 系统下的下载安装问题。

  9. 改进 gf version 命令,修复在部分场景下的框架版本识别问题。

  10. 修复 gf gen pbentity 命令,生成的 proto 文件实体数据结构的 float32/float64/[]byte 类型修改为 float/double/bytes 类型。

  11. 改进开发工具,部分命令可以不用显示配置 importPrefix 参数,如:gf gen dao/service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C#】并行编程实战:使用并发集合

在上一章的并行编程实现里,为了保护资源,我们对共享资源加锁(各种同步原语)来进行保护,避免多线程同时访问(主要是写入)。但一般来说,共享资源是一个可以由多个线程读写的集合&#…

AR气象博物馆模拟体验提升青少年认知

国际气象节主要目的是唤起人们对气象工作的重视和热爱。近年来,极端天气频发,人们需要提高警惕,AR气象远程普利用ar技术特有的沉浸式的体感互动,通过模拟演练提升体验者的安全防范意识和求生技巧。 系统结合VR虚拟现实、AR增强现实…

【多模态】1、几种多模态 vision-language 任务和数据集介绍

文章目录 一、Phrase Grounding1.1 概念介绍1.2 常用数据集介绍 二、Referring Expression Comprehension(REC)2.1 概念介绍2.2 常用数据集介绍 三、Visual Question Answer(VQA)3.1 概念介绍 四、Image Caption4.1 概念介绍 现在…

MySQL-数据库读写分离(上)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

(学习笔记-TCP连接建立)为什么每次建立TCP连接时,初始化的序列号都要求不一样?

主要原因有两个方面: 为了防止历史报文被下一个相同的四元组的连接接收(主要)为了安全性,防止黑客伪造相同序列号的TCP报文被对方接收 展开第一点: 假设每次建立连接,客户端恶核服务端的初始化序列号都是从0开始: 过程…

Mysql教程(一):Mysql数据模型和SQL语法分析

Mysql教程(一):Mysql数据模型和SQL语法分析 1、Mysql数据模型 1.1 关系型数据库(RDBMS) 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数…

H5活动营销系统怎么做?H5活动营销系统有哪些优势?

H5营销系统广泛用于各类线下活动场景,即将传统线下活动搬到线上,结合互动和奖励设计,引导用户产生转发、分享等目标行为,从而扩大活动影响力,以获得曝光和转化。因此,h5活动营销系统通常用于拉新促活、刺激…

【LeetCode 75】第三题(1431)拥有最多糖果的孩子

题目: 示例: 分析: 题目是简单题,也确实简单,不过示例给出的解释有些复杂,甚至有些误导.我们只需要遍历得出分配糖果之前的糖果最大值,然后再依次遍历每个孩子拥有的糖果数,若某孩子原有的糖果数加上待分配的所有糖果数大于等于分配前的糖果最大值,则给该孩子对应下标的结果置…

Linux--进程替换(转载)

目录 0.引入 1.替换原理 2.替换函数 execl execv execlp execle execvp execvpe execve 3.调用自定义程序 4.exec函数解释 5.命名理解 0.引入 创建子进程的目的是什么? 就是为了让子进程帮我执行特定的任务 让子进程执行父进程的一部分代码 如果子进程…

深度学习——自编码器AutoEncoder

基本概念 概述 自编码器(Autoencoder)是一种无监督学习的神经网络模型,用于学习数据的低维表示。它由编码器(Encoder)和解码器(Decoder)两部分组成,通过将输入数据压缩到低维编码空…

小程序使用云函数调用第三方api避免域名备案

小程序使用云函数调用第三方api避免域名备案 在小程序开发中,如果需要调用第三方 API,但由于域名备案的限制无法直接在小程序中使用,我们可以利用云函数来解决这个问题。 1. 开通云开发 使用微信开发者工具打开小程序项目,点击…

IDEA 提交git 之后撤回操作

方式一 1.选择提交记录; 2、 右键git然后选择drop commit; 弊端:会将修改的代码全部进行删除操作 打开 IDEA 的 本地历史记录功能,对修改的内容进行复原 方式二: 1、撤回commit 2、选择项目——>右击git——…

ROS-Qt-转CMake编译以及qmake第三方库添加及其他

Qt 开发ROS 界面的方法 方法2 带ui的工作空间配置(以ROS节点执行) 步骤1 $ mkdir catkin_qt $ cd catkin_qt $ mkdir src $ cd src $ catkin_init_workpasce $ cd .. $ catkin_make $ cd src $ catkin_create_qt_pkg ros_ui roscpp rospy std_msgs $ …

生成式AI时代,亚马逊云科技致力推动技术的普惠,让更多企业受益

当谈及AIGC时, 我们该谈些什么? 生成式AI技术与应用的不断发展,为各个行业都注入了全新的机会与活力。AIGC成为了今年最为激动人心的技术话题。亚马逊云科技也一马当先,在6月27-28日,2023亚马逊云科技中国峰会上分享…

堆的Top-K问题

⭐️ TOP-K问题 TOP-K问题:即求数据结合中前 k k k 个最大的元素或者最小的元素,一般情况数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 如果数据量过大,排序的方式就不太可取了。 思路&…

TikTok引流的新玩法,用AdsPower打开新大陆!

做跨境电商的人都知道,天上不会掉流量,想要产品火,就必须要引流。大佬的一个产品动不动就几千几万的观看量,可是自己的产品却无人问津。他们到底怎么做到的呢?很简单,注册AdsPower和TikTok的账号&#xff0…

el-input输入框的那些事

vue3element-plustses6 此帖只为记录开发中遇到的需求,技术问题,坑 1、文本域禁止自由拉伸 1、文本域禁止自由拉伸 el-input有一个枚举类型的resize属性,控制拉伸,‘none’ | ‘both’ | ‘horizontal’ | ‘vertical’&#xf…

找实拍高清视频网站,我推荐这6个

本期推荐6个高清视频素材网站,视频剪辑、自媒体必备,建议收藏~ 菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是一个设计网站,但它还有非常丰富的视频和音频素材,视频素材全部都是高清无水印&#xff0…

暑期代码每日一练Day1:Leetcode415. 字符串相加

题目 415. 字符串相加 分析 题目意思是给你两个纯数字 字符串(表示的是一个有意义的正整数),让你算出这两个字符串表示的数字的和,最后返回以字符串表示的结果,其中的过程不能直接将初始给定的两个字符串直接转化为…

ORB+FLANN

FLANN 代表 近似最近邻的快速库。它包含针对大型数据集中的快速最近邻搜索和高维特征优化的算法集合。对于大型数据集,它比BFMatcher工作得更快。 对于基于 FLANN 的匹配器,我们需要传递两个字典,指定要使用的算法、相关参数等。第一个是Ind…