Ainx的全局配置

在这里插入图片描述

📕作者简介: 过去日记,致力于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:          AinxServerApp
Version:       V0.4
TcpPort:       8080
Host:          127.0.0.1
MaxConn:       12000
MaxPacketSize: 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
│
└─utilsglobalload.go

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

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

相关文章

js中的闭包

理解 函数内部可以访问其外函数中的作用域 作用 创建私有变量延长变量的声明周期一般函数中的变量在函数返回之后就会被销毁,但是闭包会保存使用的变量,即便是上下文被摧毁了,使用的变量依旧存在 闭包的用途 柯里化函数的目的就是在避免重复的调用变量案例 求一个长方形的…

ROS2 Python环境变量PYTHONPATH设置

文章目录 引题解决方法方法一 将三方库与pkg放在一起方法二 将三方库放入pythonpath目录 引题 ROS2在执行ros2 pkg create --build-type ament_python **创建python包时,有时候会涉及外部库的导入,这里讲解一下如何配置PYTHONPATH变量让程序顺利找到外部…

【S32DS报错】-7-程序进入HardFault_Handler,无法正常运行

【S32K3_MCAL从入门到精通】合集: S32K3_MCAL从入门到精通https://blog.csdn.net/qfmzhu/category_12519033.html 问题背景: 在S32DS IDE中使用PEmicro(Multilink ACP,Multilink Universal,Multilink FX&#xff09…

【网站项目】182在线作业管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

程序员职业迷宫:选择你的道路,开启技术之旅

在这个数字化飞速发展的时代,程序员已经成为了一个备受瞩目的职业。他们就像是现代社会中的魔法师,用代码搭建起一个又一个令人惊叹的数字世界。然而,对于许多初入行的程序员来说,面对前端的花园、后端的洞穴、数据科学的密室&…

【Python】进阶学习:pandas--describe()函数的使用介绍

🐍【Python】进阶学习:pandas——describe()函数的使用介绍 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&am…

绘图机器 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 绘图机器的绘图笔初始位置在原点(0, 0),机器启动后其绘图笔按下面规则绘制直线: 1)尝试沿着横向坐标轴…

小程序海报生成海报【vue】

文章目录 1、创建海报的基本逻辑2、用canvas绘制文字3、绘制矩形4、绘制圆形5、绘制圆角矩形6、绘制图片7、执行绘制8、完整的代码 1、创建海报的基本逻辑 1、先创建dom元素 wrapperHeight是根据海报的内容计算出来海报的高度 <view class"preview-card-wrap" ta…

支持向量机 SVM | 线性可分:硬间隔模型公式推导

目录 一. SVM的优越性二. SVM算法推导小节概念 在开始讲述SVM算法之前&#xff0c;我们先来看一段定义&#xff1a; 支持向量机(Support VecorMachine, SVM)本身是一个二元分类算法&#xff0c;支持线性分类和非线性分类的分类应用&#xff0c;同时通过OvR或者OvO的方式可以应用…

长贵对赵本山说:你需要我们家大脚,我立马给你配双大鞋!

长贵对赵本山说&#xff1a;你需要我们家大脚&#xff0c;我立马给你配双大鞋&#xff01; --小品《乡村爱情》&#xff08;中2&#xff09;的台词 表演者&#xff1a;赵本山 于月仙 王小利 唐鉴军等 &#xff08;接上&#xff09; 哈哈哈 伊拉克啊 这地方也不产这玩意吧 …

Chat GPT:AI聊天机器人的革命性突破!

一、引言 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的发展日新月异&#xff0c;其中最具代表性的成果之一便是Chat GPT。这款基于自然语言处理&#xff08;NLP&#xff09;技术的聊天机器人&#xff0c;以其高度智能、灵活多变的特点&#xff0c;迅速吸引了全…

笔记74:在SLAM建图过程中,为什么要使用【障碍物点云配准算法】和【里程计估算算法】结合的方法

仅使用【障碍物点云配准算法】&#xff0c;很容易导致在一条长通道中&#xff0c;因为前后两帧的雷达点云图过于相似&#xff0c;导致特征匹配一直完全重合&#xff0c;使得机器人建图一直停留在原地&#xff0c;但实体机器人早就沿着通道跑向远端了&#xff1b; 使用Hector_ma…

(学习日记)2024.03.02:UCOSIII第四节:创建任务

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

js 精确计算(解决js四则运算精度缺失问题)

js的小数的运算&#xff0c;可能会得到一个不精确的结果&#xff0c;因为所有的运算都要转换成二进制去计算&#xff0c;然而&#xff0c;二进制无法精确表示1/10。 var a 0.1 0.2; console.log(a); //打印结果&#xff1a;0.30000000000000004因此需要使用以下方法实现精确…

这是开玩笑吗?加个工具,WPS与Excel表格变成了应用系统

表格处理数据简单快捷&#xff0c;是个人用户的首选。然而&#xff0c;当企业长期使用&#xff0c;成本表、客户表、销售表等堆积如山&#xff0c;寻找所需表格如同大海捞针&#xff0c;稍有不慎便可能导致数据丢失、混乱。即便使用WPS和Excel这样的表格软件&#xff0c;处理大…

代码随想录算法训练营第三十六天 | LeeCode 435. 无重叠区间 ,763.划分字母区间 , 56. 合并区间

435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:static bool cmp(const vector<int> &a,const vector<int> &b){if(a[0]b[0]) return a[1]<b[1];return a[0]<b[0];} public:int eraseOverlapIntervals(vector&l…

C#进阶高级语法之LINQ:查询操作的便利性与效率提升

引言&#xff1a; 在C#编程中&#xff0c;LINQ&#xff08;Language-Integrated Query&#xff09;是一种强大的查询语言&#xff0c;它被集成在.NET框架中&#xff0c;允许开发者对各种数据源进行查询和操作。LINQ的出现&#xff0c;极大地提升了C#在数据处理方面的能力&#…

回溯难题(算法村第十八关黄金挑战)

复原 IP 地址 93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 &q…

IDEA中使用git提交代码时,有.class文件怎么避免

在IDEA中使用git提交代码时&#xff0c;git把.class文件都给我放进来了&#xff0c;而我并不想要提交.class文件 我要提交的是.java文件 应该怎么设置呢 解决方案&#xff0c;点击整个项目的生命周期中的clean之前&#xff0c;你会发现git提交栏的.class文件都不见了。

常用LDO型号

常用LDO型号 常用LDO型号-国产&进口 常用的LDO&#xff08;低压差线性稳压器&#xff09;型号有以下这些&#xff1a; LM2937及LM2937-N&#xff1a;这两款是TI&#xff08;德州仪器&#xff09;的产品&#xff0c;其中LM2937-N为低噪声版本&#xff0c;适用于对噪声敏感…