Go學習日記3

1.beego模塊化
解析:beego內置了強大的模塊,包括Session、緩存操作、日誌記錄、配置解析、性能監控、上下文操作、ORM模塊、請求模擬等強大的模塊,足以支撐任何的應用。

2.beego項目結構
解析:

├── conf
│   └── app.conf
├── controllers
│   ├── admin
│   └── default.go
├── main.go
├── models
│   └── models.go
├── static
│   ├── css
│   ├── ico
│   ├── img
│   └── js
└── views
    ├── admin
    └── index.tpl

3.beego 1.6.0升級指南
解析:

go get -u github.com/beego/bee
go get -u github.com/astaxie/beego
bee fix

4.dockerize命令
解析:這個命令可以通過生成Dockerfile文件來實現docker化應用。

5.go mod init
解析:初始化模塊。

6.go設置proxy
解析:

SET http_proxy=http://127.0.0.1:19180
SET https_proxy=http://127.0.0.1:19180

7.beego創建web和api項目
解析:

bee api apiproject
bee new myproject

8.註冊一個可以響應任何HTTP的路由
解析:

beego.Any("/foo",func(ctx *context.Context){
     ctx.Output.Body([]byte("bar"))
})

9.session控制
解析:beego內置了session模塊,目前session模塊支持的後端引擎包括memory、cookie、file、mysql、redis、couchbase、memcache、postgres,用戶也可以根據相應的interface實現自己的引擎。

10.beego日誌處理
解析:beego之前介紹的時候說過是基於幾個模塊搭建的,beego的日誌處理是基於logs模塊搭建的,內置了一個變量BeeLogger,默認已經是logs.BeeLogger類型,初始化了console,也就是默認輸出到console。

11.beego模塊
解析:
[1]session模塊
[2]cache模塊
[3]logs模塊
[4]httplib模塊
[5]context模塊
[6]toolbox模塊
[7]config模塊
[8]i18n模塊

12.安裝ORM
解析:go get github.com/astaxie/beego/orm

13.beego高級編程
解析:
[1]進程內監控:beego默認會開啓兩個端口,一個是8080應用端口,對外服務,一個是8088端口,用於監控進程內的信息,執行定時任務等。
[2]過濾器:過濾器極大的方便了用戶對業務邏輯的擴充,用戶可以通過過濾器實現用戶認證,訪問日誌記錄、兼容性跳轉等。
[3]熱升級:熱升級是業務開發中經常提到的,需要在不中斷當前用戶請求的情況下部署新應用。

14.beego模板處理
解析:beego的模板處理引擎採用的是Go內置的html/template包進行處理,而且beego的模板處理邏輯是採用了緩存編譯方式,也就是所有的模板會在beego應用啓動的時候全部編譯然後緩存在map裏面。

15.Supervisord
解析:Supervisord是用Python實現的一款非常實用的進程管理工具,supervisord還要求管理的程序是非daemon程序,supervisord會把它轉成daemon程序,因此如果用supervisord來管理nginx的話,必須在nginx的配置文件裏添加一行設置daemon off讓nginx以非daemon方式啓動。

16.casbin
解析:An authorization library that supports access control models like ACL, RBAC, ABAC in Golang.

17.分頁算法需要處理的問題
解析:
[1]當前數據一共有多少條。
[2]每頁多少條,算出總頁數。
[3]根據總頁數情況,處理翻頁鏈接。
[4]對頁面上傳入的Get或Post數據,需要從翻頁鏈接中繼續向後傳。
[5]在頁面顯示時,根據每頁數量和當前傳入的頁碼,設置查詢的Limit和Skip,選擇需要的數據。
[6]其它的操作,就是在View中顯示翻頁鏈接和數據列表的問題了。

18.import "os/exec"
解析:exec包執行外部命令。它包裝了os.StartProcess函數以便更容易的修正輸入和輸出,使用管道連接I/O,以及作其它的一些調整。

19.beego表單驗證
解析:表單驗證是用於數據驗證和錯誤收集的模塊。

go get github.com/astaxie/beego/validation
go test github.com/astaxie/beego/validation

20.GoAdmin支持的Web框架
解析:
[1]gin
[2]beego
[3]fasthttp
[4]buffalo
[5]echo
[6]gorilla/mux
[7]iris
[8]chi
[9]gf

21.Admin插件
解析:admin插件可以實現快速生成數據庫數據表增刪改查的Web數據管理平臺。

22.GoAdmin項目模塊
解析:
[1]engine:engine是GoAdmin最核心的模塊,此模塊的功能是利用web框架適配器將插件的路由與控制器方法的映射關係注入到框架中。
[2]adapter:adapter的功能是實現web框架的context與GoAdmin的context的相互轉換。
[3]context:context是一個請求的上下文,記錄包括了請求的路由參數與方法信息,context會被傳入到插件的方法中。
[4]plugin:plugin有自己的路由與控制器方法,在接收由adapter轉換過來的context後經控制器方法處理返回給adapter再輸出到web框架中去。
[5]template:template是前端代碼對應的golang實體化,前端代碼對應的組件部分,比如表單,行,列等實體化爲golang的一個接口,因此可以通過調用接口方法獲取到該組件的html代碼,此功能提供給插件去調用。
[6]auth:auth實現了對cookie的管理,將前端的cookie存儲並轉換爲登錄的用戶,同時實現了對權限的攔截。
[7]config:config是系統的全局配置。
[8]db:db是一個sql連接庫,連接了sql數據庫提供查詢等幫助方法,支持多個driver。
[9]language:language實現了簡單的語言映射,從而支持語言本地化。
[10]file:file實現了一個文件上傳引擎。
[11]logger:logger是項目的日誌模塊。
[12]menu:menu是對項目菜單的管理。
[13]cli:cli命令行模塊,包括生成文件和開發的一些基本命令。

23.go-micro
解析:go-micro是go語言下的一個很好的rpc微服務框架:
[1]服務間傳輸格式爲protobuf
[2]go-micro的服務註冊和發現是多種多樣的
[3]主要的功能都有相應的接口,只要實現相應的接口,就可以根據需要訂製插件

24.Consul
解析:Consul是HashiCorp公司推出的開源工具,用於實現分佈式系統的服務發現與配置。Consul是分佈式的、高可用的、可橫向擴展的。它具備以下特性:
[1]service discovery:consul通過DNS或者HTTP接口使服務註冊和服務發現變的很容易,一些外部服務,例如saas提供的也可以一樣註冊。
[2]health checking:健康檢測使consul可以快速的告警在集羣中的操作。和服務發現的集成,可以防止服務轉發到故障的服務上面。
[3]key/value storage:一個用來存儲動態配置的系統。提供簡單的HTTP接口,可以在任何地方操作。
[4]multi-datacenter:無需複雜的配置,即可支持任意數量的區域。

25.微服務內部調用和外部調用
解析:在系統運行過程中,前臺和後臺,後臺和後臺都可能發生功能調用:
[1]內部調用:後臺各個微服務之間的互相調用,屬於系統後臺內部的調用,稱之爲內部調用。
[2]外部調用:前臺與後臺的接口請求調用,通常被城之外外部調用。

參考文獻:
[1]Golang 1.13解決國內go get無法下載的問題:https://www.sunzhongwei.com/problem-of-domestic-go-get-unable-to-download

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章