Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。
同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。
万变不离其宗,Go的Web服务工作也离不开我们第一小节介绍的Web工作方式。
Go为了实现高并发和高性能, 使用了goroutines来处理Conn的读写事件, 这样每个请求都能保持独立,相互不会阻塞,可以高效的响应网络事件。这是Go高效的保证。
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/03.4.md
分页
1 2 3 4 5 6
| o := orm.NewOrm() qs = o.QueryTable("user"); var pageSize = 50 var pageNo = 3
qs = qs.Limit(pageSize, pageNo*pageSize)
|
解析[]orm.Params
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| func analyseParams(params *[]orm.Params) { keyImage := "image" keyStatus := "status" keyEndAt := "end_at" for _, param := range *params { if vv, ok := param[keyImage]; ok { r := reflect.ValueOf(vv) if r.Kind() == reflect.String { temp_arr := strings.Split(r.String(), ",") param[keyImage] = commons.ImagePath(temp_arr[0]) } }
if vv, ok := param[keyEndAt]; ok { r := reflect.ValueOf(vv) if r.Kind() == reflect.String { now := time.Now().UnixNano() startTime, err := time.Parse("2006-01-02 15:04:05", r.String()) if err != nil { logs.Error("转换时间错误:", err) continue } if startTime.UnixNano() > now { param[keyStatus] = "notbegin" } } } delete(params, "marketable_at") } }
|