随笔 - 111, 文章 - 0, 评论 - 39, 阅读 - 61万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

05 2011 档案

摘要:类类间关系在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能的能力,继承是类与类之间最常见的关系。类图中继承的表示方法是从子类拉出一条闭合的、单键头(或三角形)的实线指向基类。例如,图1给出了MFC中CObject类和菜单类CMenu的继承关系。 类的继承在C++中 阅读全文

posted @ 2011-05-30 16:26 李大嘴 阅读(653) 评论(0) 推荐(0) 编辑

摘要:软件的复杂性是一个基本性质,而不是一个偶然性质。这种固有的复杂性是由4个因素造成的:问题领域的复杂性,管理开发过程的困难、软件可能的灵活性以及表征离散系统行为的困难。不限制复杂性将导致项目的推迟提交、走出预算以及无法满足所有需求等,这种情况通常称为软件危机。所有的复杂系统都具有5个属性:1)复杂性经常是以层次的形式表现出来,复杂系统是由相互关联的子系统组成,而这些子系统又是由它们各自的子系统构成,并由此类推到最低层的基本构件。--分层结构2)对系统中最基本的构件的选择是相对任意的,而且在很大程度上取决于系统观察者的判断力。--相对本元3)一般而言,各构件内的连接总要强于构件间的连接。在从构件的 阅读全文

posted @ 2011-05-27 10:55 李大嘴 阅读(710) 评论(0) 推荐(0) 编辑

摘要:RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。当我们讨论HDFS的,通信可能发生在: Client-NameNode之间,其中NameNode是服务器Client-DataNode之间,其中DataNode是服务器DataNode-NameNode之间,其中NameNode是服务器DataNode-DateNode之间,其中某一个DateNode是服务器,另一个是客户端如果我们考虑Hadoop 的Map/Reduce以后,这些系统间的通信就更复杂了。为了解决这些客户机/服务器之间的通信,Hadoop引入了一个RPC框架。该RPC框架利用 的Java的反射能 阅读全文

posted @ 2011-05-26 16:31 李大嘴 阅读(2796) 评论(0) 推荐(0) 编辑

摘要:排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效使用就值得探讨。在网上没有找到条款31的翻译,于是我自己翻译了。--Winter如何进行排序?让我数数有几种方法。一旦程序员需对容器元素进行排序,sort算法马上就会出现在他的脑海(可能有些程序员会想到qsort,但详细阅读条款46后,他们会放弃使用qsort的想法,转而使用sort算法)。sort是一个非常优秀的算法,但并当你并不真正需要它的时候,其实就是一种浪费。有时你并不需要一个完整的排序(简称为全排序)。例如,你现有一个包含Widget对象(Widget意为“小挂件”)的vector容器,并且你想把其中质量最好的20 阅读全文

posted @ 2011-05-25 20:48 李大嘴 阅读(6386) 评论(2) 推荐(3) 编辑

摘要:一、定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、理解代理模式和适配器模式应该说很相像,但是他们的区别也很明显,代理模式和被代理者的接口是同一个,只是使用中客户访问不到被代理者,所以利用代理间接的访问,而适配器模式,是因为接口不同,为了让用户使用到统一的接口,把原先的对象通过适配器让用户统一的使用,大多数运用在 阅读全文

posted @ 2011-05-24 17:06 李大嘴 编辑

摘要:forward_iterator_tag这种类型的迭代器只能像前移动,所以算法实现上很纠结。大体过程是不断交换[first, mid) 和 [mid, last) 两个区间的元素。没有多少复杂的数学推导,想清楚过程就行了,故不赘述。以交换作为单位操作,时间消耗是n。(注意,这三个算法的空间复杂度都是O(1),时间O(n)。所以不谈复杂度,谈具体消耗,并且要指明单位操作。)bidirectional_iterator_tag这种类型的迭代器可以双向移动,于是它是支持reverse操作的。估计大部分人在网上看到的面试题,都是讲的这套算法,如下:reverse(begin, mid)reverse( 阅读全文

posted @ 2011-05-24 15:10 李大嘴 阅读(3434) 评论(0) 推荐(0) 编辑

摘要:由于Hadoop的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化。Hadoop并没有采用Java的序列化(因为Java序列化比较复杂,且不能深度控制),而是引入了它自己的系统。org.apache.hadoop.io中定义了大量的可序列化对象,他们都实现了Writable接口。实现了Writable接口的一个典型例子如下: public class MyWritable implements Writable { // Some data private int counter; private long timestamp; public void write(Dat 阅读全文

posted @ 2011-05-18 11:45 李大嘴 阅读(1744) 评论(0) 推荐(0) 编辑

摘要:SequeceFile是Hadoop API提供的一种二进制文件支持。这种二进制文件直接将<key, value>对序列化到文件中。一般对小文件可以使用这种文件合并,即将文件名作为key,文件内容作为value序列化到大文件中。这种文件格式有以下好处:1)支持压缩,且可定制为基于Record或Block压缩(Block级压缩性能较优) 2)本地化任务支持:因为文件可以被切分,因此MapReduce任务时数据的本地化情况应该是非常好的。 3)难度低:因为是Hadoop框架提供的API,业务逻辑侧的修改比较简单。坏处是需要一个合并文件的过程,且合并后的文件将不方便查看。Sequence 阅读全文

posted @ 2011-05-18 10:02 李大嘴 阅读(3232) 评论(1) 推荐(0) 编辑

摘要:1. 基本概念序列化可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。在以后反序列化该对象时,创建原始对象的精确复本。当在面向对象的环境中实现序列化机制时,您需要在简化使用和保持灵活性之间进行许多权衡。只要您对该过程具有充分的控制,就可以在很大程度上自动化该过程。例如,在简单二进制序列化不充分时可能导致一些情况发生,或者可能有特定原因确定在类中哪些字段需要进行序列化。Serialization is the process of turning structured objects into 阅读全文

posted @ 2011-05-18 09:55 李大嘴 阅读(2182) 评论(0) 推荐(0) 编辑

摘要:vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。此时再调用push_back()函数,是加在这个新的空间后面的. 阅读全文

posted @ 2011-05-16 19:42 李大嘴 阅读(98653) 评论(3) 推荐(9) 编辑

摘要:1 template <class T, class Alloc> 2 3 void list<T, Alloc>::sort() { 4 5 if (node->next == node || link_type(node->next)->next == node) return; 6 7 list<T, Alloc> carry; 8 9 list<T, Alloc> counter[64];10 11 int fill = 0;12 13 while (!empty()) {14 15 carry.splice(carry 阅读全文

posted @ 2011-05-10 15:18 李大嘴 阅读(3459) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示