上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页

2011年10月18日

莫比乌斯带

摘要: 在学校里,我学到的第一门编程语言,是 Mathematica,严格讲 Mathematica 也许不算是一门编程语言,但它的确很有趣。那个时候(1998年),Mathematica 还只是 1.2 (或者1.4,具体记不清了)了。学校机房的电脑也很慢,但是从那开始,我开始可以将自己的一些想象变成视觉,莫比乌斯带的方程式就是这样想象出来的:ParametricPlot3D[{(4 + v*Cos[u/2])*Cos[u], (4 + v*Sin[u/2])*Sin[u], v*Sin[u/2]}, {u, 0, 2*Pi}, {v, -1, 1}]理论上讲,这是一个扭曲均匀的莫比乌斯带,扭曲可以 阅读全文

posted @ 2011-10-18 21:56 能发波 阅读(234) 评论(0) 推荐(0)

Hadoop.MapReduce.简介

摘要: 本文是2009年9月为公司内部培训写得的一篇简介。MapReduce概述提供计算任务的自动并行化机制,使用分发-收集的并行策略,Map阶段处理(无依赖的)原始输入,Reduce阶段处理依赖关系(按Key依赖)。架构在hadoop之上,原则上可以使用hadoop代理的所有分布式文件系统(hdfs,kfs,s3),但我们目前仅使用hdfs。MapReduce流程1.客户端提交MapReduce任务2.JobTracker分发任务,依据输入文件的chunk位置信息,将相应的split分发到TaskTracker3.Map.TaskTracker 执行Map任务a)读取splitb)产生输出,输出按i 阅读全文

posted @ 2011-10-18 21:08 能发波 阅读(173) 评论(0) 推荐(0)

2011年10月15日

hash_strmap 为什么那么快

摘要: 测试结果(普通PC,CPU 3G HZ,内存2G)单核达到了每秒30,000,000次查询,string 长度是32字节,这个速度比 unordered_map 快10 倍,比 std::map 快 40 倍。iteration 的速度, 比 std::map 快180倍以上, 比 unordered_map 快150倍。 同样是 Hash Map,为什么 hash_strmap 的查询速度可以比标准 unordered_map 快 10 倍?比 std::map (这个就不是hash map了)快40倍?超大数据量测试对比更明显,达到了12倍和50倍。并且,内存占用量还要小一倍以上?链接.. 阅读全文

posted @ 2011-10-15 17:05 能发波 阅读(231) 评论(0) 推荐(0)

reverse_iterator

摘要: stl 容器大都有reverse_iterator, 用法跟 iterator 一样。然而,可能很少有人考虑过它的实现。首先, reverse_iterator 大都由 std::reverse_iterator 包装 iterator 生成,如此,同样的遍历循环,reverse_iterator 在每个循环中要调用两次 iterator.operator--, 一次是 reverse_iterator::operator++, 一次是 reverse_iterator::operator*, reverse_iterator 的关键代码大致如下:referencereverse_iterat 阅读全文

posted @ 2011-10-15 15:37 能发波 阅读(325) 评论(0) 推荐(0)

2011年9月29日

is_trivially_destructible replaced has_trivial_destructor

摘要: C++11 中的 type_traits, 改变了一些约定成俗的名字:我们经常使用的 has_trivial_destructor, 变成了is_trivially_destructible, 现在已有不少编译器实现了 has_trivial_destructor, (std, std::tr1). 如此, 要写可移植的代码, 要么使用 tr1, 要么使用 boost, 鉴于 tr1 出现的比 boost 更晚, boost 一般是首选, 而新的编译器往往自带了 tr1, 而 boost 要另外安装.........We think in general, but we live in det 阅读全文

posted @ 2011-09-29 13:42 能发波 阅读(349) 评论(0) 推荐(0)

2011年9月28日

文章简介最多240个字符

摘要: 忽然以前文章中有个笔误, 打算修改一下, 修改好了, 提交, 结果被提示:文章简介最多240个字符, 你已经有输入了247个!可我无论如何找不到 "文章简介" 的输入框! 难道是 IE Only 的? 阅读全文

posted @ 2011-09-28 13:24 能发波 阅读(124) 评论(0) 推荐(0)

2011年9月25日

HashMap<string, ...> 能有多快

摘要: 看到很多使用 map 的代码, 也有一些使用了 unordered_map 或者 hash_map, 当然, hash_map 不是标准的, unordered_map 也只在 boost, tr1 和 c++0x 中可用. 从代码的简洁性和可移植性上讲, 标准的 std::map 是首选.然而, 从另一方面看, gcc 的 string 是 refcounted & copy on write 的, 64 位环境下, 一个 string 的额外开销是 32 字节, 如果加上 string 内容的额外对齐(8 byte align)开销, 则上升到平均至少 36 字节. 所以哪怕我的 阅读全文

posted @ 2011-09-25 12:56 能发波 阅读(303) 评论(0) 推荐(0)

2011年9月7日

怎样让C++函数重载时连返回值类型也加入重载决议?

摘要: 众所周知,C++函数重载时返回值是不参与重载决议的, 也就是说:int lex_cast(const char*);double lex_cast(const char*);这样两个函数在同一个编译单元同一个 namespace 中时, 会编译报错.怎么办呢?一个小技巧:#include #include #include class my_cast { const char* s;public: template operator Target() const { return boost::lexical_cast(s); } my_cast(c... 阅读全文

posted @ 2011-09-07 11:35 能发波 阅读(198) 评论(0) 推荐(0)

2011年8月7日

Large Number of Coroutine is possible: Split Stacks in GCC

摘要: 本文来源:http://gcc.gnu.org/wiki/SplitStacks注:GCC4.6 已经支持 -split-stack 选项Why Fiber/Coroutine? 可参考我的相关文章:异步通讯中使用纤程(Fiber/UserSpaceThread)Split Stacks in GCCIan Lance TaylorThe goal of split stacks is to permit a discontiguous stack which is grown automatically as needed. This means that you can run multi 阅读全文

posted @ 2011-08-07 16:11 能发波 阅读(194) 评论(0) 推荐(0)

2011年7月23日

排列的分解

摘要: 离散数学里面大家都学过群,群里面有种很基本并且很重要的叫做置换群,置换群的元素本质上就是一个排列(英文 permutation group, 直译过来应该是排列群)。大家应该都学过当初要把 (4 1 5 2 3) 分解成 (1 4 2)(3 5),这个叫做群的 k-cycle 分解,也就是说,一个排列(置换群的一个元素)可以分解成多个 k-cycle。所以,现在问题就是:给定一个[1, n] 构成的排列,求这个排列的 k-cycle 分解,即输出每个 k-cycle,允许使用 O(n) 的额外空间。这实际上是一个循环链表问题:// 为了更贴近前文所述,a 的长度是 n+1,a[0] 未用,a[ 阅读全文

posted @ 2011-07-23 16:44 能发波 阅读(287) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页

导航