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

发布了400 篇原创文章 · 获赞 423 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/shengshengwang/article/details/104742172
今日推荐