yaml中的錨點和引用

2022-11-24 18:36:01 字數 1601 閱讀 8739

專案引入yaml語言來寫配置檔案,最近發現利用其錨點&和引用*的功能,可以極大減少配置檔案中的重複內容,將相同配置內容收斂到錨點處,修改時,只需要修改錨點處的內容,即可在所有引用處生效。

yaml基礎參考自阮老師的blog:

具體練習也是使用阮老師推薦的

舉例,在server對redis的訪問配置中,針對不同的db可能會寫成如下配置:

user:

host: 127.0.0.1

db: 8

book:

host: 127.0.0.1

db: 9

comment:

host: 127.0.0.1

db: 10

此處host其實配置都是一樣的,只有db不一樣,通過錨點和引用的功能,可以寫成如下:

localhost: &localhost1

host:

127.0.0.1

user:

<<: *localhost1

db:

8book:

<<: *localhost1

db:

9comment:

<<: *localhost1

db:

10

其中&表示將localhost1作為localhost的別名,*標識取別名localhost1對應的value,《表示將*localhost1代表的map合併入當前map資料。

針對遠端服務多臺機器的訪問配置,針對不同情況可能存在不同的優先順序訪問順序,可以寫成如下形式:

server_order_0:

-- 127.0.0.1

- 8050

-- 10.0.1.1

- 8050

-- 10.0.2.1

- 8050

server_order_1:

-- 10.0.1.1

- 8050

-- 127.0.0.1

- 8050

-- 10.0.2.1

- 8050

server_order_2:

-- 10.0.2.1

- 8050

-- 10.0.1.1

- 8050

-- 127.0.0.1

- 8050

利用錨點和引用,可以寫為下面的配置:

server0: &server0

- 127.0.0.1

- 8050

server1: &server1

- 10.0.1.1

- 8050

server2: &server2

- 10.0.2.1

- 8050

server_order_0:

-*server0

-*server1

-*server2

server_order_1:

-*server1

-*server0

-*server2

server_order_2:

-*server2

-*server1

-*server0

C 中的引用 const引用和非const引用

關於引用 定義一個引用的時候必須要進行初始化,否則編譯錯誤。當引用初始化以後,只要改引用存在,它就繫結到初始化時指向的物件。不可能將引用繫結到另一個物件。非const引用只能繫結到與該引用同型別的物件。const引用可以繫結到不同但相關型別的物件,還可以繫結到右值。1 legal for const...

Python中的傳值和引用

內容不對請指正!十分感謝!python中一切皆物件。當我們賦值時 a 1 其實是先建立了一個整數常量1 也是一個物件,且已經為它分配了記憶體 然後將它的地址傳遞給了a 接下來檢視a和b的地址 id a id b 會發現兩者相同 所以如果執行 a 2 a的地址就會改變,再執行 a 1 之後,a的地址又...

Python中yaml和json檔案的讀取和應用

python對yaml和json檔案的讀取 yaml檔案讀取 首先建立一個yaml檔案test.yaml import yaml 引入包 f open path 建立python的檔案物件f,開啟yaml檔案到檔案物件f 注 這一操作在開啟所有第三方檔案格式的時候都要做,不一定是yaml檔案 tes...