有点集会

2009年8月29日, prashant · 评论
提起下: 技术

看完这篇文章有关锁空闲缓冲区,看到使用了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;
 }

板球的世界等待着一个新的世界秩序

2009年8月25日, prashant · 评论
提交下 MISC

经过一系列跨越五个测试和大约两个月,英国再生骨灰。

让我们的冠军球队的先谈谈 - 他们中间的顺序是“平均”,如果你不想关键。 greame斯旺与蝙蝠的贡献将计算不超过球的贡献。 斯图尔特 - 最广泛多面手是第5次试验的非起动。 安德鲁·施特劳斯是一致的击球手和吉米·安德森是唯一一致的投球手。

这里的关键是没有,痛斥冠军球队所取得的成就,但角度提出的事实,尽管所有这些,澳大利亚失去。 你想几秒钟,如果被问及他们的最佳投球手。 正确的,它是:体重Hilfenhaus。 hauritz跑赢everbody的期望,但仍然不够好五个测试中的两个选择。 南非从来没有一个世界级微调成为世界打浆机,澳大利亚不能希望仍然没有一个足够好的一个至少之一。 魔术师离开了舞台,它看起来并不像艺术了,忘了魔术。 庞廷高高耸立之间较小凡人和迈克尔·克拉克经常站起来,但是,使他们与一些非常优秀的球员,而不是一支非常好的球队的队。
骨灰2009会被记住安德鲁​​Flintoff的最后灰烬,斯图尔特广泛的抵达1所有全才(如果他增加了一些灰烬民俗到他的前途开始),并在所有的时间最有说服力的首演由特洛特世纪,但它会也成为IFS和澳大利亚的优势但是终于把休息点记住,这是结束了。 不要误会,他们仍然可以挖掘迈克·赫西或斯图尔特·克拉克,但你觉得所有伟大的贡献,当他们失踪。 有时他们来提醒自己,你在彩光,但他们仍然无法替代的。 让我们觉得沃恩,麦格拉思和Gilchrist一起玩支持由Waughs,庞廷,Hyden,马丁和兰格看到祝福。

展望未来,南非将始终保持一支非常好的球队,但他们需要赢得半决赛和世界各地更加一致,巴基斯坦将保持神秘辉煌,印度年轻的枪可能会发现很难填补非凡的前辈的鞋。 斯里兰卡应继续显示在工艺艺术的影子。 但是,我们可能不得不等待一段时间之前,有全力以赴主导的团队或前一个队长抱怨缺乏竞争,史蒂夫·沃做一次。

在一个相关的说明 - 让我们欢迎的,阿西夫未来回来,他有1潜在的地狱了很多,让我们的希望来看到的一些和也欢迎安迪的新awatar花,权利,你不能保持长久的好男人下来。

红宝石1层,创建哈希

2009年8月20日, prashant · 评论
提起下: 技术

昨天,同时通过我的老节目之一,我发现我写的一段时间回来:

#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会修复

2009年8月17日, prashant · 评论
提起下: 技术

如果您使用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和真棒调查

2009年8月15日, prashant · 评论
提交下 MISC

这里有两个环节调查的git(版本控制系统)和真棒(窗口管理器)社区。 如果你使用这些,请拿出一些时间来填写问卷。 把它看成是最简单的方式回馈给您使用的软件。
这里是链接:

GIT - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54

真棒- http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

注 - (由于在这些网页上,但在底部发现 :) ) -
“如果你启用了Cookie,你可以随时提交部分填写的调查,并在稍后时间回你的答案,完成以后。”