数据结构问题?

guoxiny 2003-07-28 04:32:10
这几天做一个服务器,遇到点问题,请大家帮忙解决。

我的服务器接受客户的登录,并在客户登录后记录客户的各种信息,并且将在线的其他客户名,发送给登录的客户;同时在服务器运行过程中,客户的状态会发生变化,这个时候也要将发生变化的客户状态发送给其他的客户。请问我应该使用什么样的数据结构来存储客户信息,是数组、链表还是二叉树...?如何做可以只发送变化的客户信息,而不是所有的客户信息?
...全文
25 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jennifergiant 2003-08-01
  • 打赏
  • 举报
回复
up and learning...
jack_wq 2003-08-01
  • 打赏
  • 举报
回复
我觉得还是链表比较好,如lygfqy(风清扬) ( ) 所说,加一个数组在里面,效率也还可以!
UDX协议 2003-08-01
  • 打赏
  • 举报
回复
链表的遍历我想是很快的,假设你有10000个客户在线,10000个结点的遍历,我想现在的计算机,在500ms内就可以完成,你的服务器,有这么多客户吗?其瓶颈大概不在此处,而是你其他的地方设计有问题。
canjian 2003-08-01
  • 打赏
  • 举报
回复
学习关注
guoxiny 2003-08-01
  • 打赏
  • 举报
回复
大家讨论讨论吧
Zark 2003-07-30
  • 打赏
  • 举报
回复
不会吧?链表的遍历只是O(n),目前最好的大约是log(n),可以这两个复杂度在n<100的情况下,两者没有什么太大的差别.

楼主所说的速度问题,其瓶颈大概不在此处,怕是另有问题.

一孔之见.
guoxiny 2003-07-29
  • 打赏
  • 举报
回复
大家认为如何?
guoxiny 2003-07-28
  • 打赏
  • 举报
回复
每次客户登录、状态的改变,以及向每个客户发送客户在线信息都需要锁定链表,这样如果在遍历链表时的速度慢的话,就有可能导致其他线程阻塞,这样就会导致服务器的响应变慢,成为服务器的效率瓶颈。而最有可能成为这个效率瓶颈的就是在向所有客户发送在线信息时,因为这里需要遍历链表。我就在考虑如何使得遍历和查找以最快的速度进行。链表,我感觉速度跟不上;现在在想用树不知道行不行。
CCsdnCC 2003-07-28
  • 打赏
  • 举报
回复
应该是个图的结构。用链表应该可以吧,每个结点中包含一个结点指针的vector,用于表示本结点与其它结点的关系。我觉得实际运行时应该不会是NxN次的遍历次数。
FAICHEN 2003-07-28
  • 打赏
  • 举报
回复
存在数据库里的必要性不大,每次有新的客户登陆,都有服务器来操作
发给客户端只是简单的报文
如:
12人+XX1,XX2....
每客户端进入服务器,提交,插到链表末尾
退出。。。。。。,删除该节点
利用双向列表,维护头尾指针更方便点
guoxiny 2003-07-28
  • 打赏
  • 举报
回复
使用数据库的确是一种好方法,可以忽略很多问题。可是现在如果不使用数据库,而是将信息存储在内存中,这个时候就会出现一些问题。如使用链表的话,假设有10的客户,就需要遍历10*10次链表,数度明显比较慢。我现在就在想应该使用什么数据结构来组织数据。
lygfqy 2003-07-28
  • 打赏
  • 举报
回复
我到是觉得链表中套个简单的数组就够了,至于要做到只发送变化的资料,相信应该可以通过类似于id的东西就可以实现了
techmaster 2003-07-28
  • 打赏
  • 举报
回复
客户信息做成数据库,每个客户端在新登陆或信息变动的时候向服务器发起请求,服务器接收到请求之后,用查询来分辨是新登陆还是后变更(用标志位表示),如果是新登陆则广播到所有客户端,如果是变更,只广播变更部分。变更信息的标志可以在客户端做且只上传变更消息,这样省去了服务器判断变更数据的麻烦。
例:数据报格式
1*aaa|4*zhangyan|8*beijing
这样统一数据报格式,就方便了。不知楼主是否此意。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧