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/