Gotop是一個(gè)TUI圖形活動(dòng)監(jiān)視器,使用Go語言編寫。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、保亭黎族網(wǎng)站維護(hù)、網(wǎng)站推廣。
它提供類Unix操作系統(tǒng)中運(yùn)行中的進(jìn)程的動(dòng)態(tài)實(shí)時(shí)信息。一些開發(fā)人員為top命令構(gòu)建了圖形前端,因此用戶可以在圖形窗口中輕松找到他們系統(tǒng)的活動(dòng)。其中之一是Gotop。顧名思義,Gotop是一個(gè)TUI圖形活動(dòng)監(jiān)視器,使用Go語言編寫。
它是完全免費(fèi)、開源的,受到了gtop和vtop的啟發(fā)。
go如何監(jiān)控頁面是否變化?可以用手機(jī)或電腦打開應(yīng)用go系統(tǒng),點(diǎn)開需要監(jiān)控的頁面,就可以監(jiān)控頁面的變化。
go語言抓包工具的網(wǎng)站:
1,sql2go網(wǎng)。
用于將 sql 語句轉(zhuǎn)換為 golang 的 struct. 使用 ddl 語句即可。
例如對(duì)于創(chuàng)建表的語句: show create table xxx. 將輸出的語句,直接粘貼進(jìn)去就行。
2,toml2go網(wǎng)。
用于將編碼后的 toml 文本轉(zhuǎn)換問 golang 的 struct。
3,curl2go網(wǎng)。
用來將 curl 命令轉(zhuǎn)化為具體的 golang 代碼。
4,json2go網(wǎng)。
用于將 json 文本轉(zhuǎn)換為 struct。
5,mysql 轉(zhuǎn) ES 工具網(wǎng)站。
模擬模板的工具,在支持泛型之前,可以考慮使用。7)查看某一個(gè)庫的依賴情況,類似于 go list 功能。
GO語言簡(jiǎn)介:
Go(又稱?Golang)是?Google?的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型語言。
Go 語言語法與?C?相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style?并發(fā)計(jì)算。
當(dāng)前有兩個(gè)Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫成,后用Go重寫從而實(shí)現(xiàn)自舉。Gccgo是一個(gè)使用標(biāo)準(zhǔn)GCC作為后端的Go編譯器。
官方編譯器支持跨平臺(tái)編譯(但不支持CGO),允許將源代碼編譯為可在目標(biāo)系統(tǒng)、架構(gòu)上執(zhí)行的二進(jìn)制文件。
最近打算為我的網(wǎng)站添加一個(gè)服務(wù)器資源監(jiān)視功能,需要服務(wù)端主動(dòng)向前端推動(dòng)資源占用數(shù)據(jù)。這時(shí)Http則不能達(dá)到要求。所以自然想到采用websocket。以前使用SpringBoot時(shí)使用websocket很簡(jiǎn)單,只需要將ServerEndpointExporter注入到bean容器并配合相應(yīng)注解即可創(chuàng)建一個(gè)websocket服務(wù)。這里要感謝各位前輩的封裝讓我們能盡快實(shí)現(xiàn)相應(yīng)的功能,但本次出于學(xué)習(xí)目并不是公司項(xiàng)目(效率穩(wěn)定性至上)同時(shí)使用的開發(fā)語言為Golang,其web開發(fā)生態(tài)也不會(huì)像Java那樣豐富,最后選擇了開源實(shí)現(xiàn) gorilla/websocket 項(xiàng)目地址
執(zhí)行 go get github.com/gorilla/websocket 添加依賴
我們知道websocket由http升級(jí)而來,首先會(huì)發(fā)送附帶Upgrade請(qǐng)求頭的Http請(qǐng)求,所以我們需要在處理Http請(qǐng)求時(shí)攔截請(qǐng)求并判斷其是否為websocket升級(jí)請(qǐng)求,如果是則調(diào)用 gorilla/websocket 庫相應(yīng)函數(shù)處理升級(jí)請(qǐng)求。
首相要?jiǎng)?chuàng)建Upgrader實(shí)例,該實(shí)例用于升級(jí)請(qǐng)求
其中 CheckOringin 是一個(gè)函數(shù),該函數(shù)用于攔截或放行跨域請(qǐng)求。函數(shù)返回值為 bool 類型,即 true 放行, false 攔截。如果請(qǐng)求不是跨域請(qǐng)求可以不賦值,我這里是跨域請(qǐng)求并且為了方便直接返回 true
此時(shí)已經(jīng)成功升級(jí)為websocket連接并獲得一個(gè)conn實(shí)例,之后的發(fā)送接收操作皆有conn完成其類型為websocket.Conn。
首先向客戶端發(fā)送消息使用 WriteMessage(messageType int, data []byte) ,參數(shù)1為消息類型,參數(shù)2消息內(nèi)容
示例:
接受客戶端消息使用 ReadMessage() 該操作會(huì)阻塞線程所以建議運(yùn)行在其他協(xié)程上。該函數(shù)有三個(gè)返回值分別是,接收消息類型、接收消息內(nèi)容、發(fā)生的錯(cuò)誤當(dāng)然正常執(zhí)行時(shí)錯(cuò)誤為 nil。一旦連接關(guān)閉返回值類型為-1可用來終止讀操作。
示例:
同時(shí)可以為連接設(shè)置關(guān)閉連接監(jiān)聽,函數(shù)為 SetCloseHandler(h func(code int, text string) error) 函數(shù)接收一個(gè)函數(shù)為參數(shù),參數(shù)為nil時(shí)有一個(gè)默認(rèn)實(shí)現(xiàn),其源碼為:
可以看到作為參數(shù)的函數(shù)的參數(shù)為int和string類型正好和前端的close(long string)對(duì)應(yīng)即前端調(diào)用close(long string)關(guān)閉連接后兩個(gè)參數(shù)會(huì)被發(fā)送給后端并最終被 func(code int, text string) error 所使用。
示例:
則斷開連接時(shí)將打印code和text
注意:要想使斷連處理生效必須要有 ReadMessage() 操作否則不會(huì)觸發(fā)斷連處理操作。
以上是常用基礎(chǔ)操作點(diǎn)擊 官方API手冊(cè) 學(xué)習(xí)更多。
最后:大幻夢(mèng)森羅萬象狂氣斷罪眼\ (??) /
網(wǎng)站欄目:go語言監(jiān)視網(wǎng)站 go語言在線運(yùn)行
網(wǎng)頁路徑:http://aaarwkj.com/article44/doodehe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、微信小程序、品牌網(wǎng)站制作、App設(shè)計(jì)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)