Fix binary decoding issue of gbinary package.

This commit is contained in:
John
2018-12-08 18:18:05 +08:00
parent 7022486e93
commit b7a6d257d5
6 changed files with 39 additions and 27 deletions

View File

@ -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))
}
}

View File

@ -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)
}
})
}

View File

@ -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(`
<html>
<head>
<title>gf ghttp admin</title>
<title>GoFrame Web Server Admin</title>
</head>
<body>
<p><a href="{{$.uri}}/restart">restart</a></p>
<p><a href="{{$.uri}}/shutdown">shutdown</a></p>
<p>PID: {{.pid}}</p>
<p><a href="{{$.uri}}/restart">Restart</a></p>
<p><a href="{{$.uri}}/shutdown">Shutdown</a></p>
</body>
</html>
`, data)

View File

@ -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)

View File

@ -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)
}

View File

@ -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))
}