由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 怎么把一个Map放到queue里? (转载)
相关主题
两个线程异步通信是不是用信号最好?VC++线程问题
lock-free data structures问一下可能性,MingW生成的DLL和MSVC生成的DLL两个线程同步
c++posix多线程问题请教Dao语言2.0第一个测试版发布了!
如何在C++下, 把一个DataColumn 中的值赋给一个_variant_t变量?关于MVC模式有什么带例子的教程?
一个c++问题 (转载)malloc per-thread arena
一个搞统计的对C#的第一印象C++ 有没有像go routine/channel 一样的库/框架?
怎样提高C#计算程序的performance?问个树遍历的线程化问题
问个C++编译器如何处理函数内的static 变量我是一个线程 (转载)
相关话题的讨论汇总
话题: rtt话题: map话题: db话题: queue话题: 线程
进入Programming版参与讨论
1 (共1页)
t**********s
发帖数: 930
1
【 以下文字转载自 Java 讨论区 】
发信人: tennisalways (tennisforever), 信区: Java
标 题: 怎么把一个Map放到queue里?
发信站: BBS 未名空间站 (Wed Mar 13 07:09:10 2013, 美东)
我有个Server端应用,每当一个client接入,这个App就生成一个新的instance,并访问一
个end point读取资料一次.
我现在想对这个round trip time进行统计. 所以我将每次访问end point的时间,和相
对应的RTT生成个Map,放到个queue里,以便查找某个时间段RTT的 min/max/average.
之所以用queue,是因为我不想让数据无限增长.超过时间段就踢出去.Map里的访问时间,
就是用来决定数据是否在时间上已经expire了用的.
另外,可能多个查询程序运行.这会不会造成queue的lock?
我用个什么样的queue好呢?
d******r
发帖数: 5008
2
如果你要把timeout的T出去, 不需要用真正的queue, 一般的queue也不能直接做这个.
用 O(1) hash map, 每个item加个timestamp, 定期检查, T出timeout的item就行了.

间,

【在 t**********s 的大作中提到】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: tennisalways (tennisforever), 信区: Java
: 标 题: 怎么把一个Map放到queue里?
: 发信站: BBS 未名空间站 (Wed Mar 13 07:09:10 2013, 美东)
: 我有个Server端应用,每当一个client接入,这个App就生成一个新的instance,并访问一
: 个end point读取资料一次.
: 我现在想对这个round trip time进行统计. 所以我将每次访问end point的时间,和相
: 对应的RTT生成个Map,放到个queue里,以便查找某个时间段RTT的 min/max/average.
: 之所以用queue,是因为我不想让数据无限增长.超过时间段就踢出去.Map里的访问时间,
: 就是用来决定数据是否在时间上已经expire了用的.

l*********s
发帖数: 5409
3
ring buffer, it is very easy to implement
t**********s
发帖数: 930
4
ring buffer 不行吧?
我这个collection 不是 fixed sized. 因为在规定的时间内,我不能事先知道这个App
有多少 instances.

【在 l*********s 的大作中提到】
: ring buffer, it is very easy to implement
l*********s
发帖数: 5409
5
your purpose is to limit the size of data, right?

App

【在 t**********s 的大作中提到】
: ring buffer 不行吧?
: 我这个collection 不是 fixed sized. 因为在规定的时间内,我不能事先知道这个App
: 有多少 instances.

t**********s
发帖数: 930
6
你是说timestamp是key, RTT是对应的value?
当我每次加入一个新的item, 我用它的time stamp 作标准. 然后iterate 所有的entry
. 所有早过他一定时间的都从hash map 中去掉?

.

【在 d******r 的大作中提到】
: 如果你要把timeout的T出去, 不需要用真正的queue, 一般的queue也不能直接做这个.
: 用 O(1) hash map, 每个item加个timestamp, 定期检查, T出timeout的item就行了.
:
: 间,

t**********s
发帖数: 930
7
Yes. But I cannot predict the size.

【在 l*********s 的大作中提到】
: your purpose is to limit the size of data, right?
:
: App

d******r
发帖数: 5008
8
hash: Client host ->(rtt, ts)
设个时间或memory size的threshold,cleanup.
比如每24小时或size超过5M,iterate 一次,
删掉超时的。
如果是C/C++,用hash in ring buffer 也行,
只稍微麻烦一点点。但效率高些。

entry

【在 t**********s 的大作中提到】
: 你是说timestamp是key, RTT是对应的value?
: 当我每次加入一个新的item, 我用它的time stamp 作标准. 然后iterate 所有的entry
: . 所有早过他一定时间的都从hash map 中去掉?
:
: .

d******r
发帖数: 5008
9
如果你只要某时间段所有host的平均RTT,那更
简单:
ts->Rtt

【在 d******r 的大作中提到】
: hash: Client host ->(rtt, ts)
: 设个时间或memory size的threshold,cleanup.
: 比如每24小时或size超过5M,iterate 一次,
: 删掉超时的。
: 如果是C/C++,用hash in ring buffer 也行,
: 只稍微麻烦一点点。但效率高些。
:
: entry

t**********s
发帖数: 930
10
没懂.
怎么通过 time stamp 找到 RTT的均值?

【在 d******r 的大作中提到】
: 如果你只要某时间段所有host的平均RTT,那更
: 简单:
: ts->Rtt

相关主题
一个搞统计的对C#的第一印象VC++线程问题
怎样提高C#计算程序的performance?问一下可能性,MingW生成的DLL和MSVC生成的DLL两个线程同步
问个C++编译器如何处理函数内的static 变量Dao语言2.0第一个测试版发布了!
进入Programming版参与讨论
d******r
发帖数: 5008
11
你想要啥data?

【在 t**********s 的大作中提到】
: 没懂.
: 怎么通过 time stamp 找到 RTT的均值?

t**********s
发帖数: 930
12
来自app的所有instances的RTT的均值.

【在 d******r 的大作中提到】
: 你想要啥data?
d******r
发帖数: 5008
13
假如,时间ts-delta 到ts的所有RTT平均值为r
用hash map存data
key:ts
Value: r
每24小时clean up 一次,凡ts老于XXX的,从
hash中删了。
如果你的意思是,*每个*instance的平均RTT,then
Key: instance,ts
Value: r

【在 t**********s 的大作中提到】
: 来自app的所有instances的RTT的均值.
t**********s
发帖数: 930
14
每个instance 只访问end point 一次,取得数据.
所以每个Instance自己没有RTT的均值,因为只有一次访问.
我想要的是不同的Instance所有的不同的RTT的均值.
RTT来自哪个Instance无所谓.
所以hash table里应该只是 ts--->RTT.
每加入一个新entry,就用它 的ts做基准,比它老规定值的entry都剔除去.

【在 d******r 的大作中提到】
: 假如,时间ts-delta 到ts的所有RTT平均值为r
: 用hash map存data
: key:ts
: Value: r
: 每24小时clean up 一次,凡ts老于XXX的,从
: hash中删了。
: 如果你的意思是,*每个*instance的平均RTT,then
: Key: instance,ts
: Value: r

g*****g
发帖数: 34805
15
You are better served with a DB. Alternatively, if you really want to use a
cache. EhCache is your friend, whatever eviction policy you want to specify,
no need to reinvent the wheel.
As a java programmer, the first question is not how I can implement it,
rather what library has implemented it.
d******r
发帖数: 5008
16
就这也要建DB,LoL
难怪java developer写P大一点东东,动不
动就要求4G,6G,。。。的RAM才能跑
得顺畅。

a
specify,

【在 g*****g 的大作中提到】
: You are better served with a DB. Alternatively, if you really want to use a
: cache. EhCache is your friend, whatever eviction policy you want to specify,
: no need to reinvent the wheel.
: As a java programmer, the first question is not how I can implement it,
: rather what library has implemented it.

g*****g
发帖数: 34805
17
Most server side app use a DB already. An extra table is not an overhead and
it provides tons of flexibility. 8G memory is under $100 nowadays and even
VM can easily give you 16GB. This is a server app, not a mobile phone app. I
couldn't care less how much memory it uses. Plus, your argument is funny, I
don't understand how DB will add extra memory usage compared to memory
cache.
Engineering is about getting the job done with minimal cost. Memory argument
is old.

【在 d******r 的大作中提到】
: 就这也要建DB,LoL
: 难怪java developer写P大一点东东,动不
: 动就要求4G,6G,。。。的RAM才能跑
: 得顺畅。
:
: a
: specify,

d******r
发帖数: 5008
18
谁告诉你server就有DB的?
跑DB不要memory?

and
even
I
I

【在 g*****g 的大作中提到】
: Most server side app use a DB already. An extra table is not an overhead and
: it provides tons of flexibility. 8G memory is under $100 nowadays and even
: VM can easily give you 16GB. This is a server app, not a mobile phone app. I
: couldn't care less how much memory it uses. Plus, your argument is funny, I
: don't understand how DB will add extra memory usage compared to memory
: cache.
: Engineering is about getting the job done with minimal cost. Memory argument
: is old.

g*****g
发帖数: 34805
19
大多数server app是有DB的,这个叫做常识。就算没有,有现成的cache解决方案,
不但使用soft reference,而且可以设置eviction算法,设置存储上限,可以overflow
到secondary
storage。甚至支持cluster environment。不比你自己建的轮子强100倍。
当你想到一个应用,你就能想到一个结点,100个用户而已,环境一变化又得重写,完
全没有扩展性,你也好意思说?你就跟我说说你这东西怎么支持多结点吧,server app
问这个不过分吧?

【在 d******r 的大作中提到】
: 谁告诉你server就有DB的?
: 跑DB不要memory?
:
: and
: even
: I
: I

d******r
发帖数: 5008
20
常识个P,你说的商业应用的server。
从LZ的贴子看,他就是有个TCP socket,
要估计一下RTT而已。

overflow
app

【在 g*****g 的大作中提到】
: 大多数server app是有DB的,这个叫做常识。就算没有,有现成的cache解决方案,
: 不但使用soft reference,而且可以设置eviction算法,设置存储上限,可以overflow
: 到secondary
: storage。甚至支持cluster environment。不比你自己建的轮子强100倍。
: 当你想到一个应用,你就能想到一个结点,100个用户而已,环境一变化又得重写,完
: 全没有扩展性,你也好意思说?你就跟我说说你这东西怎么支持多结点吧,server app
: 问这个不过分吧?

相关主题
关于MVC模式有什么带例子的教程?问个树遍历的线程化问题
malloc per-thread arena我是一个线程 (转载)
C++ 有没有像go routine/channel 一样的库/框架?关于多线程锁:锁代码还是锁资源?
进入Programming版参与讨论
g*****g
发帖数: 34805
21
楼主只是谈她要实现的一个辅助功能,到你嘴里就变成唯一功能了,还跟我谈常识。

【在 d******r 的大作中提到】
: 常识个P,你说的商业应用的server。
: 从LZ的贴子看,他就是有个TCP socket,
: 要估计一下RTT而已。
:
: overflow
: app

d******r
发帖数: 5008
22
她只问了这一个问题怎么解决,结果你用
你的常识给她整出了一堆问题。

【在 g*****g 的大作中提到】
: 楼主只是谈她要实现的一个辅助功能,到你嘴里就变成唯一功能了,还跟我谈常识。
g*****g
发帖数: 34805
23
“我有个Server端应用,每当一个client接入,这个App就生成一个新的instance,并访问一
个end point读取资料一次.”
你要觉得这个统计是她这个server app的主要功能,我们就没有讨论下去的必要了。
我给的是常识性的解决方案,不是问题。实现起来对熟手也就是一个小时的事情最多了。

【在 d******r 的大作中提到】
: 她只问了这一个问题怎么解决,结果你用
: 你的常识给她整出了一堆问题。

d******r
发帖数: 5008
24
其实这就是个20分钟的活。。。
这个统计不是她的主要功能也完全不能说明
她这个一定是个大型的商业Server。她甚至都
没说是用Java做的,你就Ehchche都上来了。

问一
了。

【在 g*****g 的大作中提到】
: “我有个Server端应用,每当一个client接入,这个App就生成一个新的instance,并访问一
: 个end point读取资料一次.”
: 你要觉得这个统计是她这个server app的主要功能,我们就没有讨论下去的必要了。
: 我给的是常识性的解决方案,不是问题。实现起来对熟手也就是一个小时的事情最多了。

g*****g
发帖数: 34805
25
DB跟EhCache都不是什么重量级的东西,你也太大惊小怪了。她在java版发帖再转过来,
假定是java写的很自然。

【在 d******r 的大作中提到】
: 其实这就是个20分钟的活。。。
: 这个统计不是她的主要功能也完全不能说明
: 她这个一定是个大型的商业Server。她甚至都
: 没说是用Java做的,你就Ehchche都上来了。
:
: 问一
: 了。

c****e
发帖数: 1453
26
What you ask is an essential feature of monitoring: counter. So you can put
sample values, see the percentile curve and even build alert from there. It
seems your system is pretty primitive without such infrastructure. I won't
recommend you to write from scratch to build a monitoring system, efficient
logging and leveled aggregation are not trivial.
To have a quick fix, you can create a in-memory datatable and write some
simple code to hardcode your aggregation(min/max/average) and dump them to
file regularly. I noticed this copied from Java board. For datatable, you
can
search JTable or "equivalent to c# datatable in Java".
If you does need read history data a lot, I would recommend you to put it in
a database, which could be as simple as a file db store. It saves your
development time and gives more flexibility.
g*****g
发帖数: 34805
27
光cache,往里加的时候发现超过上限,异步起个线程做清理,还要保证线程安全,20
分钟你就够呛能写完。造轮子的时候总觉得就是个圆,只有造的时候才会发现光材料就
要好几种。

【在 d******r 的大作中提到】
: 其实这就是个20分钟的活。。。
: 这个统计不是她的主要功能也完全不能说明
: 她这个一定是个大型的商业Server。她甚至都
: 没说是用Java做的,你就Ehchche都上来了。
:
: 问一
: 了。

d******r
发帖数: 5008
28
非要起个线程呀? 把key(ts)放一queue(或linkList).里面,
buffer满了以后,每加一个新的时候就T出去一个key
再删一个map的value不行么?
不会造轮子没关系,但脑筋都不动一下就不好了。
我不明白要是有现成的queue和map的话,二十分钟
写这么几行有啥难的。

20

【在 g*****g 的大作中提到】
: 光cache,往里加的时候发现超过上限,异步起个线程做清理,还要保证线程安全,20
: 分钟你就够呛能写完。造轮子的时候总觉得就是个圆,只有造的时候才会发现光材料就
: 要好几种。

g*****g
发帖数: 34805
29
啥,你连线程安全都没考虑?你不会是觉得server app,由client引发的逻辑,多个读
写可以同时进行的东西,可以不线程安全吧?你自己说的是超过某个内存上限就清理,
不是超过某个数目就清理。你可能发现你要存放的metadata,大小不一,如果你用一个
数字来统计大小,有可能加一个大的entry的时候要删除一堆小的,但凡不是O(1)的算
法,就不想block主线程。这就是为什么要另外起线程的原因。另外,你最少要支持LRU
这样的算法吧,你还
觉得是20分钟的事情吗?
所以说你是造轮子,你还不服。还觉得我没动脑筋,我看是你觉得轮子就是个圆才是真
的。

【在 d******r 的大作中提到】
: 非要起个线程呀? 把key(ts)放一queue(或linkList).里面,
: buffer满了以后,每加一个新的时候就T出去一个key
: 再删一个map的value不行么?
: 不会造轮子没关系,但脑筋都不动一下就不好了。
: 我不明白要是有现成的queue和map的话,二十分钟
: 写这么几行有啥难的。
:
: 20

d******r
发帖数: 5008
30
我在同一个线程同一个method里面,加一个entry
再删一个(或加n个删n个)如何不安全了? LoL
以LZ现在的data,每个entry的size是一样大,
用内存和数目作上限有啥区别么?动一下脑筋要
死人啊?
人家本来就只需要一轮子,你非卖一汽车底
盘给别人。

【在 g*****g 的大作中提到】
: 啥,你连线程安全都没考虑?你不会是觉得server app,由client引发的逻辑,多个读
: 写可以同时进行的东西,可以不线程安全吧?你自己说的是超过某个内存上限就清理,
: 不是超过某个数目就清理。你可能发现你要存放的metadata,大小不一,如果你用一个
: 数字来统计大小,有可能加一个大的entry的时候要删除一堆小的,但凡不是O(1)的算
: 法,就不想block主线程。这就是为什么要另外起线程的原因。另外,你最少要支持LRU
: 这样的算法吧,你还
: 觉得是20分钟的事情吗?
: 所以说你是造轮子,你还不服。还觉得我没动脑筋,我看是你觉得轮子就是个圆才是真
: 的。

相关主题
被opengl害惨了!lock-free data structures
用volatile退出线程对不对?(C++)c++posix多线程问题请教
两个线程异步通信是不是用信号最好?如何在C++下, 把一个DataColumn 中的值赋给一个_variant_t变量?
进入Programming版参与讨论
g*****g
发帖数: 34805
31
因为有多个线程在同一个数据结构上进行读写,最少最少你也得来一个
ConcurrentHashMap吧,Java的HashMap是不线程安全的。C++的std::hash_map也是不线
程安全的。
你怎么知道每个entry的size是一样大的?楼主要统计某个操作的时间,这个操作的时
常跟Endpoint的内容有关,添加一些相关的Metadata进入Entry,是再正常不过的扩展。
这就是咱们的区别,你只看你今天要用到的,20分钟能写完了,有没有bug还两说(线程
安全)。我看到的是几个普通的扩展要求,都不是一个小时或者一天能完成的。轮子是
现成的啥都有,你非要从砍木头
开始。还要说,看,砍个木墩要不了20分钟。

【在 d******r 的大作中提到】
: 我在同一个线程同一个method里面,加一个entry
: 再删一个(或加n个删n个)如何不安全了? LoL
: 以LZ现在的data,每个entry的size是一样大,
: 用内存和数目作上限有啥区别么?动一下脑筋要
: 死人啊?
: 人家本来就只需要一轮子,你非卖一汽车底
: 盘给别人。

d******r
发帖数: 5008
32
ts->RTT,
Lz说她就需要这么个map,其它线程要读
需要synchronize那是另一回事, 不用我
这个算法也得synchronize。反正我这个
add,check和delete之间是没啥不安全的。
LZ要轮子,我就给她一个,就这么回事。
你不砍木头,你连轴承底盘都卖给人家。

展。

【在 g*****g 的大作中提到】
: 因为有多个线程在同一个数据结构上进行读写,最少最少你也得来一个
: ConcurrentHashMap吧,Java的HashMap是不线程安全的。C++的std::hash_map也是不线
: 程安全的。
: 你怎么知道每个entry的size是一样大的?楼主要统计某个操作的时间,这个操作的时
: 常跟Endpoint的内容有关,添加一些相关的Metadata进入Entry,是再正常不过的扩展。
: 这就是咱们的区别,你只看你今天要用到的,20分钟能写完了,有没有bug还两说(线程
: 安全)。我看到的是几个普通的扩展要求,都不是一个小时或者一天能完成的。轮子是
: 现成的啥都有,你非要从砍木头
: 开始。还要说,看,砍个木墩要不了20分钟。

g*****g
发帖数: 34805
33
楼主说得很清楚,是server app,client端引发的操作,有多个endpoint,有另外的
server线程需要读这些统计。线程安全是最基本的要求。你给个数据结构,连线程安全
都做不到,还说20分钟够了,我无语。人要轮子,你不能给个木墩凑数吧。

【在 d******r 的大作中提到】
: ts->RTT,
: Lz说她就需要这么个map,其它线程要读
: 需要synchronize那是另一回事, 不用我
: 这个算法也得synchronize。反正我这个
: add,check和delete之间是没啥不安全的。
: LZ要轮子,我就给她一个,就这么回事。
: 你不砍木头,你连轴承底盘都卖给人家。
:
: 展。

d******r
发帖数: 5008
34
靠,LZ说只要endpoit的平均RTT,这就是一个float而已,
让你搞的这么高深。
你说说看我那个方法究竟如何增加线程的不安全了?
synchroniz是在我那三个步骤外面一层的事。
如果没有delete,只有add,她一样要synchronize.

【在 g*****g 的大作中提到】
: 楼主说得很清楚,是server app,client端引发的操作,有多个endpoint,有另外的
: server线程需要读这些统计。线程安全是最基本的要求。你给个数据结构,连线程安全
: 都做不到,还说20分钟够了,我无语。人要轮子,你不能给个木墩凑数吧。

g*****g
发帖数: 34805
35
看来你没有理解问题的本质在哪里。我提的DB,和EhCache,哪怕ConcurrentHashMap吧
,都是线程安全的。同步不需要在你自己的代码里做,人已经做好了,而且支持高并发
,而不是锁死排队单线程访问。人要轮子,我说1小时够了,你说20分钟能上个木墩,
基本就是
如此。

【在 d******r 的大作中提到】
: 靠,LZ说只要endpoit的平均RTT,这就是一个float而已,
: 让你搞的这么高深。
: 你说说看我那个方法究竟如何增加线程的不安全了?
: synchroniz是在我那三个步骤外面一层的事。
: 如果没有delete,只有add,她一样要synchronize.

b***i
发帖数: 3043
36
还真得dB。不然,server死机了怎么办?另一个说法,就是要永久化,比如hibernate(
不知道我提这个相关不?)
我自然想到google app engine显然自动就有datastore, memCache,都可以干这个用,
不光死机,万一server起了另一个servlet的实例怎么办?两个不在一个pc,只能通过
datastore来同步。
数据库可以放在另一个服务器上,不一定非得大的,能写磁盘的就行。

【在 d******r 的大作中提到】
: 就这也要建DB,LoL
: 难怪java developer写P大一点东东,动不
: 动就要求4G,6G,。。。的RAM才能跑
: 得顺畅。
:
: a
: specify,

d******r
发帖数: 5008
37
你用concurrentHashMap 和concrrentQueueList 好了,
不管你自己synch 还是用别人build好的,跟我那个
算法都不茅盾,也没必要另外开线程。
是你自己没明白,我那个方法只要保证每个线程add和delete的
entry是一样多的就行,你用什么方法sync,三个
步骤一起sync还是分开sync都没关系。

【在 g*****g 的大作中提到】
: 看来你没有理解问题的本质在哪里。我提的DB,和EhCache,哪怕ConcurrentHashMap吧
: ,都是线程安全的。同步不需要在你自己的代码里做,人已经做好了,而且支持高并发
: ,而不是锁死排队单线程访问。人要轮子,我说1小时够了,你说20分钟能上个木墩,
: 基本就是
: 如此。

g*****g
发帖数: 34805
38
你怎么保证线程add/delete是一样多的?别的线程过来add/delete同一个entry怎么办?
举个极端的例子,当前为空,你的cache上限是10,100个线程同时过来加同一个entry
,会有什么
结果?
轮子不是那么好造的。

【在 d******r 的大作中提到】
: 你用concurrentHashMap 和concrrentQueueList 好了,
: 不管你自己synch 还是用别人build好的,跟我那个
: 算法都不茅盾,也没必要另外开线程。
: 是你自己没明白,我那个方法只要保证每个线程add和delete的
: entry是一样多的就行,你用什么方法sync,三个
: 步骤一起sync还是分开sync都没关系。

d******r
发帖数: 5008
39
同一个method 内加一个,删一个,这个可以保证吧。
LZ的目的是不让buffer无限度增加,不是一定要一个稳定的
Size,一个data entry 就两个数,handle 几百个线程同写
也没多大呀。而且LZ是要保存一定时间内的data。
如果一秒内buffer就过上限被删了,你用其它方式也解决
不了丢数据的问题。
如果这个data只是存比如每5分种所有endpoint
的平均值的话,也就是说,RTT的平均值跟endpoint数量
有关,但data是每几分钟统计并存一次,你这个问题
就根本不存在。


办?
entry

【在 g*****g 的大作中提到】
: 你怎么保证线程add/delete是一样多的?别的线程过来add/delete同一个entry怎么办?
: 举个极端的例子,当前为空,你的cache上限是10,100个线程同时过来加同一个entry
: ,会有什么
: 结果?
: 轮子不是那么好造的。

b***i
发帖数: 3043
40
如果scale了,另一个servlet启动了,咋办?还是得数据库

【在 d******r 的大作中提到】
: 同一个method 内加一个,删一个,这个可以保证吧。
: LZ的目的是不让buffer无限度增加,不是一定要一个稳定的
: Size,一个data entry 就两个数,handle 几百个线程同写
: 也没多大呀。而且LZ是要保存一定时间内的data。
: 如果一秒内buffer就过上限被删了,你用其它方式也解决
: 不了丢数据的问题。
: 如果这个data只是存比如每5分种所有endpoint
: 的平均值的话,也就是说,RTT的平均值跟endpoint数量
: 有关,但data是每几分钟统计并存一次,你这个问题
: 就根本不存在。

相关主题
如何在C++下, 把一个DataColumn 中的值赋给一个_variant_t变量?怎样提高C#计算程序的performance?
一个c++问题 (转载)问个C++编译器如何处理函数内的static 变量
一个搞统计的对C#的第一印象VC++线程问题
进入Programming版参与讨论
w**z
发帖数: 8232
41
take a look at Yammer metrics easy to use and open source.

间,

【在 t**********s 的大作中提到】
: 每个instance 只访问end point 一次,取得数据.
: 所以每个Instance自己没有RTT的均值,因为只有一次访问.
: 我想要的是不同的Instance所有的不同的RTT的均值.
: RTT来自哪个Instance无所谓.
: 所以hash table里应该只是 ts--->RTT.
: 每加入一个新entry,就用它 的ts做基准,比它老规定值的entry都剔除去.

g*****g
发帖数: 34805
42
我的意思是保持cache的上限,超过一不是问题,超过很多长期就可以产生内存泄漏。
光这计数器就有得折腾的,不是你想象的那么简单。

【在 d******r 的大作中提到】
: 同一个method 内加一个,删一个,这个可以保证吧。
: LZ的目的是不让buffer无限度增加,不是一定要一个稳定的
: Size,一个data entry 就两个数,handle 几百个线程同写
: 也没多大呀。而且LZ是要保存一定时间内的data。
: 如果一秒内buffer就过上限被删了,你用其它方式也解决
: 不了丢数据的问题。
: 如果这个data只是存比如每5分种所有endpoint
: 的平均值的话,也就是说,RTT的平均值跟endpoint数量
: 有关,但data是每几分钟统计并存一次,你这个问题
: 就根本不存在。

d******r
发帖数: 5008
43
还用个P计数器呀, 查QUEQUE的SIZE就可以了.
LZ既然说了她只要一个MAP, 你就要相信她的DATA不会大到瞬间当机的程度.
除非她再给出些其他信息. (要不然用任何IN MEMORY的数据结构都不行的,
因为她要存*一段*时间的DATA).
从她解释的情况看, 她就是有一个LONG->FLOAT的MAP, 每一
段时间存一个ENTRY, 存应该不是多线程的, 但读可能是, 仅此而已.你自己给人家加了
无数假设, 夹一大堆私货.

【在 g*****g 的大作中提到】
: 我的意思是保持cache的上限,超过一不是问题,超过很多长期就可以产生内存泄漏。
: 光这计数器就有得折腾的,不是你想象的那么简单。

g*****g
发帖数: 34805
44
你这完全没有常识,我没法教育你。存都是由client触发的,还不是多线程的。
你爱信啥信啥吧。你反正也不是做后端的。否则你这水平,去面试被秒杀。

【在 d******r 的大作中提到】
: 还用个P计数器呀, 查QUEQUE的SIZE就可以了.
: LZ既然说了她只要一个MAP, 你就要相信她的DATA不会大到瞬间当机的程度.
: 除非她再给出些其他信息. (要不然用任何IN MEMORY的数据结构都不行的,
: 因为她要存*一段*时间的DATA).
: 从她解释的情况看, 她就是有一个LONG->FLOAT的MAP, 每一
: 段时间存一个ENTRY, 存应该不是多线程的, 但读可能是, 仅此而已.你自己给人家加了
: 无数假设, 夹一大堆私货.

b*******s
发帖数: 5216
45
boost::multi_index_container?

间,

【在 t**********s 的大作中提到】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: tennisalways (tennisforever), 信区: Java
: 标 题: 怎么把一个Map放到queue里?
: 发信站: BBS 未名空间站 (Wed Mar 13 07:09:10 2013, 美东)
: 我有个Server端应用,每当一个client接入,这个App就生成一个新的instance,并访问一
: 个end point读取资料一次.
: 我现在想对这个round trip time进行统计. 所以我将每次访问end point的时间,和相
: 对应的RTT生成个Map,放到个queue里,以便查找某个时间段RTT的 min/max/average.
: 之所以用queue,是因为我不想让数据无限增长.超过时间段就踢出去.Map里的访问时间,
: 就是用来决定数据是否在时间上已经expire了用的.

1 (共1页)
进入Programming版参与讨论
相关主题
我是一个线程 (转载)一个c++问题 (转载)
关于多线程锁:锁代码还是锁资源?一个搞统计的对C#的第一印象
被opengl害惨了!怎样提高C#计算程序的performance?
用volatile退出线程对不对?(C++)问个C++编译器如何处理函数内的static 变量
两个线程异步通信是不是用信号最好?VC++线程问题
lock-free data structures问一下可能性,MingW生成的DLL和MSVC生成的DLL两个线程同步
c++posix多线程问题请教Dao语言2.0第一个测试版发布了!
如何在C++下, 把一个DataColumn 中的值赋给一个_variant_t变量?关于MVC模式有什么带例子的教程?
相关话题的讨论汇总
话题: rtt话题: map话题: db话题: queue话题: 线程