小工具知识网

当前位置: 首页 > 行业知识 > Ainx的全局配置

行业知识

Ainx的全局配置

2026-10-21 11:49:43 来源:互联网转载

作者���介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。

本文收录于Ainx系列,大家有兴趣的可以看一看

相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看

Java并发编程系列,设计模式系列、go web开发框架 系列正在发展中,喜欢Java,GoLang,Rust,的朋友们可以关注一下哦!

本文大部分都是借鉴刘丹冰大佬的zinx框架和文章,更推荐大家去读大佬的原文,本文只是个人学习的记录

文章目录

  • Ainx的全局配置
    • Ainx-V0.4增添全局配置代码实现
      • 创建全局参数文件
      • 提供init初始化方法

        Ainx的全局配置

        随着架构逐步的变大,参数就会越来越多,为了省去我们后续大频率修改参数的麻烦,接下来Zinx需要做一个加载配置的模块,和一个全局获取Ainx参数的对象。

        Ainx-V0.4增添全局配置代码实现

        我们先做一个简单的加载配置模块,要加载的配置文件的文本格式,就选择比较通用的yaml格式,配置信息暂时如下:

        config.yaml

        Name:          AinxServerAppVersion:       V0.4TcpPort:       8080Host:          127.0.0.1MaxConn:       12000MaxPacketSize: 4096

        现在我们需要建立一个全局配置信息的对象

        创建全局参数文件

        创建ainx/utils文件夹,在下面创建globalload.go文件,暂时编写如下。

        ainx/utils/globalload.go

        package utilsimport ("ainx/ainterface""fmt""github.com/spf13/viper")/*存储一切有关Zinx框架的全局参数,供其他模块使用一些参数也可以通过 用户根据 zinx.json来配置*/type GlobalSet struct {TcpServer ainterface.IServer //当前Zinx的全局Server对象Host      string             //当前服务器主机IPTcpPort   string             //当前服务器主机监听端口号Name      string             //当前服务器名称Version   string             //当前Zinx版本号MaxPacketSize uint32 //都需数据包的最大值MaxConn       uint32 //当前服务器主机允许的最大链接个数}/*定义一个全局的对象*/var GlobalSetting *GlobalSet

        提供init初始化方法

        然后我们提供一个init()方法,目的是初始化GlobalSetting 对象,和加载服务端应用配置文件在根目录下config.yaml,这里为了支持对yaml文件的解析,引入了第三方库viper,具体用法可以看中文文档https://golang.halfiisland.com/community/pkgs/Viper.html

        zinx/utils/globalobj.go

        // todo 未来支持多种配置文件格式// 读取用户的配置文件func (g *GlobalSet) Reload() {vp := viper.New()          //创建viper对象vp.SetConfigName("config") //配置文件的名称vp.AddConfigPath("./")vp.SetConfigType("yaml") //配置文件的拓展名err := vp.ReadInConfig() //读取配置文件的内容if err != nil {panic(err)}//将json数据解析到struct中err = vp.Unmarshal(&GlobalSetting)if err != nil {fmt.Println(GlobalSetting.Host)return}}/*提供init方法,默认加载*/func init() {//初始化GlobalObject变量,设置一些默认值GlobalSetting = &GlobalSet{Name:          "AinxServerApp",Version:       "V0.4",TcpPort:       "8080",Host:          "0.0.0.0",MaxConn:       12000,MaxPacketSize: 4096,}}

        目录结构

        │  config.yaml│├─ainterface│      iconnection.go│      irequest.go│      irouter.go│      iserver.go│├─anet│      connection.go│      request.go│      router.go│      server.go│      server_test.go│├─examples│  └─v03│      ├─client│      │      Client.go│      ││      └─server│              Server.go│└─utils        globalload.go

上一篇:东莞证券机房在哪里?

下一篇:Win7打印机共享至Win10,轻松操作指南