11 2006 档案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接口是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 阅读(300) 评论(0) 推荐(0)

HOOK启思录---第二章 HOOK的根源
摘要:我一直在避免写HOOK的技术实现,想尽可能地将一些看不到的东西收集起来。相对于了解一个成熟的技术,还不如去了解其中的思想吧。我是这样认为的。这一章会暂时远离HOOK本身,我们会尝试着去思考这些技术出现的根源。很多人象我一样,从OP的衰败中走向OO的繁荣。软件的复杂度也是突飞猛进。当年“没有银弹”的断言,非常准确地说明了软件的发展趋势,当新技术发展的时候,软件的复杂度也随之发展。我们现在的软件,已经不再是OP时代的软件了。大家需要的不再是一段会计算的代码。大家需要图形界面,大家需要管理流程,大家需要信息共享!假设我们以前那些单一功能的软件都可以比喻成一条路的话。它非常简单,你只要考虑从A如何走到 阅读全文

posted @ 2006-11-22 22:33 ohmyjava 阅读(164) 评论(0) 推荐(0)

HOOK启思录---第一章 HOOK的发展
摘要:非常遗憾,HOOK的发展史不是那么清晰可见。事实上,HOOK到底是什么,很多人的说法都不一样。最早是在操作系统中出现的HOOK概念。在Unix/Linux/Windows中都有类似概念。当时提出的目的在于,允许用户在系统调用过程中,插入自己的代码处理特殊事情。典型的HOOK就是用自己的功能替换原有的函数点,在处理完成之后,又恢复原有的函数点。(这里“点”就是表示一个可以使用HOOK勾住的位置)。下面是《关于钩子》中,描述的Windows是中的钩子:在Windows中,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可 阅读全文

posted @ 2006-11-21 01:13 ohmyjava 阅读(167) 评论(0) 推荐(0)

HOOK启思录---前言:HOOK是一种思想
摘要:在很多人眼里,Hook都是高级程序员才会使用的技术。一年前,我也是。每每看到别人使用了Hook技术就很嫉妒。是的,说嫉妒一点都不夸张。刚开始,不知道Hook到底是什么技术。或者说,Hook到底是做什么的。Hook的英文是钩子,但是,说实话,我的中文意识中,怎么也不能将钩子和Hook划等同符号。一个钩子,它在等待我们去往上面挂上我们想要的东西。这点,从最终结果看。确实和这个技术很符合。可问题是,那些钩子在什么地方?我们家门口倒是有几个挂衣服的钩子,可是我要挂其他物件的钩子在哪里呢?最常听说的就是API HOOK了。有句话说得很有道理,HOOK API是一个永恒的话题。网络上,不知有多少人在追捧. 阅读全文

posted @ 2006-11-19 23:24 ohmyjava 阅读(163) 评论(0) 推荐(0)

戏说OO思想
摘要:戏说OO思想 OO就是两张嘴,总有说不停的话题。OO就是一对恋人,怎么都不能完美统一。OO就是你和我,总愿意将唾沫花在上面。 OO是缺乏精神食量时候的呼唤声,OO是得意忘形的吼叫声,OO是愉悦欢快时候的呻吟声。可是,OO是什么呢? OO是面向对象,面向对象又是什么呢? 很多人非常了解OO,可是OO到底想告诉我们什么呢? 在很久很久以前,有一个非常OO的皇帝,下令他的一个大臣(这位大臣很善于建筑)命令他在一座河上造出一个非常OO的桥。大臣接到这个任务后,非常卖力。可是他不是很明白皇帝陛下的非常OO的标准是什么。幸好他自己也很OO,所以就按照他的理解进行修造工作。 一天,OO皇帝召见了这个OO大臣 阅读全文

posted @ 2006-11-17 09:06 ohmyjava 阅读(199) 评论(0) 推荐(0)

不要让对象成为奴隶
摘要:[写这篇文章纯粹是为了提高大家对对象的认识。此间不同的论点不适用于目前的工程应用软件设计。]对象什么时候成为奴隶了?也许在面向对象出现的时候,早就注定他是奴隶了。就如非洲黑人被带到美洲的第一天,他们就是奴隶!是什么是他们成为奴隶?枷锁!身上的枷锁和心灵上的枷锁!身上的枷锁是他们不能挣脱,而心灵上的枷锁确让他们不愿或是不知道逃离!不是奴隶的人,永远不愿意主动去思考,为什么奴隶要成为奴隶!而成为奴隶的人却又没有能力去摆脱这个现实。也许,要象美国一样,需要一个内战,再需要总统来签发特赦令!否则,对象什么时候才能摆脱被奴役的境地?或许你要问,对象怎么被奴隶了?先来说说其“身上的枷锁”,就是对象的“方法 阅读全文

posted @ 2006-11-08 08:43 ohmyjava 阅读(157) 评论(0) 推荐(0)

话说解题思路
摘要:今天,老贾同志提出一个问题,就是我们解决问题的思路都是什么。他向我们讲述了自己编程控制LDAP的过程。主要是讲述过程中遇到很多关键点,但他确忽视了。于是大家讨论了一下如何去解决忽略关键点的问题。针对这个问题,我提出一个模型。如下图:外面的大圈表示我们的所知领域,红旗表示答案所在。请注意,红旗有好几个,对于我们的问题来说,也可能是有很多个答案的。带有角度的弧线,表示一个人的观察视角,一个人的视角有限,很可能看不到,或者看到了也忽略掉重要的信息(关键点),于是在发现问题的路上经常可能走弯路。但是,如果我们同时有两人视角不完全相同的人,那么视角就会变大,而且以前一个人注意不到的细节,可能会被认识到并 阅读全文

posted @ 2006-11-08 08:39 ohmyjava 阅读(136) 评论(0) 推荐(0)

导航