江湖客
文章列表
共 241 条文章
2007-10-29 14:26:10
国庆节期间,最为猖獗的病毒当属禽兽病毒了,小弟家里的电脑、公司的电脑也未能幸免!恼怒之余,在网络上大肆搜索解决之道,抱着侥幸的心理到金山毒霸铁军的博客里面去看看
类别:默认分类 | 评论(0) | 浏览(706)
2007-10-29 14:25:35
深秋一过,病毒大有肆虐之势,其中最有特点,破坏力也超强的病毒就是被成为“蘑菇病毒”的一个病毒,这东西到底厉害在哪里,应该如何处理?不用着急,金山的反病毒专家已经
类别:默认分类 | 评论(0) | 浏览(389)
2007-10-29 14:24:13
想当初第一次去买杀毒软件的时候我还真有些不知所措,不知道该买哪款,那个销售人员就一个劲的向我推荐金山毒霸,那时候偶就是一个啥都不懂的小菜鸟。记得那大概是99年毒
类别:默认分类 | 评论(0) | 浏览(440)
2007-10-29 10:18:45
for i=2 to li_rowcount
ls_people_id=trim(string(lo_xlsub.cells[i,1].value))
类别:默认分类 | 评论(0) | 浏览(457)
2007-10-29 10:16:50
概述
作者:Thomas W. Burger

  英特尔® 主动管理技术包括一系列平台架构增强特性,其中包括可提供持续稳定的非易失性内存以存储软
类别:默认分类 | 评论(0) | 浏览(550)
2007-10-27 11:51:39
李嘉诚有传世的赚钱发财秘方:李嘉诚在长江EMBA与大师同行系列讲座中提到赚钱之道,整理如下:很多人常常有一个误解,以为我们公司快速扩展是和垄断市场有关,其实我个
类别:默认分类 | 评论(0) | 浏览(178)
2007-10-27 11:39:49
EA公司国际出版负责人Gerhard Florin日前表示,一个开放的平台能解决目前困扰游戏玩家和开发商的许多问题。

  “我们需要一个开放、标准的平台,
类别:默认分类 | 评论(0) | 浏览(166)
2007-10-27 11:04:09
五年金山游戏经历玩家的泣书:剑3很难运营成功,七大理由!!!

  看着自己兄弟大部分都走光了,忍不住想说些话,唉!在老区就是一个个兄弟走光了,来了免费10
类别:默认分类 | 评论(0) | 浏览(334)
2007-10-27 11:02:33
IT软件类等连续3年成招聘热门 细分达十多种职位 起薪相差6倍

  今年的首场研究生专场招聘会,24日在北京高校毕业生就业指导中心举行。

  尽管主
类别:默认分类 | 评论(0) | 浏览(334)
2007-10-27 11:01:41
为了健康,你恪守着关于饮食的种种箴言。但是你知道吗?那些你一直深信不疑的饮食箴言,其实很多是充满了片面性的谎言!现在,是还你一个清晰的真相的时候了。

  
类别:默认分类 | 评论(0) | 浏览(250)
文章分类
最新评论
 
chiyimai101 2008-02-19 15:08:02
记住几个,给同事玩玩去
江湖客 2007-06-11 13:48:28
没看明白?我一开始也看不明白。这里用到了boost库的Lambda表达式。_1占位符对应c1的元素,_2的占位符对应c2的元素,_1*_2表示才c1的元素乘上c2的元素,其结果放在c3里。表达式可以写得更复杂,比如(_1*_2+3*_1)/(_1-_2)。Lambda表达式可以用在所有需要操作的算法中,比如我要去掉字符串中的“-”,可以这样写: remove_if(s.begin(), s.end(), _1==’-’); Lambda表达式基于一种叫做“模板表达式”的技术,通过操作符重载,将一个表达式一层一层地展开,构成一个解析树。然后作为一个函数对象传递给算法,算法在循环内调用函数对象,执行相应的计算。 没有比这更简单的了吧。原理是够复杂的,但我们可以完全不理睬其中复杂的原理,只管用就是了。别看只是一个小小的算法,要知道,再庞大的软件(象JSF的代码有1900万行之多)都是由这些渺小的算法构成的。C++提供的算法和简化算法使用的库几乎对所有的程序算法都有帮助,不仅仅对这种底层算法有效,在更高层次的算法作用更大。 这里我就不再给出C#的代码了,因为C#还不支持Lambda表达式,也无法模拟。如果想要的话,等C#3.0吧。 好了,应该是做小结的时候了。从上面的这些例子可以看出,在最基本的语句上,C#有时比C++简单些,因为C#提供了更多的关键字。但是,随着算法的逐步复杂,C++的抽象能力渐渐发挥作用。一旦需要建立抽象的算法和代码时,C++的泛型编程能力立刻爆发出巨大的能量。最后,我们利用boost::lambda库最大限度简化了算法的使用。更重要的,Lambda表达式的实现极其复杂,但是使用却异常简单。 这便是开头所说的:“C++之所以复杂,是为了使用起来更简单”这句话的含义。C++提供的那些复杂的机制,是为了构建库,以提供语言没有实现的功能,这些功能可以大幅简化开发工作。如标准库里的容器、算法,boost库的Lambda表达式、BGL的命名参数、智能指针等等。 也就是说,一个程序员可以仅仅学习最基本的C++编程技术,便可以利用现成的各种库开发软件。只管用,别问为什么。在这种情况下,学习和使用C++的难度同C#和Java相比没有本质的差别。但由于C++可以提供更灵活高效的库,在不少情况下,反而比C#和Java更好用。 要达到这种程度,程序员所需的训练的确会比C#和Java多一些。所需的训练主要集中在:标准库的使用;区别对象、指针和引用;指针、内存、资源的处理方法,智能指针的使用;类使用的一些特别要点(构造函数、隐式转换等等);多态的正确处理;模板的用法。另外还需要给学习者定下一些“规矩”,避免误用一些敏感的语言机制。这些“规矩”只需遵守,不要问为什么。一旦这些“规矩”成了本能的一部分(强化训练可以达到这种效果),程序员就成熟了。即便回过头使用C#或Java,也能很容易做到趋利避害,扬长避短。(要小心,这时候程序员很可能会骂人的。我是个比较斯文的人,一般不骂人,除了开车的时候和使用C#的时候)。 这些内容只要编排得当,用法标准,学习者不需要花费很长的时间即可掌握,大概两三个月即可,如有半年的时间,便可以纯熟。这样训练出来的程序员基础非常扎实,无论将来学习什么语言或技术,都可以驾轻就熟。如果他还喜欢C++,那么可以进一步学习C++的高级机制,加入库开发者的行列。 对于自学者,也可以进行这样的训练。但必须要正确选择教材。Lippman的《essential C++》和《C++ Primer》是我所知的最好的教材。认真地遵循书中的线路,反复做好练习,就行了。入门书是很重要的,千万不要选择那些C(++)的书(大半本C,带上那么一点点C++的内容)。 这样,我们实际上是将C++的使用分成了两个层面,一个是应用层面,另一个是基础开发层面。当然,基础开发层面还可以分成应用性的基础开发,比如帐务管理系统专用的基础库;和工具库的开发,象boost之类的库。应用层面的开发人员不必了解(甚至可以不知道)C++所有的古怪特性,以及那些库的内部机制,只需学会使用即可。要达到这种要求,我相信对能够学会高等数学的人而言,是易如反掌的。 对于一个使用C++的企业,无需每个程序员熟悉所有的C++特性。有少量高手专注于企业级的库的设计和开发,而其余的程序员只需达到上面所说的基础C++的程度。这种配置可以获得非常高的开发效率。但前提是程序员接受正规的、扎实的基础C++培训,这在前面已经讲过了。 再强调一遍,“规矩”是至关重要的。因为C#和Java易学,主要得益于去掉了许多危险(但却非常有用和重要)的语言机制。在C++的教学中引入严格的“规矩”,是在保留这些危险但重要的机制的同时,使学习者避免其损害的手段。必须让初学者知道很多机制是不能碰的,因为这些机制不是给他们用的,是给那些充分了解其危害的人用的。 相比之下,在路上开车压死人要比在C++中犯错误容易得多(毕竟C++不会在马路上乱窜)。之所以我们没有天天出事故,是因为我们遵循了规则(交规和驾驶技巧)。C++编程也一样(任何编程都这样)。但有时人们可以在受控的情况下合理违反交规,比如执行任务的警车和救护车可以逆向行驶、闯红灯。显然这是有条件的,驾驶员受过特别训练,鸣笛和亮警示灯。就像在C++中,只有受过特别训练,在有保护的情况下方能使用象placement new这样的超危险机制一样。 不错,即便如此,C++的学习依然不是一个轻松的过程,所学的内容也比C#和Java的多。但是在付出的同时,还应看到收获。学习C++的收获不仅仅是可以使用Lambda表达式这样优雅的语法,而且能够真正地掌握编程技术中的核心,为将来的发展打好基础。当你能够熟练地使用标准库时,正宗的抽象思维的能力已经悄悄地潜入了你的骨髓,这是成为一名优秀的软件设计师的基本条件,谁不想要呢。 好了,我这里展示了C++易用性的冰山一角,解释了难学难用的原因,也提供了学好C++的方法。“C#和Java比C++容易学习和使用”这句话尽管不算诽谤,但也是被严重地夸大了。我希望大家能象Discovery Channel的Mythbusters(Discovery的保留节目,专门用实验的方式检验流言的真实性)那样,勇于尝试和实践,用自己的切身体会打破关于C++的流言。
游客 2007-06-18 21:17:35