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/

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