有点集会
看完这篇文章有关锁空闲缓冲区,看到使用了CAS(比较和交换),我发布的汇编代码,做同样的感觉。 使用的情况下,那边是写一个本地方法,并调用它从Java(1.5,当在Java并发数据结构不存在或多或少)。 事不宜迟,我会释放到你的代码
。 首先是中科院和计算GCD的第二个是用欧几里德算法(此人可以发现,在许多地方和教程以及)。
编译和运行指示 gcc file_name.c ; ./a.out
比较和交换
#包括#包括 / /交换 - newvalue,comperand是旧的/预期值 / * *函数实际上做以下的事情 - 如果在* dest的值是等于oldvalue然后newvalue其他不改变它取代:做所有这些原子 * *有两个返回值的选项 * 1.is初始值* dest的离开,调用fxn负担比较与OLDVAL * 2。 在这里做,并返回0或1,这应该是更有效 ** / / *后来改变成宏* / INT CAS(INT * dest中,oldvalue,INT newvalue){ 输出(“(%D,为%d,%d个)”,* dest中,oldvalue,newValue)以; / * CAS(目的INT,INT oldvalue,newValue)以{* / / * CAS(INT目的,newvalue INT oldvalue){* / 结果= 1 ;/ * 1可以看出,CAS成功,0表示失败* / / * BTW需要设置标志重挫CC! * / __asm__ __ volatile__( “MOVL%2,%eax中\ N \ T” “MOVL%3,%ebx中\ N \ T” “MOVL%0%ECX \ N \ T” “锁\ N \ T” \ N \ T“CMPXCHG%EBX(%ECX)”/ *应该锁定在同一行* / “JZ \ N \ T” “MOVL $ 0%1 \ N \ T” “DONE:\ N \ T” “M”(DEST),“克”(结果) :“G”(oldvalue),“G”(newValue)以“M”(DEST) :“%eax中”,“%ebx中”,“ECX”,“CC” ); 输出(“(%D,为%d,%d个)”,* dest中,oldvalue,newValue)以; 返回结果; } / *的TODO *写在一个while循环以上fxn了另一个ASM fxn的不断尝试,除非它成功* / 诠释的主要(){ A = 5,B = 6; INT * C =(INT *)malloc的(如sizeof(int)); * C = 6; / * C = 6 * / printf(“请为%d \ N”,CAS(C,B,B)); printf(“请为%d \ N”,CAS(C,B,A)); 输出(“%d个\ N”,CAS(C,A,A)); printf(“请为%d \ N”,CAS(C,B,B)); * C = 6; / * C = 5; * / 输出(“变化值* C至%d条\ n”,* C); printf(“请为%d \ N”,CAS(C,B,B)); printf(“请为%d \ N”,CAS(C,B,A)); 输出(“%d个\ N”,CAS(C,A,A)); printf(“请为%d \ N”,CAS(C,A,B)); printf(“请为%d \ N”,CAS(C,B,A)); 返回0; }
格式化笔记 - 像WP语法高亮似乎增加 在年底,忽视这一点。
最大公约数
#包括GCD INT(INT A,INT B){ int结果; / *计算最大公约数使用Euclid的算法* / __asm__ __ volatile__(“MOVL%1,%eax中;” “MOVL%2,%ebx中;” “cmpl续完:$ 0,%ebx中;” “JE; 的“xorl%EDX,%edx中;” 的“idivl%EBX; “MOVL%%EBX,EAX%; “MOVL%%,%%ebx中EDX; “JMP续完; “DONE:MOVL%eax中,%0”:“克”(结果):(一)“G”,“G”(二) ); 返回结果; } 诠释的主要(){ int的第一,第二; printf的(“请输入两个整数:”); scanf函数(“%d的%d”,与第一及第二); 输出(“%d的%d的最大公约数是%d \ N”,第一,第二,GCD(第一,第二)); 返回0; }
板球的世界等待着一个新的世界秩序
经过一系列跨越五个测试和大约两个月,英国再生骨灰。
让我们的冠军球队的先谈谈 - 他们中间的顺序是“平均”,如果你不想关键。 greame斯旺与蝙蝠的贡献将计算不超过球的贡献。 斯图尔特 - 最广泛多面手是第5次试验的非起动。 安德鲁·施特劳斯是一致的击球手和吉米·安德森是唯一一致的投球手。
这里的关键是没有,痛斥冠军球队所取得的成就,但角度提出的事实,尽管所有这些,澳大利亚失去。 你想几秒钟,如果被问及他们的最佳投球手。 正确的,它是:体重Hilfenhaus。 hauritz跑赢everbody的期望,但仍然不够好五个测试中的两个选择。 南非从来没有一个世界级微调成为世界打浆机,澳大利亚不能希望仍然没有一个足够好的一个至少之一。 魔术师离开了舞台,它看起来并不像艺术了,忘了魔术。 庞廷高高耸立之间较小凡人和迈克尔·克拉克经常站起来,但是,使他们与一些非常优秀的球员,而不是一支非常好的球队的队。
骨灰2009会被记住安德鲁Flintoff的最后灰烬,斯图尔特广泛的抵达1所有全才(如果他增加了一些灰烬民俗到他的前途开始),并在所有的时间最有说服力的首演由特洛特世纪,但它会也成为IFS和澳大利亚的优势但是终于把休息点记住,这是结束了。 不要误会,他们仍然可以挖掘迈克·赫西或斯图尔特·克拉克,但你觉得所有伟大的贡献,当他们失踪。 有时他们来提醒自己,你在彩光,但他们仍然无法替代的。 让我们觉得沃恩,麦格拉思和Gilchrist一起玩支持由Waughs,庞廷,Hyden,马丁和兰格看到祝福。
展望未来,南非将始终保持一支非常好的球队,但他们需要赢得半决赛和世界各地更加一致,巴基斯坦将保持神秘辉煌,印度年轻的枪可能会发现很难填补非凡的前辈的鞋。 斯里兰卡应继续显示在工艺艺术的影子。 但是,我们可能不得不等待一段时间之前,有全力以赴主导的团队或前一个队长抱怨缺乏竞争,史蒂夫·沃做一次。
在一个相关的说明 - 让我们欢迎的,阿西夫未来回来,他有1潜在的地狱了很多,让我们的希望来看到的一些和也欢迎安迪的新awatar花,权利,你不能保持长久的好男人下来。
红宝石1层,创建哈希
昨天,同时通过我的老节目之一,我发现我写的一段时间回来:
#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic
杀一些悬念,让我透露,raw_text看起来像
,权利,它已被切断,从Paypal付款确认。
如果在零件坏了上面的行读取更好:
unescaped_array CGI.unescape(raw_text)。分裂('&') = unescaped_array unescaped_array.collect {| X | B = x.split(“=”); b.push(零)如果b.size == 1;} flattened_array = unescaped_array.flatten 哈希散列[* flattened_array]
让我们做在irb中的各个步骤:
IRB(主):009:0> unescaped_array = CGI.unescape(raw_text)分裂('&') => [“侨”,“mc_gross = 10.00”,“protection_eligibility =不合格”,“payer_id = U7PPJJ4TSJ47E”,“税= 0.00”,“payment_date = 9点45分30秒2009年07月10日,PDT”,“PAYMENT_STATUS =待定“] IRB(主):013:0> unescaped_array = unescaped_array.map {| X | B = x.split(“=”); b.push(零)如果b.size == 1;} => [“侨”,无],[的“mc_gross”,“10.00”],[“protection_eligibility”,“不合格”,“payer_id”,“U7PPJJ4TSJ47E”],[“税收”,“0.00”] [“payment_date”,“9点45分30秒7月10日,2009 PDT”],[“PAYMENT_STATUS”,“待定”。]] IRB(主):014:0> flattened_array = unescaped_array.flatten =>“成功”,无“mc_gross”,“10.00”,“protection_eligibility”,“不合格”,“payer_id”,“U7PPJJ4TSJ47E”,“税法”,“0.00”,“payment_date”,“09:45: 30日2009年07月10日,PDT“,”PAYMENT_STATUS“,”待定“] IRB(主):015:0> 哈希散列[* flattened_array] => {“税”=>“0.00”,“PAYMENT_STATUS”=>“挂起”,“payer_id”=>“U7PPJJ4TSJ47E”,“mc_gross”=>“10.00”,“成功”=>“零”payment_date“= “九时45分三十秒07月10,2009 PDT”,“protection_eligibility”=>“不合格”}
顺便说一句,*被称为红宝石的图示操作员
从“对数组的哈希创建的另一种方法是使用注:
哈希= [1,2],[3,4]注入({})。{|结果,元素|结果element.first] =结果[element.last];结果} 有一个方法
写一个循环,我会留给读者作为练习!
这里是位从阵列创建哈希无关的使用情况:
IRB(主):005:0> [1,2,3,4,7,9] GROUP_BY {| X | X <5? 更低::更大} => {:较小的=> [1,2,3,4]:更大=> [7,9]}
你可以做更多的事情,基本上块的结果作为使用中产生的哈希元素的关键。
Gmail时,mutt和msmtp会修复
如果您使用mutt和SMTP访问Gmail。 这里是(坏)消息。 在谷歌酷哥再次改变证书。 哦,你问 - 如何知道? 简单的小狗开始抱怨自己的证书时,尝试使用的msmpt,臭名昭著的“msmtp会:TLS证书验证失败:证书还没有得到一个已知的发行人 迎接我在屏幕上。
交叉确认 -
只要运行以下
$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off
在地方老Thwate服务器现在你在发行人段
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US
幸运的修复很简单,这里是你需要做的在debian
# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814
在此之后只是改变下面一行在你〜/。msmtprc的
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
至
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
Git和真棒调查
这里有两个环节调查的git(版本控制系统)和真棒(窗口管理器)社区。 如果你使用这些,请拿出一些时间来填写问卷。 把它看成是最简单的方式回馈给您使用的软件。
这里是链接:
GIT - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54
真棒- http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D
注 - (由于在这些网页上,但在底部发现
) -
“如果你启用了Cookie,你可以随时提交部分填写的调查,并在稍后时间回你的答案,完成以后。”



































