免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

go語言模板語法條件渲染 go語言模板引擎

go語言語法(基礎(chǔ)語法篇)

import "workname/packetfolder"

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、廣州網(wǎng)站維護、網(wǎng)站推廣。

導(dǎo)入多個包

方法調(diào)用 包名.函數(shù)//不是函數(shù)或結(jié)構(gòu)體所處文件或文件夾名

packagename.Func()

前面加個點表示省略調(diào)用,那么調(diào)用該模塊里面的函數(shù),可以不用寫模塊名稱了:

當(dāng)導(dǎo)入一個包時,該包下的文件里所有init()函數(shù)都會被執(zhí)行,然而,有些時候我們并不需要把整個包都導(dǎo)入進(jìn)來,僅僅是是希望它執(zhí)行init()函數(shù)而已。下劃線的作用僅僅是為了調(diào)用init()函數(shù),所以無法通過包名來調(diào)用包中的其他函數(shù)

import _ package

變量聲明必須要使用否則會報錯。

全局變量運行聲明但不使用。

func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值a 類型a, 返回值b 類型b,...)

func 函數(shù)名 (參數(shù)1,參數(shù)2,...) (返回值類型1, 返回值類型2,...)

func (this *結(jié)構(gòu)體名) 函數(shù)名(參數(shù) string) (返回值類型1, 返回值類型2){}

使用大小來區(qū)分函數(shù)可見性

大寫是public類型

小寫是private類型

func prifunc int{}

func pubfunc int{}

聲明靜態(tài)變量

const value int

定義變量

var value int

聲明一般類型、接口和結(jié)構(gòu)體

聲明函數(shù)

func function () int{}

go里面所有的空值對應(yīng)如下

通道類型

內(nèi)建函數(shù) new 用來分配內(nèi)存,它的第一個參數(shù)是一個類型,不是一個值,它的返回值是一個指向新分配類型零值的指針

func new(Type) *Type

[這位博主有非常詳細(xì)的分析]

Go 語言支持并發(fā),我們只需要通過 go 關(guān)鍵字來開啟 goroutine 即可。

goroutine 是輕量級線程,goroutine 的調(diào)度是由 Golang 運行時進(jìn)行管理的。

同一個程序中的所有 goroutine 共享同一個地址空間。

語法格式如下:

通道(channel)是用來傳遞數(shù)據(jù)的一個數(shù)據(jù)結(jié)構(gòu)。

通道的聲明

通道可用于兩個 goroutine 之間通過傳遞一個指定類型的值來同步運行和通訊。操作符 - 用于指定通道的方向,發(fā)送或接收。如果未指定方向,則為雙向通道。

[這里有比較詳細(xì)的用例]

go里面的空接口可以指代任何類型(無論是變量還是函數(shù))

聲明空接口

go里面的的強制類型轉(zhuǎn)換語法為:

int(data)

如果是接口類型的強制轉(zhuǎn)成其他類型的語法為:

go里面的強制轉(zhuǎn)換是將值復(fù)制過去,所以在數(shù)據(jù)量的時候有比較高的運行代價

【實踐】2.Prometheus命令和配置詳解

Prometheus配置方式有兩種:

(1)命令行,用來配置不可變命令參數(shù),主要是Prometheus運行參數(shù),比如數(shù)據(jù)存儲位置

(2)配置文件,用來配置Prometheus應(yīng)用參數(shù),比如數(shù)據(jù)采集,報警對接

不重啟進(jìn)程配置生效方式也有兩種:

(1)對進(jìn)程發(fā)送信號SIGHUP

(2)HTTP POST請求,需要開啟--web.enable-lifecycle選項curl -X POST

配置文件格式是yaml格式,說明:

.yml或者.yaml 都是 yaml格式的文件,

yaml格式的好處: 和json交互比較容易

python/go/java/php 有yaml格式庫,方便語言之間解析,并且這種格式存儲的信息量很大。

命令行可用配置可通過prometheus -h來查看。

配置文件使用yml格式,配置文件中一級配置項如下,說明參考#備注內(nèi)容。

配置文件中通用字段值格式

boolean: 布爾類型值為true和false

scheme: 協(xié)議方式包含http和https

原始配置文件內(nèi)容:

全局默認(rèn)的數(shù)據(jù)拉取間隔

全局默認(rèn)的單次數(shù)據(jù)拉取超時,當(dāng)報context deadline exceeded錯誤時需要在特定的job下配置該字段。

全局默認(rèn)的規(guī)則(主要是報警規(guī)則)拉取間隔

該服務(wù)端在與其他系統(tǒng)對接所攜帶的標(biāo)簽

該字段配置與Alertmanager進(jìn)行對接的配置

樣例:

上面的配置中的 alert_relabel_configs 是指警報重新標(biāo)記在發(fā)送到Alertmanager之前應(yīng)用于警報。 它具有與目標(biāo)重新標(biāo)記相同的配置格式和操作,外部標(biāo)簽標(biāo)記后應(yīng)用警報重新標(biāo)記,主要是針對集群配置。

這個設(shè)置的用途是確保具有不同外部label的HA對Prometheus服務(wù)端發(fā)送相同的警報信息。

Alertmanager 可以通過 static_configs 參數(shù)靜態(tài)配置,也可以使用其中一種支持的服務(wù)發(fā)現(xiàn)機制動態(tài)發(fā)現(xiàn),我們上面的配置是靜態(tài)的單實例。

此外, relabel_configs 允許從發(fā)現(xiàn)的實體中選擇 Alertmanager,并對使用的API路徑提供高級修改,該路徑通過 __alerts_path__ 標(biāo)簽公開。

完成以上配置后,重啟Prometheus服務(wù),用以加載生效,也可以使用熱加載功能,使其配置生效。然后通過瀏覽器,訪問 就可以看 inactive pending firing 三個狀態(tài),沒有警報信息是因為我們還沒有配置警報規(guī)則 rules 。

這里定義和prometheus集成的alertmanager插件,用于監(jiān)控報警。后續(xù)會單獨進(jìn)行alertmanger插件的配置、配置說明、報警媒介以及route路由規(guī)則記錄。

此項配置和 scrape_configs 字段中 relabel_configs 配置一樣,用于對需要報警的數(shù)據(jù)進(jìn)行過濾后發(fā)向 Alertmanager

說明

relabel-configs的配置允許你選擇你想抓取的目標(biāo)和這些目標(biāo)的標(biāo)簽是什么。所以說如果你想要抓取這種類型的服務(wù)器而不是那種,可以使用relabel_configs

相比之下,metric_relabel_configs是發(fā)生在抓取之后,但在數(shù)據(jù)被插入存儲系統(tǒng)之前使用。因此如果有些你想過濾的指標(biāo),或者來自抓取本身的指標(biāo)(比如來自/metrics頁面)你就可以使用metric_relabel_configs來處理。

該項目主要用來配置不同的 alertmanagers 服務(wù),以及Prometheus服務(wù)和他們的鏈接參數(shù)。 alertmanagers 服務(wù)可以靜態(tài)配置也可以使用服務(wù)發(fā)現(xiàn)配置。Prometheus以pushing 的方式向alertmanager傳遞數(shù)據(jù)。

alertmanager 服務(wù)配置和target配置一樣,可用字段如下

這個主要是用來設(shè)置告警規(guī)則,基于設(shè)定什么指標(biāo)進(jìn)行報警(類似觸發(fā)器trigger)。這里設(shè)定好規(guī)則以后,prometheus會根據(jù)全局global設(shè)定的evaluation_interval參數(shù)進(jìn)行掃描加載,規(guī)則改動后會自動加載。其報警媒介和route路由由alertmanager插件實現(xiàn)。

樣例:

"first_rules.yml"樣例:

Prometheus 支持兩種類型的 Rules ,可以對其進(jìn)行配置,然后定期進(jìn)行運算:recording rules 記錄規(guī)則 與 alerting rules 警報規(guī)則,規(guī)則文件的計算頻率與警報規(guī)則計算頻率一致,都是通過全局配置中的 evaluation_interval 定義。

不論是recording rules還是alerting rules都要在組里面。

要在Prometheus中使用Rules規(guī)則,就必須創(chuàng)建一個包含必要規(guī)則語句的文件,并讓Prometheus通過Prometheus配置中的rule_files字段加載該文件,前面我們已經(jīng)講過了。 其實語法都一樣,除了 recording rules 中的收集的指標(biāo)名稱 record: string 字段配置方式略有不同,其他都是一樣的。

配置范例:

recording rules 是提前設(shè)置好一個比較花費大量時間運算或經(jīng)常運算的表達(dá)式,其結(jié)果保存成一組新的時間序列數(shù)據(jù)。當(dāng)需要查詢的時候直接會返回已經(jīng)計算好的結(jié)果,這樣會比直接查詢快,同時也減輕了PromQl的計算壓力,同時對可視化查詢的時候也很有用,可視化展示每次只需要刷新重復(fù)查詢相同的表達(dá)式即可。

在配置的時候,除卻 record: string 需要注意,其他的基本上是一樣的,一個 groups 下可以包含多條規(guī)則 rules ,Recording 和 Rules 保存在 group 內(nèi),Group 中的規(guī)則以規(guī)則的配置時間間隔順序運算,也就是全局中的 evaluation_interval 設(shè)置。

配置范例:

上面的規(guī)則其實就是根據(jù) record 規(guī)則中的定義,Prometheus 會在后臺完成 expr 中定義的 PromQL 表達(dá)式周期性運算,以 job 為維度使用 sum 聚合運算符 計算 函數(shù)rate 對http_requests_total 指標(biāo)區(qū)間 10m 內(nèi)的增長率,并且將計算結(jié)果保存到新的時間序列 job:http_requests_total:rate10m 中, 同時還可以通過 labels 為樣本數(shù)據(jù)添加額外的自定義標(biāo)簽,但是要注意的是這個 lables 一定存在當(dāng)前表達(dá)式 Metrics 中。

模板是在警報中使用時間序列標(biāo)簽和值展示的一種方法,可以用于警報規(guī)則中的注釋(annotation)與標(biāo)簽(lable)。模板其實使用的go語言的標(biāo)準(zhǔn)模板語法,并公開一些包含時間序列標(biāo)簽和值的變量。這樣查詢的時候,更具有可讀性,也可以執(zhí)行其他PromQL查詢 來向警報添加額外內(nèi)容,ALertmanager Web UI中會根據(jù)標(biāo)簽值顯示器警報信息。

{{ $lable.lablename}} 可以獲取當(dāng)前警報實例中的指定標(biāo)簽值

{{ $value }} 變量可以獲取當(dāng)前PromQL表達(dá)式的計算樣本值。

調(diào)整好rules以后,我們可以使用 curl -XPOST 或者 對Prometheus服務(wù)重啟,讓警報規(guī)則生效。

這個時候,我們可以把閾值調(diào)整為 50 來進(jìn)行故障模擬操作,這時在去訪問UI的時候,當(dāng)持續(xù)1分鐘滿足警報條件,實際警報狀態(tài)已轉(zhuǎn)換為 Firing,可以在 Annotations中看到模板信息 summary 與 description 已經(jīng)成功顯示。

規(guī)則檢查

拉取數(shù)據(jù)配置,在配置字段內(nèi)可以配置拉取數(shù)據(jù)的對象(Targets),job以及實例

定義job名稱,是一個拉取單元。每個job_name都會自動引入默認(rèn)配置如

這些也可以在單獨的job中自定義

服務(wù)端拉取過來的數(shù)據(jù)也會存在標(biāo)簽,配置文件中也會有標(biāo)簽,這樣就可能發(fā)生沖突。

true就是以抓取數(shù)據(jù)中的標(biāo)簽為準(zhǔn)

false就會重新命名抓取數(shù)據(jù)中的標(biāo)簽為“exported”形式,然后添加配置文件中的標(biāo)簽

切換抓取數(shù)據(jù)所用的協(xié)議

定義可選的url參數(shù)

每次抓取數(shù)據(jù)請求的認(rèn)證信息

password和password_file互斥只可以選擇其一

bearer_token和bearer_token_file互斥只可以選擇其一

抓取ssl請求時證書配置

通過代理去主去數(shù)據(jù)

Prometheus支持多種服務(wù)現(xiàn)工具,詳細(xì)配置這里不再展開

更多參考官網(wǎng): n/configuration/

服務(wù)發(fā)現(xiàn)來獲取抓取目標(biāo)為動態(tài)配置,這個配置項目為靜態(tài)配置,靜態(tài)配置為典型的targets配置,在改配置字段可以直接添加標(biāo)簽

采集器所采集的數(shù)據(jù)都會帶有l(wèi)abel,當(dāng)使用服務(wù)發(fā)現(xiàn)時,比如consul所攜帶的label如下:

這些lable是數(shù)據(jù)篩選與聚合計算的基礎(chǔ)。

抓取數(shù)據(jù)很繁雜,尤其是通過服務(wù)發(fā)現(xiàn)添加的target。所以過濾就顯得尤為重要,我們知道抓取數(shù)據(jù)就是抓取target的一些列metrics,Prometheus過濾是通過對標(biāo)簽操作操現(xiàn)的,在字段relabel_configs和metric_relabel_configs里面配置,兩者的配置都需要relabel_config字段。該字段需要配置項如下

target配置示例

target中metric示例

target中metric示例

使用示例

由以上可知當(dāng)使用服務(wù)發(fā)現(xiàn)consul會帶入標(biāo)簽__meta_consul_dc,現(xiàn)在為了表示方便需要將該標(biāo)簽變?yōu)閐c

需要做如下配置,這里面action使用的replacement

過濾采集target

為了防止Prometheus服務(wù)過載,使用該字段限制經(jīng)過relabel之后的數(shù)據(jù)采集數(shù)量,超過該數(shù)字拉取的數(shù)據(jù)就會被忽略

Prometheus可以進(jìn)行遠(yuǎn)程讀/寫數(shù)據(jù)。字段remote_read和remote_write

(1)Prometheus 配置詳解

(2)Prometheus配置文件prometheus.yml 四個模塊詳解

(3)官方文檔說明

(4)Prometheus監(jiān)控神器-Rules篇

(5)Prometheus監(jiān)控神器-Alertmanager篇(1)

(6)Prometheus監(jiān)控神器-Alertmanager篇(2)

Go語言基礎(chǔ)語法(一)

本文介紹一些Go語言的基礎(chǔ)語法。

先來看一個簡單的go語言代碼:

go語言的注釋方法:

代碼執(zhí)行結(jié)果:

下面來進(jìn)一步介紹go的基礎(chǔ)語法。

go語言中格式化輸出可以使用 fmt 和 log 這兩個標(biāo)準(zhǔn)庫,

常用方法:

示例代碼:

執(zhí)行結(jié)果:

更多格式化方法可以訪問中的fmt包。

log包實現(xiàn)了簡單的日志服務(wù),也提供了一些格式化輸出的方法。

執(zhí)行結(jié)果:

下面來介紹一下go的數(shù)據(jù)類型

下表列出了go語言的數(shù)據(jù)類型:

int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。

常量是在程序編譯時就確定下來的值,程序運行時無法改變。

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

Go 語言的運算符主要包括算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、賦值運算符以及指針相關(guān)運算符。

算術(shù)運算符:

關(guān)系運算符:

邏輯運算符:

位運算符:

賦值運算符:

指針相關(guān)運算符:

下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。

if語法格式如下:

if ... else :

else if:

示例代碼:

語法格式:

另外,添加 fallthrough 會強制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。

示例代碼:

執(zhí)行結(jié)果:

下面介紹幾種循環(huán)語句:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

也可以通過標(biāo)記退出循環(huán):

--THE END--

81.go + vue實現(xiàn)web應(yīng)用程序

前端框架越來越豐富,前后端分離已經(jīng)是大多數(shù)軟件團隊采取的模式了。vue使用的場景也越來越多。

go本來使用template模板來進(jìn)行前端的表現(xiàn),現(xiàn)在可以用vue來分擔(dān)很大一部分工作了。

通常直接使用go語言寫后端,然后使用靜態(tài)模板加載渲染前端,前端獲取后端提供的數(shù)據(jù)是使用{{ }}符號,2個套在一起的花括號。這個也是vue使用的數(shù)據(jù)表現(xiàn)方式。

如果go+vue來協(xié)同工作的話,需要對vue進(jìn)行一點設(shè)置。比如把{{ }}的方式改為[[ ]]的方式。

首先我們要知道,vue的使用,需要在頁面中加載vue.js或vue.min.js

純靜態(tài)網(wǎng)頁使用vue是這樣的(給個html例子)

然后我們實現(xiàn)一個go的簡單web服務(wù)和模板頁面

這個go服務(wù)器通過端口 1989 展示服務(wù)器頁面,提供了一個靜態(tài)文件路徑 htmlpage,我們把vue.js和index.html文件都放置在htmlpage路徑里。

go服務(wù)器還用模板給前臺頁面提供了一個News結(jié)構(gòu)的數(shù)據(jù),數(shù)據(jù)包括:Title,Content,Author的值。

在index.html頁面中,加載vue.js的時候需要帶上靜態(tài)路徑 htmlpage

在 new 一個 vue 變量的時候,必須有一句來設(shè)置包裹數(shù)據(jù)的符號,我們這里設(shè)置這個符號為[[ ]]

同時,所有需要由 vue 渲染的數(shù)據(jù),都寫成類似這樣的樣子

在 go + vue 方式下的完整模板文件 index.html

此頁面中{{ }}包裹的數(shù)據(jù)是由go從后端提供的數(shù)據(jù)( 例如:{{.Title}}),而[[ ]]包裹的數(shù)據(jù),是vue渲染的數(shù)據(jù)。

只是把 Vue里的數(shù)據(jù),改為由go后端提供即可。

好吧,作者已經(jīng)在向月亮示愛了。呵呵 _

運行一下程序,看修改模板后的效果。

本文題目:go語言模板語法條件渲染 go語言模板引擎
文章轉(zhuǎn)載:http://m.newbst.com/article42/doppoec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站設(shè)計公司網(wǎng)站營銷網(wǎng)站制作做網(wǎng)站企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司