首页 > 其他分享 >tonkeeper的toogo库的Hashmap序列化有bug

tonkeeper的toogo库的Hashmap序列化有bug

时间:2024-10-19 17:01:52浏览次数:8  
标签:toogo err keys tonkeeper tlb Amount StartLuckNum 序列化

package tonapiservice

import (
	"fmt"
	"testing"

	"github.com/tonkeeper/tongo/boc"
	"github.com/tonkeeper/tongo/tlb"
)

func TestHashmapE(t *testing.T) {
	// Hashmap的序列化有bug,数据一样的情况下,有时候会提示not enouth bits.

	c := boc.NewCell()
	//write function id to cell
	if err := c.WriteUint(uint64(0), 32); err != nil {
		panic(err)
	}

	type BuyInfo struct {
		StartLuckNum uint16 // 开始的彩票号码,从1开始
		Amount       uint16 // 购买的nifi数量
	}

	// go map
	orders := map[uint32]BuyInfo{
		1:  {StartLuckNum: 1, Amount: 2},
		2:  {StartLuckNum: 3, Amount: 4},
		3:  {StartLuckNum: 5, Amount: 6},
		4:  {StartLuckNum: 7, Amount: 8},
		5:  {StartLuckNum: 9, Amount: 10},
		6:  {StartLuckNum: 11, Amount: 12},
		7:  {StartLuckNum: 13, Amount: 14},
		8:  {StartLuckNum: 15, Amount: 16},
		9:  {StartLuckNum: 17, Amount: 18},
		10: {StartLuckNum: 19, Amount: 20},
	}

	type Msg struct {
		RoundId uint32
		Orders  tlb.Hashmap[tlb.Uint32, BuyInfo] // 订单号码:购买信息
	}

	// elb map
	msg := Msg{
		RoundId: 10000,
	}
	var keys []tlb.Uint32
	var values []BuyInfo
	for key, value := range orders {
		keys = append(keys, tlb.Uint32(key))
		values = append(values, value)
	}
	msg.Orders = tlb.NewHashmap(keys, values)

	// 序列化
	if err := tlb.Marshal(c, msg); err != nil {
		panic(err)
	}

	b, _ := c.ToBoc()
	fmt.Println(b)
}

 

这个代码有时候会提示not enouth bits,有时候又正常。

标签:toogo,err,keys,tonkeeper,tlb,Amount,StartLuckNum,序列化
From: https://www.cnblogs.com/zhanchenjin/p/18476108

相关文章

  • .net Web API自动反序列化xml传参为C#实体
    Program.cs.net8.0已经内置了XML解析器,所以直接在services.AddControllers()后调用AddXmlSerializerFormatters()即可:services.AddControllers().AddXmlSerializerFormatters();定义实体需要用到几个特性:XmlRoot:xml的根节点XmlElement:xml的成员例:<soapenv:Envelopexm......
  • java_day16_IO、序列化
    一、IO流IO流划分IO流【输入输出流】:按照流向划分:输入流:外部数据->java程序输出流:java程序->外部数据按照数据类型划分【根据使用记事本打开是否能够看懂来决定】字节流【万能流】:字节输入流:InputStream【抽象类】-......
  • 泛型、序列化和反序列化
    一、泛型1.泛型概念①Java泛型(Generics) 是JDK5中引入的一个新特性。③定义类或者接口时可以使用泛型,通过继承或者实现,减少了冗余代码,提高了代码的复用性。④Java不能创建具体类型的泛型数组List[]li2=newArrayList[];类型形参:定义参数时不指定具体的类型,使......
  • shiro反序列化简单利用-1
    https://www.bilibili.com/video/BV1iF411b7bD?t=16.0环境搭建gitclonehttps://github.com/apache/shiro.gitcdshirogitcheckoutshiro-root-1.2.4编辑shiro/samples/web目录下的pom.xml,将jstl的版本修改为1.2流程分析静态分析尝试登录并抓包username和Password都......
  • JSON 请求太大,无法反序列化
    方案一asp.netmvc默认的json序列化ValueProviderFactory使用的是javascriptserializer,可以在配置文件web.config中设置:<addkey="aspnet:MaxJsonDeserializerMembers"value="150000000"/>和<system.web.extensions><scripting><w......
  • shiro 反序列化漏洞
    shiro反序列化漏洞Shiro-550漏洞原理影响版本:ApacheShiro<1.2.4特征判断:返回包中包含rememberMe=deleteMe字段。为了让浏览器或服务器重启后用户不丢失登录状态,Shiro支持将持久化信息序列化并加密后保存在Cookie的rememberMe字段中,下次读取时进行解密再反序列化。Pa......
  • 第108天:免杀对抗-Python&混淆算法&反序列化&打包生成器&Py2exe&Nuitka
    知识点#知识点:1、Python-对执行代码做文章2、Python-对shellcode做文章3、Python-对代码打包器做文章#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll反......
  • idea-java序列化serialversionUID自动生成
    简介java.io.Serializable是Java中的一个标记接口(markerinterface),它没有任何方法或字段。当一个类实现了Serializable接口,那么这个类的对象就可以被序列化和反序列化。序列化是将对象的状态转换为字节流的过程,这样可以方便地将对象存储到文件中或者通过网络传输。反序列化......
  • 不安全的反序列化
    不安全反序列化是一种针对Web应用程序和API的许多攻击链的一部分的漏洞,。易受攻击的应用程序将在不验证数据的情况下加载数据,从而允许攻击者操纵反序列化过程并执行恶意代码。虽然不安全反序列化并不总是作为独立漏洞报告,但可能会对网络安全造成严重后果,包括远程代码执行(RCE......
  • 序列化流和反序列化流
    序列化流ObjectOutputStream序列化流/对象操作输出流包装基本流,属于字节流的一种,负责输出数据。可以把Java中的对象写到本地文件中去。构造方法:publicObjectOutputStream(OutputStreamout)把基本流包装成高级流成员方法:publicfinalvoidwriteObject(Objectobj)把对象......