2008年03月
std::StringBuilder 基于 std::vector 实现。所以尽管本文讨论 std::vector,但是所有的结论对 std::StringBuilder 同样有效。阅读全文>
发表于 @ 2008年03月28日 02:59:00|评论(loading...)|编辑
字符串是什么?我们认为,与其说它是一个类,不如说它只是一个ADT(抽象数据类型)。阅读全文>
发表于 @ 2008年03月26日 22:31:00|评论(loading...)|编辑
StdExt的String(BasicString),和你以前见过的所有字符串类都不太一样。它的特别之处在于,它并不维护字符串的生命周期。这可能让你诧异:居然会有这样字符串类,它并不管理字符串的生命周期。但是我们这样做了。而这的确给我们带来很多便利。例如: * 赋值(复制)、子串(substr)是非常轻量的操作。Copy-On-Write技术完全是多余的。 * 可以将任意的线性容器(如std::vector、std::basic_string)临时转换为String(非常轻量)。参见下文中对String::cast方法的介绍。为什么String类可以不管理自己的生命周期?这就是我们StdExt的内存管理变革倡导的思想了。阅读全文>
发表于 @ 2008年03月23日 21:20:00|评论(loading...)|编辑
在介绍StdExt的时候,我曾经提到,STL设计精良,但是以下几块仍然设计不足(或缺失): * allocator(内存管理) * string(字符串处理/文本处理) * parallel programming(并行编程)关于内存管理,我们已经说得很多了。这里我们重点谈的是字符串处理/文本处理相关的问题。本篇是《字符串处理完整参考》这个系列的第一篇。阅读全文>
发表于 @ 2008年03月20日 22:08:00|评论(loading...)|编辑
随着多核趋势的明朗,对软件来说,这意味一次巨变。多核时代,注定要改变计算机发展历史。在我们还在努力学习OO方法论时,须不知,一场新的颠覆性的编程革命到来了。内存管理是程序语言中的最基础的设施。如果你长期做服务端的开发,一定知道,服务器性能调优的关键在于内存管理。为什么GC Allocator是Lock Free(无锁)的?阅读全文>
发表于 @ 2008年03月05日 16:25:00|评论(loading...)|编辑
问题缘起:参阅 Erlang Question 邮件列表上的讨论(http://groups.google.com/group/erlang-questions/browse_thread/thread/fed4e293a015ce8)。阅读全文>
发表于 @ 2008年03月01日 13:20:00|评论(loading...)|编辑