首页 文章 精选 留言 我的

精选列表

搜索[企业级],共10000篇文章
优秀的个人博客,低调大师

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

大家好,GoFrame框架今天发布了v2.7.0正式版本啦! 👏👏👏👏👏👏👏👏👏 本次版本最大的看点是提供了metric监控组件,主库提供了接口化的metric设计,社区组件提供了基于OpenTelemetry的metric接口实现。该特性在默认情况下是关闭的,只有在引入具体的接口实现或者社区实现时才会默认启用。当前版本同时提供了HTTP Client&Server的监控指标实现,其他组件的监控指标将在后续版本中陆续提供。详情请参考文档:服务监控告警 同时,在本次版本中实现了对dm/mssql/oracle/pgsql/pgsql/sqlite数据库的Save操作支持,感谢社区小伙伴 https://github.com/oldme-git 💖。 此外,值得一提的是,在本次版本中,我们对gcron定时任务组件对秒级字段增加了忽略符号#的特性,用于将6段式的cron pattern转换为类似于5段式的linux crontab pattern功能,用于解决秒级粒度下由于延迟引起的任务执行不准确问题:定时任务-表达式 由于本次版本变更内容较多,以下中文介绍一些较为重要的改进点,详细的ChangeLog请参考:https://github.com/gogf/gf/releases/tag/v2.7.0 完整代码变更请参考:https://github.com/gogf/gf/compare/v2.6.0...v2.7.0 感谢所有参与本地版本的贡献开发者们💖! 组件改进 gdb 新增Stats接口定义及实现,用于获取当前数据库orm对象维护的连接池信息:ORM高级特性-连接池状态 新增FormatUpsert接口定义及实现,用于不同数据库类型实现写入/更新操作,即Save操作。 新增SqlType类型,并将已有的sql type类型定义从string类型改为了SqlType类型。 新增Model.OnConflict方法,用于实现部分数据库类型当字段唯一键冲突时的更新策略,特别是实现Save操作。 修复ClearTableFieldsAll方法失效的问题。 ghttp 新增MiddlewareNeverDoneCtx中间件,开发者可以选择使用,避免客户端取消请求时服务端收到的context cancel问题:常见问题 新增http server的监控指标实现,默认关闭不会影响性能,只有在开启metrics特性时才会自动开启:HTTPServer-监控指标 改进tracing记录,将span名称从query uri改为了route uri,便于查看时更容易聚合。 改进Request对象中的EnterTime及LeaveTime属性类型,从int64改为了*gtime.Time类型。 将WebSocket方法标记废弃,将会在未来的大版本中去掉,也会去掉http server对websocket的内嵌耦合支持。未来建议通过其他的websocket开源组件结合http server一起使用,更加解耦灵活。 修复由于Request Body默认可重复读取的问题引发的大文件上传占用内存问题。 修复StartPProfServer方法的pattern参数失效问题。 文件下载方法Request.ServeFileDownload方法新增Access-Control-Expose-Headers Header返回,以支持ajax文件请求。 服务配置新增SwaggerUITemplate配置项,用于快捷配置SwaggerUI页面的HTML内容。 http server启动路由打印时不再打印内置的中间件。 gclient 修复在开启服务发现的情况下,所有的http请求均会强制走服务发现的域名解析问题。 新增http client的监控指标实现,默认关闭不会影响性能,只有在开启metrics特性时才会自动开启:HTTPClient-监控指标 gcon 新增忽略符号#,对cron pattern中的秒字段进行占位,表示忽略秒字段,用于将6段式的cron pattern转换为5段式的linux crontab pattern:定时任务-表达式 修复在确定的秒级任务场景中(例如2* * * * *),当底层时间出现不准确时可能引发两次任务执行。 gerror 修复gerror.HasCode方法递归逻辑失效的问题。 g 改进DumpJson方法,用于实现对任意变量按照JSON格式进行打印。 gcache 修复大量创建Cache对象引发的goroutine过多问题。 gcmd 新增RunWithSpecificArgs方法,用于使用自定义的arguments运行命令对象。 修复部分场景下由于参数结构体名称和结构体标签名称冲突引发的参数丢失问题。 gfsnotify 修复gfsnotify对象关闭时可能引发的panic问题。 glog 修复rotate特性对gz后缀日志压缩文件的重复rotate问题。 gmetric 新增gmetric组件,采用了解耦设计,只有接口定义和Noop的实现,真实的实现在社区组件中。只有引入具体的实现才会真实开启metric特性:服务监控告警 gproc 修复进程参数解析在windows下可能失败的问题。 改进Signal信号监听实现,允许在运行时增加信号监听处理方法。 gview 修复由于os.Getwd方法执行失败引起的健壮性问题。 gconv json.RawMessage支持接受slice类型的参数转换。 修复MapDeep内部转换缺失Deep参数引发的递归转换失败问题。 使用MapRange改进内部Map遍历逻辑,提高执行性能。 社区组件 社区contrib/drivers数据库组件的改进: contrib/drivers/dm组件新增对Save操作的支持。 contrib/drivers/mssql组件新增对Save操作的支持。 contrib/drivers/oracle组件新增对Save操作的支持,并修复写入参数不支持gdb.Raw类型的问题。 contrib/drivers/pgsql组件新增对Save操作的支持。 contrib/drivers/sqlite组件新增对Save操作的支持。 contrib/drivers/sqlitecgo组件新增对Save操作的支持。 新增contrib/metric/otelmetric组件,实现了对OpenTelemetry Metric的支持:服务监控告警 改进contrib/nosql/redis组件: 新增SentinelUsername及SentinelPassword参数配置,以扩展对Redis Sentinel模式的支持:Redis-配置管理 改进Redis接口实现,开发者可以灵活自定义扩展、覆盖社区组件对象redis.Redis类型的实现:Redis-接口化设计 改进contrib/registry/etcd组件,允许开发者配置etcd链接的校验信息。 改进contrib/rpc/grpcx组件: 对启用tracing特性时,安全截断请求内容。 新增对logger配置项的支持,允许在配置文件中通过logger配置项配置grpc server的日志对象:服务端配置 改进contrib/trace/otlphttp及contrib/trace/otlpgrpc组件,修复在短进程场景下正常ShutDown仍可能会出现的trace数据丢失问题。 开发工具 改进gen dao生成的entity源文件,增加orm标签,以提高数据库查询结果转换到entity对象的效率。 改进gen service命令,修复生成的源码文件中,方法顺序不一致问题。 改进build命令,将生成的二进制文件存放目录path参数的默认值从./temp改为了.即当前目录,以解决该参数自定义失效的问题。 改进init命令,新增-module/g参数,用于在初始化项目时显式指定go module名称。 修复gen dao在多个数据库生成配置下,使用clear参数时删除已生成的dao源文件的问题。 修复gen pbentity命令,使用自定义的jsonCase参数无效的问题。 修复run命令的-w指定监听目录参数失效的问题。

优秀的个人博客,低调大师

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

大家好啊,GoFrame框架今天发布了v2.6.0正式版本啦!👏👏👏👏 本次版本主要是大量的代码改进和BugFix工作。由于本次版本变更内容较多,以下中文介绍一些较为重要的改进点,详细的ChangeLog请参考(特别是BugFix):https://github.com/gogf/gf/releases/tag/v2.6.0 完整代码变更:https://github.com/gogf/gf/compare/v2.5.0...v2.6.0 感谢本次所有的贡献开发者: 功能改进 框架最低依赖的Golang版本从v1.15升级到v1.18。 g 新增g.Go方法,用于便捷创建带有ctx和recover参数的异步goroutine。 glog 改进Handler回调处理函数的HandlerInput输入参数,增加Values参数,该参数为日志打印时的参数列表:日志组件-Handler 新增HandlerStructure回调函数,将日志打印内容按照结构化参数打印,打印内容结构同golang标准库新版本slog:日志组件-Handler 改进日志文件rotate逻辑,解决在个别场景下文件无法rotate的问题。 gerror 增加错误堆栈模式(brief/detail):在brief模式下,错误堆栈仅会打印非框架组件堆栈。在detail模式下,错误堆栈会打印完整的框架代码调用链路。框架默认使用brief模式:错误处理-其他特性 gcode 新增gcode.CodeInternalPanic错误码,框架组件捕获的所有panic错误将会以此错误码返回。 gmap 新增Diff方法,用于对比并返回两个Map的差异。 gaes 新增PKCS7Padding/PKCS7UnPadding方法。 gdb 删除ConvertDataForRecord转换方法,新增ConvertValueForField转换方法。 修改CheckLocalTypeForField方法,返回参数类型string修改为LocalType类型。 这两个主要是数据库实现会用到,通常在社区组件中使用。如果使用者本地有gdb.DB接口的实现需要注意这个改动。 新增Model.Partition方法,允许数据库操作时用户显式指定分区参数。 新增Model.LeftJoinOnFields/RightJoinOnFields/InnerJoinOnFields方法,用于更便捷实现Join关联操作。 修复Model.WherePrefixNotIn方法实现问题。 gredis 新增Cluster配置项,用于指定是否使用集群模式:Redis-配置管理 新增Protocol配置项,用于指定RESP版本:Redis-配置管理 gi18n 改进转译文件读取逻辑,支持从资源管理器中自动读取文件:I18N国际化-配置管理 gclient 新增NoUrlEncode特性,设置GET请求不自动对参数做UrlEncode编码。 ghttp 改进退出信号处理,支持windows平台下的退出信号捕获后优雅退出。 goai 支持自动识别ghttp.UploadFile类型为OpenAPIv3的File类型。 去掉Path对象上与Method对象上重复的描述信息。 接口示例的字段类型按照参数数据类型自动转换为对应的数据类型。 gcfg 新增AdapterContent配置接口实现,使用具体的配置内容来实现配置管理对象:配置管理-AdapterContent gctx 新增NeverDone方法,用于包裹给定的ctx对象并返回一个永不会过期和Cancel的ctx对象。 gfile 默认创建的文件模式从0777改为了0755。 改进Copy/CopyFile/CopyDir方法,增加CopyOption可选参数,用于控制复制逻辑的可选项。 gmutex 使用Golang新版本的mutex改进gmutex.Mutex对象,直接使用新版本标准库的TryLock/TryRLock,不再自行实现这些重复的方法。保留LockFunc/TryLockFunc方法。 新增gmutex.RWMutex对象,扩展自标准库的sync.RWMutex对象,扩展新增了LockFunc/TryLockFunc、RLockFunc/TryRLockFunc方法。 gstr 新增List2/ListAndTrim2/List3/ListAndTrim3方法,实现类似于PHP list方法特性,将字符串拆分后作为多个结果值返回。 新增CaseConvert方法,用于按照给定的CaseType类型参数执行字符串命名格式转换。 gconv 新增ConvertWithRefer方法,用于给定参数作为类型参考,并转换给定参数为指定参数的类型。 gutil 新增FillStructWithDefault方法,用于自动通过读取struct tag读取默认值并填充给定的struct对象/指针。 gvalid 修复enums校验规则不支持map参数类型的问题。 社区组件 配置管理 新增contrib/config/consul组件,用于配置管理组件接口的consul服务实现:https://github.com/gogf/gf/tree/master/contrib/config/consul 数据库实现 改进contrib/drivers/dm组件: 支持schema参数配置。 支持time.Time/*time.Time时间类型参数操作。 改进contrib/drivers/sqlite组件,支持Insert Ignore及Save操作。 新增contrib/drivers/sqlitecgo组件,通过cgo方式支持i386系统架构。 改进contrib/nosql/redis组件: 增加TLSConfig配置,以支持TLS链接Redis Server。 增加Protocol配置项,以支持最新版本的Redis Server。 服务注册发现 新增contrib/registry/nacos组件,使用nacos时限微服务的注册发现: 改进contrib/registry/file组件,自动删除过期的注册项,避免客户端发现并连接过期的服务端地址。 修复contrib/registry/polaris组件部分实现问题。 微服务组件 改进contrib/rpc/grpcx组件: 客户端支持直接给定链接地址访问服务端。 完善单测,提高代码质量。 开发工具 改进cli工具安装方式,额外支持go install安装方式:go install github.com/gogf/gf/cmd/gf/v2@latest 改进gf run命令,新增WatchPaths/-w配置,支持指定监听的路径列表,避免默认监听本地项目所有项目文件引发too many opened files问题:自动编译-run 改进gf gen ctrl命令,新增Merge/-m选项,用以控制生成的控制器代码文件按照api层的文件生成,而不是默认按照api接口拆分为不同的接口实现文件:接口规范-gen ctrl 改进gf gen dao命令,新增RemoveFieldPrefix/-rf选项,用于自动去掉生成表字段的名称前缀:数据规范-gen dao 改进gf gen pbentity命令,新增RemoveFieldPrefix/-rf选项,用于自动去掉生成表字段的名称前缀:数据表PB-gen pbentity 改进gf gen service命令,支持自动识别logic模块对象的方法注释生成到service接口文件中。 改进gf version/gf -v命令,更详细的工具版本、运行环境、框架版本信息。 改进开发工具的初始化效率,去掉影响初始化效率的init包方法逻辑。 修复gf gen dao命令中指定Link数据库配置失效的问题。 其他一些细节修复。

优秀的个人博客,低调大师

高效构建 vivo 企业级网络流量分析系统

作者:vivo 互联网服务器团队- Ming Yujia 随着网络规模的快速发展,网络状况的良好与否已经直接关系到了企业的日常收益,故障中的每一秒都会导致大量的用户流失与经济亏损。因此,如何快速发现网络问题与定位异常流量已经成为大型企业内必须优先解决的问题,诸多网络流量分析技术也同时应运而生。 一、概述 随着网络规模的快速发展,网络状况的良好与否已经直接关系到了企业的日常收益,故障中的每一秒都会导致大量的用户流失与经济亏损。每一家企业都在不断完善自己的网络监控手段,但在监控体系建设过程中,却又不可避免的面临以下难点: 网络流量数据庞大:由于网络流量的规模和复杂性都非常高,很难对大量的数据进行有效的监控和分析。 流量数据采集分析建设成本高昂:为获取准确的流量数据,需要使用高效的数据采集技术和大容量的存储设备,以及大量的开发资源,这使得监控成本直线上升 监控手段单一、缺乏扩展性:传统的监控手段一般只能监控固定的几个数据点,难以针对不同的网络环境进行定制化和扩展。 难以快速定位和解决问题:由于网络流量数据量大、变化频繁,往往需要花费大量的时间和精力才能找出问题根源。 因此,如何利用尽可能低的监控成本快速发现网络问题与定位异常流量已经成为大型企业内必须优先解决的问题,诸多网络流量分析技术也同时应运而生。 sFlow技术就是这样一种高效、灵活的解决方案。它可以通过流量采样技术抽取数据包中的部分信息,从而实现对大量网络流量数据进行持续监控。同时,sFlow技术还具有灵活的配置和扩展性,可以根据实际需求进行定制,并支持多种网络设备和协议。这些优势使得sFlow技术在现代网络监控和管理中得到广泛应用。 二、常见的网络流量采集技术 主流的网络流量采集主要分为全流量采集与采样流量采集两种。 2.1 全流量采集 全流量采集包括端口镜像、分光设备等方式。在流量庞大的网络中,使用端口镜像方式不仅会导致全链路时延增加,而且会使吞吐量庞大情况下的网络设备压力激增。分光设备虽然可以降低链路时延,但同样存在采购价格高昂的门槛。除此之外,由于大型企业内IDC规模庞大,由此导致的全流量数据量也会激增,想要完整的靠自研做好全流量数据分析,不仅需要一定的存储计算资源,也需要一定的软件开发周期,不利于项目的快速搭建成型。 2.2 采样流量采集 在流量分析系统欠缺的情况下,使用采样分析的优势就体现出来了,相对于全流量,他部署成本低,数据分析代价小,很适合对异常流量的快速定位以及网络内的趋势占比分析。以下主要对比介绍sFlow与Netflow两种采样方式的优缺点。 sFlow在流量监控上范围更广,在满足硬件要求的IDC内部环境,使用sFlow进行采样流量监测,可以有效降低网络设备负载,并且提供实时流量监控手段,以应对突发网络异常场景。 三、基于sFlow的系统设计 3.1 基础设计 在满足硬件条件的情况下,基于sFlow的基础系统设计很简单,使用sFlow agent + sFlow collector + sFlow analyser即可实现整个流程的数据闭环。 sFlow agent:通过enabled相关网络设备上的sFlow能力,设定采样比等参数并制定收集端相应地址,即可对端口收发流量进行采集。agent侧更重要的反而是如何确定采集的网络设备范围,相对于无目的的全量网络设备部署,针对边界核心网络设备进行部署更有意义,因为所有的对外流量最终都必须经过边界网络设备。在能更好监控外部流量异常的情况下,也能减轻数据存储负担。 sFlow collector:收集并解析agent侧采集传输的 sFlow datagrams。 sFlow analyser:对格式化的数据进行可视化分析展示,以供网络管理员进行有效观测分析。 3.2 开源+自研:架构进阶 在确定了基本架构之后,如何进行组件选用与定制化功能扩充,开源解决方案elastiflow为我们提供了很好的示例,笔者基于开源进行了扩展,以满足更多定制化功能。 sFlow agent:使用上报统一vip的形式进行端口流量采样(官方规定的采样比需是2^n),可以利用vip的LB能力进行负载均衡,使得sFlow报文均衡打到收集端固定端口。针对不同的网络线路设定不同的采样比,在降低数据存储的同时也可以保证重要线路更高的精准性。 sFlow collector:使用ELK套件进行数据收集与可视化分析是比较成熟的技术方案之一。因此,收集端我们使用logstash进行原生数据报文收集与解析。elastiflow的作者使用了logstash内原生的udp-sFlow报文解析组件进行数据解析,但笔者在实际测试中发现,虽然该方案能得到结构化更好的数据格式,但在数据解析的性能表现上很差,在数据量庞大的情况下会造成大量数据丢包现象,导致数据准确性下降。而sFlowtool由于底层是基于C语言来编写的,在性能表现上很优异,单物理机(32c64g)即可达到10w+tps,虽然对sFlow报文解析后的数据结构化要弱一点,但可以在后续分析模块对数据进行清洗与结构化构建。sFlowtool分析的数据示例如下所示。经由logstash的数据发送到kafka消息队列中。 [root@server src]# ./sFlowtool -lFLOW,10.0.0.254,0,0,00902773db08,001083265e00,0x0800,0,0,10.0.0.1,10.0.0.254,17,0x00,64,35690,161,0x00,143,125,80FLOW后的字段释义如下agent_addressinputPortoutputPortsrc_MACdst_MACethernet_typein_vlanout_vlansrc_IPdst_IPIP_protocolip_tosip_ttludp_src_port OR tcp_src_port OR icmp_typeudp_dst_port OR tcp_dst_port OR icmp_codetcp_flagspacket_sizeIP_sizesampling_rate sFlow analyser:通过从kafka实时消费数据,将数据进行清洗结构化,并借助三方metadata,对解析后的数据进行软件定义,以便于后续存储与分析。 database+display:使用Elasticsearch+Kibana进行存储与可视化展示,同时也可以利用mertic beat对logstash的采集性能进行监控。Kibana作为Bi类的数据可视化方案,提供了大部分可供免费使用的图表及Dashboard,可以很好的进行可视化分析。 3.3 分析端软件定义 拥有原生数据的情况下,我们已经能基于一些ip五元组等进行基本会话流量分析。但是流量数据所能体现的价值远不止这些,利用企业内其他的cmdb等平台,可以为我们的流量数据提供更大价值。 网络设备维度:通过数据内的交换机地址,出入向端口,可以根据采集配置的交换机端口index,判断该条流量出入向。也可基于网络设备ip,赋予其通道,线路,以及设备名等等其他属性。 ip维度:ip五元组提供了探索数据更高的可能,我们可以根据归属ip,判断他的项目,部门等归属信息,也可反向关联域名。这在对异常流量进行分析判断时能够快速定位到所属业务方,很大程度提高了运维效率。 3.4 压缩存储与可视化自研 由于Elasticsearch本身的数据压缩效果不够理想,使得我们在进行长时间存储数据时体量庞大臃肿。相应的,olap型数据库Druid很好地解决了这个问题,数据采样后经过分析端严格的结构化处理,可以在Druid内实现很好的数据压缩。除此之外,Druid内嵌的数据预聚合能力也能更好的帮助我们对历史数据进行降精处理,减少存储压力。切换存储引擎后,也就意味着没办法再使用Kibana进行通用展示,使用自研的web服务框架也能够应对灵活的需求场景,实现更多定制化的分析。 3.5 基于Celery设计的轻量流处理模型 虽然流量数据经过了采样降精,但整体的数据量依然很庞大。高效快速的进行流处理,降低整体系统时延至30s内,能够更快的帮助网络管理人员发现问题,除却利用传统的流处理工具外,我们也可以使用Celery来构建一个轻量高效易扩展的分布式流处理集群。 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。我们基于celery实时异步处理的特性,设计 celerybeat → watcher → producer → consumer 的消费链路来进行流处理。 celery beat:作为定时任务的触发器,每1s向watcher队列里派发一个新任务。 watcher worker:在队列中拿到任务后,转发给producer,并根据设置的队列最大值,对producer队列进行拥塞控制。 producer worker:在队列中拿到任务后,从kafka中获取采集的流量数据,按照batch size批量发送给consumer队列,并根据设置的队列最大值,对consumer队列进行拥塞控制。 consumer worker:在队列中拿到任务后,根据本地缓存/共享缓存内的业务信息,对采集数据进行数据清洗,打业务标签等操作,并写入另一kakfa或直接写入database。 每一个角色以及节点可以通过Celery broker进行通信,实现分布式集群部署,针对consumer单元化操作,可以使用eventlet以协程方式启动,以保证集群高并发消费。 四、应用场景 4.1 机房维度流量分析 通过基于网络cmdb的ip匹配,对流量数据进行机房维度的汇总,可以得到机房整体的对外出入向流量分析,在IDC同外部交互时,整体流量的趋势变化,是判断带宽占用程度的直接标准。 4.2 网络线路信息关联 通过对网络设备基于ip+ifindex的逻辑信息映射,可以对核心通道线路做到聚合展示,在针对一些公网线路异常,专用线路带宽打满等异常问题时,通过观察线路分析可以直接准确定位故障发生的第一时间点。 4.3 ip会话信息挖掘 虽然sflow只截取了报文的头部信息而不包含数据包部分,但ip五元组本身也提供了极大的网络流量分析价值。 利用会话信息,我们可以准确有效的定位异常流量的ip归属,通过ip+服务端口的,我们甚至可以定位具体产生流量异常的服务与进程,从而做出下一步决策。除此之外,ip也能同企业内CMDB产生联动,定位到ip所属资源的所在资源组,从而得到不同部门/行政组产生的流量占比分析,这同时也有利于在产生异常流量时第一时间感知到相关业务,并进行通知管控。 4.4 ip归属地分析 除了结合内部信息,通过运营商提供的归属地信息,我们可以查看ip访问的来源,进行相关归属地分析与Dashboard制作。 五、总结 要实现对网络全面、实时的监控分析必须依靠先进有效的网络监控协议和技术来满足业务日益增长的需求。基于sFlow的流量分析虽然在轻量化构建上有着很大的优势,在面对异常流量时也能够基于流量趋势与分布占比做出快速反应。但sFlow本身的采样却不包含报文内数据包的信息,针对一些sql注入、数据安全等等网络安全攻防问题,没办法提供准确定位与解决方案。因此,全流量分析也应是流量分析系统未来必不可少的一环,两者相结合才能够提供更全面、更精细化的流量监控,为数据中心的网络安全保驾护航。 六、未来展望 虽然sFlow技术在网络性能监控和管理领域中得到了广泛应用,但在未来更大规模的网络流量场景冲击下,还需要具备更多的能力: 1.支持更多协议和应用:sFlow监控的思想不仅适用于网络流量,还可以监控应用流量、虚拟化环境、云平台等。未来,sFlow技术应该支持更多的协议和应用,以更好地适应新型网络环境。 2.自适应流量采集技术:sFlow技术的流量采集技术是固定周期的,但是随着网络流量的变化,固定周期的采集可能无法准确反映网络实时状态。未来,sFlow监控技术应该支持自适应流量采集技术,能够根据实际网络流量变化自动调整采集周期。 3.便捷的管理功能:sFlow目前的配置更多依赖于网络管理人员在交换机上进行配置,无法实现一键下发,自动发现,快速调整采样比等等功能,未来更需要一个能够便捷下发命令,热加载配置变更的sFlow管理平台。 END 猜你喜欢 Jedis 参数异常引发服务雪崩案例分析 HBase Compaction 原理与线上调优实践 深入解析Redis的LRU与LFU算法实现 本文分享自微信公众号 - vivo互联网技术(vivoVMIC)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

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

大家好啊,GoFrame框架今天发布了v2.5.0正式版本啦!👏👏👏👏 本次版本主要是对已有功能组件以及开发工具上的改进工作。其中,开发工具新增了gf gen ctrl命令,以规范化定义、开发API接口,增加控制器、SDK的代码生成提高开发效率,以解决Golang工程开发中接口层面的规范和效率问题,详情请参考:接口规范-gen ctrl。其他变更内容请参考以下change log。Enjoy!🍺🍺🍺🍺🍺🍺🍺🍺 Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.5.0 完整代码变更:v2.4.0...v2.5.0,感谢本次所有的贡献开发者: 功能改进 gdb 改进ORM SQL日志记录,操作的字段按照数据表字段定义顺序进行操作。 改进HOOK方法实现,支持修改in参数的Table字段后修改执行的表名。 新增AllAndCount/ScanAndCount方法,用于实现便捷的分页查询场景。 新增Model.WhereOrNot/WhereOrPrefixNot条件方法。 gi18n 改进支持中文(Unicode)作为转译的键名。 gclient 新增Discovery链式操作方法,用于设置本次请求的服务发现组件。 ghttp 改进请求Context上下文处理,每次Context的变更将会影响底层的http.Request对象。以支持自定义HTTP Handler的数据交互场景。 新增Endpoints配置项支持,用于自定义Server的服务注册发现地址,而可以使用当前监听的地址。 goai 改进参数校验识别,如果参数为必须参数,则在OpenAPIv3结果中进行标记。 gsel 修复RoundRobin实现中Endpoints更新的锁机制问题。 glog 新增TimeFormat配置,用于自定义日志输出的时间格式:日志组件-配置管理 改进Rotation实现,支持短运行程序的日志文件切分。 gtag 新增GetGlobalEnums方法,用于获取全局注册的枚举类型。 gutil 新增DumpJson方法,用于将任意类型变量按照JSON格式化打印到终端,便于人工阅读。 gvalid 新增enums校验规则,用于实现枚举类型的自动识别和校验:数据校验-校验规则 社区组件 修复contrib/registry/polaris组件在多个服务端时的负载均衡问题。 改进contrib/drivers/pgsql在TableFields返回的Index字段序号统一从0开始。 改进contrib/nosql/redis新增用户配置项支持。 改进contrib/rpc/grpcx组件,grpcx.Server新增Endpoints配置项支持,用于自定义服务注册发现的地址。 新增contrib/sdk/httpclient组件,用于本次版本新增的gf gen ctrl命令生成的HTTP SDK代码文件依赖库。 新增contrib/trace/otlpgrpc及contrib/trace/otlphttp组件,用以实现基于OpenTelemetry的链路跟踪统一对接组件。 开发工具 新增gf gen ctrl命令,用于编译api定义目录,自动生成规范的controller、HTTP SDK代码:接口规范-gen ctrl 改进gf gen dao命令,新增TypeMapping特性,开发者可自定义数据表字段类型与生成的Go实体数据结构属性类型映射,并且可以方便引入第三方包类型(如decimal包以支持高精度类型):数据规范-gen dao 改进gf gen enums命令,其中的Prefix参数改为Prefixes,以支持多个生成枚举类型的包前缀指定:枚举维护-gen enums 改进gf gen service命令: 生成的service文件中,增加方法注释生成。 当生成的service文件中存在import冲突时,自动生成import alias。 改进命令行封装,暴露gfcmd.Command类型,便于开发者可以继承扩展自定义命令行功能。 改进gf docker命令,将构建文件参数设置为非必须(考虑兼容),未来将会只用于Docker构建,不再耦合二进制构建功能。如果有完整构建需求,建议未来结合gf build功能共同使用。并更新项目工程模板的make image命令,使用gf build+gf docker命令实现。 改进gf init命令,修复在部分场景下初始化项目覆盖已存在的.git/.gitignore目录及文件问题或权限报错问题。 改进gf up命令,修复在部分场景下的框架版本更新问题,以及在windows系统下的下载安装问题。 改进gf version命令,修复在部分场景下的框架版本识别问题。 修复gf gen pbentity命令,生成的proto文件实体数据结构的float32/float64/[]byte类型修改为float/double/bytes类型。 改进开发工具,部分命令可以不用显示配置importPrefix参数,如:gf gen dao/service

优秀的个人博客,低调大师

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

大家好啊,GoFrame框架今天发布了v2.4.0正式版本啦!👏👏👏👏 该版本最大的亮点在于提供了微服务开发的功能特性、开发工具以及工程脚手架,并且提供了完善的微服务开发文档!!微服务的组件设计仍然以接口设计为主,以保证良好的灵活性和扩展性,接口维护在框架主库中;具体的接口实现仍然以务实为主,并在社区组件中提供了常用的接口实现。 其实该版本特性功能早已Ready,但由于文档工作量较大,陆续花了1个月左右才相对完善,因此版本的发布时间也相应做了调整。我们认为文档和代码同等重要,是发布里程碑不可分割的部分。我们知道怎么用好,也希望能告诉大家怎么用好,才能更务实地帮助到更多的开发者。这也是GoFrame框架的文档能够逐步沉淀丰富的原因之一。此外,详尽的源码注释依旧英文为主,以帮助到海外使用者。官网文档仍然以中文为主,帮助到主要的大中国区开发团队。 赶快来看看我们都更新了什么东西吧!Enjoy!🍺🍺🍺🍺🍺🍺🍺🍺 完整代码变更:v2.3.0...v2.4.0 新特性 正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发 功能改进 数据库组件 gdb 修复跨库操作时自动查询表结构失败的问题:https://github.com/gogf/gf/issues/2338 修复Namespace配置在pgsql下未生效的问题。 修复使用新版统一配置,无法打开sqlite数据库文件的问题:https://github.com/gogf/gf/issues/2435 改进底层数据库操作返回逻辑,将底层错误通过gerror.Wrap后返回,以保证上层能获取底层自定义错误对象。 修复查询数据表时,底层unsigned整形字段转换为了signed整形类型的问题:https://github.com/gogf/gf/issues/2356 修复子查询时,多层Model作为子查询参数的解析问题:https://github.com/gogf/gf/issues/2339 改进时间维护功能,写入/更新/删除时间支持完整的时间(粒度到纳秒)写入。 修复在软删除场景下,给定空Where条件的未限制执行问题:https://github.com/gogf/gf/issues/2427 gredis 修复对象创建时的配置处理及对象初始化问题。 容器组件 garray 增加Filter方法,用于自定义遍历并过滤数组元素项。 增加RemoveValues方法,支持按照参数值批量删除元素项。 改进InsertBefore方法,支持批量的参数插入能力。 gmap 增加IsSubOf方法,用于判断当前map是否是指定map的子集。 gqueue 修复Len/Size长度计算问题:https://github.com/gogf/gf/issues/2509 修复Close方法的并发安全问题:https://github.com/gogf/gf/issues/2015 网络组件 gclient 增加SetDiscovery及SetBuilder方法,允许调用者自定义客户端的服务发现及负载均衡接口实现。 ghttp 改进支持参数接收时从Header/Cookie中读取指定参数,支持规范路由中的in标签定义读取Header/Cookie(in:header/cookie)。 改进ResponseWriter实现http.Flusher接口,简化使用者的Stream输出开发逻辑:数据返回-Stream返回 改进链路跟踪实现逻辑,避免内部读取提交内容发生错误时被忽略的问题。 改进参数读取逻辑,避免r.GetRequestMap()返回内容包含form-data表单body信息的问题:https://github.com/gogf/gf/issues/2261 改进内部上下文接收逻辑: 原有逻辑:去掉忽略底层Request的ctx并新建支持链路跟踪的ctx 最新逻辑:继承底层Request的ctx对象,并扩展该ctx支持链路跟踪特性 改进优雅关闭进程逻辑,允许自定义优雅关闭的超时时间。 改进配置功能,允许开发者配置自定义的服务注册接口实现对象。 系统组件 gcmd 改进AddObject方法,允许直接将指定的*Command或者规范编写的Object对象添加为子级命令。 gctx 修复GetInitCtx方法缺失TraceID的问题:上下文-gctx gfile 改进Temp方法,保持基础逻辑实现与标准库os.TempDir一致,避免单机多人协作时的临时目录冲突问题。 gtimer 创建定时器新增Quick选项,用以实现是否在添加定时器时同时执行指定的回调方法。 工具组件 gconv 修复Scan方法转换在部分场景下,如果属性为整型/浮点型数组时的转换失败问题:https://github.com/gogf/gf/issues/2391 修复Interfaces方法在属性为0的场景下,转换结构体直接返回[]的问题:https://github.com/gogf/gf/issues/2395 修复当json tag为,omitempty不带变量名称的结构体转换问题。 修复当转换目标类型为自定义基本类型的指针,而转换失败的问题。 修复gvar.Var类型转换为常见第三方包decimal.Decimal类型失败的问题:https://github.com/gogf/gf/issues/2584 改进Struct方法,解决当结构体的属性类型为time.Time/*time.Time,给定的转换值为非标准库支持的字符串如2022-12-15 16:11:34而引发的转换失败问题:https://github.com/gogf/gf/issues/2371 gtag 增加SetGlobalEnums/GetEnumsByType方法,用以实现自动化的Golang Enums管理。需要结合gf gen enums命令使用。 gutil 修复Dump方法在个别场景下的空指针报错问题:https://github.com/gogf/gf/issues/2487 gvalid 自定义校验方法参数新增Field字段,表示校验字段的名称,用以解决自定义校验错误提示的字段丢失问题:https://github.com/gogf/gf/issues/2499 社区组件 数据库驱动 改进dm/mysql组件,解决当时区配置中带有特殊字符(例如/)的QueryEscape问题。 NoSQL适配 修复redis组件配置中缺失的连接池配置参数。 服务注册发现 增加file注册发现组件,用于本地基于文件的服务注册发现,通常用于单节点测试。 完善etcd/polaris/zookeeper实现细节,并完善单测用例。 微服务脚手架 新增grpcx微服务组件,用于grpc通信协议的微服务开发:微服务开发 开发工具 增加gf gen pb命令,用于编译proto文件生成go pb文件:协议编译-gen pb 增加gf gen pbentity命令,用于自动生成数据库表的proto数据结构定义文件:数据表PB-gen pbentity 增加gf gen enums命令,用于解析指定目录go文件,并根据enum定义规范自动生成enums数据文件,主要用于OpenAPI接口文档展示(实验特性):枚举维护-gen enums 改进gf up命令,增加自动升级工具CLI的功能。 改进gf gen service命令,当方法注释后不再自动生成到接口定义文件中。 改进gf build命令,增加DumpENV选项,用于控制在编译时是否打印编译使用的环境信息,默认关闭。 改进gf docker命令,增加Tag选项,用以兼容旧版本。

优秀的个人博客,低调大师

Rancher Prime 2.7:向企业级容器管理平台深度进化

一直以来,在众多Kubernetes开源管理平台选项中,Rancher深受社区用户的青睐。 SUSE在确保开源产品持续灵活演进的同时,也致力于满足企业用户的使用场景,为此SUSE正式推出Rancher Prime。Rancher Prime是Rancher的一种分发版,核心功能代码均来自Rancher社区版,但更加重视安全方面的建设,并面向企业用户强化了相关功能和服务。 Rancher Prime为企业用户提供可信的镜像仓库,以获取核心安装介质。SUSE不仅优化加速了国内的下载链路,还将持续治理各个依赖组件镜像的CVE,从容器镜像角度提升软件供应链安全。这得益于SUSE在Linux和容器领域长期的工程化积累,几乎所有的Rancher Prime组件都基于SUSE BCI(Base Container Image)进行构建。BCI提供了标准的Linux Container Image和Language Container Image,并在镜像源头进行安全治理。在容器运行时方面,更有SUSE NeuVector进行产品级的整合,进一步提升Rancher Prime的综合安全能力。 Rancher Prime引入了UI Extension功能,提供了灵活的UI扩展方式。企业用户通常会有一些UI扩展需求,但又不希望影响其跟随Rancher主线版本进行演进,UI Extension机制可以很好地解决这一问题。 用户可以更新Extension的版本,并应用在不同阶段的Rancher Prime版本上,让Kubernetes管理平台和其他内部服务更好地融合,统一核心功能与扩展功能的操作体验。 SUSE中国一直奉行产品本地化的治理原则,面向国内企业的应用场景,Rancher Prime也更具优势。不仅增加了高性能容器网络、审计日志、GPU管理、Harbor对接等功能,在生态兼容方面也有很多增强。 对Native Cloud的支持。海外用户主要聚焦于AWS、Azure、GCP的整合使用,而Rancher Prime除了扩展这些公有云的中国区域支持外,还会额外对阿里云、腾讯云以及华为云进行支持。这并非简单的导入管理,而是对公有云托管集群的全生命周期支持。用户可以在Rancher Prime的UI上,统一管理来自不同云厂商的Kubernetes,包括集群的创建和销毁,以及节点组编辑和集群升级等操作。 对国产OS的支持。SUSE中国团队与欧拉开源社区建立了长期合作关系,并积极进行产品落地。在操作系统的支持矩阵上,Rancher Prime 引入了对openEuler Linux的支持,并将其列入长期支持列表中。Rancher Prime 2.7已完成了对openEuler 22.03和22.03 SP1版本的验证。 对ARM体系的支持。ARM在全球的部署比例正在攀升,公有云的ARM化趋势非常明显,这些变化逐步推动企业的部署环境向ARM转变。Rancher Prime 已经将 ARM适配作为持续工程化的一部分,并对国内主流ARM平台进行兼容,包括Kunpeng、Yitian、Ampera等处理器。

优秀的个人博客,低调大师

iDempiere 企业级 ERP/CRM/MFG/SCM/POS 10 Peace 发布

iDempiere 10 Peace于 2022 年 12 月 26 日发布。 从2012年10月31日发布1.0a至今,iDempiere已经陪伴我们走过了整整10个年头,在这个重要的里程碑上,官方把版本10命名为和平。感谢如此多元化的国际社区,感谢那些为iDempiere的强大、倾情奉献的人们。 具体请参看官方通知:https://www.idempiere.org/2022/12/26/idempiere-10-peace/ 这里罗列几个相对重要的更新: 仪表盘的重大改进,让我们的桌面更加现代化 使用拖拽方式上传文件 – 这是一个简单的功能,但却是一个痛点,如今终于对应好了 日期范围选择组件的更新 其他更新 笔者比较喜欢的更新是数据库连接池由c3p0更新为HikariCP 具体的功能更新内容 https://wiki.idempiere.org/en/Category:New_Features_w10 软件发布履历 2021 年 12 月 27 日发布了 9 Horizon 2020 年 12 月 23 日发布了 8.2 Phong 2019 年 11 月 22 日发布了 7.1 2019 年 01 月 05 日发布了 6.2 2018 年 11 月 04 日发布了 6.1 2017 年 10 月 31 日发布了 5.1 2016 年 10 月 31 日发布了 4.1 2015 年 10 月 31 日发布了 3.1 2014 年 10 月 31 日发布了 2.1 2013 年 10 月 31 日发布了 2.0 2013 年 06 月 27 日发布了 1.0c 2013 年 04 月 24 日发布了 1.0b 2012 年 10 月 31 日发布了 1.0a

优秀的个人博客,低调大师

Jmix 1.4 正式版发布 - 企业级少代码平台

Jmix 框架和 Studio 1.4 版本发布,这次发布带来了不少新功能以及框架和 Studio 的 Bug 修复: 主要新功能: 框架提供基于 Vaadin 23 Flow UI 的稳定版本全新 UI。 框架提供了安全性方面的一些新改进。 Studio 支持可视化创建行级角色。 Studio 支持自定义项目模板。 功能预览: 基于 Spring Authentication Server 的 Jmix AS。 Bug 修复: 这一次的新版本主要修复了 Flow UI 预览版中的很多问题。 提供一些回归问题的修复。 详细内容请参考中文官网发布的最新更新:https://docs.jmix.cn/jmix/whats-new/index.html Jmix 是一个覆盖应用程序全生命周期的 Java 少代码快速开发平台。以 Spring Boot 作为开源基础框架,提供过程中的 Studio 开发工具以及开箱即用的扩展组件。通过 Jmix 实现您的数字化愿景,无低代码平台限制,无供应商依赖,无需按用户付费。 资源:中国官网 中文论坛 技术博客

优秀的个人博客,低调大师

ShopXO 企业级免费开源商城 v2.2.7 正式发布

更新日志 1. 新增地址信息智能识别和地理位置选择识别(智能工具插件) 2. 新增系统类型,不同终端独立用户,可辨别客户端类型 3. 页面设计支持下载、导入、同步首页、商店在线安装 4. 导航添加支持选择页面设计 5. 移除老版本小程序源代码 6. 支付及售后优化 7. 支付日志记录,输入参数使用原始参数 8. 支付配置读取优化,统一方法 9. 小程序一键获取手机和地址导入增加可单独选择 10. web端联动地址初始化分离 11. 门店插件仓库逻辑优化、新增自动脚本 12. 多商户插件细节优化、页面设计支持同步首页 13. uniapp主题细节优化+bug修复 14. 客服插件细节优化+bug修复 15. 主题切换插件支持参数自动识别 16. 新增分身插件、独立小程序和支付配置、用户端商品数据限制 17. 地区数据库更新 效果图片(内置多种配色) 可视化DIY拖拽装修展示 PC端展示 后台管理展示

优秀的个人博客,低调大师

ShopXO 企业级免费开源商城 v2.2.6 正式发布

更新日志 1. 用户管理新增邀请人信息 2. 新增公共jshttp变量 3. 积分赠送脚本优化 4. url生成优化、新增站点域名配置 5. 短信和邮箱驱动优化 6. 下单0元校验逻辑优化 7. 订单售后审核钩子新增数据id 8. 购物车列表数据处理分离+css细节优化 9. 新增小程序订阅消息发送方法 10. 用户地址新增距离显示字段和订单发货售后提醒 11. 新增客服插件 12. 多商户适配客服插件+细节优化 13. 门店新增下单距离限制及细节优化 效果图片(内置多种配色) 可视化DIY拖拽装修展示 PC端展示 后台管理展示

优秀的个人博客,低调大师

ShopXO 企业级免费开源商城 v2.2.5 正式发布

更新日志 1. 物流插件新增菜鸟调试接口 2. 系统购买商品赠送积分优化、增加脚本按周期发放 3. 用户管理新增锁定积分修改 4. 分页组件新增提示信息 5. 下单支付优化 6. 可视化拖拽设计模块新增门店和博客 7. 新增挂账支付方式 8. 删除插件会删除附件修复 9. 动态列表组件支持模块引入单独配置 10. 去除微信圈子组件 11. 图片验证码精度优化 12. 多商户插件商家中心UI全新优化、独立后台、独立登录页 13. 门店支持独立登录页、扫描录单、新增扩展模块(货物寄存、挂账支付) 14. 智能工具插件新增商品详情信息提示 15. 支付宝+百度支付插件方法更新适配php8 效果图片(内置多种配色) 可视化DIY拖拽装修展示 PC端展示 后台管理展示

优秀的个人博客,低调大师

Go 企业级框架 GoFrame 发布全新 v2.0 版本

大家好啊!万众瞩目的GoFrame v2版本终于发布了正式版本!本次版本包含了大量改进以及新特性,同时新增了一些开创性的功能特性。 去年夏天到今年春天,一路以来的努力,希望大家满意。 感谢所有社区小伙伴的贡献,感谢社区朋友们的支持! 新的一年,我们继续,脚踏实地,不忘初心! 一、重要特性 1、新版工程设计 更加严谨规范 命名风格的规范 指针与值传递参数的规范 进一步简便、提高开发效率 新版开发工具支持工程规范准确落地 Entity/DAO/DO特性 面向接口化设计 更多详细介绍:工程开发设计 2、全链路跟踪特性 可观测性更进一步:大胆的前瞻以及决心 框架默认启用OpenTelemetry特性 框架默认创建TraceID,按照OpenTelemetry生成标准 框架核心组件均支持链路跟踪信息传递 日志组件支持链路信息打印 更多详细介绍:全链路跟踪设计 3、规范路由注册特性 规范化API按照结构化编程设计 规范化API接口方法参数风格定义 更加简化的路由注册与维护 统一接口返回数据格式设计 自动的API参数对象化接收与校验 自动生成基于标准OpenAPIv3协议的接口文档 自动生成SwaggerUI页面 更多详细介绍:路由注册-规范路由 4、全错误堆栈特性 框架层面所做的重大决定 框架所有组件错误均支持错误堆栈 详细介绍:全错误堆栈设计 5、全新错误码特性 采用接口化设计,扩展性高 提供可供选择的常见错误码 框架核心组价底层已增加错误码支持,例如根据error中的错误码可以识别是否DB执行错误 更多详细介绍:错误处理-错误码特性 6、组件接口化设计 自顶向下统一化的接口化设计 核心组件均采用接口化设计 更高的扩展性、可定制性 更多详细介绍:接口化与泛型设计 7、框架泛型的支持 什么是框架gvar泛型? 框架gvar泛型在框架核心组件中的大量使用 框架gvar泛型的重要价值 为什么不建议在顶层业务中使用泛型 更多详细介绍:接口化与泛型设计 8、ORM的大量改进 详细介绍:数据库ORM 9、其他重要改进 1)日志组件Handler特性 采用中间件设计 支持多个Handler处理 为开发者自定义日志处理提供了更灵活强大的支持 更多详细介绍:日志组件-Handler 2)日志组件颜色打印 在终端中默认输出颜色打印 默认不同级别不同的颜色,可配置 输出到文件/自定义Writer默认关闭,可通过相关配置开启 更多详细介绍:日志组件-颜色打印 4)调试模式介绍完善 更多详细介绍:调试模式 二、功能改进 1、数据组件 /database/gdb 废弃Table方法,统一使用Model方法创建Model对象。 废弃Model中的Struct/Structs方法,统一使用Scan方法执行查询结果到Struct对象/对象数组映射转换:ORM查询-Scan 废弃BatchInsert/BatchReplace/BatchSave方法,统一使用Insert/Replace/Save方法实现,内部自动实现参数类型识别采用单条写入还是批量写入:ORM链式操作-写入保存 增加DoFilter接口方法,用于ORM提交执行SQL&Args到底层driver之前的SQL&Args自定义过滤:ORM接口开发-回调处理 增加DoCommit接口方法,用于ORM提交执行SQL&Args到底层driver之前的自定义处理:https:// 增加ConvertDataForRecord接口方法,用于自定义的数据转换处理。ORM接口开发-回调处理 增加Raw方法,用于通过原始SQL语句构建Model对象,随后可以使用Model的链式操作以及各种特性:ORM链式操作-模型创建 增加Handler特性,用于自定义的Model对象修改,并返回新的Model对象,可轻松地复用常见的逻辑:ORM链式操作-Handler特性 增加Union/UnionAll特性,用于多条SQL/Model的查询结果合并:ORM查询-Union/UnionAll 增加With特性对条件查询以及排序语句的配置支持:模型关联-With特性 增加OnDuplicate/OnDuplicateEx方法,用于指定Save方法的更新/不更新字段:ORM链式操作-写入保存 增加Wheref/WhereOrf方法,用于带有格式化字符串语句的条件传递:ORM查询-Where/WhereOr/WhereNot 增加WhereLT/WhereLTE/WhereGT/WhereGTE以及WhereOrLT/WhereOrLTE/WhereOrGT/WhereOrGTE方法,用以为ORM添加常见的比较条件:https:// 增加WherePrefix/WhereOrPrefix方法,用以在为条件字段加上表前缀,常用于关联查询中:https:// 增加FieldsPrefix/FieldsExPrefix方法,用于为查询的字段增加自定义的表前缀,常用于关联查询中:https:// 增加FieldsCount/FieldsSum/FieldsMin/FieldsMax/FieldsAvg方法,用于增加常见的统一查询条件:https:// 增加LeftJoinOnField/RightJoinOnField/InnerJoinOnField方法,用于便捷关联带有相同字段名称的表:https:// 增加OmitEmptyWhere/OmitEmptyData方法,用于特定过滤Where条件和Data数据中的空值数据:ORM链式操作-字段过滤 增加OmitNil/OmitNilWhere/OmitNilData方法,用于特定过滤Where条件和Data数据中的nil数据:ORM链式操作-字段过滤 增加TimeZone配置项,用于数据库查询的自定义时区转换(目前支持mysql/pgsql):ORM使用配置 改进Cache缓存特性,支持增加准确的缓存参数控制:https:// 增加Close方法,用于手动关闭数据库连接:https:// 去掉ORM在使用没有自定义配置时默认100连接数的配置限制。 改进时间维护特性,不再自动过滤开发者提交的CreatedAt/UpdatedAt/DeletedAt相关参数,意味着开发者可以在ORM操作中自定义相关时间字段的更新。 改进数据库执行的SQL日志记录,增加影响行数记录:https:// 接口方法HandleSqlBeforeCommit名称修改为了DoCommit。 数据库方法操作统一增加context.Context作为第一必须参数。 修复gdb组件的With特性多层级查询失效问题。 删除查询结果类型Record/Result的所有已废弃的方法。 单元测试完善。 /database/gredis 采用适配器模式,以接口化设计重构该组件,以提高扩展性:Redis-接口化设计 默认提供基于第三方goredis包的适配器实现,增加了对Redis集群的支持:Redis-配置管理 由于集群特性的支持,配置文件格式发生改变:Redis-配置管理 2、网络组件 /net/ghttp 新增路由注册方式:路由注册-规范路由 默认将Request对象注入到ctx上下文对象中,并增加RequestFromCtx/g.RequestFromCtx方法获取ctx中的Request对象。 将Client功能特性进行抽离,封装为gclient组件:HTTPClient Server日志增加对ctx上下文链路信息打印的支持,并改进日志格式:链路跟踪 参数获取返回统一使用*gvar.Var泛型对象。 废弃ghttp中相关的HTTP Client直接操作方法,必须通过创建Client对象来实现客户端访问操作。 废弃Controller路由注册方式,并删除相关实现逻辑代码。 /net/gtrace 升级go.opentelemetry.io/otel到最新的正式版。 完善全新的链路跟踪使用文档:链路跟踪 3、系统组件 /os/glog 为推进可观测性特性,落实链路跟踪规范,所有日志打印方法均增加context.Context参数。 日志组件增加了Handler特性,采用中间件设计、支持多个Handler处理,为开发者自定义日志处理提供了更灵活强大的支持:日志组件-Handler 日志组件增加了对内容的颜色打印特性支持,在终端中默认输出颜色打印,输出到文件/自定义Writer默认关闭、可通过相关配置开启:日志组件-颜色打印 废弃Println方法。 文档更新:日志组件 /os/gres 新增Export方法用于将资源组件中的文件导出到本地磁盘:资源管理-方法介绍 /os/gfile 新增SizeFormat方法用于获取指定文件格式化后的大小字符串。 文档更新:文件管理-gfile /os/gcache 采用适配器模式,以接口化设计重构该组件,以提高扩展性:缓存管理-接口化设计 默认提供了基于进程内存的缓存实现:缓存管理-内存缓存 所有操作方法增加了context.Context上下文参数。 参数获取返回统一使用*gvar.Var泛型对象。 增加Must*方法,用以直接获取参数并在产生错误时直接panic。 /os/gcfg 采用适配器模式,以接口化设计重构该组件,以提高扩展性:配置管理-接口化设计 默认提供了基于文件系统的配置管理实现:配置管理 参数获取返回统一使用*gvar.Var泛型对象。 所有操作方法增加了context.Context上下文参数。 增加GetWithEnv方法,当配置适配器中无法查找到对应的参数时,将会自动读取环境变量中的相应参数:配置管理-配置读取 增加GetWithCmd方法,当配置适配器中无法查找到对应的参数时,将会自动读取命令行参数中的相应参数:配置管理-配置读取 增加Must*方法,用以直接获取参数并在产生错误时直接panic。 配置组件易用性改进,通过单例对象访问配置组件将会按照toml/yaml/yml/json/ini/xml文件后缀自动检索配置文件:配置管理 /os/gcmd 参数获取返回统一使用*gvar.Var泛型对象。 全新的多层级命令行管理方式,支持自动生成命令行使用提示:命令管理-命令行对象 增加基于对象的命令行管理方式,更适合大量的终端命令场景:命令管理-结构化参数 /os/genv 参数获取返回统一使用*gvar.Var泛型对象。 /os/gcron 定时任务方法定义增加context.Context参数。 所有创建定时任务方法增加context.Context参数。 文档更新:定时任务-gcron /os/gtime 废弃Second/Millisecond/Microsecond/Nanosecond包方法,使用Timestamp/TimestampMilli/TimestampMicro/TimestampNano方法替代。 文档更新:时间管理-gtime /os/gtimer 定时器方法定义增加context.Context参数。 所有创建定时器方法增加context.Context参数。 改进基于优先级队列数据结构存储的定时任务执行检测机制,提高执行性能。 文档更新:定时器-gtimer /os/grpool 回调方法定义增加context.Context参数。 goroutine池任务添加方法增加context.Context参数。 文档更新:协程管理-grpool /os/gsession gsession.Storage接口增加ctx上下文参数输输入,用于承接上下文信息、实现完整的链路跟踪。并未保证严谨性增加error返回参数:Session 参数获取返回统一使用*gvar.Var泛型对象。 /os/gview 模板解析方法统一增加context.Context参数。 增加plus/minus/times/divide四则运算内置模板方法。 文档更新:模板引擎 /os/gstructs 将框架internal中的structs包开放,命名为gstructs,用于struct反射操作的高级使用包:对象信息-gstructs 4、错误处理 /errors/gerror 增加Message方法,用于获取指定错误码的错误信息。 增加CodeMessage方法,用于获取指定错误的错误码信息。 增加NewOption方法,用于自定义配置的错误对象创建,献给框架高级玩家。 增加HasStack方法,用于判断给定的error接口对象是否实现(包含)了堆栈信息。 错误码从整型改为接口对象,以实现可定制性并提高可扩展性,详情参考gcode组件介绍:错误处理-错误码特性 提高易用性,改进NewCode/NewCodeSkip/WrapCode/WrapCodeSkip方法,调增text输入参数为非必须,默认使用对应错误码的Message信息。 /errors/gcode 增加gcode错误码组件,提供可定制型和扩展性极强的错误码管理,结合gerror组件实现强大的错误处理:错误处理-错误码使用 5、其他组件 /container/garray 各数组类型统一增加At方法,用于直接获取返回索引位置的数据。 文档更新:数组类型-方法介绍 /debug/gdebug 增加TestDataContent方法,用于直接获取测试包下testdata目录下指定路径文件内容。 文档更新:调试功能-gdebug /encoding/gjson 废弃大部分的Get*方法,统一使用Get方法获取指定pattern的内容,并统一返回*gvar.Var泛型对象,开发者根据业务场景自行通过对应方法便捷转换为特定类型变量。 增加若干Must*方法。 使用文档全面更新:https:// /frame/g 增加ModelRaw方法,用于便捷创建基于原生SQL的数据库Model对象。 为通过/frame/g模块创建的ORM对象增加logger配置,通过自动读取配置文件,自动初始化:ORM使用配置 为通过/frame/g模块创建的Server对象增加logger配置,通过自动读取配置文件,自动初始化:服务配置 /frame/gmvc 标记废除gmvc耦合模块,未来不再进一步支持。 /util/gutil 改进实现Dump方法,不再使用json包实现类型打印,而是自实现了对任意类型的打印特性,并且支持打印详细的数据类型:工具方法-gutil 增加SliceToMapWithColumnAsKey方法,用以将Slice按照一定规则转换为Map。 /utils/gvalid 增加bail校验规则,以及Bail链式操作方法,用以在数据校验不通过时直接退出校验,不再执行后续校验规则。 增加datetime校验规则,用以校验常用日期时间类型,其中日期之间支持的连接符号只支持-,格式如:2006-01-02 12:00:00。 去掉包校验方法,统一使用链式操作实现数据校验。 所以校验方法增加context.Context参数。 全新、超完善的数据校验组件使用文档:数据校验 其他大量的改进细节,这里不再赘述,感兴趣的小伙伴可参阅官网goframe.org 三、CLI工具链 采用全新gcmd命令行对象封装重构实现。 改进init命令,支持SingleRepo/MonoRepo两种仓库初始化。并且项目初始化不再依赖远端仓库。 改进gen dao命令,采用全新的V2工程化设计,自动生成entity/dao/dto代码文件。 去掉update命令,工具的更新统一走https://github.com/gogf/gf-cli 去掉get命令。 全新文档:开发工具

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册