diff --git a/g/encoding/gbinary/gbinary.go b/g/encoding/gbinary/gbinary.go index 9dcab67f5..47a350132 100644 --- a/g/encoding/gbinary/gbinary.go +++ b/g/encoding/gbinary/gbinary.go @@ -174,24 +174,28 @@ func EncodeFloat64(f float64) []byte { // 当b位数不够时,进行高位补0 func fillUpSize(b []byte, l int) []byte { + if len(b) >= l { + return b + } c := make([]byte, 0) c = append(c, b...) - for i := 0; i <= l - len(b); i++ { + for i := 0; i < l - len(b); i++ { c = append(c, 0x00) } return c } -// 将二进制解析为int类型,根据[]byte的长度进行自动转换 +// 将二进制解析为int类型,根据[]byte的长度进行自动转换. +// 注意内部使用的是uint*,使用int会造成位丢失。 func DecodeToInt(b []byte) int { if len(b) < 2 { - return int(DecodeToInt8(b)) + return int(DecodeToUint8(b)) } else if len(b) < 3 { - return int(DecodeToInt16(b)) + return int(DecodeToUint16(b)) } else if len(b) < 5 { - return int(DecodeToInt32(b)) + return int(DecodeToUint32(b)) } else { - return int(DecodeToInt64(b)) + return int(DecodeToUint64(b)) } } diff --git a/g/net/ghttp/ghttp_server.go b/g/net/ghttp/ghttp_server.go index a82d6b46e..4b8d963cc 100644 --- a/g/net/ghttp/ghttp_server.go +++ b/g/net/ghttp/ghttp_server.go @@ -258,7 +258,9 @@ func (s *Server) Start() error { // 如果是子进程,那么服务开启后通知父进程销毁 if gproc.IsChild() { gtime.SetTimeout(2*time.Second, func() { - gproc.Send(gproc.PPid(), []byte("exit"), gADMIN_GPROC_COMM_GROUP) + if err := gproc.Send(gproc.PPid(), []byte("exit"), gADMIN_GPROC_COMM_GROUP); err != nil { + panic(err) + } }) } diff --git a/g/net/ghttp/ghttp_server_admin.go b/g/net/ghttp/ghttp_server_admin.go index 449f0b6e1..7b26fc16d 100644 --- a/g/net/ghttp/ghttp_server_admin.go +++ b/g/net/ghttp/ghttp_server_admin.go @@ -50,16 +50,18 @@ var serverProcessStatus = gtype.NewInt() // 服务管理首页 func (p *utilAdmin) Index(r *Request) { data := map[string]interface{}{ + "pid" : gproc.Pid(), "uri" : strings.TrimRight(r.URL.Path, "/"), } buffer, _ := gview.ParseContent(`
-PID: {{.pid}}
+ + `, data) diff --git a/g/os/gview/gview.go b/g/os/gview/gview.go index 4c900d485..21def093b 100644 --- a/g/os/gview/gview.go +++ b/g/os/gview/gview.go @@ -11,6 +11,7 @@ import ( "bytes" "errors" "fmt" + "gitee.com/johng/gf" "gitee.com/johng/gf/g/container/garray" "gitee.com/johng/gf/g/encoding/ghash" "gitee.com/johng/gf/g/encoding/ghtml" @@ -74,6 +75,10 @@ func New(path...string) *View { view.SetPath(path[0]) } view.SetDelimiters("{{", "}}") + // 内置变量 + view.data["GF"] = map[string]interface{} { + "version" : gf.VERSION, + } // 内置方法 view.BindFunc("text", view.funcText) view.BindFunc("html", view.funcHtmlEncode) diff --git a/geg/other/test.go b/geg/other/test.go index 9c9230ab2..4f81b1117 100644 --- a/geg/other/test.go +++ b/geg/other/test.go @@ -2,9 +2,18 @@ package main import ( "fmt" - "gitee.com/johng/gf/g/util/grand" + "gitee.com/johng/gf/g" + "gitee.com/johng/gf/g/util/gregex" ) func main() { - fmt.Println(grand.Rand(0, 100)) + //s := `1544180795 -- s_has_sess -- 41570504 -decryptSess- 41570504__iuVycRYg9qE3y7CsSgGZH1K2nxTdjPZN4fXot65zHIEmULO0Ow6LweJp5raWl8Ft -postSess- eyJpdiI6IkFwSWZ3eXFMcGxBZE5JcWF4aXh0M3c9PSIsInZhbHVlIjoiV3ZLeGduMnRoRkFZdmxHTzM5ZzdyU1JHWDMycmZlRERvNnFkaUR0SitlRjBrZnlYR1JvS2puTGZNUThSeFR0bWtlT3pza0l0elFqRk5mdXF6XC9FWWpWZnljVjdJbHd3dTRybEhldHZHTk5DQ015dlpYNHljNmxKMWJTRUVpY0E4IiwibWFjIjoiOTkxMzIxOTRhMGUxZWZiODM4NWZjNDZjYmVhNWY2NjhlZDZkNmVlNjY1MTE2N2VhZDAzYzY4NDJmZGFkMjY5YyJ9 -- 0 -- B8105CF2-1588-4753-9F86-9B8C36EB1842 -- iPhone 7 -- 12.1 -- 6.8.7 -- i -- 10.111.153.5 -- medlinker -- service -- unknown +//` +// s := `[08-Dec-2018 13:35:03 Asia/Shanghai] Medlinker\Services\Message\MessageService|updateUserInfo|用户头像 URI 不能为空 in /var/www/med-d2d/app/Services/Message/RongCloudService.php on line 851` + s := `[2018-12-01 13:35:03 Asia/Shanghai] 1544180795 Medlinker\Services\Message\MessageService|updateUserInfo|用户头像 URI 不能为空 in /var/www/med-d2d/app/Services/Message/RongCloudService.php on line 851` + //m, e := gregex.MatchString(`/var/log/medlinker/[\w\-\_]+/(.+?)/{0,1}[\d\-\_]*\.log`, `/var/log/medlinker/med-questionnaire/nginx/error/access-20181206.log`) + //m, e := gregex.MatchString(`/var/log/medlinker/[\w\-\_]+/(.+?)/{0,1}[\d\-\_]*\.log`, `/var/log/medlinker/med-questionnaire/storagelogs/events/sqlLog/2018-12-06.log`) + m, e := gregex.MatchString(`(.*?((\d{4}[-/\.]\d{2}[-/\.]\d{2}|\d{1,2}[-/\.][A-Za-z]{3,}[-/\.]\d{4})[:\sT-]*\d{0,2}:{0,1}\d{0,2}:{0,1}\d{0,2}\.{0,1}\d{0,9}[\sZ]{0,1}[\+-]{0,1}[:\d]*|\d{10}).+)`, s) + fmt.Println(e) + g.Dump(m) } diff --git a/geg/other/test2.go b/geg/other/test2.go index c7635e6ed..7316220fc 100644 --- a/geg/other/test2.go +++ b/geg/other/test2.go @@ -2,22 +2,12 @@ package main import ( "fmt" - "reflect" + "gitee.com/johng/gf/g/encoding/gbinary" ) -type Home struct { - i int `nljb:"100"` -} - func main() { - home := new(Home) - home.i = 5 - rcvr := reflect.ValueOf(home) - typ := reflect.Indirect(rcvr).Type() - fmt.Println(typ.Kind().String()) - x := typ.NumField() - for i := 0; i < x; i++ { - nljb := typ.Field(0).Tag.Get("nljb") - fmt.Println(nljb) - } + pid := 41902 + b := gbinary.EncodeByLength(2, pid) + fmt.Println(b) + fmt.Println(gbinary.DecodeToInt(b)) } \ No newline at end of file