黄海全ID:optman
40686次访问,排名2599好友1人,关注者1
比思想更有力的是行动
optman的文章
原创 106 篇
翻译 5 篇
转载 6 篇
评论 15 篇
最近评论
hdnero:wow power leveling
zhanghs202:你那个只是讨论一个主题或者两个人谈论一个话题而已
zhanghs202:你说的那个叫需求吗?肯定不叫,如果你不知道你要开发的东西是什么,你怎么下笔啊?
zhanghs202:听说丰田汽车早上9点上班,8:50的时候,安装车间一个零件都看不到,一个人也没有。晚上6点下班,6:10分的时候,车间里同样是看不到一个零部件。如此完美的景象,和公司的机制有莫大的关系。制度化,反腐倡廉的最佳利器是法律,制度化,以及保障机制。然后带来政府的工作的效率。软件研发的制度化,是保障沟通效率,正确高效工作的保证。
zhanghs202:太经典了:让无数双眼睛来注视,安全隐患就会无处可逃。当秘密已经不成为秘密的时候,自然就会有很多的补救措施
文章分类
    收藏
      相册
      Blog
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes
      2008年06月06日

      原创 《Release It! Design and Deploy Production-Ready Software》 

      所有功能开发完成,并通过QA测试,就一切大功告成了--我们一直存在这样的认识误区。其实,从软件产品正式发布交付给用户使用的那一天起,挑战才刚刚开始,路还很长。阅读全文>

      发表于 @ 2008年06月06日 16:29:00|评论(loading...)|编辑|

      2008年06月03日

      原创 try/catch的实现原理 

      明白了几个道理, 1. VC++的try/catch是基于Win32的SEH实现的。 2. try/catch只能捕捉当前线程的异常,每个线程都有自己的异常处理入口。 3. 异常处理入口是由OS负责调用的,在异常发生时。 4. 为了使用SEH,VC++编译器自动生成了很多的代码。   MSDN上关于SEH的经典文章A Crash Course on the Depths of Win32™ Structured Exception Handling   CodeProject上的模拟实现How a C++ compiler implements exception handling   CLR的实现 The Exception Model阅读全文>

      发表于 @ 2008年06月03日 17:39:00|评论(loading...)|编辑|

      2008年05月29日

      原创 危险的线程 

      多核时代,我们需要更多的使用多线程。但是,目前的多线程编程模型,却是陷阱多多......阅读全文>

      发表于 @ 2008年05月29日 14:45:00|评论(loading...)|编辑|

      2008年05月28日

      原创 std::set的insert会把新元素放在什么位置? 

      我其实是希望放在第一个,这样我就可以用begin来访问到该新元素--正在在做一个连接池,希望把刚用完的连接放到最前面,这样就可以经常用到,而不常用的就逐渐废弃断掉了。从代码的实际运行情况来看,就是我所希望的模式,但是否偶然现象?   于是找到了这篇帖子,原来std::set内部并不是以数组来保存元素的,而是用树。这样的话,所谓的前后并没有什么意义!这个早就应该想到的!STL集合就是通过枚举器(iterator)来封装内部的存贮空间和算法的,只要用begin,next就可以遍历所有元素而不用管其内部的存贮位置。当然了std::set还是有一个固定“存贮位置”的,也就是说在其它元素没有变化的情况下,把位于begin位置的元素取出来(erase),再放回去(insert),还是会处于begin的位置的--这里说的是枚举的顺序。   如此看来,我前面的做法是没有错的。不过,这多半是因为运气好。因为,从insert这个函数名称上就没有任何保证说一定会放到begin位置。而且,很有可能换用了别的集合类型,比如把set改成list,就达不到前面的预期的效果了。所以,这段代码存在隐阅读全文>

      发表于 @ 2008年05月28日 17:41:00|评论(loading...)|编辑|

      2008年05月24日

      原创 时空穿梭和系统重启 

      一个人不是无端生有的,人是一个连续体,是从出生的那一刻起,你的所作所为构成了今天的你。我们在说一个人的时候,不仅仅是指现时刻的他,还包括昨天的他,前天的他......或许,还包括明天的他。对啦,还有他周围的一切,比如你。阅读全文>

      发表于 @ 2008年05月24日 16:00:00|评论(loading...)|编辑|

      2008年05月20日

      原创 COM套间模型的相关文章 

      关于COM套间模型,一开始你可以不关心,但是总有一天你会碰上......   COM和套间(Apartments) 1 - 基本知识 简洁明了的中文介绍   OLE 线程模型的说明和工作方式 微软的技术文章,太详尽了。   Understanding and Using COM Threading Models MSDN的文章,1998年。   difference between STA and MTA 普通程序员的认识   A Simple Example To Explain COM STA, MTA, and Auto-threaded Modules Geek的观点,用代码说话。 阅读全文>

      发表于 @ 2008年05月20日 16:48:00|评论(loading...)|编辑|

      2008年04月24日

      原创 《设计规则 模块化的力量》书评 

      《设计规则》一书从比较抽象的概念,向我们说明了什么是设计,什么是模块化,以及模块化所带来的好处,最后是如何实现模块化。模块化不仅是技术层面的设计,还影响了社会层面的经济制度设计,包括对合同和公司制度的要求。 阅读全文>

      发表于 @ 2008年04月24日 00:10:00|评论(loading...)|编辑|

      2008年04月15日

      原创 微软产品内部协议大公开 

      有时候,历史也是一种包袱,就像Windows越来越臃肿一样。所以,与其自己扛着,还不如干脆放出来让大家一起扛,这样就可以解脱了,轻装上阵奔向新的目标。就像Windows 98/2000,虽然微软不愿意提供技术支持了,但总有人会愿意的。怕就怕在,包袱甩出来了没人接,还得自己扛着,呵呵。阅读全文>

      发表于 @ 2008年04月15日 23:34:00|评论(loading...)|编辑|

      2008年04月10日

      原创 诡异的TLB文件 

      COM组件IDL文件里大写的属性名称在生成的TLB文件里,竟然变成了小写!问题还不止这么简单,因为有时候变成小写,有时候又变成了大写!调用程序因此反复要修改,这不是折磨人嘛!   在Google Groups里搜索了一下,原来这是因为TLB里,所有的字符串存贮在一张表里,不管大小写,而且也不管是属性名还是参数名。第一个碰到的,就存贮到表里,并且保存大小写,以后同样的字符串(不分大小写)均以第一个为准......也不知道谁定的规矩。   在我的代码里,因为有些参数名跟属性名是相同的,而且参数名习惯以小写开头,属性名习惯以大写开头.......   知道了原因,修改起来也就很简单了,索性把所有的参数都改成大写的。   原帖: Interace property's case changed when viewed/used in tlb and c++ c阅读全文>

      发表于 @ 2008年04月10日 19:45:00|评论(loading...)|编辑|

      2008年04月02日

      原创 如何等待进程树结束 

      我们通常使用的WaitForSingleObject只能等待一个进程结束,如果进程中间又发起了另外一个进程,我们如何知道那个进程结束?阅读全文>

      发表于 @ 2008年04月02日 11:41:00|评论(loading...)|编辑|

      2008年03月29日

      原创 Amdahl's law 

      其大意是,如果一个占整个任务比重为P的组件的运行效率为原来S倍,那么当S->∞的时候,效率的最大提升也不过是1/(1-P)。阅读全文>

      发表于 @ 2008年03月29日 17:32:00|评论(loading...)|编辑|

      2008年03月11日

      翻译 软件需求本质上就是一个沟通的问题 

      无论是写成文档呢还是口头交流,都各有利弊。 User Story则兼具两者的优点。 阅读全文>

      发表于 @ 2008年03月11日 19:45:00|评论(loading...)|编辑|

      2008年03月02日

      翻译 Lean software development 

      所谓精益的主要思想是: 减少浪费 鼓励学习 推迟决策 尽快发布 充分授权 保持完整 尽观全局 阅读全文>

      发表于 @ 2008年03月02日 21:47:00|评论(loading...)|编辑|

      2008年02月27日

      原创 关于内存占用和运行性能的关系 

      关于这个内存占用情况,其实很难准确的计算。特别是在运行过程中,内存占用有时会变得比较大。而当最小化窗口时,内存占用又会急剧下降--这里说的,是从任务管理器里看到的情况。其实,这都是很正常的。 内存的占用,其实反应的是程序的活动情况。一般来说,在程序完全不工作(或者系统内存不足)的时候,操作系统会把其占用的内存进行释放(甚至可以变成零占用),这就是为什么最小化的时候程序内存占用急剧下降的缘故—不是我们释放了内存,而是操作系统自动释放(交换)出去了,这样就有更多的内存给其它程序使用。但是,一旦最大化了,程序又开始工作了,那么释放出去的内存又要重新分配回来,所以内存占用又继续上升了。 所以,某一个瞬间占用多少内存其实都不重要(因为有可能这时候它在做很复杂的操作,占用很多内存是很正常的。当然,操作完成后,内存占用应该下降。不过这不重要,即便你不放,系统在需要时也会强制放掉)。所以,问题的关键是不进行操作的时候,内存会不会在不断的增长。如果是,则表明程序一直在活动,一直在占用CPU,这才是最关键的(CPU的占用才是系统变慢的主要原因)。我们需要查出来的,应该是这些一直在进行的操作是什么,是不阅读全文>

      发表于 @ 2008年02月27日 09:42:00|评论(loading...)|编辑|

      2008年02月20日

      原创 从程序员的角度看DNA 

      染色体的碱基配对序列就像源代码,而细胞就像CPU,运算(编译)结果就是蛋白质(可执行文件)。   碱基配对序列里,也有代码注释,还有防止错位的编码,有冗余备份。而病毒可以通过把自己的序列片段插入宿主的序列里,从而成为宿主的一部分,甚至是永久的。这种办法,也可以用来修复DNA缺陷。   DNA里也包含了Makefile文件,果蝇和人类的Makefile基本上是一样的,至少在主体结构上。   生物学还真有意思啊! 原文: DNA seen through the eyes of a coder阅读全文>

      发表于 @ 2008年02月20日 21:26:00|评论(loading...)|编辑|

      Csdn Blog version 3.1a
      Copyright © optman