内容简介:GoFrame GF(Go Frame)是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存...
GoFrame
GF(Go Frame)是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设以及开发 工具 链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库 ORM 、TCP/UDP 组件、进程管理 /通信等等。并提供了 Web 服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPS、Rewrite等特性。
特点
- 模块化、松耦合设计;
- 模块丰富、开箱即用;
- 简便易用、易于维护;
- 高代码质量、高单元测试覆盖率;
- 社区活跃,大牛谦逊低调脾气好;
- 详尽的开发文档及示例;
- 完善的本地中文化支持;
- 设计为团队及企业使用;
支持我们
OSC 最佳开源项目评选开始了,如果您喜欢GoFrame,欢迎为GoFrame投上您宝贵的一票???? https://www.oschina.net/p/goframe
Change Log
由于GoFrame是模块化设计,因此每个版本的更新记录都会以模块的形式进行介绍。
重要更新:
- 将框架内所有的
json操作从标准库替换为json-iterator/go,提高操作效率。 - 缓存模块重构底层设计,增加适配器设计模式,并增加内存及
Redis适配器支持。其中内存适配器默认核心模块提供,Redis适配器由社区模块提供: https://goframe.org/os/gcache/adapter - 增加可自定义的校验规则注册特性: https://goframe.org/util/gvalid/customrule
Web Server增加所有配置项示例: https://goframe.org/net/ghttp/config/exampleORM新增基于Redis的SQL缓存适配器: https://goframe.org/database/gdb/model/cacheORM新增模型关联实验特性: https://goframe.org/database/gdb/model/associationORM改进时间自动更新特性增加自定义时间字段: https://goframe.org/database/gdb/model/auto-time- 错误处理模块新增
Current及Next方法: https://goframe.org/errors/gerror/index
net
ghttpClient- 增加
GetVar/PutVar/PostVar等*Var请求方法,用于发起HTTP请求获取内容之后直接返回泛型对象,方便类型转换,特别是针对于返回XML/JSON的结果处理将会更加简便: https://goframe.org/net/ghttp/client/demo/index - 增加
SetProxy/Proxy方法,用于设置客户端代理,支持HTTP/Socket5代理类型: https://goframe.org/net/ghttp/client/demo/proxy - 增加
SetRedirectLimit/RedirectLimit方法,用于设置页面跳转数量限制。
- 增加
Request- 增加
ParseQuery,ParseForm方法,用于解析指定类型的参数,并绑定到给定的对象。 - 增加
GetHeader方法,用于获取指定Header参数。 - 增加
GetRemoteIp方法,用于获取请求客户端 IP 。在 IP 白名单限制时应当使用GetRemoteIp而不是GetClientIp进行判断,后者可以通过Header伪造。 - 增加
ReloadParam方法,往往用在中间件处理中,当中间件修改了请求参数,需要通过调用该方法重新解析一下请求参数。 - 增加
GetRouterMap方法,用于获得所有的路由参数返回为map。
- 增加
Response- 将
Output方法名称改为Flush,用于将缓冲区的数据写入到客户端数据流中。
- 将
ServerServer增加所有配置项示例: https://goframe.org/net/ghttp/config/example- 增加
SessionCookieOutput配置,用于控制是否输出SessionId到Cookie中,默认为开启。 - 改进路由解析,增加对
URI带有重复的/符号的支持。 Pprof功能路由支持Domain绑定。- 其他一些细节改进。
Cookie- 增加
SetHttpCookie方法,用于根据标准库http.Cookie对象设置Cookie。 - 其他一些功能改进
- 增加
database
-
gdb- 新增模型关联实验特性: https://goframe.org/database/gdb/model/association
- 改进时间自动更新特性增加自定义时间字段: https://goframe.org/database/gdb/model/auto-time
- 新增基于
Redis的SQL缓存适配器: https://goframe.org/database/gdb/model/cache - 新增对输入参数的键名-字段名自动识别映射特性: https://goframe.org/database/gdb/senior
- 新增
DB.HasTable方法,用于判断是否当前数据库存在指定数据表。 - 新增
Model.HasField方法,用于判断是否当前数据表存在指定字段。 - 新增
Model.ScanList方法,用于智能地将当前struct/slice绑定到指定的list对应属性上。 - 新增
Result.MapKeyValue方法,用于将当前Result转换为map[string]Value类型。 - 新增
Result.IsEmpty/Len/Size/ScanList方法。 - 增加
ListItemValues及ListItemValuesUnique方法,用于自动获取list中指定名称的键值或属性值,构成slice返回。 SQL日志内容增加分组名称打印。- 改进
DataToMapDeep方法。 - 其他一些细节改进工作。
-
gredis- 新增
TLS特性支持,并支持配置文件配置,https://goframe.org/database/gredis/config
- 新增
container
gvar- 增加
Scan及ScanDeep方法,用于struct/slice自动识别转换。 - 增加
ListItemValues及ListItemValuesUnique方法,用于自动获取list中指定名称的键值或属性值,构成slice返回。 - 增加
MapStrAny接口实现方法。
- 增加
os
-
gcache- 增加
GetVar方法,用于获取缓存数据并返回为泛型对象。 - 增加
Update方法,用于仅修改缓存数值,不修改缓存过期时间。 - 增加
UpdateExpire方法,用于仅修改缓存过期时间,不修改缓存数值。 - 重构底层设计,增加适配器设计模式,并增加内存及
Redis适配器支持。其中内存适配器默认核心模块提供,Redis适配器由社区模块提供: https://goframe.org/os/gcache/adapter - 注意,本次模块的修改会有部分方法不兼容,部分方法增加了
error参数返回,升级时请注意查看。编译时将不会通过。 - 其他一些功能改进。
- 增加
-
gfile- 增加
ScanDirFileFunc方法,用于自定义函数处理的递归目录文件遍历。 - 改进
Scan*方法,增加递归层级限制,默认层级限制为100000.
- 增加
-
gfsnotify- 去掉模块初始化时的
Watcher对象创建,调整为运行时按需创建,并且增加了并发安全控制。
- 去掉模块初始化时的
-
grpool- 增加
AddWithRecover方法,用于添加异步任务时给定一个recover处理方法,当任务panic时交由该recover方法处理,防止异步任务panic引起整个进程崩溃。
这里解决的痛点是
recover只能捕获到当前goroutine的panic,因此只能在创建异步任务的时候指定recover处理方法。 - 增加
-
gtime- 增加
ParseDuration方法,增加了对时间单位d的支持,表示天。 - 改进
New方法,支持通过字符串、时间戳、time.Time对象创建gtime.Time对象,https://goframe.org/os/gtime/time - 改进
Add/AddStr/ToLocation/ToZone/UTCLocal/AddDate/Truncate/Round方法,这些方法调用时,不再修改当前对象本身,而是创建并返回一个新的gtine.Time对象,以便保证和标准库time.Time的逻辑一致,防止混淆。 - 其他一些细节改进。
- 增加
-
gtimer- 增加
Reset方法,用于重置定时任务的计时。
- 增加
-
gfcache- 去掉了该模块,该模块的功能作用不是特别大。
debug
gdebug- 新增
GoroutineId方法,用于获取当前执行的goroutine id,仅作调试使用。
- 新增
encoding
-
gjson- 新增
GetScan/GetScanDeep方法。 - 新增
ToScan/ToScanDeep方法。 - 新增
LoadContentType方法,用于根据指定类型的内容创建Json操作对象。 - 新增
IsValidDataType方法,用于判断给定的数据类型是否支持解析。 - 其他一些改进。
- 单元测试完善。
- 新增
-
gcompress- 新增
GzipFile/UnGzipFile基于gzip压缩算法的文件压缩 /解压。
- 新增
i18n
gi18n- 新增
TranslateFormat/TranslateFormatLang/Tf/Tfl方法: https://goframe.org/i18n/gi18n/index
- 新增
text
gstr- 增加
SnakeFirstUpperCase方法,用于在字母大写前增加连接符,并不会处理数字,例如:SnakeFirstUpperCase("RGBCodeMd5")将会返回rgb_code_md5。
- 增加
util
-
gconv- 增加对指针基本类型的转换支持。
- 增加
Scan/ScanDeep方法,用于自动识别转换Struct/[]Struct。 - 改进
MapDeep方法的层级递归处理。 - 其他一些细节改进,性能改进。
-
gutil- 增加
ListItemValues及ListItemValuesUnique方法,用于自动获取list中指定名称的键值或属性值,构成slice返回。 - 增加
ItemValue方法,用于获取指定map/*map/struct/*struct类型的键值 /属性值。 - 增加
MapOmitEmpty方法,用于过滤map中的空值。 - 增加
SliceDelete方法,用于数组项删除。 - 增加
Try方法,通过闭包执行给定的方法,如果方法产生panic则该方法返回error,否则返回nil。 - 改进
TryCatch(try func(), catch ...func(exception interface{}))为TryCatch(try func(), catch ...func(exception error))
- 增加
-
gvalid- 增加自定义规则特性,开发者可注册自定义的校验规则: https://goframe.org/util/gvalid/customrule
- 其他一些功能改进。
error
gerror- 新增
Current方法,用于获取当前错误层级的error接口对象。 - 新增
Next方法,用于获取层级错误的下一级错误error接口对象。当下一层级不存在时,返回nil。 - 文档更新: https://goframe.org/errors/gerror/index
- 新增
Bug Fix
- 修复
garray模块的Unique方法问题。 - 修复
glog中定时器懒初始化时的goroutine泄露问题。 - 修复
gstr中名称Case转换相关方法在名称中带有数字+特殊字符时的名称转换问题。 - 修复
ghttp模块中的CORS跨域设置Header细节问题。 - 其他 BUG 修复: https://github.com/gogf/gf/issues?q=is%3Aissue+label%3Abug+is%3Aclosed
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Android模块化改造以及模块化通信框架
- Laravel 模块化开发模块 – Caffienate
- ASP.NET Core模块化前后端分离快速开发框架介绍之4、模块化实现思路
- 前端模块化架构设计与实现(二|模块接口设计)
- JavaScript模块化
- 前端模块化总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux设备驱动程序
科波特 / 魏永明、耿岳、钟书毅 / 中国电力出版社 / 2006-1-1 / 69.00元
本书是经典著作《Linux设备驱动程序》的第三版。如果您希望在Linux操作系统上支持计算机外部设备,或者在Linux上运行新的硬件,或者只是希望一般性地了解Linux内核的编程,就一定要阅读本书。本书描述了如何针对各种设备编写驱动程序,而在过去,这些内容仅仅以口头形式交流,或者零星出现在神秘的代码注释中。 本书的作者均是Linux社区的领导者。Jonathan Corbet虽不是专职的内核......一起来看看 《Linux设备驱动程序》 这本书的介绍吧!