新足迹

 找回密码
 注册

精华好帖回顾

· 学车路考辛酸史 (2006-7-3) amy2046 · 单灯外拍(人像) (2010-9-14) 梦想似蓝
· 删除 (2014-8-1) 杨士宝 · 11月 (2014-11-24) Wolongshan
Advertisement
Advertisement
楼主:zn7726

我一定是渣, 虚心向程序员帝们请教, 开发中如果避免使用debugger -- 请KA娃和yuba务必发言 [复制链接]

发表于 2010-10-19 18:54 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 19:49 发表

木有class。
不是java,纯C。
一坨一坨的驱动,动不动就几十个c文件。
原来的IDE都是c++写的,现在全都改成eclipse了

那我们怎么会知道,我们是java developer

[ 本帖最后由 kawara 于 2010-10-19 20:06 编辑 ]
Advertisement
Advertisement

发表于 2010-10-19 19:05 |显示全部楼层
此文章由 NoChoice 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 NoChoice 所有!转贴必须注明作者、出处和本声明,并保持内容完整
IncrediBuild

退役斑竹

发表于 2010-10-19 19:28 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 19:54 发表
那我们怎么会知道,我们是java developer

啊,原来大家一坨一坨的都是用JVM的,没有开发JVM的

发表于 2010-10-19 19:40 |显示全部楼层

回复 93# 的帖子

此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用命令行编编试试呢?

发表于 2010-10-19 21:21 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有关.net是否用到multiple core,读了几篇文章,觉得我开始的理解(总是在一个core上run的概念不准确),schedule task on different cpu应该是os的事情,我们不用关心,有一个core它就用一个,有N个core可能都会用上.

http://stackoverflow.com/questio ... different-cpu-cores

发表于 2010-10-19 21:28 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-10-19 22:21 发表
有关.net是否用到multiple core,读了几篇文章,觉得我开始的理解(总是在一个core上run的概念不准确),schedule task on different cpu应该是os的事情,我们不用关心,有一个core它就用一个,有N个core可能都会用上.

http://stac ...

貌似跟java一样。那个人提问如何分配线程,别人告诉他不需操心,操作系统会搞定。

但是那个人的程序已经是多线程的。
Advertisement
Advertisement

退役斑竹

发表于 2010-10-19 21:40 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 yuba 于 2010-10-19 20:40 发表
用命令行编编试试呢?

俺现在只知道改 eclipse.ini里面的内存设置。还有别的法子吗?

发表于 2010-10-19 21:44 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 22:28 发表

貌似跟java一样。那个人提问如何分配线程,别人告诉他不需操心,操作系统会搞定。

但是那个人的程序已经是多线程的。


是啊,系统给thread分配core,不用操心这个。

不过也可以通过programming的方式来指定processor的affinity,或者runtime通过task manager来做,不过这种方式很少见,除非有很特殊的原因。
头像被屏蔽

禁止发言

发表于 2010-10-19 22:19 |显示全部楼层

多线程concurrent programming,当年几乎要了我的命

此文章由 iami 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 iami 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2010-10-19 22:26 |显示全部楼层

回复 99# 的帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
主要是你那两核太强了。

发表于 2010-10-19 22:29 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 大饼 于 2010-10-19 22:40 发表
俺现在只知道改 eclipse.ini里面的内存设置。还有别的法子吗?


不像内存不够用,能用make在命令行下编译吗?
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2010-10-19 22:30 |显示全部楼层
此文章由 zn7726 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zn7726 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你们太牛了 ... 都跑到多线程 vs 多核cpu 上来了.

2010年度奖章获得者

发表于 2010-10-19 22:40 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 winsome 于 2010-10-19 19:24 发表



???

我说的是在设计的时候除非性能瓶颈,否则尽量不要选择多线程


当然要走多线程,

UI main thread, worker on another thread. 这是最基本的美德。

评分

参与人数 1积分 +1 收起 理由
kawara + 1 他说得是服务器端编程

查看全部评分

足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2010-10-19 22:42 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
都乱了。要不讨论点轻松的,比如说脚本

这里还是做界面的程序员多

[ 本帖最后由 kawara 于 2010-10-19 23:44 编辑 ]
头像被屏蔽

禁止发言

发表于 2010-10-19 22:44 |显示全部楼层

多线程到现在我还记的mutually exclusive, deadlock, competition,priority, starving,

此文章由 iami 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 iami 所有!转贴必须注明作者、出处和本声明,并保持内容完整
去tmd concurrent programming当年可把我给折腾的半死.
到现在我还对它念念有词!

发表于 2010-10-19 22:50 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 iami 于 2010-10-19 23:44 发表
去tmd concurrent programming当年可把我给折腾的半死.
到现在我还对它念念有词!

哦?我还以为dotnet没有多线程呢。大咪咪挺厉害

考你一个,啥叫livelock?举个例子

[ 本帖最后由 kawara 于 2010-10-19 23:52 编辑 ]
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2010-10-19 22:52 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 23:50 发表

哦?我还以为dotnet没有多线程呢。

考你一个,啥叫livelock?举个例子


骨骼说。
A LiveLock is the same as a DeadLock, except that processes are not blocked forever, they are being processed constantly by the CPU。。。。。。。。。。。
签名被屏蔽

2010年度奖章获得者

发表于 2010-10-19 22:58 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
服务端更要做多线程, 大批量,长时间的处理 我全部开在另外的线程上。
这样service就很responsive.
头像被屏蔽

禁止发言

发表于 2010-10-19 23:54 |显示全部楼层
此文章由 iami 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 iami 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-19 11:50 PM 发表

哦?我还以为dotnet没有多线程呢。大咪咪挺厉害

考你一个,啥叫livelock?举个例子


你这不是哪壶不开提哪壶嘛。

deadlock是死的,大家都在等。
livelock是活的,大家都在动。

livelock的例子,我瞎说一个哈,错了别怪我误导,还一定要纠正我啊

跑两个线程,每个线程都设置成去access两个resources中的一个,
如果发现一个resource被accessed就去access another resource.

现在,thread A 和B同时access resourceA的时候,发现A已经not available(有点像泡妞),
然后同时放弃A,同时奔向resource B.结果发现B也不available了,

于是thread A,B又返回去access resource A,然后resource B......

我忘记solution了,好像是规定resource一次只能接一个客人。就能避免这个情况的发生。
当时学的郁闷死了。如果不是当时老师说实际产品,像corba这些在底层已经会take care这些东西,我真不知道是不是该退学了


学的时候是用java做功课。livelock提到过,但是功课似乎没有做到过。已经模糊了。

评分

参与人数 1积分 +5 收起 理由
kawara + 5 说得不错

查看全部评分

签名被屏蔽

发表于 2010-10-20 07:50 |显示全部楼层

回复 109# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
和我理解的一样,例子不太贴切,应该改为:
两男去泡一个妞A,两人总是同时起身,同时搭讪,结果妞A一个也听不清,造成妞A这个资源永远not available,解决方法是,要求两男同一时间只能有一个和妞搭讪。

顺便问一下,你们怎么都那么晚睡,K哥居然6点就起来了,平时都怎么补的?

发表于 2010-10-20 08:40 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-19 23:58 发表
服务端更要做多线程, 大批量,长时间的处理 我全部开在另外的线程上。
这样service就很responsive.


从理论说是这样,关键是iis接受request,自己从thread pool拿一个独立的thread来处理这个request,如果你有很大的i/o,你可以自己再从thread pool拿thread去干这事,然后用callback,关键是一旦把任务delegate给其他的thread,处理这个request的main thread在这个期间做什么? 系统回收它,用来处理其他的request?一旦回收之后,context info都全部丢失,写response几乎都不可能。我猜这个main thread还是在干等,除非它可以有2个以上大的i/o operation,它可以做2个child threading的coordinator.

现在我们所有logic都是single thread,我在想一个solution让它"并行",几年前我记得1.1好像有个置位的操作,说明这个operation完成了,如果有几个thread的operation,都会置自己的位(0变1),一旦全变1,说明parelle的行为全部完成,可以给user response了.

其中的细节完全忘掉了。

nodejs这点就做得很好,就用一个main thread来响应request,而不是开始就用新的thread,任何大i/o operation,都去thread pool拿thread,用callback,它server side资源耗用很低,平平的一条线,比起来apache的resource曲线随着request的增多就很吓人,很sharp的线。

[ 本帖最后由 乱码 于 2010-10-20 09:46 编辑 ]
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-10-20 08:54 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
簡單的說, 把不同的計算分到不同的thread上能讓你的system 更responsive.

把每個計算用多核parallel 來處理,能讓計算更快的完成。

2010年度奖章获得者

发表于 2010-10-20 08:56 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
這跟什麼前台,後台無關,是一個通用的設計理念。覆蓋了整個系統。

2010年度奖章获得者

发表于 2010-10-20 09:02 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
livelock 是deadlock的副剷品。你都可以不用知道livelock, 把deadlock解決了就沒有livelock了。

通常情況下deadlock是有SQL的transaction造成的。沒有什麼通用的解決方法,都要等情況發生了才具體研究。

以前的一個項目裡發生過, 那個項目裡是一大幫.net 的super star, 也都好幾週一籌莫展。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2010-10-20 09:19 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
经典的解释是两个人约好比如说在某购物中心见面,甲去了麦当劳,已去了肯德基。互相联系后,甲去肯德基找乙,乙去麦当劳找甲,反复折腾,总是见不着。

具体的例子是什么呢?

特殊贡献奖章

发表于 2010-10-20 09:21 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这帖技术含量好高
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-10-20 09:41 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kawara 于 2010-10-20 10:19 发表
经典的解释是两个人约好比如说在某购物中心见面,甲去了麦当劳,已去了肯德基。互相联系后,甲去肯德基找乙,乙去麦当劳找甲,反复折腾,总是见不着。

具体的例子是什么呢? ...


具體例子不重要, deadlock 發生在不同的情況下。 通常來說就是2 個單獨的process 去要統一個resource.
deadlock 不可能完全避免,只能把它做到最小化。

你可以在發request 的client上做點工作。要讓client handle deadlock.
比如設timeout 限制,重發request. 或introduce a message queue system.

或把resource 做成instance 形式, 把transaction 加在 client request level。

這些到要看具體的問題情況了。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2010-10-20 09:49 |显示全部楼层

回复 115# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
俺来造一个例子,瞎造的,勿当真
两个系统A和B,都管理客户信息。当要更新某个customer的时候,A先在local把这个Customer给占了,然后再通知B,如果B同时也要更新同一个Customer,B也正好在local已经把这个Customer给占了,正在通知A,那么两个request就会同时返回false,等一定的时间后(假设这个时间间隔一样),再来一次,一直循环下去。

发表于 2010-10-20 09:53 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 小马识途 于 2010-10-20 10:49 发表
俺来造一个例子,瞎造的,勿当真
两个系统A和B,都管理客户信息。当要更新某个customer的时候,A先在local把这个Customer给占了,然后再通知B,如果B同时也要更新同一个Customer,B也正好在local已经把这个Customer给占了,正在通知A ...


您这是个很普通的concurrency问题, 任何一个数据库产品都很好的解决了这个问题. 不关多线程的事

发表于 2010-10-20 09:59 |显示全部楼层

回复 119# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
livelock 不就属于concurrency问题吗?

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部