|
J***n 发帖数: 391 | 2 1. 如果数据查找多的话,需要使用哪种数据结构?
// 我复习下来,一直认为插入修改多用LinkedList,查询多的话用ArrayList. 但是好
像都不是正解。ArrayList如果查找value的话,也需要遍历整个列表。后来想了想,查
找最快的话就是binarySearch了,但是要基于sorted list的基础上,那是不是应该使
用SortedLinkedList呢?
2. 1 million的数据 (key-value),多查找,需要使用哪种数据结构?
// TreeMap 吗?
3. 使用线程实现1 billion 整数的求和,最后返回一个数
// 我把数据分成10份,定义10个线程来分别来做求和,最后把每个线程所得数相加,
得到最后的数。不知道思路对不对?
不过我困惑的是,如果是单一任务的话,难道不是单线程要比多线程快吗?可以一口气
运行,为什么还要浪费切换的时间呢?这道题的用意是什么呢?
谢谢。 |
|
z****e 发帖数: 54598 | 3 你上次settimeout是什么时候?
我上次搞多线程是android的双线程
主要是google自己装逼,要把input/output的thread弄到一块去
如果是我直接单线程搞定,服务器端多线程n年没写过了
都是直接用轮子,做个web需要什么多线程,除非你做的是游戏
这个有一定可能,但是也还是有很大可能可以绕开 |
|
z****e 发帖数: 54598 | 4 如果你想找纯粹的mvc在app开发上
看android会比较纯粹,因为android是多线程
一个线程负责输入,一个线程负责输出,是当前比较主流的游戏开发模式
ios只有一个线程,单线程,输入和输出会被捆绑起来 |
|
w****e 发帖数: 1883 | 5 多线程的context switch overhead早就可以做的非常小了。即使只有一个CPU,除非你
的程序是永远100% CPU不停地算,不然的话很多real world的application大部分时间
都花在等待慢几个数量级的IO上,这种时候多线程当然比单线程效率高多了。
至于C++的多线程就别拿出来说了,简直是尼玛反人类。用了几年pthread, 突然用上了
Java thread,有一种指哪儿打哪儿的感觉,想怎么操纵怎么操作。棘手的难题?看不出
来。我觉得Java最大的贡献之一就是多线程编程在保留了易用性的同时还提供了强大的
功能性。当然,这一切要归功天才的Doug Lea.
thread |
|
s*****2 发帖数: 117 | 6 在一个单cpu的计算机下跑程序,
如果这个程序采用多线程并行处理来实现,
或者采用一个线程逐个逐个实现,
哪一个快点?
我觉得在单cpu的情况下,两个的运行速度没啥区别。
不知道对不对?
thanks |
|
|
f****4 发帖数: 1359 | 8 开始蛮生气的,先写的私货部分。但写啊写啊,气也消得差不多了。删了也可惜,修改
也觉得麻烦,干脆移到私货部分,扔个想法在开头。
我在这板块上也不是为了和谁过不去,看到点想法,觉得可以讨论一下的人,估计不止
我一个。。。
要是想嘲笑我背景的呢,那也没什么,开头我就说了:我就强在做项目。但那个
ThatOne,你既然啥都明白,那就给个补丁,降低一下排队时间。谢谢~(我一直在等
这个补丁,要是实在等不到也就算了)
之前有人嬉笑打趣,说最方便不如让TG调查,有多少人要买春运火车票的,然后送票上
门。但其实不用这么麻烦,既然97年(?)就已经有了票务系统,当这个车次已经抵达
终点了,这个票务信息就已经没什么用处了。不过,应该可以废物利用依稀:现在票上
有身份证号码,知道你的起点和终点,还知道你这个车次是什么时候的(要是能有什么
时候买票的信息更好)。这些就是元数据,大数据+数据挖掘。也没有时间限制,一台
主机慢慢跑,或者上分布式的,都行。每个月跑一次,修正模型。到春运那会应该能大
致估算出春运流量,从哪去哪。因为农民工春节之后出来打工,春节前总是要回去的。
讨厌的是城市工作的白领夫妻,今年可能去婆... 阅读全帖 |
|
T********i 发帖数: 2416 | 9 更何况是其他线程解码喂给单线程。
最傻逼的做法,顶多几个单入单出的队列。
再傻逼一点,还有10几个core可用。
最傻逼的,是10几个core不能接近MAX 10G的带宽,要10G网卡有啥用?5年前就能MAX了。 |
|
z****e 发帖数: 54598 | 10
你的方式不公平,你不可能按照一个core的处理顺序来强制排序好吧?
你至少开它几个core,然后用几个网卡,然后开几个tcp connections
然后挨个轮询一次,归并最后拿到的票的信息,形成一个pool
从中找到最优解,否则要你做什么?你做了半天就是一个单线程的破烂
你当谁写不出来单线程,单core,双循环穷举算法?
我不想说了,好累啊,你连这个都不懂,我能说啥? |
|
|
i**********p 发帖数: 1341 | 12 en, 多线程太tricky,唯一clean的solution是让多线程program严格simulate单线程
program。最小k本质上就是这个simulation
我现在觉得你组织比赛很好。。既讲规则,又有花样,还懂多线程programming |
|
s*****o 发帖数: 1565 | 13 一个是2核4线程,一个是4核8线程...
单线程任务区别应该不大
多线程任务后者性能至少高出50% |
|
l*****o 发帖数: 473 | 14 我的一些看法:
有问题。
听楼主描述的现象是发生了page Thrashing.
IO bound的情况下,用多线程是非常有好处的。
在单CPU情况下,只有完全CPU bound的情况下,多线程是不利的。而且,多线程还可能
会引起false sharing,锁的开销等wanting。 |
|
z****e 发帖数: 54598 | 15 ror真心谈不上颠覆
java那帮人早在00年就作出了struts
远比ror要早四年实现mvc,比django要早五年
改点语法不算啥,核心构架是一样的就谈不上颠覆
最初的颠覆应该是cgi->php,然后jsp抄袭php,asp一年后也抄了
这样可视化通过在html中插入逻辑代码而不是在逻辑代码中插入html
成为主流的web开发模式
然后是mvc的颠覆,触发点是
jsp&servlet->mvc,同期甚至搞出了ejb这么神奇的东西
mvc里面就可以直接把service->ejb,ejb连接口都定义好了
但是太过于复杂和超前,所以ejb一直都没有掀起太大波澜
ejb就是今天npm那些的prototype,idea是一样的
但是mvc还是比较颠覆的,相比之下,php就显得很无能
因为逻辑代码和html等无法分离,比较乱,mvc可以
struts比较早实现了mvc,然后ror,django这些,这些玩意本质上是一样的
作为一个证据,其实ror可以在安装了jruby的j2ee容器中使用
同样,django也可以在安装了jython的j2ee容器中使用
ibm一些产品就支持这两个东东,一样的... 阅读全帖 |
|
z****e 发帖数: 54598 | 16 涉及ui的app最好只上单线程
否则多线程的并发会严重影响fps的刷新效率
闪烁等老问题经常性出现
而且mobile和tablet的性能吃紧
会使得问题更加严重
当然可以启动多线程
但是最好不要这么做
如无比要,不启动额外的线程
这个不仅在mobile和tablet上如此,pc上也是如此 |
|
z****e 发帖数: 54598 | 17 现在mobile的multi-core最多做到什么程度?
duo core吧?
两核上多线程没有什么太大优势
所以web server不少都开始搞单线程了
我不认为app这种东西需要什么大量多线程
实际上客户端的软件,多线程并不是必需品
而是一个奢侈品,不做也没什么大不了的 |
|
g*****g 发帖数: 34805 | 18 Cassandra的架构底下,所有的数据在一个小的延迟之后都复制到了其他的数据中心,
所有
数据中心的数据都是一样的。我说了单线程处理一个车次比较公平,因为排队问题。总
共几千
张票也没啥瓶颈问题。纯技术讲,如果不考虑排队。多线程可以用time split来拿这些
订单,
这样就不会有冲突。比如每10分钟的第1,2...到10分钟分给10个不同线程。这样不同
线程可以
同时来拿。另一个常见的做法就是用ZK 来分发给几个独立的queue。 |
|
n****1 发帖数: 1136 | 19 OOP的粉丝们喜欢吹鼓一切皆对象, 对象都有自己的method, 就像有自己的独立人格。
譬如BankAccount是对象, 它有deposit/withdraw/query这些method, 甚至连True/
False这俩也是对象。 但其实这些都是死物, 它们自己不会动的, 而是被一些特殊的
对象: 活对象来使用, 像Banker这种。
这些活对象的却应该有自己的动作(method), 而且除此之外, 每个活对象还都需要有
独立运作空间。 换句话说, 每个对象都应该有自己独立的thread。 而传统的c++/
java/python这些oop都是把object和thread两个概念完全正交分离的, 结果就是在
multithread中很难搞懂object与thread之间错综复杂的关系, 所以程序员讨厌多线程
, 写出来的最robust的架构都是单线程的。
而每个活对象独占一线程, 同时把线程这玩意完全abstract out的思想, 正是Erlang
/Scala所提倡的actor model. 而Erlang/Scala的风靡正说明了object和thread两个概
念其实是应... 阅读全帖 |
|
T********i 发帖数: 2416 | 20 goodbug根本不懂Interlocked Increament/Decrement。连牵狗都不会。
【 goodbug: 】
你错了,票是有限的,不能超卖,所以必须有锁。而且是多车段,多车次的冲突。不过
魏公公号称要单线程搞定,是不用锁。
一台服务期最多可以起多少thread不太了解, 我的一台12个core机器跑500个线程做运
算处理基本就滩了。
假设以500个线程同步来跑就意味着每个线程每秒需要处理1万张票。按照老魏的算法,
说白了每张票就是InterlockedIncreament 的操作,所以问题简化为所有的core能否一
秒处理500万的interlocked increment。我的分析对吗? (数据全都在内存,似乎也没
有地方需要用锁) |
|
z*******3 发帖数: 13709 | 21 老魏的方案就是用计数器绕开了多线程的transaction
问题在于,这么做,多线程并发就会出错
很好理解,学过多线程的都知道
现在发现,这个错误有些不对,理论上不正确
于是打算搞单线程…………………………………… |
|
b*******s 发帖数: 5216 | 22 多线程模型的缺点是编程复杂,调试困难,但是可以利用多核,设计好throughput很高。
js等用单线程我估计是因为它部署的系统未必有多核,而且多线程支持都比较差
还有就是资源限制,将来硬件变强,系统限制放松,多线程很可能重新得势 |
|
c*******0 发帖数: 5247 | 23
现代移动设备编程,不管是苹果还是android,有几个app是没有多线程的?你是说这些
app都是不明不白写出来的?
再说Go和多线程没啥直接关系,Go的思想是程序并发化,你单线程可以并发,多线程可
以并发,多核可以并发,多机可以并发,这有什么关系啊。你要问并发有没有用,是不
是扯淡,这里的人说了不算,你看看工业界有多少公司当年想上erlang就知道。可惜
Erlang的语法实在是令人发指,不然早就是很火的语言了。 |
|
z****e 发帖数: 54598 | 24 就是把方法塞入ui线程去的方法?
因为双线程难免会碰到线程之间并发冲突的问题
如果能做成单线程,就要简单太多了 |
|
b***i 发帖数: 3043 | 25 纠正了:先描述一下树:
一个多叶子的树,每个节点有多个下层节点。每一个节点也有一个指针指向同层下一个
节点。这个图无法看,可以复制到notepad上看
1--2--3--4
| | | |
| | | 5
| | | |
| | | 6
| | |
| | 7--8
| | |
| | 9
| | |
| | A
| |
| B--C--D
| | |
| | E
| |
| F--G
| |
| H
|
I--J--K--L
如果要遍历1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L,并且进行处理则有如下程序
traverse(head){
if (head->needed){
action(head);
wait(50);
if (quit) return;
if (head->deeper)
traverse(head->de... 阅读全帖 |
|
x****u 发帖数: 44466 | 26 你不了解来龙去脉啊
为啥过去语言和SDK轻易不搞异步,是因为在30多年历史里抢占式多任务的线程都是昂
贵的,如果app流行开线程线程池会严重影响OS的性能,必须加以限制。
最近多核烂大街了,异步就成了时尚了。
Win32单线程存盘不阻塞UI是不可能的,退一步就算你用了异步IO,把数据编码成文件
格式也会造成延迟。 |
|
c***s 发帖数: 70028 | 27 1月11日起,12306网站开始销售除夕当日火车票。每到此时,铁路系统唯一的官方购票网站12306就会成为众矢之的。今年也不例外,12306再次被淹没在一片埋怨声中。
1月5日,观察者网刊登了问答网站“知乎”上的用户王强的解答,回答“如果把12306外包给IBM或者阿里巴巴来做的话,能不能比现在做得好?”这一问题。
1月10日,一位ID名为“代码狗”的前淘宝工程师,后来在一家电商公司做技术副总的IT业内人士也在著名论坛“西西河”上发文,表达了他自己对12306系统的看法。
值得注意的是,“代码狗”在12306系统刚上线时也有过不少微词。为了证明12306系统很容易搭建,“代码狗”甚至曾经发起过一个名为“替12306设计系统”的开源项目。通过工作中的实践,“代码狗”对于12306系统也有了新的认识。
观察者网转载此文,供读者参考。
全文如下:
官方订票网站12306崩溃时的页面(资料图)
本人淘宝技术专家,2012年在一家百强民企做电商副总,当时在极为艰苦的条件下带队开发了一个B2C(企业针对个人开展的电子商务活动——观察者网注)网站,走支付宝和银联支付通道,年营业额千万级(作者注:当然... 阅读全帖 |
|
g**e 发帖数: 6127 | 28 单线程也行。follow up问题自然是当你的用户有几百万的时候怎么处理,你的单线程
跑了一半死了怎么处理 |
|
p******8 发帖数: 2565 | 29 你这个切网页Reloading也可能是单线程的原因.你看看IOS有没有升级到4.1以上.以前3
.X的都是单线程要RELOAD的.升4.X后就好了. |
|
g*****a 发帖数: 446 | 30 感觉换了千兆网以后,平时传文件还是挺慢的
今天用iperf测了一下,一半速度都没有,单线程尤其慢。
不知道这瓶颈出在哪里?网卡?网线?交换机?TCP参数设置?
谢谢
PC1为主板集成的intel pro/1000网卡
PC2为主板集成的reltek网卡
交换机为D-Link DGS-2208
连线为普通6类线
单线程 intel->reltek
[ ID] Interval Transfer Bandwidth
[3944] 0.0-30.0 sec 529 MBytes 148 Mbits/sec |
|
d*****t 发帖数: 7903 | 31 我看的就是这个啊,网址我都列了。
我想知道具体到matlab, 好像是单线程的纯计算程序吧,这个benchmark可靠吗?会不
会四核的cpu名义上要快很多,但是单线程比较相差不多,就没有意义了?我有必要花
3000刀买i7作计算? |
|
t*****z 发帖数: 1598 | 32 楼上的仁兄说得是。你先看看能否并行再作定夺吧。方法很简单,把程序跑上,是
Windows就按Ctrl+Alt+Del,不是Windows就用top命令,就可以看出CPU利用率了。
如果你的程序可以并行,并且可以利用很多个线程(至少8个);或者虽然不能并行,
但是你每次都会开好几个进程分别计算,那么你看中的机器还有可取之处(passmark评
分8220),比你原来的单颗i5-2320好那么一截(5665),但是还是不如现在的主流个
人电脑。只是仗着工作站的稳定性和ECC,那就认了。
如果只能单线程,那这个配置(1220)比你原先的(1672)还不如!你的老板岂不是要
抓狂。
别去纠结什么频率了。那个数字在不同系列CPU之间基本没有可比性。非要追求高频的
话可以上AMD的FX-9590,那可是八核5GHz的神器哦,价钱才300,你和你老板一定会
high。这至少比你看中的E5里的最低端的CPU要好不少。 |
|
M********t 发帖数: 5032 | 33 2.67G 单线程也还不错啊。Intel这几年单线程没啥提高啊,就靠拼主频吧。 |
|
n******7 发帖数: 12463 | 34 心血来潮测了把passmark
记得bios设置是省电还是平衡模式
懒得管了
发现双2670平台还是挺厉害的,比1800X得分高3-4K
核是多了一倍,不过passmark不全是多核测试,也有单线程分数加权
另外,网上查的2670只有12K+的分数,估计是换算成了单个CPU的分数,比1800X又低了
3-4K
单线程有1.6K,居然跟AMD APU一个档次
不过ryzen 1700X也才1.8K
估计测试的时候CPU太热,雄起失败
如果不考虑电费,双路机还是挺适合持有的
我不知道拆掉一个CPU成不成
上次想在bios关闭一个cpu未果 |
|
z****e 发帖数: 54598 | 35 我觉得r很好,唯一毛病就是单线程
除此以外,我没有意见
是一个非常适合外行人写的script language
理论上说,一个好的c++程序员可能写出比r更好的统计软件
但是前提是,这个程序员必需同时具备有cs和stat双料知识
否则它不懂stat还做什么开发?这种人相当不好找
这永远都是一个balance
现实生活中要找这样一个人非常难,而且这种人写出来的代码
很难被继承下来,因为会cs的一般不懂stat,会stat一般不懂cs
项目失败的可能性很大
理想状况是要去逼近,但是事实上是在绝大多数时候
你必需做出牺牲,选择就意味着放弃
那么放弃哪一个就很讲究了
对我来说,与其雇一个cs+stat双料学位的高手
还不如我找两个人,一个cs的,一个stat的,然后这两个人合作开发
这样的话,一旦其中一个人辞职,我可以很容易地找到替代人选
要不然一旦双料高手辞职,那对项目本身的破坏是毁灭性的
如果你对r的效率真心不满意,ok
换sas,sas可以帮你做最高效的统计软件
但是前提是给钱
如果你不想给钱,也有办法优化
先用sas搞定,然后找专门的公司把sas代码转换成java代码
然后java这边... 阅读全帖 |
|
z*******3 发帖数: 13709 | 36 js在web server上只能单线程
这个问题不解决,再发展下去木有前途
单线程搞搞web可以,但是其他的,稍微遇到一个时效长点的任务
就不太好用了
点快 |
|
z****e 发帖数: 54598 | 37 公孙大神只是用户,还远没有牛逼到给php这些做引擎的地步
js单线程哦,我的手提都是双核的,单线程对cpu等资源的利用率偏低
以后多核多cpu的架构应该是主流 |
|
z****e 发帖数: 54598 | 38 他这种单node做id generation的方式
一般也就是单线程搞定了
多线程和多node并发其实最后问题是一样的 |
|
s*****r 发帖数: 43070 | 39 1月11日起,12306网站开始销售除夕当日火车票。每到此时,铁路系统唯一的官方购票
网站12306就会成为众矢之的。今年也不例外,12306再次被淹没在一片埋怨声中。
1月5日,观察者网刊登了问答网站“知乎”上的用户王强的解答,回答“如果把12306
外包给IBM或者阿里巴巴来做的话,能不能比现在做得好?”这一问题。
1月10日,一位ID名为“代码狗”的前淘宝工程师,后来在一家电商公司做技术副总的
IT业内人士也在著名论坛“西西河”上发文,表达了他自己对12306系统的看法。
值得注意的是,“代码狗”在12306系统刚上线时也有过不少微词。为了证明12306系统
很容易搭建,“代码狗”甚至曾经发起过一个名为“替12306设计系统”的开源项目。
通过工作中的实践,“代码狗”对于12306系统也有了新的认识。
观察者网转载此文,供读者参考。
全文如下:
官方订票网站12306崩溃时的页面(资料图)
本人淘宝技术专家,2012年在一家百强民企做电商副总,当时在极为艰苦的条件下带队
开发了一个B2C(企业针对个人开展的电子商务活动——观察者网注)网站,走支付宝
和银联支付通道,年营业额千万级... 阅读全帖 |
|
d*******r 发帖数: 3299 | 40 但是我觉得单线程(或者单进程)还是只适合 IO bound 的需求吧 (比如 large number
of concurrent connection).
CPU bound 的需求,还是要开多线程和进程的。那样的话 immutability / mutability
还是要考虑的。
Vert |
|
q*c 发帖数: 9453 | 41 在高并发下,回造成巨量错误操作。
比如有 a b c 三段, 无数请求一起近来 (如果你是单线程, 那当然没问题, 但是
单线程要 5mm/second 不可能)。 req1 锁了 a, 接着锁 b, 然后锁 c 得时候失败了
, 于是取消 a,b (这里都不谈万一取消得时候出错了, a,b 得票就丢一张)。 但是
在 取消a,b 得之前, req 要求 锁 a, 失败。
这就是有票不能出。 在巨大并发下, 这种情况就会成为常态, 造成大量有票不能出
, 用户的反复试验刷票的局面, |
|
L*****e 发帖数: 8347 | 42 因为googbug一直强调说你只需要单线程,所谓我按单线程理解。。。如果用interlock
,所节约的时间也就是enqueue/dequeue吧? |
|
d***a 发帖数: 13752 | 43 那个方案并不是单线程,是在hardware shared memory机器上
用multithreading。单线程难说。上多处理器多核,性能是没问题的。 |
|
T********i 发帖数: 2416 | 44 是不是后端只能单线程呢?
再问你一次,你那后端6000台机器并发分票是不是扯淡?
单线程,和6000台并发很不一样呀。 |
|
z****e 发帖数: 54598 | 45 我已经告诉过你了,r是单线程
单线程能干p事,所以你不得不用c++
还加,加毛加,直接把r的pkg套在c++上就能用了
r的pkg基本上都是fortran和c写的
顺便,r的ml的pkg是啥? |
|