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/