2007年6月28日星期四

中国复杂的辈分

沟通不多,叫法也比较地方化,所以一直搞得不清楚。这里记录下:

称呼对象 称呼

父亲的祖父祖母 曾祖父曾祖母

父亲的父亲母亲 祖父祖母或爷爷奶奶

父亲的姑父姑母 姑爷爷姑奶奶

父亲的舅父舅母 舅爷爷舅奶奶

父亲的姨夫姨奶 姨爷爷姨奶奶

父亲的哥哥嫂子 伯父伯母

父亲的弟弟弟媳 叔父婶母

父亲的姐妹及丈夫 姑妈姑父

父亲的侄子侄媳 堂兄堂嫂或堂弟堂弟媳

父亲的侄女侄女婿 堂姐堂姐夫或堂妹堂妹夫

母亲的祖父祖母 外曾祖父外曾祖母

母亲的父母 外祖父外祖母

母亲的兄弟妻子 舅舅舅母

母亲的姐妹及丈夫 姨妈姨夫

母亲的表兄弟姐妹 表舅父表姨妈

弟弟的妻子 弟媳

丈夫的祖父祖母 爷爷奶奶

丈夫的父母 公公婆婆

丈夫的兄弟及妻子 大伯嫂嫂或叔子弟媳

丈夫的姐妹及丈夫 姑姑 姑爷

丈夫的姑母姑父 姑妈姑父

丈夫的舅父舅母 舅父舅母

妻子的祖父祖母 岳祖父岳祖母

妻子的父母 岳父岳母 {岳父=老丈人=岳丈} {岳母=丈母娘}

妻子的兄弟及妻子 内兄内弟(舅子) 内嫂内弟媳

妻子的姐妹及丈夫 姨姐姨妹(姨子) 姨夫

妻子的姑母姑父 内姑母内姑父

妻子的舅母舅父 内舅母内舅父

叔叔伯伯的儿子及妻子 堂兄堂嫂 堂弟堂弟媳

叔叔伯伯的女儿及丈夫 堂姐堂姐夫 堂妹堂妹夫

姑父舅父姨夫的儿子及妻子 表姐表姐夫 表妹表妹夫

姑父舅父姨夫的女儿及丈夫 表哥表嫂 表弟表弟妹

嫂嫂弟媳姐夫妹夫的父母 姻家父姻家母

嫂嫂弟媳姐夫妹夫的兄弟及妻子 姻兄(姻嫂) 姻弟(姻弟媳)

注:同宗而非嫡亲者称“堂”母亲之后裔为表亲关系称“表”

英文字源--(1)

champion:冠军 {自于拉丁文campus:场地,古典时代的欧洲,尚武的罗马人在场地战斗和训练,衍生出了中古英语 champioun:斗士,运动员,接着产生了冠军这个词汇}

substance:物质,实质 {自于拉丁文stae:站立,衍生出了stance:姿态,接着又衍生出了姿态所体现的物质和实质}

2007年6月23日星期六

1年多后买这部手机~~

现在用的是松下VS3:


2008年底了,在以下两部中随便选其一~~~~~~~~~~~~~~~~~~~

夏普 V903SH
3G;拍照手机;128和弦;TFT屏 240×320像素 2.4英寸;320万像素CCD;上表面钢琴漆;支持文本扫描;待机时间 300小时;2005年7月下旬上市
到时候淘宝上应1500元拿到新机[港行+破解]

夏普 SH903i
3G;拍照手机;128和弦;TFT 2.8英寸 240×400像素;320万像素CCD;金属外壳;支持文本扫描;待机时间 平均460小时;2006年10月24日上市

到时候淘宝上应1500元拿到新机[港行+破解]

2007年6月22日星期五

test

test
测试通过Windows Live Writer来发布博客文章 @_@

Leah Dizon

2007年6月5日星期二

弗洛伊德精神分析学之应用

按照弗洛伊德精神分析理论,所有心理异常和精神疾病的形成不外乎两大原因:其一是人格结构中"本我、自我、超我"之间彼此不和造成心理冲突,由于冲突不能缓解被压抑在潜意识中、长期累积形成问题;其二是因幼年时性心理发展不顺利所形成的痛苦经验。幼年的痛苦经验虽然在成年后不复记忆,但却存留在潜意识中。当意识影响变小时,就会改头换面以别的形式出现,如做梦。精神分析治疗的主要目的,就是经由对当事人的心理分析,将压抑在内心深处的冲突和痛苦释放出来,使当事人领悟自己行为不同于他人的原因。

.NET framework 2.0的核心技术相关词汇(含详解)

author:nforcex整理

.NET:.NET框架是构建并运行应用程序的平台.它的主要组件包括公共语言运行库(CLR)和.NET框架类库(FCL).

CLR:Common Language Runntime 通用语言运行时/库:CLR抽象操作系统服务,并用作托管应用程序(managed application)(其每一个动作都须经过CLR批准的执行引擎).
Common Language Runtime (CLR) is the name chosen by Microsoft for the virtual machine component of their .NET initiative. It is Microsoft's implementation of the Common Language Infrastructure (CLI) standard, which defines an execution environment for program code. The CLR runs a form of bytecode called the Common Intermediate Language.
The CLR runs on Microsoft Windows operating systems. See CLI for a full list of implementations of that specification. Some implementations run on non-Windows operating systems.

FCL:Framework Class Library 框架类库:它提供托管应用程序将写入面向对象的API.编写.NET框架应用程序时,不必考虑Windows API,MFC,ATL,COM或者其他工具和技术,只需要使用FCL.当然,也可以调用Windows API或COM对象,但是您可能不希望这么做,因为这样必须将托管代码(managed code)(CLR运行的代码)转换为非托管代码(unmanaged code)(不需要CLR帮助的本机代码).这种转换会降低系统性能,甚至可能被管理员否决.FCL位于%SystemRoot% Microsoft.NET\framework\v1.0.nnnn目录下的一系列DLL中.每个DLL都是能够根据要求由CLR加载的程序集.核心数据,例如Int32,在Mscorlib.dll中实现;其他类型分布在FCL的DLL当中.每个类型的文档列出了定义它的程序集.

CIL:Common Intermediate Language 通用中间语言:CIL为处理器定义了本机指令集,所以CIL经常被成为伪汇编语言.但在这里,处理器不是一块芯片而是CLR.CIL使用基于堆栈的执行模型.闲6处理器将数值加载寄存器之后对它们进行操作,而CLR将数值加载计算到堆栈中进行操作.

JIT:Just-In-Time 实时

CLS:Common Language Specification 通用语言描述/规范

ATL:Active Template Library.It is a set of template-based C++ classes that let you create small, fast Component Object Model (COM) objects. It has special support for key COM features, including stock implementations, dual interfaces, standard COM enumerator interfaces, connection points, tear-off interfaces, and ActiveX controls.ATL is designed to simplify the process of creating efficient, flexible, lightweight controls. This tutorial leads you through the creation of an ActiveX control, demonstrating many ATL and COM fundamentals.

SOAP:Simple Object Access Protocol 简单对象访问协议:描述应用程序如何使用HTTP或其他协议进行互操作--即彼此调用对方的方法.它是行业标准而非Microsoft标准,早已在Internet上盛行.

XML/Web Service:XML是一种描述数据和数据结构的语言.XML Web services are the fundamental building block in the move to distributed computing on the Internet.Open standards and the focus on communication and collaboration among people and applications have created an environment where XML Web services are becoming the platform for application integration. Applications are constructed using multiple XML Web services from various sources that work together regardless of where they reside or how they were implemented.XML Web services are built on XML, SOAP, WSDL and UDDI specifications. These constitute a set of baseline specifications that provide the foundation for application integration and aggregation. From these baseline specifications, companies are building real solutions and getting real value from them.

Metadata:元数据.

managed code/unmanaged code:托管代码/非托管代码:CLR运行的代码/不需要CLR帮助的本机代码。

managed module:托管模块:托管模块的扩展名通常为EXE,DLL或NETMODULE.托管模块包括CIL和元数据.

PE(Portable Executable):Microsoft设计的一种新的文件格式Portable Executable File Format(可移植的执行体),即PE格式.

assembly: 程序集:它是构成一个逻辑单元的一个或多个文件的集合.在这里的"文件"通常是托管模块,但程序集也能包含其他的文件.大部分程序集只包括一个文件,但是程序集能够而且有时确实包括多个文件.组成多文件程序集的所有文件必须位于相同的目录下.当使用C#编译器生成简单的EXE文件时,这个EXE文件不仅仅是托管模块,它同时也是程序集.

port COM+ Components to .NET Enterprise Services:把COM+组件の代码转化为.NET框架服务下托管の代码

C++/CLI :C++/CLI 是一种被设计来取代C++托管扩展的新的语言规范,也被一些人称为C++托管扩展第二版。在完全重新设计以简化旧的托管C++语法之后,它比托管C++具有了更多的代码可读性和明确性。目前它只被Visual Studio 2005中的Visual C++ 2005支持,最明显的改进之一是增加了标识符的明确性。C++/CLI也引入了新的语法元素,例如泛型和其他语言中已经存在的for each语句。由于开发进度落后于时间表的关系,Visual Studio 2005的第一个版本并不会完全实现C++/CLI语言规范,例如托管和非托管混合类型在Visual Studio 2005的第一个版本中不会被支持。

port COM+ Components to .NET Enterprise Services:把COM+组件的代码转化为.NET框架服务下托管的代码

为什么Win32下运行DOS程序资源占用率这么高?

author:nforcex

Q:为什么PC上运行Turbo C 2.0系统占用率如此之高?系统变得缓慢?
A:在采用 x86-32(Intel & AMD)处理器的PC上,CPU是通过虚拟机的技术来模拟8086的架构的--MS-DOS是运行于8086之上的,当DOS下进程运行时,模拟的DOS 通过陷阱使I/O等操作陷入Windows核心态中,配合CPU的部分硬件虚拟,来虚拟8086内核,因为虚拟过程中使用了不计其数的中断等操作(陷阱和虚拟的缘故),使得系统效率奇低无比。

所以当你在AMD Athlon64 X2 4800+上或者是P4 XEE上运行小小的DOS程序(记住,不是控制台程序)仍然奇慢无比或者系统资源占用很高的时候不要摸不着头脑或者抱怨什么了,只不过是虚拟的8086效率太低导致的罢了。

Windows和Unix的线程_摘抄

这里先介绍下线程的概念,线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,Sun的Solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程,不能像Windows NT系统那样(2000是NT5.0,XP是NT5.1,2K3是NT5.2)一个进程有很多个线程。现在,多线程技术已经被许多操作系统所支持,包括 Windows/NT和Linux。但是线程的实现在类Unix下并不相同,基本上分为内核支持方式和用户空间支持方式,如果线程的上下文切换是在内核中实现的,我们就称之为内核方式实现,但如果线程的切换是在用户空间进行的我们就称之为用户方式实现,内核并不知情,当然还有两种方式的混合方式,用户空间中的多个线程在内核空间有相应的内核线程与之对应(通常我们称此内核线程为LWP-轻级进程)。
我们再看看linux下线程的实现,linux的线程编程有两个库pthread和pth,对于pthread的实现是内核方式的实现,每个线程在 kernel中都有task结构与之对应,也就是说用ps命令行是可以看见多个线程,线程的调度也是由内核中的schedule进行的。
再来看看Windows的多线程,Windows NT和Windows95是一个抢先型多任务、多线程操作系统。因为它使用抢先型的多任务,所以它拥有与UNIX同样平滑的处理和进程独立。多线程就更进一步。一个独立的程序默认是使用一个线程,不过它可以将自己分解为几个独立的线程来执行,例如,其中的一个线程可以发送一个文件到打印机,而另一个可以响应用户的输入。这个简单的程序设计修改可以明显减少用户等待的时间,让用户无需担心长时间的计算、重绘屏幕、文件读写等带来的不便。
多线程还可以让你从许多高端的多处理器NT机器中得到好处。例如,你购买了一个高级的RISC机器,可以使用多达10个CPU芯片,但在开始的时候你只购买了一个CPU。你写了一个简单的Mandelbrot set程序,你发现需要15秒的时间来重新绘制Mandelbrot set的画面。

那么,Windows平台的线程和类Unix平台(包括Linux)的进程的区别是什么呢?
  熟悉WIN32编程的人一定知道,WIN32的进程管理方式与UNIX上有着很大区别,在UNIX里,只有进程的概念,但在WIN32里却还有一个“线程”的概念,那么UNIX和WIN32在这里究竟有着什么区别呢?
  UNIX里的fork是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。
  WIN32里的进程/线程是继承自OS/2的。在WIN32里,“进程”是指一个程序,而“线程”是一个“进程”里的一个执行“线索”。从核心上讲,WIN32的多进程与UNIX并无多大的区别,在WIN32里的线程才相当于UNIX的进程,是一个实际正在执行的代码。但是,WIN32里同一个进程里各个线程之间是共享数据段的。这才是与UNIX的进程最大的不同。
对于多任务系统,共享数据区是必要的,但也是一个容易引起混乱的问题,在WIN32下,一个程序员很容易忘记线程之间的数据是共享的这一情况,一个线程修改过一个变量后,另一个线程却又修改了它,结果引起程序出问题。但在UNIX下,由于变量本来并不共享,而由程序员来显式地指定要共享的数据,使程序变得更清晰与安全。
至于WIN32的“进程”概念,其含义则是“应用程序”,也就是相当于UNIX下的exec了。

2007年5月30日星期三

J2EE和.NET特性对比

author:nforcex

J2EE(JAVA语言)特点:
口号:“只写一次,随处运行。”因为JVM的缘故,使之具有跨平台的兼容性-JVM是java源程序的编译运行跟硬件无关。正是因为它的这一特性,使它在大量使用UNIX、Linux的大型企业级应用领域大放异彩(这一领域正对应SUN公司的J2EE);而对于平台多样化的PDA、Smart Phone以及Smart Watch也是不断地攻城拔寨,占有了大量的市场份额。而桌面市场和中小型企业应用在很大程度上都是Win32/64平台的天下,所以它的这一特性在这一领域并不灵,.NET和J2EE的中小企业应用在这里进行着难解难分平分秋色的较量。
因为它的各项完全的面向对象语言特性,以及高安全性的特性,使之为世人称颂,甚至连微软总裁比尔▪盖茨对之都赞誉有加。
值得称谓的是JAVA的发明主体SUN公司在经过一段时间的摸索之后,确定了JAVA语言的重点发展方向:企业级应用和嵌入式设备领域,它们分别对应于 SUN公司发布的J2EE架构和J2ME架构。而.NET架构却被微软不断地吹嘘成各种各样的口号,诸如“革命性的新平台、构建于开放的Internet 协议和标准之上,并提供了工具和服务、以新的方式融合计算和通讯”、“让每台电脑都运行图形界面”、“让每台桌子都有上电脑,让每台电脑里都跑微软的软件”说了许许多多抽象的概念(与其说是概念不如说是废话),它让我们越看.NET越不知道它到底是干什么的,原因很简单,它定位模糊,哪个领域都想沾,从而没有针对性没有一个明显的范畴。所以说,.NET缺乏明确的战略。不过.NET仍算是代表最高技术的超级软件平台。
也许曾经EJB是J2EE的全部核心内容所在,但是现在它却逐步被一些轻量级架构取代(这一现象会在EJB3.0发布以后改观)。

.NET(C++,C#,VB,VJ++语言)特点:
它有许许多多令人称道的特性:
1。譬如高安全性(.NET架构在受管的运行时环境、对数组作运行时越界检查、防止缓冲区溢出、组织特洛伊木马方面颇有建树)
2。CLR(Common Language Runtime 通用语言运行时,CLR是一套标准资源,理论上可以被任何.NET程序所利用,而不管使用哪种编程语言。)
CLR资源:
面向对象的编程模型(继承、多态、异常处理和垃圾收集等)
●安全模式
●类型系统
●所有.NET基类
●许多.NET framework类
●开发、调试和评测(profiling)工具
●执行和代码管理
●1L到本地代码(1L-to-native)转换器和优化器
3。 CLS(Common Language Specification 通用语言规范)所有的.NET语言都支持它。它的设计出发点在于:任何使用CLS兼容的类型的程序,都可以和以任何语言编写的.NET程序进行互操作。理论上,这允许在不同的.NET语言之间,进行非常紧密的互操作,比方说,允许一个C#类从一个VB类继承下来。
.NET提供的平台也不仅仅是 Windows平台了,除了微软的Win32/64平台之外,还有Novell Mono、DotGNU Portable.NET。装置也有所增加:Server、PC、PDA、Smart Phone、Smart Watch。开发工具和语言也有所增加:Visual Studio系列语言、Dephi、Eiffel。由此可见,微软的影响力是巨大的,JAVA花了近十年才办到的事情,.NET只花了三年,这样的爆发力确实惊人
4。.NET平台拥有着极为强大和易用的IDE:Visual Studio 2005。这是JAVA各个框架、架构所缺乏的。注:JBiuder的易用性还是和VS 2005有很大差距。
ps:在今年Jolt 2006大奖的ENTERPRISE PROJECT MANAGEMENT项目,Visual Studio Team System 2005 (Microsoft) 荣获了Productivity Winners。


C++/CLI的特点:
近些年来C++在GP(范型程序设计)方面大放异彩,而2005年微软新推出的C++/CLI着实翻起了一些波澜。C++/CLI像是一座桥梁,将原本属于静态世界的C++与动态的CLI联系起来。但是C++/CLI的复杂性与过去的C++相比有增无减,并且C++代码也变得面目全非。

2007年5月29日星期二

国民素质确实低下,亦缺乏内心自省

author:nforcex

看到韩寒的博文《传统美德》,文章说中国国民素质低下,然后引来一大群低素质的网友进行谩骂。如果他们对韩寒的大胆"性"言论于未成年人的不利影响表示异议或愤慨我还尚表示赞同,但相当多的人所持观点无非是不承认中华民族国民素质的低下。想必能够独立思考的人对于中国人是否素质低下早已了然于心,但是鉴于国民善用思维的“模糊论”,我们不得不讨论下中国人的劣根性与国民素质。
中国人缺乏内心自省,同时也缺乏实证主义。这两大特性就像一对孪生兄弟一样相互缠绕,腐朽而不可救药。中国人一套为人处世的思维方式被自己骄傲地称作模糊思维、系统论。令人感到可笑与幼稚。
由此[ps1]可以看出,了解中华文化特性的钥匙就是:面子。中国人为了保全面子不惜扭曲事实,一旦丢掉面子就会撕破脸皮进行无耻谩骂、甚至恶毒陷害,等等...
自己判断自己未免主观,我们来听听别人是怎么说的。我记得看过一位在中国生活过的美国传教士亚瑟·亨·史密斯的著作--《中国人的性格》。该书的内容1890年曾在上海的英文版报纸《华北每日新闻》发表,轰动一时。这位人品尚可的传教士在中国生活了22年,鲁迅先生对他也尊敬有加。他在该书中尽量客观公正地评价中国人,对中国人的特征有褒有贬,今天我们就事论事,仅谈到了涉及中国人劣根性的一些特性。鲁迅先生一直希望有人翻译这本书,在他逝世前14天发表的《“立此存照”(三)》中,先生还提到:“我至今还在希望有人翻译出斯密斯的《支那人气质》来。看了这些,而自省,分析,明白哪几点说的对,变革,挣扎,自做工夫,却不求别人的原谅和称赞,来证明究竟怎样的是中国人。” 时过境迁,已经是130多年后的2007年了,中国人的缺点竟然“完美”地完整保存下来。作为读者,我唏嘘不已。作为一个有良知的中国人,我感到悲哀。


大的方面我们不说,暂且不谈什么民族的劣根性。就单从小的方面--国民素质,很多中国人死不承认中国的国民素质相当低下。
那么请看到我这篇文章的读者实事求是地进行一下自我判断:
1.该排队的时候你插队了吗?规定一米线的地方你做到了吗? 积极的答案:否
2.你会不会经常性的随地扔纸和吐痰? 积极的答案:否
3.你如果是商人是否会公买公卖,而不去欺诈顾客,甚至有假冒伪劣产品? 积极的答案:否
4. 在公交车上面坐着的时候,看到有老人或孕妇上车,你有让座吗? 积极的答案:是
5.如果你看到某人掉了几百元钱,你会不会追上去将拾起来的钱给他? 积极的答案:是
6.如果有商场在下雨的时候派发雨伞,并说明改日请送还,你会不会再将雨伞送回去? 积极的答案:是
7.如果你所在的小区宽带容量有限,如果你的bt下载不限制连接数量就会导致本楼其他人连打开网页都极度缓慢,你会不会自觉限制bt连接数量? 积极的答案:是
8.上公共厕所你是否不仅不充水甚至会将排泄物拉/撒到池子的外面? 积极的答案:否
9.随地大小便了吗?即便是你家的小孩? 积极的答案:否
10.公共场所你大声喧哗了吗?意识得到什么是大声喧哗吗? 积极的答案:不可以大声喧哗
11.你懂什么是在保证自己最起码生存权、自尊权前提下我们人有义务维护社会秩序吗? 你有身体力行吗? 积极的答案:是

如果上述回答有至少1/3都是消极的答案,很遗憾的告诉你,你属于素质低下的国民。


ps1:不情愿内心自省和不愿意实事求是就是因为死要面子活受罪,它们之间不存在必然的因果关系,但是存在可能的正反关系。如果你具有丰富的社会经验,你就会自己分析出这两大“特性”和“要面子”存在着必然的正反关系。

2007年5月25日星期五

SOA示意图_摘自Wikipedia

SOA definitions
SOA is a design for linking business and computational resources (principally organizations, applications and data) on demand to achieve the desired results for service consumers (which can be end users or other services). OASIS (the Organization for the Advancement of Structured Information Standards) defines SOA as the following:
A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.
There are multiple definitions of SOA, the OASIS group and the Open Group have created formal definition with depth which can be applied to both the technology and business domains.
Open Group SOA Definition (SOA-Definition)[3]
OASIS SOA Reference Model (SOA-RM)[4]
What Is Service-Oriented Architecture? (XML.com)
What is Service-Oriented Architecture? (Javaworld.com)
Webopedia definition
TechEncyclopedia definition
Object Management Group (OMG ) SOA Special Interest Group definition
WhatIs.com definition
SearchWebServices.com Numerous SOA definitions by industry experts
Though many definitions of SOA limit themselves to technology or just web services, this is predominantly pushed by technology vendors; in 2003 they talked just of web services, while in 2006 the talk is of events and process engines.

Why SOA?
The main drivers for SOA adoption are that it links computational resources and promotes their reuse. Enterprise architects believe that SOA can help businesses respond more quickly and cost-effectively to changing market conditions[5] . This style of architecture promotes reuse at the macro (service) level rather than micro level (objects). It can also simplify interconnection to - and usage of - existing IT (legacy) assets.
SOA Practitioners Guide: Why Services-Oriented Architecture? provides a high-level summary on SOA.
In some respects, SOA can be considered an architectural evolution rather than a revolution and captures many of the best practices of previous software architectures. In communications systems, for example, there has been little development of solutions that use truly static bindings to talk to other equipment in the network. By formally embracing a SOA approach, such systems are better positioned to stress the importance of well-defined, highly inter-operable interfaces.[citation needed]
Some have questioned whether SOA is just a revival of modular programming (1970s), event-oriented design (1980s) or interface/component-based design (1990s)[citation needed]. SOA promotes the goal of separating users (consumers) from the service implementations. Services can therefore be run on various distributed platforms and be accessed across networks. This can also maximise reuse of services[citation needed].

SOA principles
The following guiding principles define the ground rules for development, maintenance, and usage of the SOA[6]
Reuse, granularity, modularity, composability, componentization, and interoperability
Compliance to standards (both common and industry-specific)
Services identification and categorization, provisioning and delivery, and monitoring and tracking
The following specific architectural principles for design and service definition focus on specific themes that influence the intrinsic behaviour of a system and the style of its design:
Service Encapsulation
Service Loose coupling - Services maintain a relationship that minimizes dependencies and only requires that they maintain an awareness of each other
Service contract - Services adhere to a communications agreement, as defined collectively by one or more service description documents
Service abstraction - Beyond what is described in the service contract, services hide logic from the outside world
Service reusability - Logic is divided into services with the intention of promoting reuse
Service composability - Collections of services can be coordinated and assembled to form composite services
Service autonomy – Services have control over the logic they encapsulate
Service optimization – All else equal, high-quality services are generally considered preferable to low-quality ones
Service discoverability – Services are designed to be outwardly descriptive so that they can be found and assessed via available discovery mechanisms[7]
In addition, the following factors should also be taken into account when defining a SOA implementation:
SOA Reference Architecture SOA Practitioners Guide Part 2: SOA Reference Architecture covers the SOA Reference Architecture, which provides a worked design of an enterprise-wide SOA implementation with detailed architecture diagrams, component descriptions, detailed requirements, design patterns, opinions about standards, patterns on regulation compliance, standards templates etc.
Life cycle management SOA Practitioners Guide Part 3: Introduction to Services Lifecycle introduces the Services Lifecycle and provides a detailed process for services management though the service lifecycle, from inception through to retirement or repurposing of the services. It also contains an appendix that includes organization and governance best practices, templates, comments on key SOA standards, and recommended links for more information.
Efficient use of system resources
Service maturity and performance
EAI Enterprise Application Integration





SOA Elements

网络OSI模型的经典比喻_摘自wikipedia

OSI模型,即开放式通信系统互联参考模型(Open System Interconnection),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。
层次划分
OSI将计算机网络体系结构(architecture)划分为以下七层:
7 应用层:Application Layer
6 展现层:Presentation Layer (中国大陆:表示层)
5 会谈层:Session Layer (中国大陆:会话层)
4 传输层:Transport Layer
3 网络层:Network Layer (中国大陆:网络层)
2 资料链结层:Data Link Layer (中国大陆:数据链路层)
1 实体层:Physical Layer (中国大陆:物理层)
“OSI/RM”是英文“Open Systems Interconnection Reference Model”的缩写。


7 应用层:老板
6 展现层:相当于公司中简报老板、替老板写信的助理
5 会谈层:相当于公司中收寄信、写信封与拆信封的秘书
4 传输层:相当于公司中跑邮局的送信职员
3 网络层:相当于邮局中的排序工人
2 资料链结层:相当于邮局中的装拆箱工人
1 实体层:相当于邮局中的搬运工人

历史
在制定计算机网络标准方面,起着重大作用的两大国际组织是:国际电报与电话咨询委员会(CCITT),与国际标准化组织(ISO),虽然它们工作领域不同,但随着科学技术的发展,通信与信息处理之间的界限开始变得比较模糊,这也成了CCITT和ISO共同关心的领域。1974年,ISO发布了著名的ISO/IEC 7498标准,它定义了网络互联的7层框架,也就是开放式系统互连参考模型。

影响
OSI是一个定义良好的协议规范集,并有许多可选部分完成类似的任务。它定义了开放系统的层次结构、层次之间的相互关系以及各层所包括的可能的任务。是作为一个框架来协调和组织各层所提供的服务。OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定。即OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。

2007年5月24日星期四

OS使用计划

现在我的电脑配置很强悍,CPU是AMD Athlon64 X2 4800+、2GB的DDR2 800、还有支持NCQ的SATA300硬盘,所以安装了Windows XP Professional 简体中文版、VMware 6.0下的Unbuntu 7.0.4,以及Fedora Core 6.0 三个操作系统。
我不准备安装Windows Vista了,对于华丽的东西不感兴趣(真要用华丽的操作系统,为什么不用Mac OS X Leopard?),如果Windows Longhorn Server 2008出来我一定会第一个出来使用滴o(∩_∩)o...

2007年5月22日星期二

中国会有这样的婚恋搭配么?

author:nforcex

中国会有这样的婚恋搭配么?似乎不可能,即使少而又少地有也往往有着特殊的企图。


《越狱》中扮演L.J的演员和他老婆



凭借《绝望的主妇》一炮而红的伊娃·朗戈里亚将于2007年6月7日和比自己小7岁的男友NBA球星帕克举行婚礼。

身高上男低女高,年龄上男小女大,甚至经济上女的更加富有,这种现象在西方并不奇怪,只要他们之间的差距不是太极端。
或许有人会说那是特例,但是台湾和欧美的综艺节目抑或是名人不止一次地提到过:在发展中国家,人们往往由于连温饱问题都不能很好解决,在婚姻问题上也就将追求真爱让位于追求物质。

2007年5月21日星期一

Unbuntu试用感受

昨晚安装了Linux系列中的Unbuntu 7.0.4,果然像Unbuntu社区宣称的那样,易用性非比寻常。我的电脑是Athlon64 X2 4800+ & AMD 690G芯片组 & Realtek8111 {10/100/1000 Mbps PCI Express x1 Gigabit Ethernet} & WD3200KS 的配置,安装Unbuntu 7.0.4竟然不需要通过重新编译内核的方式来配置驱动程序-----对了,可以直接认出所有硬件。So good,甚至比Windows 2000 Professional还要强。
记得曾经看过国内某计算机杂志引述国外专家的预测,“Linux的易用性在2007年达到Windows 2000 Professional的水平”。现在回过头来看这则预言,真是佩服得五体投地。

2007年5月14日星期一

哪些CPU支持AMD-V(Pacifica)或者Intel VT~~~~X86 virtualization

author:nforcex

AMD(TM)HVM should work with all CPU's in the AMD-V (SVM) series. The desktop processors must be for the "socket AM2" with DDR2 and F2 stepping that are not Sempron brand.
看这则英文资料,所有AM2接口的采用F2步进同时不是闪龙的CPU全部支持代号为Pacifica的AMD-V硬件虚拟化功能。
The list:

* Athlon™ 64 3800+
* Athlon™ 64 3500+
* Athlon™ 64 3200+
* Athlon™ 64 3000+
* Athlon™ 64 FX-62
* Athlon™ 64 FX-70(Quad FX Platform)
* Athlon™ 64 FX-72(Quad FX Platform)
* Athlon™ 64 FX-74(Quad FX Platform)
* Athlon™ 64 X2 Dual-Core 5000+
* Athlon™ 64 X2 Dual-Core 4800+
* Athlon™ 64 X2 Dual-Core 4600+
* Athlon™ 64 X2 Dual-Core 4400+
* Athlon™ 64 X2 Dual-Core 4200+
* Athlon™ 64 X2 Dual-Core 4000+
* Athlon™ 64 X2 Dual-Core 3800+


* Turion(TM) 64 X2 TL-60
* Turion(TM) 64 X2 TL-56
* Turion(TM) 64 X2 TL-52
* Turion(TM) 64 X2 TL-50

the Opteron which is:
* 1000 Series
* 2000 Series
* 8000 Series


而支持VT也就是Intel相应硬件虚拟机功能的CPU列表如下:

* Intel® 2 Core(TM) Duo Extreme processor X6800
* Intel® 2 Core(TM) Duo processor E6700
* Intel® 2 Core(TM) Duo processor E6600
* Intel® 2 Core(TM) Duo processor E6400
* Intel® 2 Core(TM) Duo processor E6300
* Intel® Core(TM) Duo processor T2600
* Intel® Core(TM) Duo processor T2500
* Intel® Core(TM) Duo processor T2400
* Intel® Core(TM) Duo processor L2300
* Intel® Pentium® processor Extreme Edition 965
* Intel® Pentium® processor Extreme Edition 955
* Intel® Pentium® D processor 960
* Intel® Pentium® D processor 950
* Intel® Pentium® D processor 940
* Intel® Pentium® D processor 930
* Intel® Pentium® D processor 920
* Intel® Pentium® 4 processor 672
* Intel® Pentium® 4 processor 662
* Intel® Xeon® processor 7041
* Intel® Xeon® processor 7040
* Intel® Xeon® processor 7030
* Intel® Xeon® processor 7020
* Intel® Xeon® processor 5080
* Intel® Xeon® processor 5063
* Intel® Xeon® processor 5060
* Intel® Xeon® processor 5050
* Intel® Xeon® processor 5030


Intel® Virtualization Technology requires a computer system with an enabled Intel® processor, BIOS, virtual machine monitor (VMM) and for some uses, certain platform software enabled for it. Functionality,performance or other benefits will vary depending on hardware andsoftware configurations. Intel Virtualization Technology-enabled BIOS and VMM applications are currently in development.
看上文,Intel公司资料里说的是些废话,就是说该技术的运作需要相应CPU、BIOS、和虚拟机软件来支持。

有这样的同学,幸甚、幸甚

author:nforcex

昨天某同学到我家一起做游戏设计。做完聊天,彼此天南地北的胡侃,知道了很多有趣和生动的事情。她是一名大学辅导员,在处理班务的时候,她总是站在真正是非曲直的角度,站在学生的角度。看起来很像《极道鲜师Ⅱ》上的 山口久美子,并且一样是年轻的女老师[跟学生几乎一样大],同时也是 a bit beautiful。
领导向她施压要她评优评奖学金照顾走关系的人,她置之不理;学生只要不是真的人品不好或做错了什么可以跟她开玩笑,还能跟着她蹭饭;偶然自己的手机打错电话对方知道她是女的疯狂骚扰,她找一帮学生反过来恶搞那个男的,还骗他到世纪欢乐园放了一下午鸽子;同事生病了会跑去照顾;最看不起那些不靠自己本事只会混关系耍深沉打酒令的人~~~~~~~
也许在中国,这个人脉关系当道的社会,作为成人不得不妥协。但是我仍然敬仰敬佩我的这位真性情的同学。
有这样的同学,并且可以做朋友,真是幸甚、幸甚。

2007年5月8日星期二

3D引擎_摘抄

3D (Game) Engine运行在底层平台软件(WIN32 API,OPEN GL ,Direct Sound ,D3D...)上,属于上层的平台软件。对更上层的用户(游戏内容制作者而非程序员)提供一个接口,此类接口使得游戏内容制作者可以通过数据方式(比方表格)而非编程方式,或仅简单的脚本编程,制作游戏。
在3D方面,要将物体数据有组织地存储起来,通常使用DAG(有向无环图)数据结构。要将物体高效的显示出来,就有决定那些是无须画的(不画当然最快),就有BSP法、Portal、普通的CLIP方法等等大量的Culling算法。而物体之间的物理位置信息则要用碰撞检测去处理。
处理表格或脚本要Game Logic单元。预处理游戏者输入要事件响应单元...
可见3D Engine在D3D等上提供了大量的东西。目前的3D Engine仍留有很大的改进余地。全局光照仍无法实时实现。目前的碰撞检测的精度仍太粗糙。阴影的绘制尽管由于硬件的发展而产生了长足的进步,但仍无法做到速度与质量双满意...
总之,画三角形不难;把软件面对芯片架构优化以画的快一些也不是大题目。难得是能管理复杂场景,并将其高效、漂亮地画出来。这就是3D Engine要干的。

2007年5月7日星期一

因HD涉及到的系统性能与防震

author:nforcex
1. 无论Desktop PC还是Server,以现有的技术来看,性能瓶颈之所在位于I/O和硬盘。I/O是一个模糊而宽泛的概念,它的性能随着各种接口技术、传输技术的改进在不断提高中。而对于硬盘来说,由于其“机械手臂”这一先天不良的缓慢性导致一直鲜有提高,近7年来硬盘的寻道速度一直保持在8.5ms到10ms之间,没有显著进步。
最近一来,磁盘和主存的速度相差5个数量级,可想而知尽可能少的调用外存是提高速度的重要手段--内存增容、OS预加载常用进程的模块、pagefile.sys移至高速NAND 等等等等。

2. 另外,磁盘磁头距离盘片的距离是那样的近以至于它与灰尘高度的比例还要小于1米与从波士顿到加州的距离的比例。所以、、、、、、正在工作业已出鞘的磁头经不起震动,但是停机断电的磁头就好多了(磁头已经收了回去)。所以硬盘被誉为PC系统中最怕震的配件,剩下的也就Monitor了吧。

L1&L2 Cache of the K8(谈为什么AMD CPU的二级缓存不重要?)

author:nforcex



here is the cache hierarchy of the AMD Athlon64

The K8 has 4 specialized caches: an instruction cache, an instruction TLB, a data TLB, and a data cache. Each of these caches is specialized:

The instruction cache keeps copies of 64 byte lines of memory, and fetches 16 bytes each cycle. Each byte in this cache is stored in ten bits rather than 8, with the extra bits marking the boundaries of instructions (this is an example of predecoding). The cache has only parity protection rather than ECC, because parity is smaller and any damaged data can be replaced by fresh data fetched from memory (which always has an up-to-date copy of instructions).
The instruction TLB keeps copies of page table entries (PTEs). Each cycle's instruction fetch has its virtual address translated through this TLB into a physical address. Each entry is either 4 or 8 bytes in memory. Each of the TLBs is split into two sections, one to keep PTEs that map 4KB, and one to keep PTEs that map 4MB or 2MB. The split allows the fully associative match circuitry in each section to be simpler. The operating system maps different sections of the virtual address space with different size PTEs.
The data TLB has two copies which keep identical entries. The two copies allow two data accesses per cycle to translate virtual addresses to physical addresses. Like the instruction TLB, this TLB is split into two kinds of entries.
The data cache keeps copies of 64 byte lines of memory. It is split into 8 banks (each storing 8KB of data), and can fetch two 8-byte data each cycle so long as those data are in different banks. There are two copies of the tags, because each 64 byte line is spread among all 8 banks. Each tag copy handles one of the two accesses per cycle.
The K8 also has multiple-level caches. There are second-level instruction and data TLBs, which store only PTEs mapping 4KB. Both instruction and data caches, and the various TLBs, can fill from the large unified L2 cache. This cache is exclusive to both the L1 instruction and data caches, which means that any 8-byte line can only be in one of the L1 instruction cache, the L1 data cache, or the L2 cache. It is, however, possible for a line in the data cache to have a PTE which is also in one of the TLBs—the operating system is responsible for keeping the TLBs coherent by flushing portions of them when the page tables in memory are updated.

The K8 also caches information that is never stored in memory—prediction information. These caches are not shown in the above diagram. As is usual for this class of CPU, the K8 has fairly complex branch prediction, with tables that help predict whether branches are taken and other tables which predict the targets of branches and jumps. Some of this information is associated with instructions, in both the level 1 instruction cache and the unified secondary cache.

The K8 uses an interesting trick to store prediction information with instructions in the secondary cache. Lines in the secondary cache are protected from accidental data corruption (e.g. by an alpha particle strike) by either ECC or parity, depending on whether those lines were evicted from the data or instruction primary caches. Since the parity code takes fewer bits than the ECC code, lines from the instruction cache have a few spare bits. These bits are used to cache branch prediction information associated with those instructions. The net result is that the branch predictor has a larger effective history table, and so has better accuracy.

对于K8来说,AMD历来重视L1,64K Ins+64K Dat,2路组相联的设计让AMD拥有高命中率和低延迟的L1。然而在Instrution Cache中AMD的设计思路又与其它CPU有所不同。首先其Ins中并不存储传统的X86指令,而是存储着分支预测出来的X86指令的信息。再根据这些信息将指令解码成1~2条“宏操作”来执行。由于AMD CPU采用了3条流水线的超标量结构,因此其可以保证同时执行6条这样的宏操作。显然,相比之下AMD CPU的指令执行效率要优于Intel,因此就可以解释为什么AMD 2.4G可以打败Intel 3.2G了。 然而从这样的L1设计来看,似乎和Intel有些异曲同工之妙。

对于L2,AMD历来只有很少的256K或512K。这是由于AMD的Cache设计思想所致。在一般的Cache中,下级Cache总是要保留一个上级Cache的映象,即L1中的数据在L2中也能够找到。L2在L3中亦能够找到相同数据。然而AMD并没有这样做,它的L2中保存的数据都是L1中替换下来的,以保证CPU在下次使用中能够在L2中找到。因此,AMD的Cache结构呈现出L1+L2(L1与L2没有交集)的“怪异”现像,它的L2对于整体性能并不起决定性作用。Sempron 2600+(128K L2)同2800+(256K L2)性能相同,就是这个原因。

目前而言,英特尔拥有相对庞大得多的产能,因此在产品上喜欢加入较大容量的L2 cache,而AMD则希望以较小的L2 cache配合内建的内存控制器来获取适宜的性能/价格平衡,这也是当初加入AMD的DEC处理器研发人员所喜欢的架构策略。
L2 cache再大也是难以避免命中失败,当初DEC的Alpha处理器研发人员就一直很渴望把这样的损失透过集成内存控制器降低到最低。从性能角度出发,无疑是值得鼓励的。




AMD L2不重要之Q&A:
Q:为什么K8 CPU的二级缓存不大却性能强劲?甚至只有Prescott架构(1MB或者2MB 2LCahce)的一半。
A:前言:在酷睿2推出之前,长达一年半的时间AMD占据了CPU性能的绝对优势。
抛开流水线长度比较短、分支预测方式以及集成内存控制器不说。K8架构采用了与Intel Pentium不同的Cache设计思想。在一般Cache中,下级Cache总是要保留一个上一级Cache的缓存,即L1中的数据在L2中能够找到,同样L2中的数据在L1中也可以找到(服务器CPU以及第四季度即将发布的K8L中将集成L3,很早以前,Intel在其工作站版PC解决方案中也包含L3,但那是集成于主板之上的。)然而AMD却没有这样做,它的二级缓存中保留的数据都是L1中替换下来的,这样CPU在下次使用中通过优先访问L2大大提高了效率--因为用户以及OS的操作往往是几个固定进程之间的彼此切换以及对内存中程序数据段的调用集中于小块区域。当然前述部分功能Intel也实现了。但是AMD的Cache结构是以怪异的“L1+L2”(L1/2没有交集)呈现在我们面前的,它的L2对于整体性能并不起决定性作用。所以,桌面版闪龙2800+的L2比闪龙2600+的小(前者256K后者128K)但是2800+的性能却更加强劲(不仅仅是因为频率提高了200MHz,还因为二级缓存对于AMD来说并不重要);所以,移动版的闪龙比Celeron-M更加强劲,Celeron-M因为二级缓存由Pentium-M的1M、2M降到512KB性能大大降低。

2007年5月3日星期四

或许美学家和画家对女性的美丽有着近乎统一的看法:完美的五官比例、精致的五官形状、匀称的身材,etc.
不过,每个人都有自己情有独钟的一个侧面。我就喜欢诸如:Anne Hathaway、袁泉这一类型的长相。尽管他们中有的粗犷、有的欧式、有的东方,不尽相同。但是都是那种苗条的、狭窄尖脸的、高窄鼻子的女性。这些明星只是该种模型的完美演绎,其实我只要是看到这一类型的长相就会觉得比较惬意。
当你看到这篇文章请扪心自问,你又是喜欢哪种风格的女性呢?

2007年5月1日星期二

新书试读

《Rootkits——Windows内核的安全防护》
最近最让IT管理员头痛的是什么呢?--毫无疑问是rootkit。这种可恶的程序是一批工具集,黑客用它来掩饰对计算机网络的入侵并获得管理员访问权限。一旦黑客获得管理员访问权限,就会利用已知的漏洞或者破解密码来安装rootkit。然后rootkit会收集网络上的用户ID和密码,这样黑客就具有高级访问权限了。


《超越C++标准库:Boost库导论》
谁说ANSI/ISO C++会陷入无穷无尽的底层机关?谁说只有JAVA才有高效的垃圾清理机制?看看C++的开源项目Boost吧,它为我们创造好了优秀的轮子。

2007年4月29日星期日

Windows Vista官方博客

http://windowsvistablog.com/
这里有Vista最新奇最及时的消息。

2007年4月25日星期三

内存错误-原理角度·A Programmer's Perspective_转载

-----------------作者: 林锐 博士 (稍有整合改动)
对于程序员来说内存是一片危机四伏的沼泽(当然这在JAVA和CLR程序中已经大为改观)。
比尔·盖茨也失言了:640K ought to be enough for everybody。当前内存连Desktop也普遍标配1GB的容量。不仅容量,内存管理的复杂度也在提升,只不过随着软件的进化,不断地分层,有些问题对于不同层面的开发人员透明了。
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。
局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

常见的内存错误及其对策
发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。
常见的内存错误及其对策如下:
1.内存分配未成功,却使用了它。
编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针p是函数的参数,那么在函数的入口处用assert(p!=NULL)进行检查。如果是用malloc或new来申请内存,应该用if(p==NULL) 或if(p!=NULL)进行防错处理。

2.内存分配虽然成功,但是尚未初始化就引用它。
犯这种错误主要有两个起因:一是没有初始化的观念;二是误以为内存的缺省初值全为零,导致引用初值错误(例如数组)。
内存的缺省初值究竟是什么并没有统一的标准,尽管有些时候为零值,我们宁可信其无不可信其有。所以无论用何种方式创建数组,都别忘了赋初值,即便是赋零值也不可省略,不要嫌麻烦。

3.内存分配成功并且已经初始化,但操作越过了内存的边界。
例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中,循环次数很容易搞错,导致数组操作越界。

4.忘记了释放内存,造成内存泄露。
含有这种错误的函数每被调用一次就丢失一块内存。刚开始时系统的内存充足,你看不到错误。终有一次程序突然死掉,系统出现提示:内存耗尽。
动态内存的申请与释放必须配对,程序中malloc与free的使用次数一定要相同,否则肯定有错误(new/delete同理)。

5.释放了内存却继续使用它。
有三种情况:
(1)程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面。
(2)函数的return语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。
(3)使用free或delete释放了内存后,没有将指针设置为NULL。导致产生“野指针”。

Summary,我们要注意:
1.用malloc或new申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存;
2.不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用;
3.避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作;
4.动态内存的申请与释放必须配对,防止内存泄漏;
5.用free或delete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。

下面举几个经典的错误例子,大家不要犯同样的错误:
1. 返回栈内存指针
char *GetString(void)
{
char *p = "hello world";
return p;
}
char* pGet = GetString();

这段程序编译时没有错误,运行也没有错误,但是你却无法使得返回的pGet指针指向的数据是你想要的“hello world”,因为指针p的生命期是函数GetString内,运行完函数GetString后,p分配的栈空间马上被系统回收了。虽然pGet指向了p当初分配的内存地址,但是那块地址已经没有内容了。

2.这是一个出现频率非常高的错误
char* pChar = new char;
……
int a ;
pChar = &a;
……
delete pChar;
当然这是一个例子,具体的程序各有不同。
这段程序有两个问题。一是pChar = &a;将导致pChar原先分配的空间无法再被获取,就象我们的丢失了朋友的电话号码一样,无法再联系这个朋友了。这就造成了内存泄漏。如果内存泄漏多了,可能导致系统的崩溃,因为可用的资源将越来越少,直到枯竭为止。第二个问题是delete pChar将导致异常发生,因为这时的pChar已经不是指向动态分配的内存了,而是指向了a分配的栈空间,而栈空间是不能使用delete来回收的,因此将导致内存异常。

内存错误-应用角度·A Programmer's Perspective_整理资料

使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。下面我们就来简单分析这种错误的常见原因。

  一、应用程序没有检查内存分配失败
  程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。
  内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。
  若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。
  内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

  二、应用程序由于自身BUG引用了不正常的内存指针
  在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!
  像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。
Q:运行Win32平台下程序的时候出现了如下问题,这是怎么回事?

A:那是因为,程序由于自身的bug引用了不正常的内存指针(至少从VC MFC编译的可执行体来说是这样子的,其他可以类比)。在使用动态内存分配的应用程序中,有时候程序会因为bug或者和OS互动的偶然性错误出现读写本来可以使用但是“因为特殊原因失效”的内存,这个时候,触发Windows内核的保护机制,“违法”操作的程序被终止运行,回收系统资源。如果是0X00000000一般来说是指到了无效零指针。如果是0X77f8206b,那可能是因为程序的bug导致该片内存区域失效。可以通过一些反向工程工具查看分析错误的位置。

VC MFC之“stdafx.h”释疑

author:nforcex
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。因此,所有的CPP实现文件第一条语句都是:#include "stdafx.h"。
换句话说:Stdafx.cpp是一个只有一条语句(#include "stdafx.h")的空文件;Stdafx.h是Visual C++为每个项目配置的用来预编译的文件,在Stdafx.h文件中可以加入应用程序所需的头文件;那有人会问afx是什么意思? afx是Application Framework 的缩写,afx_ 泛指MFC中的全局变量和全局函数,af 就是 application framework,x添进去为了凑出三个字母吧。

关于Tor

author:nforcex
有个疑问,我的教育网本来就不能连到www.cnn.com等外国网站,许多国外站点都不能连到。用Tor会有用吗?
RE:有用啊,教育网本来是能够访问外国网站的,但因为是基于流量的高额收费方式,高校往往把访问外国的封掉了。Tor,它能够基于底层Socks协议进行加密,它的代理服务器是基于特殊“路由算法”的Sock代理,而非简单的应用层代理或HTTP 层代理。每台使用Tor的PC都是一个“路由节点”,它们之间通过socks代理随机跳转,没有最优路径的算法,所以它可以防止某节点的消失,也可以防止追踪。然后某Client通过捆绑的tor访问网页时,就有Privoxy来将Socks代理转化为http代理,于是我们的浏览器就可以通过tor的“路由世界”来访问封锁的网站了。实际上,通过tor路由路径传输的数据包是采用了TLS 加密[一个类似于安全套接字层 (SSL) 的通用安全性协议]方式,并且它是2~5层的代理(不像普通的http代理为应用层代理,Socks是个电路级的底层网关,是DavidKoblas在 1990年开发的,此后就一直作为Internet RFC标准的开放标准)。
当然,基于Tor仍然可以被潜在[理论上可以被过滤,但是尚未实现部署]的过滤技术过滤掉,这就像是一场竞争比赛,看谁能跑到前面~~~~~~~~~

2007年4月4日星期三

郁闷

真扯淡,google博客又被封锁了!

2007年4月3日星期二

编码意义-扫盲班1期

1. 常见编码内容--英文 DOS编码:
00000000 ff ff ff ff ff ff 00 60 6e 47 92 b5 08 06 00 01 'nG庹..
00000010 08 00 06 04 00 01 00 60 6e 47 92 b5 a9 fe 00 7d ........'nG庹... .}
00000020 00 00 00 00 00 ..........................

2. 字节值:
0x00 空字节
0x01
0xDD

3. 内存地址:
0x0000 ~ 0xFFFF
0x06EA1000
0x6EA3050

【for instance】
Q&A:
a:0x7c882f9c错误是什么意思?
b:内存中的这一地址出了问题,至于是什么导致的可能性则有很多咯。诸如:对于采用动态分配的应用程序,由于自身bug引用了不正常的内存指针,出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了;劣质的内存条;微软WINDOWS系统的漏洞,windows把内存地址0X00000000到0X0000ffff指定为分配null指针的地址范围,如果程序试图访问这一地址,则认为是错误,等等等等。

残酷而现实的历史观

或许人类的战争是有道理的。或许外向性的政权是必然的。
15世纪以来长达400年内向性的、异常稳定的中国带来了异族的欺凌。西方世界外向性的思想、迅速地交流、物质和资金的匮乏、社会的不稳定才间接带来了思想、经济形态、军事技术的飞跃进步。
只要人类不灭亡,或许由于人类不断相互攻伐带来不断的军事技术革命会在多少万年以后成为我们抵御外星异种入侵的有效手段。
毕竟,我们在任意大的“小”环境中不管有多宁静和谐却都不可避免要面对所谓“小”环境之外的残酷挑战。因为资源有限,而基因却渴求尽可能地大量繁殖保持物种延续。所以物竞天择、适者生存是我们宇宙一个亘古不变的道理。所以在必然的潜在挑战不断的宇宙中,保持宁静和谐最终将降低竞争能力最终败于某个国家、某个物种、某个异形。
当然,全球史在统一,人类内部应该提高聚合力(团结),不要因为不可控制的竞争将我们引向灭亡。

2007年4月1日星期日

庆祝google博客解封

这些天一直通过添加域名-ip对应列表的方式手工实现访问blogspot,所以没有察觉是什么时候解封的,总之昨天还不稳定,有时候仍然无法登录。今天终于好了,庆祝下---把命运交给别人就是这样,我宁可google博客提供vip服务,单独划出来一个区域,每年收取少量的费用来保证其稳定性和大陆可访问性。
希望这次解封不是偶然现象。所有博客中我最喜欢google博客了,她界面简约清新,很少有bug。本来还喜欢bokee网,但是它却离这个方向渐行渐远,哎。

2007年3月27日星期二

字符集的发展--摘抄

1. 编码问题的由来,相关概念的理解1.1 字符与编码的发展从计算机对多国语言的支持角度看,大致可以分为三个阶段:
阶段一:
系统内码 ASCII
说明 计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。
系统 英文 DOS

阶段二:
系统内码 ANSI编码(本地化)。
说明 为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 \'中\' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
系统 中文 DOS,中文 Windows 95/98,日文 Windows 95/98

阶段三:
系统内码 UNICODE(国际化)
说明 为了使国际间信息交流更加方便,国际组织制定了 UNICODE 字符集,为各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。
系统 Windows NT/2000/XP,Linux,Java

2. 字符,字节,字符串理解编码的关键,是要把字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:

字符
人们使用的记号,抽象意义上的一个符号。
\'1\', \'中\', \'a\', \'$\', \'¥\', ……


字节
计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。
0x01, 0x45, 0xFA, ……


ANSI字符串
在内存中,如果“字符”是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。
中文123(占7字节)


UNICODE字符串
在内存中,如果“字符”是以在 UNICODE 中的序号存在的,那么我们称这种字符串为 UNICODE 字符串或者宽字节字符串。
L中文123(占10字节)

2007年3月20日星期二

blogspot再度被封

昨日下午,blogspot再度被封,通过代理访问一切正常,经证实系大陆不能访问。哎,枉我在这里仔细耕耘了许久。哎,google是不是应该妥协下呢,你这样才能获得大量的社群网民来增加人气,赢回在大陆输掉的流量。

2007年3月18日星期日

internet protocol

OSI Reference Model




A summary of the contents of the internet header follows:

英文_逻辑用语

from the perspective of the **:从**的角度
in a manner:在某种意义上

2007年3月16日星期五

人的素质与其身份、学历没有关系

author:nforcex
标题是一个很抽象的命题,我们这里集中讨论具体化的婚恋问题。
看下面的事例:
一位在跨国公司做管理的金领男士-王林与具有国家注册会计师证书的美女硕士在成都分公司的活动中邂逅,两情相悦,谈起了旁人羡慕的恋爱。旁人煞是艳羡。通过短短的相处,在他看来,这位女友气质独特、率真,没有太多物质要求,温柔体贴,简直可称是完美。王林心中暗暗认定:这就是他要找的可以厮守终生的伴侣。他们很快开始同居。随后在女方的要求下,他将自己出钱买的房子写上女人的名字,并将各项款项集中到女方母亲的帐号中。对于这些,他没多想,听之任之。后来,王林的母亲患上了癌症,病危。在家庭危急时刻女友的本性开始逐渐地暴露:作为家庭理财者的她,非但没有怎么探望婆婆,甚至在需要医疗费的时候连一分钱也不给。接着就是王林被女友和所谓未来的岳父扫地出门,赶出自己出钱买的公寓。

从该故事的简短截说我们可以发现,王林虽然智商很高,但是情商太低过于幼稚,他不知有三:其一,女方所作所为体现出的素质或者说人格,是与其身份、学历没有关系的,而和她的生活环境、人生经历以及家庭教育密切相关;其二,评判一个人关键不能看她怎么说,而要看她怎么做,并且主要是在极端特殊情况下她会如何抉择(这往往需要长期相处来彼此考验);最后,不能在你条件优秀两情相悦之时看她对你怎样,那是幼稚和错误的。要看她对绝大部分人如何,对陌生人如何,这些决定了她的人格和本性。当我们通过这3点来评判一个人后,我们就会认识对方的本性。

这不仅仅适用于评判女性对象,也适用女性鉴别自己的未来的老公。希望天下善良的人们能够彼此相亲相爱,将自私的、人格具有重大缺陷的人拒之门外。

2007年3月14日星期三

传统文化产物-城府

author:nforcex
在以人脉关系作为架构的社会,必然有人希望通过左右逢源,精确计算利益在官职竞争中脱颖而出。于是,“城府”这个文化概念呼之欲出。
城府,比喻待人处事的心机。【源】性深阻若城府,而能宽绰以容纳。——《晋书·愍帝纪论》
它是对事物(人)内涵的描述,不包含程度,所以才有“城府很深”这个复合词。但是经典的城府,往往是人们难以揣测的,因为作为这种内涵的具有者--人,往往极少透露内心的想法,对于事物很少表明自己的态度。本来,城府很深的人未必不是好人,但是由于这一人性的内涵在仕途之路的大肆使用,由于当代厚黑哲学被盲目推崇,加之它是坦诚的反义词,在社会上基本被划到了轻度贬义词的地步。
虽然我们不能妄下结论说“城府”这一为人处世风格就是低劣的,因为也不乏具有城府者为官为人品行端正不为害乡里,但是我们可以肯定的是城府很深者是表里不一的。不论他阳奉阴违也好--小人,伪装成另一个面目也好--伪君子,心中有什么想法不流露出来也好--成熟,都是隐藏内心世界的种种想法,外表和内心是不一致的。
既然“城府很深”这个复合词的意思就是有心机不坦露做得很完美,那我们常人也就难以通过直接的方式观察出来。怎样才能够发现城府很深者的本性呢?首先这取决于他的志向了!如果他的志向一飞冲天,恐怕你要用一生才可以看出他的本性所属,如果他的志向近在咫尺,那你不久就会察觉;其次要通过排除法去除周围坦诚的、大大咧咧的,总之是不怎么伪装或者不怎么善于伪装的很大部分人来;最后,也就是最重要的,我们要通过关键的事情来发现他们本性所在。那些关键的事情,就是他们处心积虑算计的地方,就是暴露他们本性的地方。城府最深者,莫过于东晋谢安,东晋大败前秦苻坚80多万大军,谢安得知后不露声色,堪为统兵者之典范。他这样做是为了长远的明哲保身。因为自古都有鸟尽弓藏之说,而谢氏家族正握有东晋重权。


只要是社会存在的抽象形态,我们都有必要知之一二。为的是通过对复杂概念-“城府”的深度认识,区分出其中一部分伪善、伪装的人。
我们自己要坦诚待人,我们只是要知道社会有多复杂,平平安安地度日,不要趟入浑水。

2007年3月11日星期日

如何行善-向美国人学习

行善,有各种各样的方式,我尤其赞赏很大一部分美国人的做法:先富起来,再回馈社会。
像比尔·盖茨,就宣布死后捐出几乎全部上千亿美元的个人财产,这在中国有富人愿意做吗?
对于“先富起来,再回馈社会”,它的准确意思是:我们每个人应该在遵纪守法的前提下,先解决自己的生存问题,然后进一步通过聪明才智创造财富(注意,是创造财富,而非争夺财富),最后我们再发扬人性中的爱心行善于社会。
对于我的解读,你肯定会说,不要抽象化,要具体来说。你看盖茨,他驰骋于商界的时候不乏卑鄙奸诈啊!我的回答是,他确实有不对的地方。如果绝对地来看人和事物,我们会陷入无法向善的境地的!试问,这个世界上能有几个人做到绝对的好与绝对的善,人不都有人性的弱点吗?我们人获得灵魂的救赎应该是在自己没有触犯法律之前通过一点一点地消除人格缺陷来获得宁静的。而不是说,好吧,既然本人不是绝对的好,并且每个人都不是绝对的好,谁也没有资格说谁,大家一起破罐破摔吧。在中国,富人可能很多都这样想,老子穷的时候怎么没有人管我?就是不给别人一分钱!说到这里我又想到了信仰,似乎我们缺乏信仰,这是一件悲哀的事情。
中国有句古语叫做:为富不仁。说的是人富有了就会变得麻木不仁。其起因一方面是由于在中国古代社会,权势、财富是通过编织层罗密织的关系网以及自私地利益争夺妥协来完成的。或者于当前来说这个人获得的是不义之财。如果一个人到了这一步,他往往是麻木不仁的。至于那些以天下为己任的才子们也有,之所以频频出现在史书中电视中恐怕也是因为少才去歌颂的吧;另一方面是因为在中国的传统文化中,很少将富有与行善联系起来,缺少普遍意义的信仰---不论宗教也好还是带有救世思想的哲学也好,富人发自内心的慈善是很少提及的;最后很重要的一点是,中国人太重视“家”这个概念了,他们往往将世界以“家”为界线割裂开,并且极端重视传宗接代的问题(不过西方古代亦然)。3点汇集到一起,构成了中国富人独具风格的版图。

话说回来,我希望大家都效仿之,努力创造财富,通过聪明才智富起来,然后再多多行善。

2007年3月6日星期二

关于“男女平等”口号下的思考--中国男女关系之困局

注:本人的思想是追求独立、理性的思考,同时也将自己的利益和观点抛弃。下面的观点并非我生活中的为人处世原则。我只是时刻提醒自己站在比较独立、相对客观的视角才可以得到相对可取的结论。
同时我也不讳言自己观点的局限性,以及自己身份不可避免的片面性。我的观点是,不能因为事物的复杂性而不去研究它的规律和抽象意义。只要我的观点合情合理我 就会姑且认同它。如果你有更好的观点,只要你能通过令人信服的论据、论证方法得出它,并证明它比我的观点更可取。我就会抛弃原有的观点,承认原有的不足。 唯有这样,我们才能一步步接近人文世界的真理。

by: 南方人物周刊(广州)
有一次和一洋女友聊天,她对中国女性的社会地位羡慕不已:男女同工同酬;掌握家中经济大权;享受着男人的宠爱和关怀;在孩子的教育问题上有绝对的发言权。这一切,在事事讲究男女平等、崇尚自己为自己负责的西方,是不可想象的。但在另一方面,在今天的中国,婚姻已经成了许多女性改变命运的最主要途径,工作好不如父母好,父母好不如嫁得好,“妻以夫贵”的内涵在当今社会得到了最充分的体现。婚姻很多时候成为通过批发的方式出售自己的一个漂亮包装而已,许多的婚姻在一定程度上成了“长期性的卖淫”。(nforcex:个人觉得“长期性的卖淫”说得过于尖酸刻薄了,即使作为男性,这种提法也有些接受不了。)

----------------------------------------------------------------------------------
by:nforcex
看另一则消息:多年前有位大陆女性移民美国,在那里生活了几十年,后来出了一本回忆录。在书中她叙述到,美国拥有着更加平等的男女关系(几乎可以说是真正 的),一个女人,在美国除了享受着女性地位提高的各种权利外,还承受着男女平等带来的义务。在这里,你不再可以是一个小女人,不再可以以一个女性柔弱的姿 态出现,没有人会同情你,也不再享受各种照顾,除了体力上达不到的,男人做的所有事情女人也得做。男女真正的是平等了,不论性别在社会上几乎没有区别对待。然后她感慨在西方活得好累,原来做大女人不是那么容易的事情,所有的事情都必须要自己打点。

中西的男女平等存在着显著的差异:(以下叙述都不是绝对的,而是明显的相对差异)
在西方,在社会责任角度男人和女人不再有大的区别,女性要面对一切男性所面对的问题,当你以柔弱的身份出现时没有人尤其是男人会同情你。加之西方性解放,女性和男性对异性的渴求程度相当,不再有女性矜持等待、男性苦苦追寻一边倒的情况出现。

在大陆,一方面女性获得了男女平等的声势支持和实际利益,她们不得受社会歧视,她们在家庭中的地位提高,控制家庭财政大权;另一方面,女性仍然在社会上以柔弱的身份出现,她们享受着各种各样的照顾,不必面对各种各样的社会压力,不论是在实际社会习惯上还是男人的潜意识里。
对比中西差异,我们可以看出,自五四运动以来,中国女性获得近似于西方女性的社会地位,与此同时,她们却仍然能以柔弱的身份出现于社会中,享受各种照顾。虽然由于女性享受的种种好处导致太过娇柔,从而很多用人单位不喜欢招聘女性,但是中国大陆女性仍然获利颇多。
话说回来,五四以前,中国大家闺秀琴棋书画样样学习,举止言谈方面也颇有修养,她们也懂得谦卑忍让(虽然我不认同这种性格,但是它总比泼妇要好吧)。自男女平等以来,中国女性的修养、素质根本未提高,她们只关心不费脑子的事情,很少有人去追求哲学观(ps1)、做人修养、文学艺术欣赏水平、灵魂信仰、关注公民权力的提高,这方面她们与法国、英国、以色列、美国女性存在着相当大的差距。
曾听到有大老爷们不平说,百年来她们素质(ps2)并未提高多少,却提出各种各样的权力要求。这是什么,这是只要求权力,不承担义务。要是想靠男人养家,那就学日本,男尊女卑,女人老老实实呆家里相夫教子。如果想获得男人的尊重,做到真正男女平等,那就学西方,面对所有社会压力,真正的打点生活的一切,不要要求男人这的那的(ps3),像什么要求男人供房、供车、年薪多高。

本文只是从男性的视角提出一方见解,实际上中国国民素质不论男性女性都有待提高。在男女婚姻关系上双方均有不足,分析问题时我们不能任性地将己方之错误归咎到异性身上。很多中国男性存在的家庭暴力、酗酒、极端自私问题都是让人十分鄙视的。

ps1:这里的哲学观是指对世界价值观的用心思考和体验。看看慈禧和叶卡捷琳娜的差距,她们就根本不是同一个档次的。在思想素质方面,慈禧是一个聪明和肤浅的女人,叶卡捷琳娜是一位聪慧开明的女人。就连古希腊民主领袖伯里克利的情妇也是一个思想素养特别高的女性。
ps2:学历与素质无关。近年来高学历女性大批涌现,但并不代表她们素质就一定高。
ps3:在西方即使一个女的比较的漂亮,很多情况下由于她在物质条件上不匮乏,会去找一个感情上的意中人。不过我承认这个问题很复杂,我能肯定的是东方女性比西方女性更重利,不论是因为经济还是思想素质因素。总之当一个社会的女性在整体上都要求男人供房供车薪酬多高多高的时候,就代表了社会的明显倾向了。

2007年3月5日星期一

人是什么?

人是基因的皮囊,
通过爱情、结合来使生命完成某种延续;
人是灵魂和肉体的混合,
心的形态与肉体遥相呼应、相互影响;
人是社会环境下无力的一份子,
在既定基因、环境和际遇的影响下做着貌似无序实际有序的运动;
人又是不安分的上帝的孩子,
即无法改变命运,又试图改变命运。



(前面的“命运”意指在基因、环境和际遇之下“有序”的演进过程;后面的“命运”是指我们通过对我灵魂的控制继而影响我们的行为来改造自己,改造世界。)

2007年1月12日星期五

UML Views

There is no sharp line between the various concepts and constructs in UML, but, for convenience, we divide them into several views. A view is simply a subset of UML modeling constructs that represents one aspect of a system. The division into different views is somewhat arbitrary, but we hope it is intuitive. One or two kinds of diagrams provide a visual notation for the concepts in each view. The views used in this book are not part of the UML specification, but we use them as an aid to organizing and presenting the UML concepts.

Table 1. UML Views and Diagrams



UML
是用来描述各种各样软件模型的,它通过各种图形符号组成模型结构来描述系统的结构或静态特征以及行为或动态特征。它从不同的视角为系统建模,形成不同的视图(Views),每个视图代表完整系统描述中的一个抽象,显示这个系统中的一个特定的方面;每个视图由一组图(Diagram)构成,图中包含了强调系统中某一个方面的信息。

2007年1月3日星期三

对话-为什么智商高低和成功与否无关紧要

A是一位朋友,B是我。这只是虚拟的对话。

A:我的智商测试颇高,为什么所学专业不是天才,哪怕是状元也不是呢?我怀疑该项测试的有效性。
B:如果该项测试你的同学朋友有很多都进行了测试,并且得分大致与该人的思维敏捷逻辑明晰程度一致的话,可以说该项智商测试已经相当的准确了。如果你不同时期测试过不同的智商题多次,如果得分几乎相同没有大的起伏的话,更能说明误差较小。
A:可是我为什么不是公认的天才?不过我也有过人之处,就是平时疯着玩,考试时候一突击成绩很高,中学大学一路保送上去。 可是我在所学专业领域仍然不是很牛啊,连强都算不上。
B:决定成功的因素有很多,智商仅仅是必要的而非最重要的,当你的智商达到110基本就可以满足成功的要求了。决定成功更重要的因素是这个人的情商有多高。
A:怎么讲?
B:先说情商是什么。情商是人在情绪、情感、意志、耐受挫折等方面的品质。在按照西方惯例选取重要的,角度混乱地不完全划分,有:精神集中控制力(注意力是否容易分散)、情绪控制力、人际交往中各种行为思维的控制力、欲望情绪的控制力。在大学中,往往有这样的人,很多都是女孩子,她们的短期记忆力和精神控制力超强,平时也就是记记笔记,不怎么用功,到考试最后一个月中拿起遗忘很久的课本疯狂复习,最后考试成绩照样很高。插句题外话,在中国如果一个人的短期记忆力和精神控制力出众的话,那么他(她)基本上是优等生。
A:接着说。
B:我们看到有西方心理学家这么说:“犯罪分子,很大程度上是他们的基因中存在着不稳定因素-->神经系统存在着病理性问题,他们能够将人类的欲望和兽性转化为行为、付诸实施,他们渴望着强奸妇女,不劳而获大笔钱财,通过杀戮满足精神上的快感。”也就是说,这一部分人的情绪控制力具有先天的或者是后天催化病理的精神系统问题。
A:听起来很可怕啊,但是犯罪分子不是很大程度上是因为他后天形成的世界观的问题吗?
B:举个简单的例子,在一个西方国家,几乎所有的人都看过“A片”,为什么那些精神控制力良好的人即使看再多的A片也不出现行为异常,而大部分人都向这个方向靠拢。为什么极少数精神异常者看了些许A片就做下丧尽天良的事情,使得很多保守国家政府担心这一部分人而不敢变得开化。
A:可是有的人是在后天恶劣环境中催生而出的精神问题导致犯罪的啊。
B:同样,在恶劣环境之下的人们又有数以亿计,为什么单有少部分人出现问题?我们只能这样说,在任何一个阶层,神经系统欲望情绪控制力先天异常的人都有类似比例存在,可是,他们精神异常和犯罪是需要后天激发的,在保守的氛围中、在优越同时向善的氛围中、或者在高压的氛围中,他们潜伏的不稳定因素一生都无法激发,从而使得人们认为低劣环境中产生的犯罪分子远远大于其他环境,从而误以为后天造人。
A:听起来很有道理,但是需要我们慢慢体会。
B:把话题转回来,刚才的插曲只是为了证明情商才是更重要的。情商中包含了许许多多更重要的因素。要知道一个人不可能什么都感兴趣,有的人智商很高但是精神控制力低下,对于自己不感兴趣的领域就不能像精神控制力良好的人那样忽略兴趣(或者是兴趣搁一边慢慢培养)而专心于该领域的学习研究。同样,如果一个人情绪控制力良好,那么他能够轻松的平衡睡眠、生理健康、精神健康之间的关系,从而将短暂时间内的工作最优化。
再加上中国是人治社会,极度依赖人脉关系,情商中的人际关系协调能力则显得几乎决定性了。
所以说,决定一个人是否成功,关键在于他的精神控制力、情绪控制力、人际关系协调能力、智商、剥离出来的记忆力的高度平衡。
A:经你这么一说,我觉得IQ确实仅仅只是一个辅助因素。智商很高与成功与否是没有直接关联的啊。
B:不过普通家长对于什么是情商,什么是智商,它们之间的细分以及范畴的界定都是很混沌的。于是乎,他们将成功者定义为高智商,成功这个结果与人的先天能力智商结成了错误的因果联系。

2007年1月1日星期一

"先有鸡还是先有蛋?"

“先有鸡还是先有蛋?”对于这个古老的话题,今天人们仍然在争论不休。
在这里谈一谈我的看法。
先有蛋(其实是指鸡蛋),先有鸡。这两个谓词的本质是:假设有一种生物a,在某个时间区间(时间区间中包含时刻这个概念)内a蛋变成了鸡蛋,在某个时间区间内a变成了鸡。当a蛋变成了鸡蛋,也就有了蛋(鸡蛋);当a变成了鸡,也就有了鸡。好的,我们的命题“先有鸡还是先有蛋?”到这里就演变成了“到底是先发生a蛋变成了鸡蛋?还是先发生a变成了鸡?”然后我们的话题就转入了生物进化理论,根据达尔文的进化论,生物的进化是自然选择的结果,而各个方向无序的积累性变异(注意,是积累性变异,而非一蹴而就式的变异!)是渐进性的。什么时候爬行生物变成了鸟是没有一个明确的临界点的,是没有一个明确的多少年多少月多少时多少分多少秒的边界的。也就是说,生物进化中两个物种的变化由于渐进性特征导致其“物种集合的模糊定义”。那么现在的问题的焦点就转移到了“模糊逻辑”上面。在我们讨论的“先有鸡还是先有蛋”的衍生问题“到底是先发生a蛋变成了鸡蛋?还是先发生a变成了鸡?”上面,由于生物学概念定义的模糊性,其值不具有二义性〔除了真和假之外还存在模糊的值〕。也就是说在某个时间点是‘a ’还是‘鸡’,是‘a蛋’还是‘鸡蛋’是难以界定的,我们或者可以说在某个时间区间里,这个生物进化得既是a又是鸡,它产出的蛋既是a蛋又是鸡蛋。于是,问题就有答案了,先有鸡还是先有蛋是一个伪名题。因为它等价衍生出来的命题不具有二义性。〔这属于模糊逻辑的范畴〕

对话-《伤城》有感

A:《伤城》不大好看,导演意欲何为?要给观众传递一个什么样的信息?没有一个明确稳定的主题。
B:在整个影片中,前段和中段似乎似乎逐渐向我们拨云见日出刘正熙(梁朝伟)的仇恨,最后仇恨却让位给了爱情。整个影片并没有一个统一的主题,诡异的情节设计的也不是很完美,因为进入影片不久我们就知道了杀人凶手是刘正熙,只不过不知道他为什么而杀人罢了。而整个影片仅仅是在知道杀人凶手的前提下告诉我们这个凶手为何而杀人未免显得小气。因为观众们习惯了很多优秀的悬疑片情节--谁才是真正的凶手,像《越狱》那样悬念迭起。
A:丘健邦(金城武)自杀的女友似乎和本片主题没有任何关系,即使有也是很牵强附会的。
B:导演(刘伟强 麦兆辉)是不是在告诉我们这样几个信息?1. 在我们的世界里,很多看起来的好人可能是道貌岸然者,他们很可能是真正的凶手(当然其中也是有原委的)。而某些为真感情沉醉的人,看起来萎靡不振无所事事,其实才是真正清醒的人,具有正确的判断力。 2. 正像金淑珍(徐静蕾)对阿邦所说,就像你为了知道女友为什么割腕自杀决绝地彻查一样,因为有值得怀疑的地方,我一定要知道父亲是为什么而死,被谁所害。这种共鸣成为了阿邦深入介入彻查该案的理由。
A:《伤城》的主题很混沌。导演竟然喜欢通过N多不明确来表现某种他心中的艺术,估计急于商业化没有下够功夫吧!
B:是啊,该片的主题不具有明确性和稳定性,前面部分的仇恨到后面转换成为爱和悔。一开始就让观众知道杀人凶手只是在向大家阐述一个复仇者的故事似乎不够精彩--舍弃大悬念而取小悬念不够高明。伤,有过之而无不及,但是其他则略显不够火候。
看完《伤城》,除去某些女士因部分血腥场面看不下去外,整体感觉还是可以的,能够看下去的,个人评75分