ProtoBuf测试手记

自从认识了“博客园”,我一直潜水,但是现在我觉得不潜了。
恰好,在测试ProtoBuf的过程中遇到了问题,特借宝地记录下测试的情况,有朋友遇到我类似情况的,一起交流一下吧。

//[ProtoContract]
    //public class IPArrays
    //{
    //    private IPArray[] arr = null;
    //    private int key;

    //    [ProtoMember(1)]
    //    public IPArray[] Arr
    //    {
    //        get
    //        {
    //            return this.arr;
    //        }
    //        set
    //        {
    //            this.arr = value;
    //        }
    //    }
    //    [ProtoMember(2)]
    //    public int Key
    //    {
    //        get
    //        {
    //            return this.key;
    //        }
    //        set
    //        {
    //            this.key = value;
    //        }
    //    }
    //}

    //[ProtoContract]
    //public class IPArray
    //{
    //    private int[] arr = null;

    //    [ProtoMember(1)]
    //    public int[] Arr
    //    {
    //        get
    //        {
    //            return this.arr;
    //        }
    //        set
    //        {
    //            this.arr = value;
    //        }
    //    }
    //    [ProtoMember(2)]
    //    public string IP
    //    {
    //        get
    //        {
    //            StringBuilder builder = new StringBuilder();
    //            for (int i = 0; i < this.arr.Length; i++)
    //            {
    //                builder.Append(".");
    //                builder.Append(this.arr[i].ToString());
    //            }
    //            return builder.ToString().Substring(1);
    //        }
    //        set
    //        {
    //            string[] textArray = value.Split(".".ToCharArray());
    //            for (int i = 0; i < this.arr.Length; i++)
    //            {
    //                this.arr[i] = int.Parse(textArray[i]);
    //            }
    //        }
    //    }
    //}

public class IPArraysArr : Dictionary<int, IPArrays>
    {
}
面就是我定义的结构体,将全世界的IP和国家的对照表倒入此结构体中。且不说这种方式好与坏,因为今天讨论的是为什么protobuf序列化出来的问题体积那么大的问题(有可能和用了自定义的IpArray有关系,这个还没测到)。思路是:假如客户端IP为58.133.198.5,则对此IP做分割,首先在字典IPArraysArr 中查key为58的IPArrays。
this.Arr[133].Arr[198]通过IP的第二和第三个段就可以得到国家ID了,因为在国家的前提下,第四段被分拆的可能性非常小。
关于IP和国家对照库的设计思路就不过多讲了,因为这个设计实在是太差劲了,还有很大的优化空间。
情况就是这样,我也搞不清楚为什么ProtoBuf会序列化出来那么大一个文件。高手们请指教。

转载于:https://www.cnblogs.com/juelv/archive/2009/08/12/1544638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值