- 浏览: 117832 次
- 来自: ...
最新评论
文章列表
一、简介
BusinessWare是一款企业应用集成(EAI)软件,更加注重“系统”间的交互,传统工作流只是它的一项普通功能而已;BusinessWare还是一款可扩展的软件,对于已知的未知的系统/协议,它提供可单独配置的部件(Connector/Pr ...
Annotation PK Interface
- 博客分类:
- 术
Interface在OO中处于核心地位,针对接口编程更是OOP的核心原则之一,但即使将该原则贯彻到底的COM/CORBA,依然面对大量的依赖、耦合,牵一接口而动全部客户的修改
另一方面,Hurb Sutter说各种编程范式,包括面向对象,核心都是某种管理依赖性,降低依赖性的技术,那么.Net Attribute, XDoclet, Java Annotation代表的Attribute Oriented Programming在降低依赖性上又前进了多少呢?
以Java Annotation为例,与Java Interface做个对比
1,调用方式
实现Interface的类
被 ...
Generic Java Functor 发布首个版本
- 博客分类:
- 术
〇,简介
Gavator(Generic Java Functor)试图探索以普通Java语法进行函数式编程的可行性,并尽可能的保证使用的方便性,良好的可读性和基本的类型安全性
项目信息:http://code.google.com/p/jade-stone-suite/
source code:
svn checkout ...
Java:画蛇添足的编码规范
- 博客分类:
- 术
前几天公司培训编码规范:
第n条:
i++; j++; // prohibit
should be:
i++;
j++; // ok
第m条:
Java,误解为何如此之深
- 博客分类:
- 术
前几天被电话面试,问Java的参数传递方式,我说只有一种方式,就是by value啊,对方纠正我说,基本类型传值,对象类型传引用;呜呼,当时被噎了一下,几秒钟后回过神来,我明白他的意思,也明白我碰上新世纪的新新人类了 ...
Inside The C++ Object Model
- 博客分类:
- 术
期待C++的ABI
转型(cast)其实是一种编译器指令,大部分情况下它并不改变一个指针所含的真正地址,它只影响“被指出之内存的大小和其内容”的解释方式;那么,什么情况下转型会导致指针的值发生变化呢?多重继承时转向不同基类?
Global Objects的内存保证会在程序激活的时候被清0;Local Objects配置于栈中,heap objects配置于自由空间中,都不一定会被清0,它们的内容将是上次被使用后的遗迹
有四种情况,会导致“编译器必须为未声明之constructor之classes合成一个default constructor”
...
函数式编程 vs. 对象式编程
- 博客分类:
- 道
<<我爱我家>>有一集和平摔成了脑震荡失忆,贾治国心慌手乱,英壮扮演的医生却好整以暇,说一切正常,都是正常现象;这就是对象式和函数式两种编程世界观的观点
对象式(贾治国):和平是对象,她有自己的状态,刚才还活蹦乱跳,现在昏迷不醒,醒后失忆,状态发生了变化
函数式(医生):脑震荡是函数,输入清醒的人,输出失忆的人,和平完全符合函数的运行结果,在这一过程中,没有任何变化,一切正常
泛型编程 vs. 面向对象
- 博客分类:
- 道
面向对象:封装(数据抽象)是基础,继承是手段,多态是目的;泛型编程:参数化类型(概念抽象)是基础,模板是手段,通用是目的
面向对象是运行时问题空间的多态,泛型编程是编译时算法空间的多态
OO以Type为中心,GP以Concept为中心,而Concept完全独立于Type;OO的type是显式定义的,type之间的关系也是显式定义的,是语言支持的 ;GP的Concept是由算法隐式定义的,Concept之间的关系,是无法用目前的C++语法直接表达的;Concept的Model完全可以是毫无关系的Type,refinement独立于inheritence,original ...
Modern C++ Design
- 博客分类:
- 术
就像<<Ruminations on C++>>一样,<<Modern C++ Design>>关注的首先是Design,它明确的将这种设计命名为了“基于Policy的编程”,而不再用“模块化”、“封装变化”等泛泛的术语;其次是C++,核心是TypeList;如果<<Ruminations on C++>>是C++初创的十几年中Classic C++的设计指南的话,类似TypeList的思想则可能是最近几年和未来几年Modern C++的设计指南
1,policy
关键是将class分解为一组正交的行为;正确的 ...
基础复杂性是守恒的,需要解决的基本问题始终是需要解决的;最终的复杂性,却取决于基础复杂性彼此间的依赖,如果互相依赖,最终将得到指数级的复杂性,而如果彼此独立,最终只是若干基础复杂性简单的累加,因此,程序需要更好的的Design和Organize,主要任务就是“降低模块间的依赖至最小”,而对开发效率有重大影响的,主要是编译期依赖,为此,人们发明了若干技术来降低编译期依赖
1,模块系统
C++继承了C的include机制,缺少ABI,缺少模块系统,客户端代码依赖于对象的内存布局,任何对头文件(类定义)的修改都导致需要编译所有客户端;传统上只能如下解决:
部分基于C++的平台提供了初步的模 ...
Exceptional C++
- 博客分类:
- 术
(翻译的太差了)
一、语法细节
C++不允许修改内置类型的临时变量
缺省参数根据静态类型获得
重载的new和delete操作符永远都是静态的,不管你声明static没有
二、惯用法
选择前置递增,只有打算使用初始值时才使用后置递增,并且使用前置递增来实现后置递增
注意由隐式转换创建的隐藏临时对象;避免这个问题的好办法,是使用explicit构造函数,避免编写转换操作符
Ruminations on C++
- 博客分类:
- 术
可以把这本书重命名为<<C++设计模式>>,也可以重命名为<<C++编程思想>>,甚至还可以叫它<<C++语言的设计和演化>>,总之,Koening谈到了以上所有方面,并且首先是编程思想和设计原则,其次才是C++, ...
一、值语义
所谓值语义是一个对象被系统标准的复制方式复制后,与被复制的对象之间毫无关系,可以彼此独立改变互不影响
实现
<!-- MSTableType="nolayout" -->
C++
Java
标准复制方式
赋值、拷贝构造
赋值,clone()
基本数据类型
个性与定制为王:下一代互联网和下一代门户
- 博客分类:
- 道
看一下现在我与互联网有关的生活:我有两三个常用的Web邮箱,我把它们配置在OutLook里;我有几个常去的网站,我把它们放置在IE收藏夹里;我的好友分别在QQ和MSN里;我订阅的博客则在新闻阅读器里;每天早上,我要启动所有的工具;或曰:快出现统一的桌面工具了吧?但机器不在身边的时候怎么办?
再看看目前的门户网站,要从海量信息中挑出自己感兴趣的,对眼睛和耐心都是挑战;MyYahoo算是较早提供的个性化的个人门户,但功能仍然有限,依然无法集成前面提到的对互联网的需求
我们先看看最容易集成的是哪些;毫无疑问,Blog和Email!为什么呢?因为它们有标准,RSS和POP3之类;无论它们的提供商 ...
内容与标准为王:下一代互联网与下一代搜索
- 博客分类:
- 道
第一代互联网混淆了真正的数据和它的表现形式,第一代搜索无法区分关键词是出现在文章标题里还是正文里,无法区分“十面埋伏”是一个典故还是一部电影,因为第一代互联网上只有HTML字节流,再也没有其它的了
Blog的出现是第二代互联网的萌芽,它明确定义了数据的组成,并且是标准,Blog搜索完全可以区分标题和正文、作者、发表时间等,而不管它们在浏览器里的表现形式如何;其实目前各种搜索引擎提供的个性化搜索,如联邦快递的包裹运送进程等,都潜在的可进一步发展为标准,成为第二代互联网的内容组成;届时,医院间可共享格式完全相同的病历,网上书店也使用标准化的图书信息,这样,搜索将变得轻而易举,不必像今天这样,从 ...