数据结构的设计

最近在做一个有关于统计的项目,关于接入网络的。


背景是,一个接入设备可以接入几十个用户,各个用户可能会同时同时会打电话。

要想统计各个用户的电话数据,而且要保存有历史数据。


首先要知道每一个用户要保存有历史数据,所以难免会做到数据持久化过程中的添删查。

这个过程中尤其是查找时比较耗时的。

而且还有一个重点是,我们只是用一个线程为用户记录数据,也就是说,当用户通话结束之后,我们会为用户计算数据,一直到持久化数据结束。

然后再为另一个用户服务。

这就会有一个问题。多个用户同时结束通话,那我们处理过程不如意,为第一个用户处理完,在持久化完,然后在处理第二个用户,那就会给第二个用户带来数据的不准确性。

我们想到的解决办法就是讲计算和持久化分开。因为计算的时间复杂度比较少。而持久化的时间复杂度就比较大。


所以设计就是

一个线程只做通话结束就计算,计算完了就push到链表。

这个链表就如同一个缓冲区,输入的一端就像是我们电脑的IO。

只是说电脑的输入表较慢,处理比较快,而这里相反,数据来的比较快,处理的比较慢(持久化)。

另一个线程就是对这个list处理,每两秒处理一次,或者1秒。 这样就比较均匀的处理。


来的快的数据放在list。

均匀处理list




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值