2006年12月13日

程序员,你能掌握你自己吗?

摘要: 程序员,是最聪明的一个群体。以前是这样,现在我也同样这么认为。可是,作为最聪明的我们,你又对自己能把握多少呢?程序员是最不善于言语的。任何辛苦,程序员都藏在了心里。市场人员的辛苦,天天在讲。就连你都,天天听得都感觉他们很辛苦。可是却没有人来说你。你可能会在位置上发发牢骚,可能会暗地里伤神流泪,也可能在自己的博客上和网友分享。可唯独不会向领导反映。可惜,领导向来是谁辛苦给谁加薪水。所以,你最好运气好,遇到一位会体察下情的领导。否则,我只能问你,你能掌握你自己的命运吗?程序员又是最揉不得沙子的。对于任何开发方面的问题,他们都有自己的独到意见。任何不同的意见,都会让他竭尽全力地去找出其中的漏洞。他们 阅读全文

posted @ 2006-12-13 02:22 ohmyjava 阅读(145) 评论(0) 推荐(0) 编辑

2006年11月30日

业务平台--摸不准的理念?

摘要: 在应用软件领域,最近一直被吹捧的技术就是平台。但是,对于平台的理解,却不是很统一。各行各业也没有一个准确的定义。基本上每个稍微有点实力的公司都推出了自己的平台。可是,平台到底是什么呢?回答平台是什么不是很容易。不过可以从它产生的目的开始探讨。说得高一点,平台的出现,是剩余价值追求的产物。换句话说,就是要提高开发效率,减少人力成本。使得开发一个新的项目、产品,可以很容易!平台的诞生,是要解决两个问题。第一、 二进制级别的复用。在无需重新编译的情况下,重复利用已有的成果。第二、 业务模块级的重用。将能够解决用户核心业务问题的模块,封装成可以直接复用的平台基石。并可以在这些基石上重新构建完全客户化的 阅读全文

posted @ 2006-11-30 22:29 ohmyjava 阅读(190) 评论(0) 推荐(0) 编辑

堆和栈的区别

摘要: 一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。5 阅读全文

posted @ 2006-11-30 22:02 ohmyjava 阅读(110) 评论(0) 推荐(0) 编辑

2006年11月29日

借火车看设计过程

摘要: 在去野三坡的途中,和Linc谈起火车的架构来,感觉其扩展性特别好。车厢可以载人,可以载媒,可以载货,可以载坦克,可以载飞机,火车头可以有一个,也可以有多个,可以在两头,可以在中间。回来以此为题,大家一起讨论一下设计。一直认为,设计如哲学一样,大道同源。其道理一定可以应用到各个领域。因此火车也需要设计,因此软件也需要设计。那好,我们开始设计吧。这时候,你想到了什么?火车的扩展性?是的,至少我们讨论的时候,第一个想到的就是这个。因此我们开始考虑应该提供一个基类,来描述什么样的是车厢,所有满足此条件的车厢就可以挂接到火车上了。有什么呢?轮子、前后接轨。底盘。还有人提到是不是应该有电源接口。也是有一定 阅读全文

posted @ 2006-11-29 11:28 ohmyjava 阅读(127) 评论(0) 推荐(0) 编辑

原来汉语的思路更接近计算机语言

摘要: 汉语不需要变单数,复数和时态,我要表示复数,只需要加功能词就可以了,不会影响单词本身,比如一只鸟,一些鸟,但是在英语中就要影响所有的几万个单词,相应的“是”在英语中也要变成is are were be等等,但是我们在很多情况下不需要关心时态和数量,这与使用面象对象是一个道理。汉语可以表达“树上有鸟”的相对抽象概念,而用英语表达类似“树上有鸟”时,每次都要指定具体数量和时态以及单词的变化,只能表达“一棵树上有只鸟”“一棵树上有一些鸟”“一棵树上曾经有一些鸟”“一些树上有些鸟”“一些树上曾经有一些鸟”等等,就是无法表达“树上有鸟”。汉语中这个函数“()树上有()鸟”是不变的,变的只是不同的参数,而 阅读全文

posted @ 2006-11-29 11:24 ohmyjava 阅读(230) 评论(0) 推荐(0) 编辑

2006年11月27日

HOOK启思录---第三章 HOOK的应用模式

摘要: 观察模式在HOOK很多应用中,有一类应用最为常用,那就是观察模式。对于信息获取的要求,在很多时候都是非常的重要的功能。在很多时候,我们都需要根据一定量的信息去判断如何决策。正如打仗一样,没有一定量的有意义的数据,就是摸黑,只能死路一条。像Windows提供的SetWindowHook就是典型地为这类应用准备的。而且这也是最普遍的用法。这个模式的特点是,在事情发生的时候,发出一个通知信息。观察者只可以查看过程中的信息,根据自己关心的内容处理自己的业务,但是不可以更改原来的流程。如全局钩子中,经常使用的鼠标消息、键盘消息的监视等应用。金山词霸屏幕取词的功能是一个典型的应用(具体技术可以参考此类文章 阅读全文

posted @ 2006-11-27 23:18 ohmyjava 阅读(129) 评论(0) 推荐(0) 编辑

2006年11月25日

也谈西直门桥的设计

摘要: 下面就是著名的西直门桥的右转指示图:这个桥在从两个方向上过来的右转都必须经过三圈或者五圈。任何新司机都惧怕这里,任何老司机都激动这里。就因为此,还有人编写了一段笑话:中国联通壮告西直门立交桥设计者一日,中国联通董事长王建宙坐在车后座上无线上网,车在北京的街头和汽车洪流中走走停停.王总突然感觉累了,于是合上电脑,放眼望向窗外.“这是什么桥,这么大?”王总突然问。“是西直门立交桥,王总”司机回答到。司机知道,王总平时太忙,在车上都在办公,其实经常路过这桥,但是王总一直没有注意到。“哦。”王总叹到。他想,现在中国的通信和交通发展真快啊,有这么宏伟的桥。王总打开电脑,继续办公。 良久,王总再次望向窗. 阅读全文

posted @ 2006-11-25 23:58 ohmyjava 阅读(598) 评论(0) 推荐(0) 编辑

接口设计之误区

摘要: 非常感谢大家对接口的几篇文章的关注和支持。特别补充一段我理解的接口设计中的误区。误区之一:采用对象式设计OO思想在设计师人群里已经深入人心。往往一谈到设计,就会想起对象。他们对对象的抽提能力机会已经炉火纯青,驾轻就熟。然而,也正是因为这点,所以才容易以面向对象的方法去思考接口设计。对象的在业务领域中是一个立体的影像。对于立体的影像,很容易吸引大家的眼球。如果我们眼中看到的只是对象,那么很容易让我们忽略去尝试用不同的角度去看这个对象。而这些角度的成像就是接口啊。UML中指导我们,使用查看名词的方式来寻找对象。接口并不是简单的和对象的对应。一个对象往往是很多接口的组合。在这一点上,很容易产生误区. 阅读全文

posted @ 2006-11-25 21:34 ohmyjava 阅读(127) 评论(0) 推荐(0) 编辑

面向接口设计(Interface Oriented Design)

摘要: 我在网上搜索这个概念的时候,发现在中国还很少有此类文章,外国有一本同名书籍出版,但是无缘拜读。所以这个概念基本是我自己杜撰出来的,只是网上也有同名而已。 先说说,什么是接口。这是个老问题,可是在设计之前,必须先将此定义清楚。 一个常见的定义是,接口就是契约。我认为这个定义非常模糊。契约是约定双方的有一定法律或道德效应的说明。但是,第一,中国人不常定契约,所以不是很能理解其中精髓。第二,此定义还是没有定义出接口的内容特征,因此很多人看了这个定义,还是不理解接口。此定义可以是不合国情,不合民意。 我更倾向于将接口定义为职责(或角色、能力)。职责就是在某种情况下被赋予的权力和义务。在社会应用领域中. 阅读全文

posted @ 2006-11-25 00:05 ohmyjava 阅读(253) 评论(0) 推荐(0) 编辑

2006年11月24日

接口是AS出来的

摘要: 很多人在接口定义中,喜欢使用派生的方式进行定义。但是我要说的是,接口不应该派生,而应该AS出来。 接口是一种契约,它和类不同。当接口从COM中诞生的时候,其具备的三个方法经常被人忽略:IInterface=interface['{00000000-0000-0000-C000-000000000046}']functionQueryInterface(constIID:TGUID;outObj):HResult;stdcall;function_AddRef:Integer;stdcall;function_Release:Integer;stdcall;end;看一个体系的设 阅读全文

posted @ 2006-11-24 14:22 ohmyjava 阅读(279) 评论(0) 推荐(0) 编辑

导航