tree 72f4eacb28e9a473b38e9956a6a38b8272d810ce
parent e026b32f47d548e1d8051ac769364aa67678df3f
author 望哥 <gelnyang@163.com> 1592183234 +0800
committer GitHub <noreply@github.com> 1592183234 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJe5snCCRBK7hj4Ov3rIwAAdHIIAIK1szTCeRcRFsDxO2jDmZ9a
 Hxa1pXOYzTdVSrUYyvfwWUn4i7I4uuMPEl+Bgkl0Bqj1hfjDZreP4v5RSffA/caK
 1TA6nHVUOEwGr/tZEpdHG9TR9UnGv9hiBs238FGx124Rgud5fT9XM9c35Nry4fCY
 Sr9iQOLBbiUGpxibUKhBgbGo4Xpr4BiFkNDNv+CUoLt0PSVm4bftukBQr0IrG5fT
 rQmyQ+KhBzF+xRQVaIFHZuKv2Y+8+deeSV6QBxb6nR0g90mW+wpvFRk/+d6XtVvr
 FvsQwO44eTefETeiz9Ncp2K58ZaI92UtFHFLThP/ijL0DzkL3wdUgY+LvfV0if0=
 =68Jl
 -----END PGP SIGNATURE-----
 

merge for the release of v1.6.0 (#195)

* add license checker (#175)

* add release note for v1.5.0 (#178)

Co-authored-by: Xin.Zh <dragoncharlie@foxmail.com>

* Imp: cache in reflection (#179)

* benchmark result

* use cache in findField

* encode benchmark

* call field() once

* remove version

* fix import sync

* cache in registerPOJO

* add json bench result

* prune unneccessary rtype.Field(index)

* cache comment

* rename cache

* switch to if

* remove return value name

* findFieldWithCache

* remove if check when fieldStruct is nil

Co-authored-by: 望哥 <gelnyang@163.com>

* update dependency

* rename serialize arg name

* Create .asf.yaml

* 优化hessian解码string性能，提升54%

* optimize code.

* optimize code.

* fix code review.

* optimize codes.

* optimize cods.

* optimize code.

* update license

* go.sum

* ci go version

* testify -> 1.4.0

* testcase

* travis.yml

* decode value before reflect find

* setvalue

* decode nilPtr to nilPtr

* fix get attachment lost nil key

* manually import package

* add ToMapStringString unit test

* rename test function name with issue

* setmap

* support for decode emoji.

* refactor code

* add unit test.

* add unit tests.

* refactor tests.

* Update travis/main.sh (#200)

- Remove duplicate key 'webhooks'
- Key 'matrix' is an alias for `jobs`, using `jobs`
- Specify the os and dist explicitly

* Mod: modify

* Code format (#199)

* .gitignore

* code clean

* code clean

* remove length check

* Fix: comments

* Fix: format package

* Fix #181: float32 accuracy issue (#196)

* Fix #181: float32 accuracy issue

* Fix go fmt failure

* Add the unit test case for Issue181

* Add encFloat32 in double.go to encode float32 type

- Call encFloat32 to encode float32 while encoding
- Add unit test case to test float32 encoding

* Improve encFloat32 of double.go

* Fix git fmt failure

* add release note for v1.6.0 (#202)

* add release note for v1.5.1

* add release note for v1.5.1

* add notice

* update notice

* =fix release note for v1.6.0

Co-authored-by: Joe Zou <joezou@apache.org>
Co-authored-by: Xin.Zh <dragoncharlie@foxmail.com>
Co-authored-by: huiren <zhrlnt@gmail.com>
Co-authored-by: Huang YunKun <htynkn@gmail.com>
Co-authored-by: zonghaishang <yiji@apache.org>
Co-authored-by: fangyincheng <fangyc666@gmail.com>
Co-authored-by: champly <champly@outlook.com>
Co-authored-by: wilson chen <willson.chenwx@gmail.com>
Co-authored-by: fangyincheng <fangyincheng@sina.com>
Co-authored-by: gaoxinge <gaoxx5@gmail.com>