一直用着vi,有朋友劝我用vim,那么它们有什么区别呢?
简单点来说,它们都是多模式编辑器,
不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,
而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:

1、多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。

2、易用性
vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。

3、语法加亮
vim可以用不同的颜色来加亮你的代码。

4、可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

5、对vi的完全兼容
某些情况下,你可以把vim当成vi来使用。
[Last Modified By songzi, at 2006-08-07 14
对象属性
document.title             //设置文档标题等价于HTML的<title>标签
document.bgColor           //设置页面背景色
document.fgColor           //设置前景色(文本颜色)
document.linkColor         //未点击过的链接颜色
document.alinkColor        //激活链接(焦点在此链接上)的颜色
document.vlinkColor        //已点击过的链接颜色
document.URL               //设置URL属性从而在同一窗口打开另一网页
document.fileCreatedDate   //文件建立日期,只读属性
document.fileModifiedDate  //文件修改日期,只读属性
document.fileSize          //文件大小,只读属性
document.cookie            //设置和读出cookie
document.charset           //设置字符集 简体中文:gb2312
---------------------------------------------------------------------
对象方法
document.write()                  //动态向页面写入内容
document.createElement(Tag)       //创建一个html标签对象
document.getElementById(ID)       //获得指定ID值的对象
document.getElementsByName(Name)  //获得指定Name值的对象
---------------------------------------------------------------------

images集合(页面中的图象)

a)通过集合引用
document.images             //对应页面上的<img>标签
document.images.length      //对应页面上<img>标签的个数
document.images[0]          //第1个<img>标签          
document.images[i]          //第i-1个<img>标签

b)通过nane属性直接引用
<img name="oImage">
document.images.oImage      //document.images.name属性

c)引用图片的src属性
document.images.oImage.src  //document.images.name属性.src

d)创建一个图象
var oImage
oImage = new Image()
document.images.oImage.src="/1.jpg"
同时在页面上建立一个<img>标签与之对应就可以显示

<html>
<img name=oImage>
<script language="javascript">
  var oImage
  oImage = new Image()
  document.images.oImage.src="/1.jpg"
</script>
</html>

----------------------------------------------------------------------

forms集合(页面中的表单)

a)通过集合引用
document.forms                 //对应页面上的<form>标签
document.forms.length          //对应页面上<form>标签的个数
document.forms[0]              //第1个<form>标签
document.forms[i]              //第i-1个<form>标签
document.forms[i].length       //第i-1个<form>中的控件数
document.forms[i].elements[j]  //第i-1个<form>中第j-1个控件

b)通过标签name属性直接引用
<form name="Myform"><input name="myctrl"></form>
document.Myform.myctrl         //document.表单名.控件名

-----------------------------------------------------------------------
<html>
<!--Text控件相关Script-->
<form name="Myform">
<input type="text" name="oText">
<input type="password" name="oPswd">
<form>
<script language="javascript">
//获取文本密码框的值
document.write(document.Myform.oText.value)
document.write(document.Myform.oPswd.value)
</script>
</html>
-----------------------------------------------------------------------
<html>
<!--Select控件相关Script-->
<form name="Myform">
<select name="oSelect">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>

<script language="javascript">
  //遍历select控件的option项
  var length
  length=document.Myform.oSelect.length
  for(i=0;i<length;i++)
  document.write(document.Myform.oSelect[i].value)
</script>

<script language="javascript">
  //遍历option项并且判断某个option是否被选中
  for(i=0;i<document.Myform.oSelect.length;i++){
  if(document.Myform.oSelect[i].selected!=true)
  document.write(document.Myform.oSelect[i].value)
  else
  document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>")  
  }
</script>

<script language="javascript">
  //根据SelectedIndex打印出选中的option
  //(0到document.Myform.oSelect.length-1)
  i=document.Myform.oSelect.selectedIndex
  document.write(document.Myform.oSelect[i].value)
</script>

<script language="javascript">
  //动态增加select控件的option项
  var oOption = document.createElement("OPTION");
  oOption.text="4";
  oOption.value="4";
  document.Myform.oSelect.add(oOption);
</script>
<html>
-----------------------------------------------------------------------
<Div id="oDiv">Text</Div>
document.all.oDiv                       //引用图层oDiv
document.all.oDiv.style                
document.all.oDiv.style.display=""      //图层设置为可视
document.all.oDiv.style.display="none"  //图层设置为隐藏
/*document.all表示document中所有对象的集合
只有ie支持此属性,因此也用来判断浏览器的种类*/
雅虎网易邮箱大战升级 竞争无限量邮箱,我都听朋友说yahoo老是要找ajax程序员呢。。。原来是要基于ajax搞邮箱开发,以后它去yahoo哈哈,说不定和我就是有竞争关系了,到时有得搞了。。。。。
   昨天才得到朋友确切消息,确实是真的有得搞了。。。
下载:firebug1.0-beta.zip
怎么说呢,强就一个字啦~NND,上面这个图是我开到了 Ispect 状态,鼠标移动时截下来的。这比看源文件然后再搜索可是方便的太多了,这个世界是怎么了,还有这样的雷峰存在,真是太BT了~
大家用一用就知道了~

https://addons.mozilla.org/en-US/firefox/addon/1843
他的官网是:http://getfirebug.com/
作为开发人员,这个查看cookie的玩意也不能少啊,Firecookie - 给Firebug尝尝甜饼的味道,下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/6683
如果你要开发ajax程序,建议你安装一个FirePHP的Firefox插件,调试想当的方便,在friendfeed上找到的了这个名为FirePHP的Firefox插件,是基于Firebug的一个扩展,可以用来在Firebug的console中方便的输出php的调试信息又不影响php程序的正常运行
下载地址:http://www.firephp.org/
你如果想在ie下玩firebug,请查看我的这篇文章:http://www.xiangdong.org/blog/post/1120/
如果想在IE下玩firecookie,请先安装httpwatcher,然后firefox访问:https://addons.mozilla.org/en-US/firefox/addon/6683
如果想在firefox调用ie浏览器的内核看网页,请安装插件:IE TAB:https://addons.mozilla.org/zh-CN/firefox/addon/1419 ,但是请注意,用IE TAB转换到IE浏览后,再打开firebug,好像就不可以使用它了。。。,还是用firefox内核,要不就跑到ie下用ie的插件。。。(网网由于设置IE TAB一些网站由IE打开,在通过firebug 调试的时候忘记了,还以为firebug挂了呢!!!汗)

fiddler2(能查看flash socket通讯)
DNS Flusher



Firefinder for Firebug  
Firefinder for Firebug 是用来在 Firebug 环境中搜素匹配的 CSS 或者 根据XPath 表达式来搜索对应元素。

Fxspy-一款类似于Firebug调试Flex2.0/3.0应用的Firefox插件

Fxspy-一款类似于Firebug调试Flex2.0/3.0应用的Firefox插件
Firebug只可以调试Html/Ajax ,Fxspy可以调试Flex2.0/3.0,不了解是否可以调试4.0,估计有Fxspy时候,还没有4.0,有待测试,不过感觉问题不大

大家可以从这里获得
http://code.google.com/p/fxspy/
#include

using namespace std;

int main()
{
       cout << "hello world" << endl;

       return 0;
}


样式1-- http://www.livebaby.cn





样式1









样式二


样式2-- http://www.livebaby.cn





样式2









样式三


样式3 -- http://www.livebaby.cn






样式3








样式四


简写CSS圆角






简写CSS圆角






样式五 哈哈3D的


3D圆角 -- http://www.livebaby.cn






3D圆角









样式六  纯HTML的


html圆角 -- http://www.livebaby.cn
























































html圆角


男人过个二十六岁就难得再有机会打架了!!!!!!!!!!!!!


个人认为没有打过架的男性,人生是不完整的.

想想,将看着不顺眼的人,打翻在地然后踏上一脚,这个冲动就是与生俱来本性。
上中学的时候虽然已经开化很多,但是知道自己:
“虽然不喜欢打架,但真要打起来也不怕”这种话,成为既定事实基本上对每一个男生都非常之重要。

话说回来,高中时候的打架实际上是缺乏艺术性与传奇性的,
家长、学校、各路流氓痞子这类第三势力的粗暴干涉,外加身体没有发育到巅峰状态,因此这一时期的打架既不凶残也不好看。高中生不要试图打架,切忌切忌!!!!!!!
从上大学开始真正的打架生涯才算是到来,在高中打架打多了的人,可能会失掉在大学中打架的乐趣。FOOTBOLL还没走入精彩,所以总结了一下一些些打架活动中积累的一些经验教训,力争帮助大家摆正思路,开拓视野,用-----江同志的{三快表}------指导我们的打架活动。现在开始。

  打架可以分为单挑和群殴,可以分为放倒、打残、致死三种,


  武器的选择
  我喜欢玩刀,但不推荐用刀,原因有三点:
1、刀算凶器,副作用大,
2、在双方距离非常接近并且使用熟练的情况下才能发挥比较大的威力,
3、实际上刀这种兵器本身在使对方失去战斗力的性能表现上就已经劣于其他武器,
更何况现在伪劣产品太多,不少看起来瓦亮的刀砍在人身上连个白印子都没有,刀的唯一好处,
是让对手产生恐惧心理而消减其战斗力。如果实在要用刀,在祖国各地都应该找得到王麻子或者张小泉刀剪批发店,选择刀身狭长、相对较厚的刀(普通菜刀、板刀、西瓜刀都可以),采取“拍”的技巧而非“砍”的战术。这样即使打架失败,也可以回来切西瓜用。

  绝对绝对,一定要拒绝使用三角刮刀,除非你想要对方的命。

捅最致命,在古往今来的打架活动中,不包括真正的战争,直捅,造成的死亡率远远大于其他兵器的总和。而且,尖刀对使用者的技巧要求是非常高的,所以在身上带一把吓吓人是可以的,但假如真的打了起来,那末立刻扔掉匕首并拣起附近的板砖。
  各种斧头、有尖嘴榔头不推荐,萍水相逢,又没有什么深仇大恨,只是打个架玩玩,何必那么认真下手呢,是吧?

 推荐棍棒,包括木棍、钢管等。看起来棍棒似乎没有没有以上器具的威慑力,但是棍棒造成的伤害相对不大,而在使对方失去抵抗力的性能上却比较优秀,而且成规模运用之后,声势骇人,最后,它还不算凶器,几乎可以说是十全十美,唯一的弱点就是容易断裂。不要特意去制造改装武器,打个架散散心是可以的,但不能抱着下毒手的心态去打架。

  不推荐板砖。因为实在没有什么杀伤力。  不推荐石灰粉、辣椒水、硫酸。这些东西都有可能会给对方造成永久性伤害,我们要充满爱心地去打架,如果实在想干扰对方视力或者呼吸的话,用辣椒面或者芥末粉好了。

推荐使用自行车链条,像以前的九节鞭,但是熟练使用链条需要相当强的基本功。我看见一个人运用的非常美妙,我不擅长,只能羡慕,因此建议大家多加练习。要多洗衣服,最好是床单,被套,并且用手充当甩干机,那么对软兵器的使用,就有心得了。

强烈推荐使用方凳,木质的那一种,从下向上悠起来,第一目标小腿骨,第二目标肋骨,使用这玩艺,搞定过好几个,别砸头,记住了!!!!!

  不推荐手机投掷,那玩艺相对贵了,杀伤效果也不佳。

  不推荐饭盆——打架的基本原则是千万别用吃饭的家伙去打架!

  最后,强烈推荐必须配备毛巾。你可以没有任何兵器,但是你不能没有毛巾。用一至两条毛巾包裹左手臂,可以抵抗大部分敌人的打击,在受伤之后还可以及时包扎,并且可以比较容易地区分敌我(经常有一伙的人打架前是相互不认识的,盟友约来的的朋友,相貌你不可能一下子就记住了)。
虽然很长,但一定要看完.很有用啊!


据我的观察总结,人一过个二十六岁就难得再有机会打架了。我个人认为没有打过架的男性人生是不完整的人生,想把看着不顺眼的人打倒在地然后踏上一万只脚这个冲动简直是胎里带来的。我上中学的时候虽然已经开化很多,但是知道自己“虽然不喜欢打架,但真要打起来也不怕”这种话成为既定事实基本上对每一个男生都非常之重要。话说回来,高中时候的打架实际上是缺乏艺术性与传奇性的:家长、学校、各路流氓痞子这类第三势力的粗暴干涉,外加身体没有发育到巅峰状态,因此这一时期的打架既不凶残也不好看。从上大学开始真正的打架生涯才算是到来,在高中打架打多了的人会失掉在大学中打架的不少乐趣。现在高考完毕,不少弟弟妹妹各奔前程,所以我总结了一下我在前半生的打架活动中积累的一些经验教训,力争帮助大家摆正思路,开拓视野,用三个代表指导我们的打架活动。
  从参加人数上讲,打架可以分为单挑和群殴,从双方指导思想上来讲,可以分为想把对方打趴下、想把对方打残和想把对方打死三种心理,从阶段来划分,可以分为比较漫长的前期准备、收尾善后和比较短暂的实际*作阶段。我们将就每个阶段首先研究在所有情况之中都适用的一些基本要点,然后分别讨论在大学中可能遇到的不同情况下的应对办法。
  首先是打架之前的准备工作,第一个问题就是武器的选择问题。
  我个人不推荐用刀,原因有三点:第一,刀算凶器,副作用比较大,其次:只有在双方距离非常接近并且使用熟练的情况下才能发挥比较大的威力,最后,实际上刀这种兵器本身在使对方失去战斗力的性能表现上就已经劣于其他武器,更何况现在伪劣产品太多,不少看起来甑明瓦亮的刀砍在人身上连个白印子都没有,刀的唯一好处是让经验较少或者胆量较小的对手产生恐惧心理而消减其战斗力。如果实在要用刀,在祖国各地都应该找得到王麻子或者张小泉刀剪批发店,选择刀身狭长、相对较厚的刀(普通菜刀、板刀、西瓜刀都可以),采取“拍”的战术而非“砍”的战术。这样即使打架失败,也可以回来切西瓜用。
  绝不推荐用匕首(包括被磨尖了头的改锥、剪刀、刮刀等),除非你想要对方的命。在古往今来的打架活动中,匕首造成的死亡率远远大于其他兵器。而且,匕首对使用者的技巧要求是非常高的,所以在身上带一把吓吓人是可以的,但假如真的打了起来,那末立刻扔掉匕首并拣起附近的板砖。
  各种斧头、有尖头的锤子等也不推荐,虽然论综合性能它们很可能是所有应手兵器中最好的。但是一来这些家伙资源比较稀少,二来由于在迅速使对方失去抵抗能力方面拥有非常优秀的性能,所以还是慎用为好。大家萍水相逢,又没有什么深仇大恨,只是打个架玩玩,何必那么认真下手那么绝呢,是吧。
  推荐棍棒(包括木棍、钢管等,扳手不算,扳手太重了。)。看起来棍棒似乎没有没有以上器具的威慑力,但是棍棒造成的伤害相对不大,而在使对方失去抵抗力的性能上却比较优秀,而且成规模之后声势骇人,最后,它还不算凶器,几乎可以说是十全十美,唯一的弱点就是容易断裂。在这里我要传授一点私人经验:学校里一般都有小教室,请进去,找一张课桌,低头看两条桌腿之间——不是让你看在那里学习的MM大腿——那里一般有一根用来保持课桌稳定的横撑,因为常常要用脚踩,所以都是用最结实的木料制作的,请趁人不备将之取下,然后卷在图纸里扛回来,把一头削细到可以非常方便地用双手握着,这样就可以了。顺便补充一句:绝不推荐狼牙棒!我大学同寝某曾经想在这种木棍上钉钉子,被我严词拒绝,我们都是受教育的知识份子,打个架散散心是可以的,但不能抱着下毒手的心态去打架。
  不推荐板砖。因为实在没有什么杀伤力。唯一的用处也就是正式开打之前双方互相投掷,古话叫“射住阵脚”。
  不推荐石灰粉、辣椒水、硫酸。这些东西都会给对方造成永久性伤害,我们要充满爱心地去打架,是人民内部矛盾,不能象对待阶级敌人那样对待对手。如果实在想干扰对方视力或者呼吸的话,用面粉或者芥末好了。
  推荐链条(主要是自行车的附加品例如车锁和车链),但是熟练使用链条需要相当强的基本功。因此建议大家多加练习。要多洗衣服,用手充当甩干机。
  不推荐移动电话,太昂贵了,杀伤效果也不好。
  不推荐饭盆——打架的基本原则是千万别用吃饭的家伙去打架!
  最后,强烈推荐毛巾。你可以没有任何兵器,但是你不能没有毛巾。用一至两条毛巾包裹左手,可以抵抗大部分敌人的打击,在受伤之后还可以及时包扎,并且可以比较容易地区分敌我(经常有在一伙的人第一次见面的)。建议在打架之前先按照每人1.5~1.75条购买毛巾,毛巾的尺寸要达到标准,不大不小。
  其次是药品、医疗卫生等问题。
  大学中一般打架过程中可能受到的伤害有:普通外伤、软组织挫伤、骨挫伤、骨折、出血、脑震荡、关节脱臼、牙齿脱落等。所以要在打架之前就联系好附近的医院,至少也要把打架地点选择在距离医院很近或者容易叫到出租车的地方。有了伤势尽快去医院,不要自行处理,也不要告诉我你脑子冒水了要去校医院!
  应该准备的一般用具如下:酒精棉球、脱脂棉、镊子、纱布,有条件的弄一些冰块,此外,找一个O型血的家伙以备不时之需。
  应该准备的一般药品如下:创可帖、红药水或者紫药水、云南白药、风油精、各种消炎药、跌打膏药、镇痛片。
  打架之前大家都要喝一点浓糖水(最好是白糖或者冰糖),打架之后都要喝一点果汁等饮料。
  最后是组织工作准备问题。
  所有参加打架行动的人大致有三种,一种是发起者,一种是助拳者,还有一种是打架之后的谈判者。在漫长幸福的学习生活中我们有大量机会成为所有这三种人,稍安勿燥。
  哪些人可以选择来助拳?这个范围要搞清楚。首先,不能由于打架拖累人,如果你有一个骁勇善战的死党正背着处分或者正准备入党,那么这场架是说什么也不能让他打的。其次,不能找要钱的助拳者,打架这东西是一件高尚的事业,不能让金钱玷污它的纯洁。在几乎所有的东西都成为商业规律的填房之后保持一点原始和理想主义是应该的。一般情况下,助拳者的范围仅限于同寝和同乡中比较茁壮的。要事先打听以对方的能量估计一下他可以搞来多少人,我方的指战员数目要大于对方的60%并取整——基本上再少就很难赢了。
  比指战员更加难以挑选的是战后的谈判专家。这个人的选择应当很慎重,事实上我们知道打架非但不能解决任何问题,恰好相反,它还会带来大量乱糟糟的问题。这时双方就需要各自找个有点头脸的人说话,把事情协商解决一下。以我的经验,男性辅导员是最佳人选(绝对不能考虑保安,除非他是你的直系亲属),他是个半老师不老师的人物,而且由于上多了政治课普遍都能言善辩并且说的话都非常没有道理——大家可以想像派个唐僧去谈判是什么效果。毛主席教导我们说:“谈判是战争的继续”,让谈判专家在嘴仗中气对方一个七死八活吧。
  好了,要准备的就是这么多,下面的事情就是正式动手打架了。
  首先是群架。打架这东西,跟双方是否强壮其实关系并不大,尤其是在群架的时刻,除非你有吕布之勇,否则基本上是不会有什么显山露水的机会的。打群架和单挑完全不同。打群架的最终目标是保护自己。什么时候你如果能象一条鱼一样在鏖战正酣的人群中穿来穿去而毫发无伤,什么时候就可以认为:你打群架的水准已经达到了炉火纯青的高度。要尽量控制自己出手的次数,否则被你打到的人都会在潜意识里认为你是最直接的敌人而紧追不舍。你所要做的事情主要有两个方面:一是躲闪,二是投机。如果几个盟友追着一个敌人冲上来,你一定要大喝一声,挺身而出,把那个倒霉蛋一棍打翻,那几个冲上来的盟友必然对你敬仰有加——玩游戏的人都知道,得到经验值的总是最后把敌人消灭的那厮,不管他事先出没出力——然后你就可以大喝一声“跟我来”带领你这几个暂时的手下冲向一个瘦弱的敌人。以多取少焉有不胜的道理。但如果是几个敌人追着你的一个盟友过来,你最好还是装作往斜刺里冲杀的样子做战略性的撤退。
  打群架需要一种本能:瞬间找到敌人中最弱小的家伙。此外,永远记住大地就是你的生命,永远保持自己不被摔倒。一旦被摔倒你将失去绝大部分抵抗力量。永远保持冷静。愤怒和激动确实有短暂提升战斗力的效果,但同时也会浪费掉你大部分体力,保持呼吸的稳定,不要发抖。否则你将很快疲惫不堪。
  至于单挑,复杂得多了。除了保持不被摔倒、保持冷静和保持呼吸平稳之外,基本上是用最快速度让对方失去战斗力的过程。打击对手以下部位可以获得最大的效果:两肋和腰部、心口隔膜与胃一带、眼睛。打斗之前千万别和对方对骂,你可以采取积分方式,例如对方侮辱伟大的党和国家,记1分,怀疑你的智商和种族,记10分,把你比喻成赵薇或者韩国,记20分,辱及双亲,记100分,一旦积分超过200分立刻翻脸动手。这种方法的好处是对方的盛气和斗志一路宣泄而你的盛气和斗志一路高昂,坏处是万一他骂到190分忽然住了口,则你的处境将会很尴尬:动手等于违反了自己的原则,不动手又实在不甘心。这时可以略带威胁地问一句:“你说完了没有?”按照一般规律对方会立刻补齐分数差值,这样你也可以算师出有名了。
  基本上,单挑主要发生在以下几个地方:食堂、澡堂、*场。我个人认为澡堂的战斗实在是很难展开:人太多,站不稳,没工具。食堂的工具一般都是饭盆,又不符合我们不用吃饭家伙作战的思路,*场上的战斗会很快演变为群殴,因此建议大家多到这些地方体验生活,做到天时地利全都熟悉才能百战不殆。
  在战斗开始之后可以喊一些口号,一来威慑敌人,二来表示一下自己的愤慨。这个口号因人而异,但也有几句坚决不能喊。下面我们一一剖析之。
  “为了新中国”“毛主席万岁”这种口号绝对不能喊。大家会在迷惑之余给精神病院打电话。
  “计划生育是我国的基本国策”也不能喊,大家会认为你在抵抗强暴。
  “坚持一个中心,两个基本点”也最好别喊,万一对方被人当特务办了就不好了。
  “打倒法仑功残余分子”可以喊,喊得好的话会有人冲上来和你一起打,而且对方的精力会立刻转移到“我不是……”之类辩白上,干扰他的斗志。
  “打倒美帝国主义”“打倒日本军国主义”可以喊,但不会有太大效果,对方有可能笑得失去抵抗能力,但是“打倒苏联修正主义”不能喊。现在没多少人知道那是什么东西。
  “哈哈哈哈!觉不觉得好玩啊?说来听听!说啊、说啊、说啊、说啊、说啊、说啊、说啊、说啊、说啊!为什么老是、老是、老是、老是、老是不说话呢?”推荐,可以把打击渗透在音节之中,而且周围的人会以为你们是在排练而鼓掌。
  “你有多少兄弟姐妹?你父母尚在吗?你说句话啊,我只是想在临死之前多交一个朋友而已啊。”不推荐。缺乏气势。
  “我手持钢鞭将你打”和“过了二十年又是一条好汉!”也不推荐,词不达意,不能起到干扰敌人的作用。
  “我的忍耐是有限度的!”非但不能喊,连想都不能想。因为这是我们寝室原来老大打架专用的。无限怀念其人中。
  OK,经过了我的一系列指导,你应该已经把那个或者那些敢于捋虎须的家伙打得遍体鳞伤、血口喷人了。下面就是最后的善后工作。
  一份总结报告是必须的,它可以让你积累经验,知道本次打架活动成功在哪里,不足在哪里,哪些人可以打,哪些人最好不要去碰,最好和哪些人搞好一点关系等等。
  把预算帐单和最后的支出对照一下。预算包括买兵器药品营养品的钱、门诊费用、处理费用、出租车发票、请同伙喝酒的酒钱、还有大约的赔偿费用(各地行情不同),其中赔偿费用一项是可以让谈判专家去就地还钱的。通常总预算都在三千元左右。
  如果被学校知道了,则必须准备一万元左右用于统一口径(包括我方和敌方)、打通关节、收买保卫处相关人等这些事情。在谈判桌上要尽量扩大我方的伤亡,在吹牛的时候则要尽量扩大我方的战果。
  最后,准备下一次打架,让自己的青春有些东西可以回忆
请教各位高手:如何让Linux在默认情况下登录到命令行,而不是桌面?
改/etc/inittab
id:5:initdefault为
id:3:initedfault
这个好像有人问过的
宁 23:55:47
呵呵 人总想得到很多东西
屮回忆未来~ 23:55:58
向上帝不要脸的人没几个,其中一个就是我,哈哈,向上帝要抓住机遇的能力,
宁 23:55:59
却不知道已经拥有很多了
宁 23:56:17
呵呵
屮回忆未来~ 23:56:23
我拥有很多啦,哈哈。。。也是

宁 23:56:25
不要脸的人最多
宁 23:56:42
不聊了.有事.下次聊
屮回忆未来~ 23:56:47
            呵呵,买本本去了,哈哈。。人生苦短得买个本(为别人买),喔用python,哈哈。。。。喔得买个好鼠标,还有一个大硬盘。。。哈哈。。。
问题的提出是源于 这位兄弟的BLOG,在他的这个实现中,Python具有相当不错的性能,不但优于帖子中的C实现性能,也优于随后的跟贴中众多的C++实现的性能。

在经过了多次尝试,我还是很难找出一个优于Python性能的实现。这不是一件正常的事情,Python的性能注定不会优于C/C++,这是因为Python是解释执行的,解释的过程必然会消耗CPU时间,所以我查阅了Python的源码试图找出为何Python对于这个任务有如此好的性能的原因。

任务描述如下

对于一个78W行的文本文件,每一行是一个Email地址,文件中存在有重复的行,任务的要求是尽可能快的从这个文本文件生成一个无重复的Email的文本文件

一些相关的实现,可以参看这个地址
有如下的三个问题需要注意

对于这种大量的字符串比较,直接使用字符串比较函数是严重妨碍性能的
IO性能是要注意的
尽可能的少使用占用内存
在我的尝试中,发现重复调用 ofstream::operator<< 是比较影响性能的,而使用 fprintf或使用copy 等 STL 算法输出到则性能好的多。使用一种好的Hash算法是影响程序性能的关键。任务中的EMail字符串总是具有[a-z]*[0-9]*@([a-z]*\.)+[a-z]* 的形式,例如 joson123@sina.com.cn joson72345@sina.com.cn 的格式。

在$PySrc/Objects/dictobject.c 中,对Python的Hash机制作了一些描述,总的来说,Python的Hash机制对于这种连续型的字符串有相当好的离散度,对于这个 78W 例子,python_hash() % 780000能够很均匀的分散到各个值,最大的冲突数为 8。 以下是按照类似 Python的 Hash算法实现的 C++ 版本的结果

E:\Workspace\Temp\Email>my 经过了1687.5000毫秒 E:\Workspace\Temp\Email>my 经过了1718.7500毫秒 E:\Workspace\Temp\Email>my 经过了1671.8750毫秒 E:\Workspace\Temp\Email>my 经过了1656.2500毫秒 E:\Workspace\Temp\Email>py_email.py 2.82014641526 E:\Workspace\Temp\Email>py_email.py 2.74879181572 E:\Workspace\Temp\Email>py_email.py 2.76348586203 E:\Workspace\Temp\Email>dir *.txt 2006-03-28  13:09        19,388,869 email.txt 2006-03-29  22:51        17,779,266 email_new.txt (py_email.py 写出) 2006-03-29  22:50        17,779,266 email_new_my.txt (my.exe 写出)
py_email.py 的实现参看这里 my.cpp 实现如下 使用 cl /O2 /EHsc /D_CRT_SECURE_NO_DEPRECATE my.cpp 编译
#include <cstdio> #include <windows.h>  using namespace std; #define c_mul(a, b) (a * b & 0xFFFFFFFF) size_t python_hash(const char * str) {   size_t value = str[0] << 7;   size_t len = 0;   while(*str != 0)   {     value = c_mul(1000003, value) ^ *str++;     len++;   }   value = value ^ len;   if (value == (size_t)-1)   value = (size_t)-2;   return value; } size_t hash(const char * str, size_t seed = 1) {   size_t h = 0, g;    size_t len = 0;   while (*str)  {      h = (h << 4) + *str++;      if ((g = (h & 0xF0000000))) {        h = h ^ (g >> 24);        h = h ^ g;        h = h ^ seed;     }      len++;   }    return h;  } #define MAX_TABLE_SIZE (780000) #define MAX_CONFI 9 struct hash_item {   size_t items[MAX_CONFI];   size_t item_count;   hash_item()   {     item_count = 0;   }   bool check_has(const char * str)   {     size_t key = hash(str);     for(size_t i = 0; i < item_count; i++)     {       if (items[i] == key)       return true;     }     items[item_count++] = key;     return false;   } }; int main( void ) {   __int64 t1, t2;   GetSystemTimeAsFileTime( (LPFILETIME)&t1 );   FILE * fin = fopen("email.txt", "r");   FILE * fout = fopen("email_new_my.txt", "w+");   size_t hash_key_a = 0;   size_t hash_key_b = 0;   size_t pos_x = 0;   size_t pos_y = 0;   const char * buffer = NULL;   char line[255];   fgets(line, 255, fin);   hash_item * table = new hash_item[MAX_TABLE_SIZE];   while(!feof(fin))   {     buffer = line;     hash_key_a = python_hash(buffer);     pos_x = hash_key_a % MAX_TABLE_SIZE;     if (!table[pos_x].check_has(buffer))       fprintf(fout, "%s", buffer);       fgets(line, 255, fin);   }   GetSystemTimeAsFileTime( (LPFILETIME)&t2 );   printf( "经过了%I64d.%04I64d毫秒\n", (t2-t1)/10000, (t2-t1)%10000 );   fclose(fin);   fclose(fout);   delete [] table; }


[url=http://wiki.woodpecker.org.cn/moin/BPUG]啄木鸟Python开源社区 [/url]
    我的感觉是一般的女生好像都可以同时和很多男生交往的,然后选出适合自己眼光和条件的并且人品还不错的男生做男朋友;可是男生哪还有那说法!?追一个女生都要付出很多经历和真正的感情的,而且对待自己追的女生稍有懈怠,人家女生就找别的条件好的男生了,现在竞争这么激烈,那还有什么同时和好几个女生交往的说法!所以女生找男朋友或老公还是比男生找女朋友或老婆容易的多,并且长久的多
分页: 304/339 第一页 上页 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 下页 最后页 [ 显示模式: 摘要 | 列表 ]