Go學習日記9

1.grace模塊
解析:grace模塊是beego新增的一個獨立支持熱重啓的模塊。

2.ch <- v
解析:發送v到channel ch

3.v := <-ch
解析:從ch中接收數據,並賦值給v

4.runtime包中處理goroutine的函數
解析:
[1]Goexit:退出當前執行的goroutine,但是defer函數還會繼續調用
[2]Gosched:讓出當前goroutine的執行權限,調度器安排其他等待的任務運行,並在下次某個時候從該位置恢復執行。
[3]NumCPU:返回CPU核數量
[4]NumGoroutine:返回正在執行和排隊的任務總數
[5]GOMAXPROCS:用來設置可以並行計算的CPU核數的最大值,並返回之前的值。

5.Beego用戶認證
解析:
[1]github.com/abbot/go-http-auth
[2]github.com/bradrydzewski/go.auth

6.casbin
解析:casbin是一個用Go語言打造的輕量級開源訪問控制框架,採用了元模型的設計思想,支持多種經典的訪問控制方案,如ACL,RBAC,ABAC等。

7.bee api命令
解析:通常使用beego開發api應用,bee api apiproject,項目的目錄結構如下所示:

apiproject
├── conf
│   └── app.conf
├── controllers
│   └── object.go
│   └── user.go
├── docs
│   └── doc.go
├── main.go
├── models
│   └── object.go
│   └── user.go
├── routers
│   └── router.go
└── tests
    └── default_test.go

說明:和Web項目相比,少了static和views目錄,多了一個test模塊,用來做單元測試。

8.lastupdate.tmp
解析:一個註解路由的緩存文件。

9.swagger
解析:一個html靜態資源目錄,是通過bee自動下載的,主要就是展示看到的界面及測試。

10.test目錄
解析:針對應用的測試用例,beego相比其它revel框架的好處之一就是無需啓動應用就可以執行test case。

11.pack命令
解析:pack命令用來發布應用的時候打包。打包完的tar包中有應用的可執行文件和配置文件,部署時直接上傳這個tar包即可。

12.自動化文檔
解析:beego通過swagger和內部的註釋解析能夠實現自動文檔的效果。

13.Swagger
解析:Swagger是一個規範和完整的框架,用於生成、描述、調用和可視化RESTful風格的Web服務。

14._ "beeapi/docs"
解析:beego 1.7.0之後版本不需要在main.go中添加該引用。

15.bee run -gendoc=true -downdoc=true
解析:
[1]-gendoc=true表示每次自動化的build文檔
[2]-downdoc=true就會自動的下載swagger文檔查看器

16.API增加CORS支持
解析:ctx.Output.Header(“Access-Control-Allow-Origin”, “*”)

*17.NewNamespace(prefix string, params …innnerNamespace) Namespace
解析:第一個參數就是前綴,第二個參數是innnerNamespace多參數。

*18.type innnerNamespace func(Namespace)
解析:它是一個函數,也就是只要是符合參數是*Namespace的函數都可以。

19.swagger
解析:
swagger.yml是swagger的契約文檔,根據這份文檔,可以描述出api的定義規則。而swagger.json描述的是一份符合swagger規則的api數據,通過這個json數據可以在swagger-ui中列出api文檔。

20.WebConfig
解析:WebConfig holds web related config.

type WebConfig struct {
    AutoRender             bool
    EnableDocs             bool
    FlashName              string
    FlashSeparator         string
    DirectoryIndex         bool
    StaticDir              map[string]string
    StaticExtensionsToGzip []string
    TemplateLeft           string
    TemplateRight          string
    ViewsPath              string
    EnableXSRF             bool
    XSRFKey                string
    XSRFExpire             int
    Session                SessionConfig
}

21.BConfig
解析:it is the default config for Application.

22.應用註釋
解析:
[1]@Title:這個API所表達的含義,是一個文本,空格之後的內容全部解析爲title
[2]@Description:這個API詳細的描述,是一個文本,空格之後的內容全部解析爲Description
[3]@Param:參數,表示需要傳遞到服務器端的參數,有五列參數
[4]@Success:成功返回給客戶端的信息,三個參數
[5]@Failure:失敗返回的信息,包含兩個參數
[6]@router:路由信息,包含兩個參數

23.併發和並行
解析:
[1]多線程程序在一個核的CPU上運行,就是併發。
[2]多線程程序在多個核的CPU上運行,就是並行。

24.協程和線程
解析:
[1]協程:獨立的棧空間,共享堆空間,調度由用戶自己控制,本質上有點類似於用戶級線程,這些用戶級線程的調度也是自己實現的。
[2]線程:一個線程上可以跑多個協程,協程是輕量級的線程。

25.goroutine
解析:在程序啓動時,Go程序就會爲main()函數創建一個默認的goroutine。當main()函數返回的時候該goroutine就結束了,所有在main()函數中啓動的goroutine會一同結束。

參考文獻:
[1]Go併發編程:http://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/

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