
Technoloy
文章平均质量分 51
majcos
请用一段话来描述您自己,如性格、爱好、生活态度、工作情况、受教育状况等。让大家更了解你,不要超过1000个汉字。
展开
-
很常见,但是未必会写未必会读的三个单词
OO的三个特征名词形式:encapsulation[in7kApsju5leiFEn]n.包装,封装inheritance[in5heritEns]n.继承polymorphism[7pCli5mC:fizEm]n.多形性, 多态现象其他形式:encapsulate[in5kApsjuleit]v.封装inherit[in5herit]vt.继承, 遗传而得polymorphic[9pClI`mR原创 2005-12-03 17:08:00 · 602 阅读 · 0 评论 -
state模式
state模式当对象的内部状态改变后,其行为也跟着改变。State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.此模式的结构图和strategy模式一样。非要说区别,那么:state模式用于处理对象有不同状态(状态机)的场合,strategy模式用于随不原创 2006-09-18 22:33:00 · 688 阅读 · 0 评论 -
Mediator模式
Mediator模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。比如一个窗口上的很多控件之间的交互。何时使用一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。想定制一个分布在多个类中的行为,而又不想生成太多的子类。原创 2006-09-21 22:28:00 · 820 阅读 · 0 评论 -
strategy模式
strategy模式主要是定义一系列的算法,把这些算法一个个封装成单独的类,这些类之间可以交换。更简单的说,对象与其行为(behaviour)这本来紧密联系的两部分被解耦,分别放在了两个不同的类中。这使得对同一个行为,可以方便的在任何时候切换不同的实现算法。而通过对策略的封装,为其提供统一的接口,也可以很容易的引入新的策略。 与state模式很相似。几个显著的特点:1.可以消除不断重复出现的条件语原创 2006-09-18 22:19:00 · 726 阅读 · 0 评论 -
P,NP,NPC
P类问题就是所有复杂度为多项式时间的问题的集合。然而有些问题很难找到多项式时间的算法(或许根本不存在),比如找出无向图中的哈米尔顿回路问题,但是我们发现如果给了我们该问题的一个答案,我们可以在多项式时间内判断这个答案是否正确。比如说对于哈米尔顿回路问题,给一个任意的回路,我们很容易判断他是否是哈米尔顿回路(只要看是不是所有的顶点都在回路中就可以了)。这种可以在多项式时间内验证一个解是否正确的问题称转载 2006-09-27 10:08:00 · 1360 阅读 · 0 评论 -
proxy模式
为其他对象提供一种代理以控制对这个对象的访问。远程代理虚代理保护代理智能指引Remote Proxy可以隐藏一个对象存在于不同地址空间的事实。Virtual Proxy 可以进行最优化,例如根据要求创建对象。Protection Proxies和Smart Reference都允许在访问一个对象时有一些附加的内务处理。原创 2006-10-04 20:12:00 · 579 阅读 · 0 评论 -
flyweight模式
运用共享技术有效地支持大量细粒度的对象。• 一个应用程序使用了大量的对象。• 完全由于使用大量的对象,造成很大的存储开销。• 对象的大多数状态都可变为外部状态。• 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。• 应用程序不依赖于对象标识。避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).实现的时候注意两点1.分离对象的外部状态2.管理好共享的对象原创 2006-10-04 20:28:00 · 574 阅读 · 0 评论 -
Facade模式
为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。如果应用需要,它并不限制它们使用子系统类。原创 2006-10-04 21:11:00 · 497 阅读 · 0 评论 -
tomcat下配置使用awstats教程
1。环境我使用的是 Linux RedHat 9,安装一切正常。其他系统没有试过。Perl 5.8 (必须5.2或更高,awstats是用perl写的)#perl -v 这个命令可以查看perl的版本tomcat-5.0.28awstats 2。下载tomcat http://jakarta.apache.org/site/downloads/downloads_tomc转载 2006-11-21 10:10:00 · 2786 阅读 · 0 评论 -
搜狗比比看
.your { width: 363px; clear: both;} .rank, .rank dt, .rank dd, .title5 { margin: 0; padding: 0;} .rank { width: 364px; height: 31px; line-height: 31px; background: url(http://www.sogou.com/images/b原创 2007-01-01 18:54:00 · 786 阅读 · 0 评论 -
The Visualization Toolkit (vtk)
The Visualization Toolkit (vtk)The Visualization toolkit (vtk) is a freely available C++ class library for 3D graphics and visualization. The toolkit was developed at GE Corporate Research and Devel转载 2007-03-09 10:49:00 · 2747 阅读 · 0 评论 -
OpenGL GL_PROJECTION and GL_MODELVIEW
OpenGL GL_PROJECTION and GL_MODELVIEW Cameras are not the right way to think about OpenGLSigh, the tales of an old programmer. Im teaching myself 3d graphics. My bag of 2d tricks has been used转载 2007-03-13 16:55:00 · 4081 阅读 · 0 评论 -
Visitor模式小节
今天看Scott Meyers的《My Most Important C++ Aha! Moments...Ever》这篇文章(http://www.artima.com/cppsource/top_cpp_aha_moments.html),里面有一点“Understanding what problem Visitor addresses”,这个visitor模式我一直都不是非常清楚,今天再仔原创 2006-09-18 14:21:00 · 724 阅读 · 0 评论 -
Memento模式
Memento模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。memento是一个保存另外一个对象内部状态拷贝的对象,注意与Prototype模式的区别。何时使用必须保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态。如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对原创 2006-09-21 22:10:00 · 924 阅读 · 0 评论 -
Observer模式
Observer模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。何时使用当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希原创 2006-09-21 21:38:00 · 1140 阅读 · 0 评论 -
判断程序运行的平台是little-endian还是big-endian
#include //判断程序运行的平台是little-endian还是big-endian bool IsLittleEndian(){ int i = 1; char* p = (char*)&i; return *p;}int main(){ if(IsLittleEndian()) printf("LittleEndian/n"); else printf("BigEndian/n")原创 2005-12-15 11:29:00 · 1652 阅读 · 0 评论 -
Big-Endian与Little-Endian的转换
上周用vtk的时候,我自己机器写的数据要传到sgi的机器,要进行Big-Endian与Little-Endian的转换,结果出错了,不知道怎么回事,今天查了一下vtk的源代码,发现他的转换也是这样的按部就班:inline void vtkByteSwap::Swap2Bytes(char* &data){ char one_byte; one_byte = data[0]; data[0原创 2005-12-19 18:04:00 · 2315 阅读 · 0 评论 -
关于google技术的文章连接
http://blog.youkuaiyun.com/baggio785/archive/2005/12/13/551069.aspxhttp://www-db.stanford.edu/~backrub/google.html原创 2005-12-19 10:21:00 · 652 阅读 · 0 评论 -
自己需要改掉的不好习惯
1.参加趋势竞赛的时候就暴露出我写程序的一个弱点——考虑不全面。比如参数检查,函数执行失败等异常情况没考虑。这一点必须加强,要形成一种习惯。2.代码写完了之后不要忘记代码走查这个步骤,有时候可以查出很多错误的。比如,实验室的那个项目,有一个比较关键的函数,我写完就运行,发现很正常,但是一个礼拜后,仍然可以正常运行(至少表面上可以基本正常运行),但是今天发现eclipse输出三个单词:prema原创 2006-03-12 13:16:00 · 766 阅读 · 0 评论 -
Factory Method模式
定义一个创建对象的接口,让子类决定实例化哪一个类。 1.图中的NewDocument只知道何时要new一个document(不变的部分),但不知到new 一个什么样的document(变化的部分)。这其实是隔离变化的部分与不变的不分,而且不变部分写在父类中,减少了代码的重复。2.和模板方法很相似。3.工厂方法似乎有很很多种实现方法。用这一模式的目的是为了满足开闭原则,开闭原则是关键,其原创 2006-03-14 21:37:00 · 598 阅读 · 0 评论 -
Command模式
将请求封装为一个对象。1.解耦。 将Invoker和receiver分离。即:“decouple the ogject that invokes the operation from the one having the knowledge to perform it”。由于invoker和receiver的分离,他们可以各自变化。比如:command的一个典型的例子就是GUI程序,可以原创 2006-03-11 20:50:00 · 947 阅读 · 0 评论 -
Singleton模式
保证一个类只有一个实例,并提供一个访问它的全局访问点1.Singleton接口class Singleton{public: static Singleton& Instance(); ...private: Singleton();//私有构造函数 Singleton(const Singleton&);//私有拷贝构造函数,不实现该函数,以防止拷贝 Singleton& oper原创 2006-03-12 16:40:00 · 959 阅读 · 0 评论 -
Template Method模式
模板方法用一些抽象的操作定义一个算法,而子类重新定义这些操作以提供具体行为。1.模板方法的定义类似于:父类中定义一个函数:void operate(){ //do some operations ——step1 abstract_operate1();//abstract method——step2 //do some other operations——step3 abstract原创 2006-03-13 21:47:00 · 656 阅读 · 0 评论 -
Abstract Factory模式
创建一系列相关或相互依赖的对象(产品族)的接口,而无须指定他们的具体类1.需要使用很多产品系列中的一个系列,不能几个系列的产品一起用,用该模式可以强制做到这一点。2.用户只使用抽象工厂以及抽象产品提供的接口,用户不知道具体产品的名字(类名),这些名字不出现在客户端代码中。用户要转换到另一个产品族,只需转换到另一个具体的工厂类就可以了。3.一般将工厂实现为Singleton4.与Fa原创 2006-03-15 12:43:00 · 1225 阅读 · 0 评论 -
Double-dispatching
1.暴力法 基本想法是:Using Virtual Functions and RTTI 下面的代码摘自《More Effective C++》class GameObject {public: virtual void collide(GameObject& otherObject) = 0; ...};class SpaceShip: public GameObject {public原创 2006-03-15 20:36:00 · 882 阅读 · 0 评论 -
SmartPtr
1.拥有权的管理策略 深层拷贝(deep copy):拷贝SmartPtr的时候也拷贝其所指之物 临写拷贝(copy on write):第一次修改所指对象的时候拷贝,由于无法区分哪些操作修改所指对象,所以很难实现。 引用计数(reference counting):记录对象被引用的次数,次数为0时删除该对象。缺点,怕出现循环引用的情况。 引用链接(reference linking):我原创 2006-03-13 20:24:00 · 785 阅读 · 0 评论 -
javascript Map
function pair(key, value) { this.key = key; this.value = value;}function put(key, value) { for (var i = 0; i this.map.length; i++) { if (this.map[i].key == key) { this.map[i].value = val原创 2007-05-05 14:41:00 · 1176 阅读 · 0 评论