1.InfoPanel
解析:内置了很多对于列的操作方法,可以通过这些方法很灵活的操作列数据。
2.GoAdmin表单组件
解析:
[1]文本类型
[2]选择类型
[3]自定义类型
3.GoAdmin权限管理
解析:权限管理是针对路由和方法进行限制,路由可以使用golang的正则匹配。只要方法和路由能对应上,则权限验证通过。因此需要自己对各个路由和方法进行配置,从而自己决定权限设置的粒度。
4.adm命令
解析:
[1]generate:生成数据模型文件
[2]compile asset:编译所有资源文件为一个go文件
[3]compile tpl:编译所有模板文件为一个go文件
[4]combine css:合并css文件为一个css文件
[5]combine js:合并js文件为一个js文件
[6]develop tpl:远程拉取主题开发模板到本地
5.Monitor插件
解析:一个兼容grafana的插件。只需要配置dashboard和数据源即可拥有一个实时监控面板。
6.GoAdmin适配器
解析:适配器的作用是实现web框架context与GoAdmin自身context的转换。
7.GoAdmin主题模板和组件
解析:
[1]主题模板是一套UI的抽象表示,包括一系列组件和静态资源的集合,会在插件中被调用。
[2]组件是一个页面UI组件的抽象,包括了html以及其它资源。
8.engine模块
解析:engine是GoAdmin最核心的模块,此模块的功能是利用web框架适配器将插件的路由与控制器方法的映射关系注入到框架中。
9.strconv包
解析:主要实现对字符串和基本数据类型之间的转换。基本数据类型包括:布尔、整型[包括有/无符号、二进制、八进制、十进制和十六进制]和浮点型等。
10.template模板
解析:Golang语言提供了两个包text/template和html/template,前者主要用来处理文本文件的变量渲染,而后者主要用于对html之类的网页文件进行渲染。
11.Go Web垂直扩展
解析:
[1]垂直扩展,即提升单台设备的CPU数量或者性能
[2]一个Go Web应用只需要使用一个操作系统线程,就可以通过调度来高效地运行数十万个goroutine
说明:gofmt、godoc、gotest。
12.HTTP方法HEAD
解析:与GET方法的作用类似,唯一的不同在于这个方法不要求服务器返回报文的主体。这个方法通常用于在不获取报文主体的情况下,取得响应的首部。
13.HTTP方法TRACE
解析:命令服务器返回请求本身。通过这个方法,客户端可以知道介于它和服务器之间的其它服务器是如何处理请求的。
14.HTTP方法OPTIONS
解析:命令服务器返回它支持的HTTP方法列表。
15.HTTP方法CONNECT
解析:命令服务器与客户端建立一个网络连接。这个方法通常用于设置SSL隧道以开启HTTPS功能。
16.HTTP方法PATCH
解析:命令服务器使用报文主体中的数据对URI指定的资源进行修改。
17.HTTP请求首部Referrer
解析:发起请求的页面所在的地址。
18.HTTP协议
解析:HTTP是一种简单、无状态、纯文本的客户端-服务器协议,它用于在客户端和服务器之间进行数据交换。
19.panic和recover
解析:这两个关键字都与defer有千丝万缕的联系,也都是Go语言中的内置函数,但是提供的功能却是互补的:
[1]panic能够改变程序的控制流,函数调用panic时会立刻停止执行函数的其它代码,并在执行结束后在当前Goroutine中递归执行调用方的延迟函数调用defer
[2]recover可以中止panic造成的程序崩溃。它是一个只能在defer中发挥作用的函数,在其它作用域中调用不会发挥任何作用
20.上下文 Context
解析:上下文context.Context是用来设置截止日期、同步信号,传递请求相关值的结构体。该接口定义了四个需要实现的方法:
[1]Deadline:返回context.Context被取消的时间,也就是完成工作的截止日期
[2]Done:返回一个Channel,这个Channel会在当前工作完成或者上下文被取消之后关闭,多次调用Done方法会返回同一个Channel
[3]Err:返回context.Context结束的原因,它只会在Done返回的Channel被关闭时才会返回非空的值;如果context.Context被取消,会返回Canceled错误;如果context.Context超时,会返回DeadlineExceeded错误
[4]Value:从context.Context中获取键对应的值,对于同一个上下文来说,多次调用Value并传入相同的Key会返回相同的结果,该方法可以用来传递请求特定的数据
type Context interface {
Deadline() (deadline time.Time, ok bool)
Done() <-chan struct{}
Err() error
Value(key interface{}) interface{}
}
context包中提供的context.Background、context.TODO、context.WithDeadline和context.WithValue函数会返回实现该接口的私有结构体。
21.Go内存管理
解析:内存管理一般包含三个不同的组件,分别是用户程序[Mutator]、分配器[Allocator]和收集器[Collector],当用户程序申请内存时,它会通过内存分配器申请新的内存,而分配器会负责从堆中初始化相应的内存区域。
22.os.Getenv(“GOPATH”)
解析:返回变量对应的值。
23.类型默认零值
解析:
bool -> false
numbers -> 0
string -> ""
pointers -> nil
slices -> nil
maps -> nil
channels -> nil
functions -> nil
interfaces -> nil
24.nil
解析:Go中的nil不是一个关键字。
25.WebSocket
解析:WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocketAPI被W3C定为标准。在WebSocketAPI中,浏览器和服务器只需要要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以数据互相传送。
[1]建立在TCP协议之上,服务器端的实现比较容易
[2]与HTTP协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用HTTP协议,因此握手时不容易屏蔽,能通过各种HTTP代理服务器
[3]数据格式比较轻量,性能开销小,通信高效
[4]可以发送文本,也可以发送二进制数据
[5]没有同源限制,客户端可以与任意服务器通信
[6]协议标识符是ws[如果加密,那么为wss],服务器网址就是URL
参考文献:
[1]go-admin:https://github.com/GoAdminGroup/go-admin/blob/master/README_CN.md
[2]beego:https://beego.me/docs/intro/