Redian新闻
>
战为止戈,单线程 50M TPS
avatar
战为止戈,单线程 50M TPS# Programming - 葵花宝典
k*0
1
一直就没刷出来过啊……
买到了6月回中国的award travel economy,现在8月的返程买不到了……
请问还有机会刷出来吗?????没机会的话就得赶紧想其他办法了……唉……
avatar
a*a
2
给你来个纯真的
avatar
T*i
4
我说过,我还保留单线程处理订票请求的选项。
今天写了一个小程序进行测试。
假设:
路段有1000万个。也就是全国1000万个车站
当然,全国不可能有1000万个车站。但是可以按照路段/车次划分。
也就是全国几个月的车票可以放进去
每趟车不超过56635个座位,用ushort表达。
内存规划:
一共大约20M数据,全部fit进L3 cache。
假定:
还是一次请求20个路段。
初始化:
1000万路段填满,一共超过320亿张票。不知道够不够今后10年的总运量?
访问模式:
尽量避免L1和L2 cache hit。每个循环每路段逐一访问,最大可能造成L1,L2 miss。
结果:
如下程序:
循环:5000 × 10000000 / 20 = 2500000000
用时:49.86s
2500000000 / 49.86 = 50.14M TPS。
程序如下:
unsigned short data[10000000];
bool reserveTicket(unsigned short *line, int start, int len) {
unsigned short *p = line + start;
for (int i=0; iif (*p == 0)
return false;
p++;
}
p = line + start;
for (int i=0; i(*p)--;
p++;
}
return true;
}
int main(int argc, char *argv[]) {
for (int i=0; i<10000000; i++) {
data[i] = 65535;
}
teraspaces::qwframework::DateTime t1 = teraspaces::qwframework::DateTime::
utcNow();
for (int i=0; i<5000; i++) {
unsigned short *curLine = data;
for (int j=0; j<10000000 / 20; j++) {
bool res = reserveTicket(curLine, 0, 20);
if (!res) {
printf("Failed!\n");
}
curLine += 20;
}
}
teraspaces::qwframework::DateTime t2 = teraspaces::qwframework::DateTime::
utcNow();
printf("Total seconds %f\n", (t2-t1).totalSeconds());
return 0;
avatar
p*y
5
可以买呀,刚出票,你在试试

★ 发自iPhone App: ChineseWeb 7.7

【在 k**********0 的大作中提到】
: 一直就没刷出来过啊……
: 买到了6月回中国的award travel economy,现在8月的返程买不到了……
: 请问还有机会刷出来吗?????没机会的话就得赶紧想其他办法了……唉……

avatar
h*i
6
古玩123.... 谁啊这是?

【在 a******a 的大作中提到】
: 给你来个纯真的
avatar
G*y
7
我上个月用了125M,是不是应该换成plan 1啊,一个月省15刀
avatar
T*i
8
goodbug如果不服,可以用Java写一个看看,结果应该差不多。
avatar
z*x
9
就是古惑的意思。

【在 h*****i 的大作中提到】
: 古玩123.... 谁啊这是?
avatar
x*u
10
12306不是慢在你这部分上面。

【在 T********i 的大作中提到】
: 我说过,我还保留单线程处理订票请求的选项。
: 今天写了一个小程序进行测试。
: 假设:
: 路段有1000万个。也就是全国1000万个车站
: 当然,全国不可能有1000万个车站。但是可以按照路段/车次划分。
: 也就是全国几个月的车票可以放进去
: 每趟车不超过56635个座位,用ushort表达。
: 内存规划:
: 一共大约20M数据,全部fit进L3 cache。
: 假定:

avatar
h*i
11
古惑,还是妹子。。。
洪兴十三妹啊,帅!

【在 z**x 的大作中提到】
: 就是古惑的意思。
avatar
T*i
12
你凭什么说不是?
其他部分做快了更容易,基本是linear scalable。没有任何理论困难。

【在 x****u 的大作中提到】
: 12306不是慢在你这部分上面。
avatar
b*s
13
啥是洪兴十三妹?

【在 h*****i 的大作中提到】
: 古惑,还是妹子。。。
: 洪兴十三妹啊,帅!

avatar
x*u
14
这是你的想象。
12306本身挂掉的原因是低估了人民群众的抢票热情,几千万人刷web和几千万抢票软件
差别大了去了。后来铁道部学乖了,改了几个小地方立即就没问题了。
解决这类问题,最大的困难在于出事之前没人能预测到负载的瓶颈在哪里。就算立即知
道原因,谁敢在春运把12306下线半天扩展一下?

【在 T********i 的大作中提到】
: 你凭什么说不是?
: 其他部分做快了更容易,基本是linear scalable。没有任何理论困难。

avatar
h*i
15
鄙视你

【在 b*s 的大作中提到】
: 啥是洪兴十三妹?
avatar
T*i
16
做技术的,不应该做任何不必要的假设。
不应该假设性能做到多少就够用了。应该是能做到极限,就做到极限。
事实证明,做到极限,无比简单。反倒是只知道全堆搭积木的费劲还做出垃圾。
这就是差别。

【在 x****u 的大作中提到】
: 这是你的想象。
: 12306本身挂掉的原因是低估了人民群众的抢票热情,几千万人刷web和几千万抢票软件
: 差别大了去了。后来铁道部学乖了,改了几个小地方立即就没问题了。
: 解决这类问题,最大的困难在于出事之前没人能预测到负载的瓶颈在哪里。就算立即知
: 道原因,谁敢在春运把12306下线半天扩展一下?

avatar
a*3
17
啊?啊啊啊啊啊老大。。。啥纯真滴。。。
不要说准备给亲们念诗哇~~~太纯真偶们也受不了滴~
咳咳~(^_^;)

【在 a******a 的大作中提到】
: 给你来个纯真的
avatar
T*i
18
那几个全堆程序员还有啥好说?
估计今后100年以内,此类应用单机单线程都将不可被超越。
avatar
a*a
19
还以为纯纯的诗歌是纯真的你的最爱呢, 呵呵呵

【在 a********3 的大作中提到】
: 啊?啊啊啊啊啊老大。。。啥纯真滴。。。
: 不要说准备给亲们念诗哇~~~太纯真偶们也受不了滴~
: 咳咳~(^_^;)

avatar
g*g
20
本来就是io bound,算几个计数器有蛋用,不服把你的系统上线我来实测呀。
还有就是分座位又太监了?i服了u
avatar
a*a
21
咳咳额, 吃撑了。 估计今晚要放你鸽子了
avatar
T*i
22
请别给你脸不要。
至于I/O。不指望你能懂了。因为你的表现太令人失望了。
分座位实时和全局优化几周前已经深入讨论过了。
这是我给出的一个实时优化的算法:
http://www.mitbbs.com/article/Programming/31300367_3.html
考虑进去临时加车也就是一个小修改。很容易证明是最优解。

【在 g*****g 的大作中提到】
: 本来就是io bound,算几个计数器有蛋用,不服把你的系统上线我来实测呀。
: 还有就是分座位又太监了?i服了u

avatar
a*3
23
哈哈哈哈
木事木事。。。那赶紧炸楼。。。趁着木有人....
赶紧滴~

【在 a******a 的大作中提到】
: 咳咳额, 吃撑了。 估计今晚要放你鸽子了
avatar
g*g
24
反正上不了线,继续做太监,你爱咋吹咋吹吧。
avatar
x*g
25
赶紧围观~
[在 antique123 (果子店) 的大作中提到:]
:哈哈哈哈

:...........
avatar
T*i
26
我现在不在乎是否上线了。
反正source贴出来,大家都能验证能否50M TPS。
你咋就这么不要脸呢?是不是还期望我打得更狠一点?
我来帮你出名吧。

【在 g*****g 的大作中提到】
: 反正上不了线,继续做太监,你爱咋吹咋吹吧。
avatar
j*x
27
连这个都不知道
十三妹就是独臂神尼的徒弟嘛
独臂神尼就是前明长平公主嘛
为啥叫洪兴呢
朱重八是洪武,所以显然是为了复兴大业
你这都参不透,真是大清的耻辱,八旗的败类啊

【在 b*s 的大作中提到】
: 啥是洪兴十三妹?
avatar
g*g
28
一个破计数器只能做 50m, 加上找座位 5m 必然挂。加上 io 序列化 5万都够呛。mit
没人需要你指导单线程计数器怎么写。晒这个程序太搞笑了。
avatar
a*3
29
哐当。。。
我倒。。。
这个帖子怎么还在啊。。。
不是删了么。。。

【在 j*****x 的大作中提到】
: 连这个都不知道
: 十三妹就是独臂神尼的徒弟嘛
: 独臂神尼就是前明长平公主嘛
: 为啥叫洪兴呢
: 朱重八是洪武,所以显然是为了复兴大业
: 你这都参不透,真是大清的耻辱,八旗的败类啊

avatar
T*i
30
你这说的是人话么?
你还算人么?你拉的这一坨纯粹是人身攻击。
是个人稍微有点常识负点责任都不可能说出这种话。
你就算是个畜生,就算大家都知道你是畜生,你也不能每天过来恶心大家。

mit

【在 g*****g 的大作中提到】
: 一个破计数器只能做 50m, 加上找座位 5m 必然挂。加上 io 序列化 5万都够呛。mit
: 没人需要你指导单线程计数器怎么写。晒这个程序太搞笑了。

avatar
j*x
31
我刚发的,怎么就要求删呢
你跟九难师太有什么关系?

【在 a********3 的大作中提到】
: 哐当。。。
: 我倒。。。
: 这个帖子怎么还在啊。。。
: 不是删了么。。。

avatar
T*i
32
希望版主MARK此文。
avatar
a*3
33
啊。。。九难师太是户啊。。。
挂了么。。。8是我杀的。。。

【在 j*****x 的大作中提到】
: 我刚发的,怎么就要求删呢
: 你跟九难师太有什么关系?

avatar
T*i
34
这个,我还是希望大家觉得能有用。
avatar
b*s
35
蛮子真狡猾……

连这个都不知道
十三妹就是独臂神尼的徒弟嘛
独臂神尼就是前明长平公主嘛
为啥叫洪兴呢
朱重八是洪武,所以显然是为了复兴大业
你这都参不透,真是大清的耻辱,八旗的败类啊

【在 j*****x 的大作中提到】
: 连这个都不知道
: 十三妹就是独臂神尼的徒弟嘛
: 独臂神尼就是前明长平公主嘛
: 为啥叫洪兴呢
: 朱重八是洪武,所以显然是为了复兴大业
: 你这都参不透,真是大清的耻辱,八旗的败类啊

avatar
s*u
36
请教一下,
假设旅客A订从北京到广州的车票。
根据你这个软件,他的座位是哪个啊?
还有路段指什么?
比如就4站吧,北京,徐州,上海,广州。
按你这个设计,路段有几个?
3个,还是 6个?
avatar
z*i
37
狡猾半天最后还不是给抓进去了。

【在 b*s 的大作中提到】
: 蛮子真狡猾……
:
: 连这个都不知道
: 十三妹就是独臂神尼的徒弟嘛
: 独臂神尼就是前明长平公主嘛
: 为啥叫洪兴呢
: 朱重八是洪武,所以显然是为了复兴大业
: 你这都参不透,真是大清的耻辱,八旗的败类啊

avatar
N*n
38
单机计数器快算什么本事。。
至少应该加两个部分:
1)查询。所有状态都在一个单机装着。其它任务分给其它附属机器,可以。但是,至
少得允许其它机器查询。哪怕是只一个机器查询,备份,也行,但不能没有
2)必须和多个抢票client联网。否则8个NIC放在那里摆设啊。proof of concept的部
分得有。
这两部分有了,算法没问题,管你是单线程还是多线,达到5M/s, 可以算这部分模块的
proof of concept 有了。

mit

【在 g*****g 的大作中提到】
: 一个破计数器只能做 50m, 加上找座位 5m 必然挂。加上 io 序列化 5万都够呛。mit
: 没人需要你指导单线程计数器怎么写。晒这个程序太搞笑了。

avatar
N*n
39
只要抢到票了。有车次和起始,终点。座位可以另机出

【在 s****u 的大作中提到】
: 请教一下,
: 假设旅客A订从北京到广州的车票。
: 根据你这个软件,他的座位是哪个啊?
: 还有路段指什么?
: 比如就4站吧,北京,徐州,上海,广州。
: 按你这个设计,路段有几个?
: 3个,还是 6个?

avatar
s*u
40
非常非常关键的一个问题。
旅客A和旅客B同时订北京到广州的车票。
根据你这个软件,怎么判断是A抢到了还是B抢到了呢?
avatar
l*9
41
人家这就是个计数器,具体业务由系统的其他部分承担。老魏大战风车威风八面

【在 s****u 的大作中提到】
: 非常非常关键的一个问题。
: 旅客A和旅客B同时订北京到广州的车票。
: 根据你这个软件,怎么判断是A抢到了还是B抢到了呢?

avatar
N*n
42
这个问题只有在最后只剩几张票的时候才出问题。。结论是随机的。
而且如果 C是番禺到广州,三个同时抢最后一张票,C胜出因为站数少。A/B
被弹回。
关于interlocked,如果我没理解错,最后只剩一张全程票的情况,即每个区段
都只有一张,A和B 先访问的那个,比如A,会把第一个区段比如北京至天津给抢到
并清零。B再访问的时候北京到天津没票了。。就推出抢票。A要借着扫下去到番禺才发现
没后段票,并退出,并把全区段再加一。。

【在 s****u 的大作中提到】
: 非常非常关键的一个问题。
: 旅客A和旅客B同时订北京到广州的车票。
: 根据你这个软件,怎么判断是A抢到了还是B抢到了呢?

avatar
T*i
43
你的这个理解正确。
其实我也是纸上谈兵,写了几行比划一下。先选多线程带lock指令的。
这里赞一下SSA的contention解决方案,确实elegant。
后来我感觉多核的代价也挺高,就试验了一下这个单核,简单,一致,而且性能超高。

发现

【在 N*n 的大作中提到】
: 这个问题只有在最后只剩几张票的时候才出问题。。结论是随机的。
: 而且如果 C是番禺到广州,三个同时抢最后一张票,C胜出因为站数少。A/B
: 被弹回。
: 关于interlocked,如果我没理解错,最后只剩一张全程票的情况,即每个区段
: 都只有一张,A和B 先访问的那个,比如A,会把第一个区段比如北京至天津给抢到
: 并清零。B再访问的时候北京到天津没票了。。就推出抢票。A要借着扫下去到番禺才发现
: 没后段票,并退出,并把全区段再加一。。

avatar
L*e
44
单就抢票这个功能来讲,我一开始就以为你的方案就是单核,并且我也建议单核。你的
方案多核多线程对performance提高有限,极端情况甚至会降低,并且增加了很多不稳
定性。。。

【在 T********i 的大作中提到】
: 你的这个理解正确。
: 其实我也是纸上谈兵,写了几行比划一下。先选多线程带lock指令的。
: 这里赞一下SSA的contention解决方案,确实elegant。
: 后来我感觉多核的代价也挺高,就试验了一下这个单核,简单,一致,而且性能超高。
:
: 发现

avatar
N*n
45
N核=〉最后(N-1)张票的抢票会出问题,即有票,但是卖不出。需要刷web服务器抢
但是多核,是否可以更大效率使用8NIC,这个得测试,或者非常有经验的来分析

【在 L*****e 的大作中提到】
: 单就抢票这个功能来讲,我一开始就以为你的方案就是单核,并且我也建议单核。你的
: 方案多核多线程对performance提高有限,极端情况甚至会降低,并且增加了很多不稳
: 定性。。。

avatar
T*i
46
加入SSA的PATCH,不稳定性应该没有。
20-30行代码,如果不能确认稳定,也太操蛋了。
1Q Intel出8 X 12核Xeon + 3 X 8 GT QPI,到时候多和还是应该快不少才对。
不过搞上亿次其实也没啥用。

【在 L*****e 的大作中提到】
: 单就抢票这个功能来讲,我一开始就以为你的方案就是单核,并且我也建议单核。你的
: 方案多核多线程对performance提高有限,极端情况甚至会降低,并且增加了很多不稳
: 定性。。。

avatar
T*i
47
双CPU最优是双NIC。这根本就没任何争论。

【在 N*n 的大作中提到】
: N核=〉最后(N-1)张票的抢票会出问题,即有票,但是卖不出。需要刷web服务器抢
: 但是多核,是否可以更大效率使用8NIC,这个得测试,或者非常有经验的来分析

avatar
L*e
48
再说一个略微相关的,从系统设计原则来讲,scale out要优先于scale up考虑。换言
之就是如果能够用distributed system来解决,就尽量不依靠单机性能的提高。当然,
有同学指出现在一些系统因为并发引起的不稳定,转回了单机设计,这些案例要具体分
析。
单机系统可能在当前满足需求,但是将来需求变动时,要从根本上去改动设计,否则会
面临performance指数级下降。。。还是拿抢票来做例子,如果有需求说尽量避免换座
怎么办?或者说允许用户选择同意或不同意换座怎么办?如果订多张票时情况如何处理
,比如说一家人希望订四张票,如果不够四张就不订的情况,如果还有要求座位挨着的
情况出现怎么办?等等等等(没有太细想,随便举些例子,也许有的部分可以在你现在
的设计上去解决)。。。scale up的设计碰到这种因需求变动而增加的复杂性,几乎就
得推到重来。。。

【在 T********i 的大作中提到】
: 加入SSA的PATCH,不稳定性应该没有。
: 20-30行代码,如果不能确认稳定,也太操蛋了。
: 1Q Intel出8 X 12核Xeon + 3 X 8 GT QPI,到时候多和还是应该快不少才对。
: 不过搞上亿次其实也没啥用。

avatar
s*u
49
某些地方想简单了是可以修改的。
我就是想提示一下,连订票人都不区分,怎么个订法?
比如10个人买8张票,我肯定知道前8个有票,后
两个没票。问题是卖给谁了啊?
所以,每个ReserveTicket的子线程肯定得有个标识吧。
抢完票以后,ReserveTicket以后,肯定得把
这个结果根据子线程的标识把这个结果记录进数据库吧。
然后,还得通知顾客抢票成功或者失败吧。
产生这些通知的程序在哪里呢?
这些不靠这个CPU同时干么?
这些问题,魏老师打算怎么解决啊?
avatar
T*i
50
其实我也认为这就是一个计数器。
计数器是必须的,而且要针对高耦合数据优化。
我一直都主张能scale out,尽量scale out。遗憾的是这个计数器不能。一旦scale
out,通信开销会立刻kill掉所有性能。从另外的角度讲,多核何尝不是一种scale out
,只不过QPI bus性能高么!为啥拘泥于形式呢?
因此,我有信心这个架构不但能土共最优性能,还能提供最简单的结构和最灵活的扩展。
比如你说的尽量避免换座,或者一家人希望订四张票,如果不够四张就不订的情况,如
果还有要求座位挨着的,这些都能很容易scale out。
事实上,避免换座已经充分讨论过。实时分配座位,换座不可避免,但是能实时最优化。
我的算法在此:
http://www.mitbbs.com/article/Programming/31300367_3.html
至于你说的其他条件,都能够很容易解决。ALL_OR_NONE(AON)可以在订票请求中指示。
一家在一起可以分配座位时候优化。
股票的regulation成千上万页,而且几乎每天都有变动,证交所的binary协议不也一直
适应着么?比如买票这种all_or_none (AON)之类的,俺们股票都有专用术语。

【在 L*****e 的大作中提到】
: 再说一个略微相关的,从系统设计原则来讲,scale out要优先于scale up考虑。换言
: 之就是如果能够用distributed system来解决,就尽量不依靠单机性能的提高。当然,
: 有同学指出现在一些系统因为并发引起的不稳定,转回了单机设计,这些案例要具体分
: 析。
: 单机系统可能在当前满足需求,但是将来需求变动时,要从根本上去改动设计,否则会
: 面临performance指数级下降。。。还是拿抢票来做例子,如果有需求说尽量避免换座
: 怎么办?或者说允许用户选择同意或不同意换座怎么办?如果订多张票时情况如何处理
: ,比如说一家人希望订四张票,如果不够四张就不订的情况,如果还有要求座位挨着的
: 情况出现怎么办?等等等等(没有太细想,随便举些例子,也许有的部分可以在你现在
: 的设计上去解决)。。。scale up的设计碰到这种因需求变动而增加的复杂性,几乎就

avatar
T*i
51
没啥,一个8字节的unique req ID全搞定了。
都是内部系统,咋定义都行。

【在 s****u 的大作中提到】
: 某些地方想简单了是可以修改的。
: 我就是想提示一下,连订票人都不区分,怎么个订法?
: 比如10个人买8张票,我肯定知道前8个有票,后
: 两个没票。问题是卖给谁了啊?
: 所以,每个ReserveTicket的子线程肯定得有个标识吧。
: 抢完票以后,ReserveTicket以后,肯定得把
: 这个结果根据子线程的标识把这个结果记录进数据库吧。
: 然后,还得通知顾客抢票成功或者失败吧。
: 产生这些通知的程序在哪里呢?
: 这些不靠这个CPU同时干么?

avatar
s*u
52
但是,分配ID难道不是CPU的责任么?
还有记录和通知,都是需要CPU时间的啊。
这些时间总不能是0吧。那么你计算速度的时候
就不好忽略了啊。

【在 T********i 的大作中提到】
: 没啥,一个8字节的unique req ID全搞定了。
: 都是内部系统,咋定义都行。

avatar
T*i
53
ID由外围的前端机分配,pass through整个流程。
这个叫做straight through processing,又是交易系统的名词,其实都是扯淡起个名
词。你就凑合着听吧。

【在 s****u 的大作中提到】
: 但是,分配ID难道不是CPU的责任么?
: 还有记录和通知,都是需要CPU时间的啊。
: 这些时间总不能是0吧。那么你计算速度的时候
: 就不好忽略了啊。

avatar
g*g
54
SSA说了 IO 是瓶颈,你就选择性无视了?

【在 T********i 的大作中提到】
: 加入SSA的PATCH,不稳定性应该没有。
: 20-30行代码,如果不能确认稳定,也太操蛋了。
: 1Q Intel出8 X 12核Xeon + 3 X 8 GT QPI,到时候多和还是应该快不少才对。
: 不过搞上亿次其实也没啥用。

avatar
S*A
55
我看了一下,每个路段 + 20 short 顺序访问,这个对 L1 cache miss
的角度来说还不是最坏的。因为 20 short = 40 bytes。i7 的 L1 cache
line 是 64 bytes > 40 bytes。 而且顺序访问会导致 prefetch 下个
cache line 的命中率为 100%。顺序访问是 CPU 重点优化的类型。
建议完全随机访问。从一个请求数组里面取要求的版次,然后把结构
写到一个输出数组。请求数组可以预先随机化。这样比较接近真实
情况,你需要依赖其他代码来serialize 你的请求序列。
这样你的结果大概没有 50M。保守估计 5M 还是有的。
我一直不担心内存的速度。

【在 T********i 的大作中提到】
: 我说过,我还保留单线程处理订票请求的选项。
: 今天写了一个小程序进行测试。
: 假设:
: 路段有1000万个。也就是全国1000万个车站
: 当然,全国不可能有1000万个车站。但是可以按照路段/车次划分。
: 也就是全国几个月的车票可以放进去
: 每趟车不超过56635个座位,用ushort表达。
: 内存规划:
: 一共大约20M数据,全部fit进L3 cache。
: 假定:

avatar
T*i
57
其实大并发一般都是刚放票狂抢。
这种况下L1,L2都能Hit。
那种完全随机,可能性应该微乎其微。因此,实际使用,性能平均应该更好一些。
再说,L3 cache全cover,Sandy Bridge以后,L3 cache是full speed。性能提升是巨
大的。

【在 S*A 的大作中提到】
: 我看了一下,每个路段 + 20 short 顺序访问,这个对 L1 cache miss
: 的角度来说还不是最坏的。因为 20 short = 40 bytes。i7 的 L1 cache
: line 是 64 bytes > 40 bytes。 而且顺序访问会导致 prefetch 下个
: cache line 的命中率为 100%。顺序访问是 CPU 重点优化的类型。
: 建议完全随机访问。从一个请求数组里面取要求的版次,然后把结构
: 写到一个输出数组。请求数组可以预先随机化。这样比较接近真实
: 情况,你需要依赖其他代码来serialize 你的请求序列。
: 这样你的结果大概没有 50M。保守估计 5M 还是有的。
: 我一直不担心内存的速度。

avatar
T*i
58
另外,请求就是一个指针queue。每个entry 8字节而已。

【在 T********i 的大作中提到】
: 其实大并发一般都是刚放票狂抢。
: 这种况下L1,L2都能Hit。
: 那种完全随机,可能性应该微乎其微。因此,实际使用,性能平均应该更好一些。
: 再说,L3 cache全cover,Sandy Bridge以后,L3 cache是full speed。性能提升是巨
: 大的。

avatar
T*i
60
你别自杀ID了,留在这里继续现眼好了。
你把这里当作你的精神病康复所,俺们忍忍好了。

【在 g*****g 的大作中提到】
: 说啥都没用,做出来我500万client去测试成功了,我自杀ID。你在这里再吹一百次也
: 是太监。

avatar
x*u
61
这是不差钱啊

【在 T********i 的大作中提到】
: 做技术的,不应该做任何不必要的假设。
: 不应该假设性能做到多少就够用了。应该是能做到极限,就做到极限。
: 事实证明,做到极限,无比简单。反倒是只知道全堆搭积木的费劲还做出垃圾。
: 这就是差别。

avatar
b*s
62
金融业么,寿司的骆驼比马大

【在 x****u 的大作中提到】
: 这是不差钱啊
avatar
x*u
63
没当上小三的看小三的眼光啊

【在 b*******s 的大作中提到】
: 金融业么,寿司的骆驼比马大
avatar
b*s
64
你怎么知道?

【在 x****u 的大作中提到】
: 没当上小三的看小三的眼光啊
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。