一种在即时通信系统中引用用户信息的方法及装置的制作方法

文档序号:7962989阅读:220来源:国知局
专利名称:一种在即时通信系统中引用用户信息的方法及装置的制作方法
技术领域
本发明涉及即时通信4支术,特别涉及在即时通信系统中引用用户信息的方 法及装置。
背景技术
在现有即时通信系统中,当用户登录即时通信系统时,需要在内存中加载 该登录用户的所有联系人列表,并将登陆用户的信息分别记录到各联系人列表 中。
假设一个即时通信系统/网站中有1000万注册用户,每个注册用户拥有20 个联系人,这样总的联系人数就有2亿个,假设用来标识每个用户的唯一用户 标识占用20字节内存,这样把所有联系人存放在内存中,则至少需要占用48亿 字节(1000*20* (20 +地址指针占用的内存)=48亿;其中,32位系统地址指 针占用的内存是4字节,相应的,64位系统是8字节。),即4.8G内存。因此在 4G内存配置的32位系统下,这样大的数据不能全部存i欠在内存中。
目前一般采用两种方式解决上述问题
1、 通过硬盘来实现,把部分数据存放在内存中,另外的数据存放在硬盘 之类的介质中;需要时把硬盘中的数据调入到内存,把不需要的数据写到硬盘 中。但是由于硬盘的访问速度比内存慢几个数量级,所以一定程度上影响了系 统的性能,也增加了系统的复杂性。
2、 通过多台服务器来实现,把数据分散存放在不同的服务器中;客户端 访问时,用户基于用户标识符根据一定的算法得到服务器,再从该服务器中获 取数据;此种解决方式可以容纳较大的数据量,但系统比较复杂、部署成本较 高。

发明内容
有鉴于此,本发明提供一种在即时通信系统中引用用户信息的方法及装 置,用以解决现有技术中因重复存储相同的用户信息而导致系统资源消耗大、 成本高的问题。
本发明提供以下技术方案
一种在即时通信系统中引用用户信息的方法,包括步骤 将即时通信用户的用户标识转换成对应的特征值;
利用所述特征值查询内存中用户标识的特征值与存储用户信息的地址之 间的映射关系,获得相应的地址;以及
通过直接引用获得的地址来引用用户信息。 根据上述方法
在内存中未查询到对应的地址时获取内存中存储用户信息的地址,并建立 所述特征值与所述地址之间的映射关系。
所述特征值对应多个存储用户信息的地址时,将存储用户信息的地址中的 用户标识与当前引用的用户标识比较,确定需要引用的地址。
本发明采用哈希算法将所述用户标识转换成对应的特征值。
所述用户标识的特征值与存储用户信息的地址之间的映射关系还包括用 户标识的引用计数。
引用用户信息时,累计所述引用计数;或者,释放引用用户信息时,减少 所述引用计数。
所述引用计数为空时,释放存储用户信息的内存。
所述用户信息至少包括用户标识。
一种在即时通信系统中引用用户信息的装置,包括
存储单元,用于存储用户标识的特征值与存储用户信息的地址之间的映射 关系;
转换单元,用于在需要引用用户信息时将用户标识转换成特征值;
处理单元,利用所迷特征值查询所述存储单元中的映射关系,获得相应的 地址并通过直接引用该地址来引用用户信息。
所述存储单元存储的映射关系包^"用户标识的引用计数。
所述处理单元引用用户信息时,累计用户标识的引用计数;或者,释放引 用用户信息时,减少用户标识的引用计数。
所述引用计数为空时,所述处理单元释放存储用户信息的内存。 本发明有益效果如下
本发明根据同一用户标识具有唯一性,在进程中只存放一份用户信息,通 过用户标识的特征值与存储用户信息的地址之间的映射关系,直接引用存储用 户信息的地址来引用该用户信息,采用本发明方法实现了用较少的内存緩存较 大的数据量,提高了系统的容量和性能。


图1为本发明实施例中在即时通信系统中引用用户信息的装置结构示意
图2为本发明实施例中哈希列表结构示意图3为本发明实施例中在内存中建立登录用户联系人列表过程中引用用户 标识的实现流程图4为本发明实施例中用户从即时通信系统注销时引用联系人用户标识的 实现流程图5为本发明实施例中用户标识状态改变时向其联系人通知状态改变信息 的实现流程图。
具体实施例方式
为了解决现有技术中因重复存储相同的用户信息而导致系统资源消耗大、 成本高等问题,本发明将用户标识转换成特征值,并在内存中建立用户标识的 特征值与存储用户信息的地址之间的映射关系,通过直接引用存储用户信息的
地址来实现引用用户信息。
如图l所示,本实施例中的在即时通信系统中引用用户信息的装置,用于 管理即时通信系统中的用户信息,包括引用和释放存储用户信息的地址。该装
置主要包括转换单元IO、存储单元11和处理单元12;其中
转换单元IO,用于在需要引用用户信息时将用户标识转换成特征值; 存储单元ll,通过接口与所述转换单元10连接,用于存储用户标识的特征
值与存储用户信息的地址之间的映射关系;
处理单元12,通过接口与所述存储单元11连接,利用所述特征值查询所
述存储单元11中的映射关系,获得相应的地址并通过直接引用该地址来引用
用户信息。
所述接口可以为内部通信接口 。
本发明实施例中使用哈希列表来存放已注册的用户标识,哈希算法可以唯 一确认一个用户标识是否已在系统中出现过。如图2所示,用户标识通过哈希 算法获得唯一对应的特征值,即哈希值,根据所述哈希值在内存中查询对应的 用户节点;所述用户节点包含用户标识地址值和引用计数两个字段;其中,所 述用户标识地址值,用于保存用户标识;所述引用计数,用于记录用户标识被 重复使用的次数,当用户标识被引用时,累计对应的引用计数;当用户标识被 取消引用时,减少对应的引用计数,直到引用计数减为空时,该用户节点内存 被释放。
请参阅图3 ,以在内存中建立登录用户的联系人列表过程中引用用户标识为
例,其处理过程如下
步骤300、用户登录即时通信系统。
步骤301 、将登录用户标识通过哈希算法转换成哈希值。
步骤302、根据所述哈希值在内存中查找对应的用户节点是否存在;如果
存在,则执行步骤303;否则,执行步骤304。
步骤303、读取用户节点中存储所述登录用户的用户标识的地址,并将该 用户标识的引用计数加l,继续步骤305。
步骤304、建立登录用户标识的^合希值与存储该用户标识的地址之间的映 射关系,即建立所述用户标识的用户节点,并将该用户标识的引用计数置l。
步骤305 、获取登录用户的所有正向和反向联系人的用户标识。
步骤306、将各联系人用户标识通过哈希算法转换成对应的哈希值。
步骤307、才艮据各哈希值在内存中查找对应的用户节点是否存在;如果存 在,则执行步骤309;否则,执行步骤308。
步骤308、建立各联系人的用户标识的哈希值与相应存储各联系人的用户 标识的地址之间的映射关系,即建立各联系人的用户标识的用户节点。
步骤309、读取用户节点中存储用户标识的地址,并将其加入到对应的联 系人列表(即正向联系人列表和反向联系人列表),同时,将对应的用户标识 的引用计数加l。
上述过程中,如果用户标识对应的"合希值对应有多个存储用户信息的地址 时,则进一步将需要引用的用户标识与各地址保存的用户标识进行比较来确定 对应的地址,即该地址存储的用户标识与需要引用的用户标识相同。
相应的,当用户从即时通信系统注销时,如图4所示,其主要实现过程如

步骤400、用户从即时通信系统中注销。
步骤401、用户查找所有正向和反向联系人的用户标识。
步骤402、将各联系人的用户标识通过哈希算法转换成对应的哈希值。
步骤403、根据各哈希值在内存中查找对应的用户节点,并将对应的各联
系人用户标识的引用计数减l;若引用计数减为空时,则将该联系人用户节点
内存释放。
当用户标识的状态改变时,即时通信系统要向该用户的正向联系人和反向
联系人通知该用户的状态改变信息,如图5所示,用户标识状态改变时向其联 系人用户标识通知其状态改变信息的处理过程如下 步骤500、用户标识状态改变。
步骤501、在内存中查找该用户标识的用户节点,并将用户标识的引用计 数加l。
步骤502、根据该用户标识的用户节点在内存中查找其所有联系人的用户 节点,即获取到存储联系人用户标识的地址,并将联系人用户标识的引用计数 加l。
步骤503、将存储联系人用户标识的地址转换为相应的用户标识字符串值; 例如某个联系人用户标识地址是long idAddr = 0x04f445,则该联系人用户标识 的字符串值就是char承pstrCntID=(char*)idAddr。
;步骤504、即时通信系统根据得到的字符串型联系人用户标识向各联系人 通知用户标识状态改变的信息。
根据用户对应的哈希值在内存中查找对应的用户节点,获取到存储用户标 识的地址并引用该地址。因此,同一个用户标识在一个进程中,其内存只占用 一次,不会重复存在,这样可以实现较少的内存存放较大的用户信息。例如 用户标识是contacttest一 10002,有100个用户把该用户标识加为好友,则使用本 算法后这100个用户对于该用户标识占用的内存只有100*4 〔32位系统地址指 针内存〕+strlen(contacttest—idl0002)〔用户标识注册长度〕+4 〔用户节点地址〕 =400+19+4=423字节;若使用传统方法,占用的内存就至少需要 10(^4+10(^strlen(contacttest一idl0002^2300字节,显然地,采用本算法后内存 使用节省了(l — 423/2300)* 100°/。=82%。
综上所述,同一用户标识具有唯一性,通过采用哈希算法实现了同一用户 标识在系统内存中不会出现两份以上的数据a,因此,减小了系统内存的使
用;另外,根据哈希算法,用户可以快速地查询其相应的正向和反向联系人, 有效地提高了系统的效率。
本发明中不局限于使用哈希算法转换用户标识的特征值,也可以采用具有 相同功能的其他算法实现,其过程与上述同理,不再赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求 及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种在即时通信系统中引用用户信息的方法,其特征在于,包括步骤将即时通信用户的用户标识转换成对应的特征值;利用所述特征值查询内存中用户标识的特征值与存储用户信息的地址之间的映射关系,获得相应的地址;以及通过直接引用获得的地址来引用用户信息。
2、 如权利要求1所述的在即时通信系统中引用用户信息的方法,其特征 在于,在内存中未查询到对应的地址时获取内存中存储用户信息的地址,并建 立所述特征值与所述地址之间的映射关系。
3、 如权利要求1所述的在即时通信系统中引用用户信息的方法,其特征 在于,所述特征值对应多个存储用户信息的地址时,将存储用户信息的地址中 的用户标识与当前引用的用户标识比较,确定需要引用的地址。
4、 如权利要求1所述的在即时通信系统中引用用户信息的方法,其特征 在于,采用哈希算法将所述用户标识转换成对应的特征值。
5、 如权利要求1所述的在即时通信系统中引用用户信息的方法,其特征 在于,所述用户标识的特征值与存储用户信息的地址之间的映射关系还包括用 户标识的引用计数。
6、 如权利要求4所述的在即时通信系统中引用用户信息的方法,其特征 在于,引用用户信息时,累计所述引用计数;或者,释放引用用户信息时,减 少所述引用计数。
7、 如权利要求6所述的在即时通信系统中引用用户信息的方法,其特征 在于,所述引用计数为空时,释放存储用户信息的内存。
8、 如权利要求1至7任一项所述的在即时通信系统中引用用户信息的方 法,其特征在于,所述用户信息至少包括用户标识。
9、 一种在即时通信系统中引用用户信息的装置,其特征在于,包括存储单元,用于存储用户标识的特征值与存储用户信息的地址之间的映射关系;转换单元,用于在需要引用用户信息时将用户标识转换成特征值; 处理单元,利用所述特征值查询所迷存储羊元中的映射关系,获得相应的 地址并通过直接引用该地址来引用用户信息。
10、 如权利要求9所述的在即时通信系统中引用用户信息的装置,其特征 在于,所述存储单元存储的映射关系包括用户标识的引用计数。
11、 如权利要求10所述的在即时通信系统中引用用户信息的装置,其特 征在于,所述处理单元引用用户信息时,累计用户标识的引用计数;或者,释 放引用用户信息时,减少用户标识的引用计数。
12、 如权利要求11所述的在即时通信系统中引用用户信息的装置,其特 征在于,所述引用计数为空时,所述处理单元释》文存储用户信息的内存。
全文摘要
本发明公开了一种在即时通信系统中引用用户信息的方法,用以解决现有技术中因重复存储相同的用户信息而导致系统资源消耗大、成本高等问题;该方法将即时通信用户的用户标识转换成对应的特征值;利用所述特征值查询内存中用户标识的特征值与存储用户信息的地址之间的映射关系,获得相应的地址;以及通过直接引用获得的地址来引用用户信息。本发明还同时公开了一种在即时通信系统中引用用户信息的装置。采用本发明可以实现使用较少的内存缓存较多的用户数据,从而降低了系统的成本,提高了系统的容量与性能。
文档编号H04M3/493GK101102286SQ200610090188
公开日2008年1月9日 申请日期2006年7月5日 优先权日2006年7月5日
发明者莫建祥 申请人:阿里巴巴公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1