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.pswp.cn/news/719441.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719441.shtml
英文地址,請注明出處:http://en.pswp.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;適用于對噪聲敏感…