博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 4 5 6 7 8 9 10 下一页

2011年5月24日

摘要: 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 李大嘴 阅读(3403) 评论(0) 推荐(0) 编辑

2011年5月18日

摘要: 由于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 李大嘴 阅读(1737) 评论(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 李大嘴 阅读(3225) 评论(1) 推荐(0) 编辑

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

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

2011年5月16日

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

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

2011年5月10日

摘要: 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 李大嘴 阅读(3447) 评论(0) 推荐(0) 编辑

2011年4月15日

摘要: 1. Eclipse3.6 SVN plugininstallation---subversive,我的环境是Ubuntu10.10,Eclipse 3.6.2 helio。下面是安装步骤: Eclipse-->'help'--'install newsoftware' Subversive的URL是已经内置在helio里的,只不过是给Disable掉了。 选'availablesoftware sites', 然后过滤Subversive,把Subversive的URL给Enable,再回到安装界面,就可以选择Subversive的插件了 阅读全文

posted @ 2011-04-15 20:08 李大嘴 阅读(1050) 评论(0) 推荐(0) 编辑

2011年4月11日

摘要: 自从oracke 7.3以来,oracle提供了一种新的join技术,就是hash join。Hash Join只能用于相等连接,且只能在CBO优化器模式下。相对于nested loop join,hash join更适合处理大型结果集。Hash join不需要在驱动表上存在索引。一.Hash Join概述Hash join算法的一个基本思想就是根据小的row sources(称作build input,我们记较小的表为S,较大的表为B)建立一个可以存在于hash area内存中的hash table,然后用大的row sources(称作probe input)来探测前面所建的hash ta 阅读全文

posted @ 2011-04-11 15:32 李大嘴 阅读(6396) 评论(1) 推荐(3) 编辑

2011年4月9日

摘要: 在进行数据库系统的设计时,一个不可忽视的问题是弄清你所面对的应用是属于那种类型。目前流行的应用类型有:* 在线事务处理(OLTP=Online transaction Processing )应用程序* 决策支持系统(DSS=Decision Suport System )应用程序* 多目的应用程序在线事务处理(OLTP)在线事务处理(OLTP=Online transaction Processing )应用程序具有高的吞吐量,并且是Update、Insert 的密集型。如订票系统、订货系统等。在OLTP设计时,要考虑并发用户和系统性能问题,由于索引和簇会降低 Insert和Update的速 阅读全文

posted @ 2011-04-09 10:28 李大嘴 阅读(911) 评论(0) 推荐(0) 编辑

摘要: 事实表每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务所产生的数据,事实数据表通常包含大量的行。事实数据表 的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性维度的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与维度表中对应项的 相关索引字段之外的任何数据。包含在事实数据表中的“度量值”有两中:一种是可以累计 的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字 阅读全文

posted @ 2011-04-09 10:25 李大嘴 阅读(6061) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 下一页